12 'type' =>
'strictly_castable_to_integer',
16 'type' =>
'strictly_castable_to_integer',
24 if ($linkedLessonId ===
false)
28 $breakOnLessonId = $linkedLessonId;
31 $isLessonChildOfCourse =
false;
33 foreach ($arOPathes as $oPath)
35 $topLessonId = $oPath->GetTop();
37 if (($topLessonId !==
false) && ($topLessonId == $linkedLessonId))
39 $isLessonChildOfCourse =
true;
44 if ( ! $isLessonChildOfCourse )
51 return ($isCourseAccessible);
67 return ($isAccessGranted);
81 'parent_lesson_id' =>
array(
82 'type' =>
'strictly_castable_to_integer',
88 $parent_lesson_id =
$options[
'parent_lesson_id'];
98 return ($isAccessGranted);
108 'lesson_id' =>
array(
109 'type' =>
'strictly_castable_to_integer',
120 return ($isAccessGranted);
130 'lesson_id' =>
array(
131 'type' =>
'strictly_castable_to_integer',
142 return ($isAccessGranted);
152 'lesson_id' =>
array(
153 'type' =>
'strictly_castable_to_integer',
165 if ($allowAccessViaLearningGroups)
167 if ( ! $isAccessGranted )
171 if ($arPeriod[
'IS_EXISTS'])
172 $isAccessGranted =
true;
176 return ($isAccessGranted);
182 $isAccessGranted =
false;
184 if (self::CanUserViewLessonContent (
$arParams)
185 || self::CanUserPerformAtLeastOneRelationAction (
$arParams)
188 $isAccessGranted =
true;
191 return ($isAccessGranted);
197 static $arPermissiveOperations =
array(
208 'lesson_id' =>
array(
209 'type' =>
'strictly_castable_to_integer',
217 foreach ($arPermissiveOperations as $operation)
238 'lesson_id' =>
array(
239 'type' =>
'strictly_castable_to_integer',
247 $isAccessGranted =
$oAccess->IsLessonAccessible(
252 return ($isAccessGranted);
261 return ($isAccessGranted);
272 if ( ! (is_array(
$arParams) && is_array($arParserOptions)) )
275 'EA_LOGIC: $arParams and $arParserOptions must be arrays',
281 if (array_key_exists(
'user_id', $arParserOptions))
284 'EA_LOGIC: unexpected user_id in $arParams',
290 $arParserOptions[
'user_id'] =
array(
291 'type' =>
'strictly_castable_to_integer',
292 'mandatory' =>
false,
293 'default_value' => -1
307 'EA_OTHER: CLearnSharedArgManager::StaticParser() throws an exception with code: '
308 . $e->GetCode() .
' and message: ' . $e->GetMessage(),
327 if ( ! (is_object(
$USER) && method_exists(
$USER,
'GetID')) )
330 if ( !
$USER->IsAuthorized() )
333 return ( (
int)
$USER->GetID() );
339 static $arCache =
array();
342 $courseLessonId = intval($courseLessonId);
343 $cacheKey = $courseLessonId.
"|".
$userId;
345 if ( ! array_key_exists($cacheKey, $arCache) )
352 'COURSE_LESSON_ID' => $courseLessonId,
355 array(
'ID',
'MEMBER_ID',
'ACTIVE_FROM',
'ACTIVE_TO')
358 $minActiveFrom =
null;
359 $minActiveFromFound =
false;
360 $minActiveFromTs = PHP_INT_MAX;
362 $maxActiveToFound =
false;
366 $arGroupsActiveFrom =
array();
367 while (
$ar =
$rs->fetch())
370 $arGroupsActiveFrom[
$ar[
'ID']] =
$ar[
'ACTIVE_FROM'];
372 if (
$ar[
'ACTIVE_FROM'] ===
null)
374 $minActiveFrom =
null;
375 $minActiveFromFound =
true;
377 elseif (!$minActiveFromFound)
380 if ($activeFromTs < $minActiveFromTs)
382 $minActiveFrom =
$ar[
'ACTIVE_FROM'];
383 $minActiveFromTs = $activeFromTs;
387 if (
$ar[
'ACTIVE_TO'] ===
null)
390 $maxActiveToFound =
true;
392 elseif (!$maxActiveToFound)
395 if ($activeToTs > $maxActiveToTs)
397 $maxActiveTo =
$ar[
'ACTIVE_TO'];
398 $maxActiveToTs = $activeToTs;
404 'IS_EXISTS' => $exists,
405 'ACTIVE_FROM' => $minActiveFrom,
406 'ACTIVE_TO' => $maxActiveTo,
407 'GROUPS_ACTIVE_FROM' => $arGroupsActiveFrom
410 $arCache[$cacheKey] = $arPeriod;
413 $arPeriod = $arCache[$cacheKey];
422 if (!$arGroupsPeriods[
'IS_EXISTS'])
427 $arChaptersActiveFrom =
array();
428 $arGroupsActiveFrom = $arGroupsPeriods[
'GROUPS_ACTIVE_FROM'];
430 $arLessons =
array();
434 array(
'CHECK_PERMISSIONS' =>
'N'),
438 $arMinChaptersActiveFromTimestamp =
array();
439 while (
$ar =
$rs->fetch())
441 $arLessons[
$ar[
'LESSON_ID']] =
$ar[
'NAME'];
442 $arChaptersActiveFrom[
$ar[
'LESSON_ID']] =
null;
443 $arMinChaptersActiveFromTimestamp[
$ar[
'LESSON_ID']] = PHP_INT_MAX;
447 foreach ($arGroupsActiveFrom as $groupId => $groupActiveFrom)
449 if ($groupActiveFrom ===
null)
457 foreach ($arDelays as $lessonId => $delay)
459 $fromTs = $groupActiveFromTs + 86400 * $delay;
462 if ($fromTs < $arMinChaptersActiveFromTimestamp[$lessonId])
464 $arChaptersActiveFrom[$lessonId] = ConvertTimeStamp($fromTs,
'FULL');
465 $arMinChaptersActiveFromTimestamp[$lessonId] = $fromTs;
470 return ($arChaptersActiveFrom);
477 if (
$USER->IsAdmin())
509 "CHECK_PERMISSIONS" =>
"Y",
510 "ACCESS_OPERATIONS" =>
520 array(
"nTopCount" => 1)
523 return $db->Fetch() !==
false;
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static CourseGetLinkedLesson($courseId)
static GetList($arOrder=array(), $arFields=array(), $arNavParams=array())
static GetInstance($in_userId)
const OP_LESSON_UNLINK_FROM_PARENTS
const OP_LESSON_MANAGE_RIGHTS
const OP_LESSON_LINK_DESCENDANTS
const OP_LESSON_UNLINK_DESCENDANTS
const OP_LESSON_LINK_TO_PARENTS
static CanUserAddLessonToParentLesson($arParams)
static CanUserAddLessonWithoutParentLesson($arParams=array())
static GetCurrentUserId()
static CanUserViewLessonAsPublic($arParams, $allowAccessViaLearningGroups=true)
static CanUserPerformAtLeastOneRelationAction($arParams)
static ParseParamsWithUser($arParams, $arParserOptions)
static CanUserEditLessonRights($arParams)
static CanUserEditLesson($arParams)
static getActiveLearningChaptersPeriod($courseLessonId, $userId)
static CanViewAdminMenu()
static getActiveLearningGroupsPeriod($courseLessonId, $userId)
static CanUserViewLessonRights($arParams)
static CanUserRemoveLesson($arParams)
static CanUserViewLessonContent($arParams, $allowAccessViaLearningGroups=true)
static CanUserViewLessonRelations($arParams)
static GetListOfParentPathes($lessonId, $breakOnLessonId=false, $breakBeforeLesson=false, $arIgnoreEdges=array())
static GetListOfImmediateChilds($lessonId, $arOrder=array(), $arFilter=array(), $arSelectFields=array(), $arNavParams=array())
static StaticParser($arOptions, $arParseParams)
static getList($arOrder, $arFilter, $arSelect=array(), $arNavParams=array())
static getDelays($learningGroupId, $arLessonsIds)
const EXC_ERR_ALL_ACCESS_DENIED
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
MakeTimeStamp($datetime, $format=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)