Поддержка серверов

CLearnAccessMacroses::getActiveLearningGroupsPeriod: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=170105

//    CLearnAccessMacroses::getActiveLearningGroupsPeriod()
//    /bitrix/modules/learning/classes/general/clearnaccessmacroses.php:337

    public 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);
    }

Блог разработчика

9 августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение