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

CLearnLesson::GetListOfParentPathesRecursive: метод Битрикс

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

//    CLearnLesson::GetListOfParentPathesRecursive()
//    /bitrix/modules/learning/classes/general/clearnlesson.php:2153

    protected static function GetListOfParentPathesRecursive ($arPathes, &$arAlreadyProcessedLessons, $arIgnoreEdges = array())
    {
        $arPathesNew = $arPathes;
        $must_be_stopped = 0x1;    // stop if no more parents available or finally cycled

        foreach ($arPathes as $key => $arPath)
        {
            $lessonId = $arPath[count($arPath) - 1];
            $arEdges = self::ListImmediateParents($lessonId);
            $arParents = array();
            foreach ($arEdges as $arEdge)
            {
                $parentLessonId = (int) $arEdge['PARENT_LESSON'];
                if ( ! in_array($parentLessonId, $arAlreadyProcessedLessons, true) )
                {
                    $isEdgeIgnored = false;
                    foreach ($arIgnoreEdges as $arIgnoreEdge)
                    {
                        if (
                            ($arIgnoreEdge['PARENT_LESSON'] == $arEdge['PARENT_LESSON'])
                            && ($arIgnoreEdge['CHILD_LESSON'] == $arEdge['CHILD_LESSON'])
                        )
                        {
                            $isEdgeIgnored = true;
                            break;
                        }
                    }

                    if ( ! $isEdgeIgnored )
                    {
                        $arParents[] = $parentLessonId;

                        // Precache already processed lesson (for prevent cycling)
                        $arAlreadyProcessedLessons[] = $parentLessonId;
                    }
                }
            }

            $must_be_stopped &= (int) (count($arParents) === 0);    // true evaluted to 1

            $i = 0;
            foreach ($arParents as $parentLessonId)
            {
                $parentLessonId = (int) $parentLessonId;
                if ( $i || $i++ )    // executed only for all except first lesson in $arParents
                {
                    $arPathTmp = $arPath;
                    $arPathTmp[] = $parentLessonId;
                    $arPathesNew[] = $arPathTmp;
                }
                else
                {
                    $arPathesNew[$key][] = $parentLessonId;
                }
            }
        }

        if ($must_be_stopped)
            return ($arPathesNew);

        return (self::GetListOfParentPathesRecursive($arPathesNew, $arAlreadyProcessedLessons, $arIgnoreEdges));
    }

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

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

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

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

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

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

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

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