Требуется разработчик! Поддержка серверов

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

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

<?php 
//    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$arAlreadyProcessedLessonstrue) )
                {
                    
$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, или иной формат общения, но проще всего воспользоваться штатным инструментом:

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