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

UserToDepartmentTable::reInitialize: метод Битрикс

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

//    Bitrix\Intranet\Internals\UserToDepartmentTable::reInitialize()
//    /bitrix/modules/intranet/lib/internals/usertodepartment.php:86

    public static function reInitialize()
    {
        if(static::$delayed)
        {
            static::$changed = true;
            return;
        }

        $connection = \Bitrix\Main\HttpApplication::getConnection();

        if($connection->isTableExists(static::getTableName()))
        {
            $connection->query("truncate table ".static::getTableName());

            $ibDept = Option::get('intranet', 'iblock_structure', false);

            if(static::getUfDepartmentFieldId() && $ibDept && Main\Loader::includeModule('iblock'))
            {
                $users = array();
                $haveMultiple = false;
                $res = Main\UserTable::getList(array(
                    'select' => array('ID', 'UF_DEPARTMENT'),
                    'filter' => array('=ACTIVE' => 'Y'),
                ));
                while($item = $res->fetch())
                {
                    $users[$item['ID']] = $item['UF_DEPARTMENT'];
                    if(is_array($item['UF_DEPARTMENT']) && count($item['UF_DEPARTMENT']))
                    {
                        $haveMultiple = true;
                    }
                }

                $departments = array();
                if($haveMultiple)
                {
                    // get all departments
                    $departments = array();
                    $res = SectionTable::getList(array(
                        'select' => array('ID', 'DEPTH_LEVEL'),
                        'filter' => array('=IBLOCK_ID' => $ibDept),
                        'order' => array('DEPTH_LEVEL' => 'asc'),
                    ));
                    while($item = $res->fetch())
                    {
                        $departments[$item['ID']] = $item['DEPTH_LEVEL'];
                    }
                }

                $data = array();
                foreach($users as $userId => $userDepartments)
                {
                    if(is_array($userDepartments))
                    {
                        $weights = static::arrangeDepartmentWeights($departments, $userDepartments);

                        foreach($userDepartments as $departmentId)
                        {
                            if(!array_key_exists($departmentId, $weights)) // section was deleted or like that
                            {
                                continue;
                            }

                            $data[] = array(
                                'USER_ID' => $userId,
                                'DEPARTMENT_ID' => $departmentId,
                                'WEIGHT' => $weights[$departmentId],
                            );
                        }
                    }
                    else
                    {
                        $data[] = array(
                            'USER_ID' => $userId,
                            'DEPARTMENT_ID' => false,
                            'WEIGHT' => 1,
                        );
                    }
                }

                static::insertBatch(static::getTableName(), $data);
            }
        }
    }

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

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

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

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

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

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

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

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