- Модуль: learning
- Путь к файлу: ~/bitrix/modules/learning/classes/general/clearnaccessmacroses.php
- Класс: CLearnAccessMacroses
- Вызов: CLearnAccessMacroses::getActiveLearningGroupsPeriod
static function getActiveLearningGroupsPeriod($courseLessonId, $userId)
{
static $arCache = array();
$userId = intval($userId);
$courseLessonId = intval($courseLessonId);
$cacheKey = $courseLessonId."|".$userId;
if ( ! array_key_exists($cacheKey, $arCache) )
{
$rs = CLearningGroup::getList(
array(),
array(
'ACTIVE' => 'Y',
'MEMBER_ID' => $userId,
'COURSE_LESSON_ID' => $courseLessonId,
'ACTIVE_DATE' => 'Y'
),
array('ID', 'MEMBER_ID', 'ACTIVE_FROM', 'ACTIVE_TO') // $arSelect
);
$minActiveFrom = null;
$minActiveFromFound = false;
$minActiveFromTs = PHP_INT_MAX;
$maxActiveTo = null;
$maxActiveToFound = false;
$maxActiveToTs = 0;
$exists = false;
$arGroupsActiveFrom = array();
while ($ar = $rs->fetch())
{
$exists = true;
$arGroupsActiveFrom[$ar['ID']] = $ar['ACTIVE_FROM'];
if ($ar['ACTIVE_FROM'] === null)
{
$minActiveFrom = null;
$minActiveFromFound = true;
}
elseif (!$minActiveFromFound)
{
$activeFromTs = MakeTimeStamp($ar['ACTIVE_FROM']);
if ($activeFromTs < $minActiveFromTs)
{
$minActiveFrom = $ar['ACTIVE_FROM'];
$minActiveFromTs = $activeFromTs;
}
}
if ($ar['ACTIVE_TO'] === null)
{
$maxActiveTo = null;
$maxActiveToFound = true;
}
elseif (!$maxActiveToFound)
{
$activeToTs = MakeTimeStamp($ar['ACTIVE_TO']);
if ($activeToTs > $maxActiveToTs)
{
$maxActiveTo = $ar['ACTIVE_TO'];
$maxActiveToTs = $activeToTs;
}
}
}
$arPeriod = array(
'IS_EXISTS' => $exists,
'ACTIVE_FROM' => $minActiveFrom,
'ACTIVE_TO' => $maxActiveTo,
'GROUPS_ACTIVE_FROM' => $arGroupsActiveFrom
);
$arCache[$cacheKey] = $arPeriod;
}
else
$arPeriod = $arCache[$cacheKey];
return ($arPeriod);
}