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

Rights::getOperations: метод Битрикс

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

//    Bitrix\Landing\Rights::getOperations()
//    /bitrix/modules/landing/lib/rights.php:296

    protected static function getOperations($entityId, $entityType)
    {
        $operations = [];
        $operationsDefault = [];
        $wasChecked = false;
        $uid = Manager::getUserId();
        $extendedMode = self::isExtendedMode();

        // full access for admin
        if (
            self::isOn() &&
            !self::isAdmin() &&
            self::isFeatureOn() &&
            self::exist()
        )
        {
            $wasChecked = true;
            $entityIdFilter = $entityId;
            if (is_array($entityIdFilter))
            {
                $entityIdFilter[] = 0;
            }
            else
            {
                $entityIdFilter = [
                    $entityIdFilter, 0
                ];
            }
            $filter = [
                'ENTITY_ID' => $entityIdFilter,
                '=ENTITY_TYPE' => $entityType,
                'USER_ACCESS.USER_ID' => $uid,
                '!TASK_OPERATION.OPERATION.NAME' => false
            ];
            if ($extendedMode)
            {
                $filter['ROLE_ID'] = 0;
            }
            else
            {
                $filter['>ROLE_ID'] = 0;
            }
            $res = RightsTable::getList(
                [
                    'select' => [
                        'ENTITY_ID',
                        'OPERATION_NAME' => 'TASK_OPERATION.OPERATION.NAME'
                    ],
                    'filter' => $filter
                ]
            );
            while ($row = $res->fetch())
            {
                if ($row['ENTITY_ID'] == 0)
                {
                    $operationsDefault[] = substr($row['OPERATION_NAME'], 8);
                    continue;
                }
                if (!isset($operations[$row['ENTITY_ID']]))
                {
                    $operations[$row['ENTITY_ID']] = array();
                }
                $operations[$row['ENTITY_ID']][] = substr($row['OPERATION_NAME'], 8);
                $operations[$row['ENTITY_ID']] = array_unique($operations[$row['ENTITY_ID']]);
            }
        }

        // set full rights, if rights are empty
        foreach ((array) $entityId as $id)
        {
            if (!isset($operations[$id]))
            {
                if ($wasChecked && !$extendedMode)
                {
                    $operations[$id] = !empty($operationsDefault)
                        ? $operationsDefault
                        : [self::ACCESS_TYPES['denied']];
                }
                else
                {
                    $operations[$id] = array_values(self::ACCESS_TYPES);
                }
            }
        }

        return is_array($entityId)
                ? $operations
                : $operations[$entityId];
    }

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

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

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

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

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

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

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

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