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

CLearnInstall201203ConvertDB::ConvertPermissions: метод Битрикс

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

//    CLearnInstall201203ConvertDB::ConvertPermissions()
//    /bitrix/modules/learning/classes/general/legacy/converter_to_11.5.0.php:710

        protected static function ConvertPermissions()
        {
            global $DB;

            $arTaskIdByOldSymbol = array();
            $arTasks = array(
                'R' => 'learning_lesson_access_read',
                'W' => 'learning_lesson_access_manage_basic',
                'X' => 'learning_lesson_access_manage_full');

            foreach ($arTasks as $oldSymbol => $taskName)
            {
                $rc = $DB->Query (
                    "SELECT ID
                    FROM b_task
                    WHERE NAME = '" . $taskName . "'",
                    true);

                if ($rc === false)
                    throw new CLearnInstall201203ConvertDBException('EA_SQLERROR');

                $row = $rc->Fetch();

                if ( ! isset($row['ID']) )
                    throw new CLearnInstall201203ConvertDBException('EA_LOGIC');

                $arTaskIdByOldSymbol[$oldSymbol] = (int) $row['ID'];
            }



            $sql =
            "SELECT TLL.ID, TLCP.PERMISSION, TLCP.USER_GROUP_ID
            FROM b_learn_lesson TLL
            INNER JOIN b_learn_course_permission TLCP
                ON TLL.COURSE_ID = TLCP.COURSE_ID
            WHERE TLL.COURSE_ID > 0
            AND TLCP.PERMISSION != 'D'

            UNION

            SELECT TLL.ID, TLCP.PERMISSION, TLCP.USER_GROUP_ID
            FROM b_learn_lesson TLL
            INNER JOIN b_learn_course_permission TLCP
                ON TLL.WAS_COURSE_ID = TLCP.COURSE_ID
            WHERE TLL.COURSE_ID = 0
            AND TLL.WAS_COURSE_ID > 0
            AND TLCP.PERMISSION != 'D'
            ";

            $res = $DB->Query($sql, true);

            if ($res === false)
                throw new CLearnInstall201203ConvertDBException('EA_SQLERROR');

            while ($row = $res->Fetch())
            {
                $lessonId = $row['ID'];
                $permission = $row['PERMISSION'];
                $user_group_id = $row['USER_GROUP_ID'];

                $group = 'G' . $user_group_id;

                // Determine task id
                if ( ! in_array($permission, array('R', 'W', 'X'), true) )
                    continue;        // skip elements with D

                $task_id = $arTaskIdByOldSymbol[$permission];

                $rc = $DB->Query (
                    "DELETE FROM b_learn_rights
                    WHERE LESSON_ID = " . (int) $lessonId . "
                        AND SUBJECT_ID = '" . $DB->ForSql($group) . "'",
                    true);
                if ($rc === false)
                    throw new CLearnInstall201203ConvertDBException('EA_SQLERROR');
                    

                $rc = $DB->Query (
                    "INSERT INTO b_learn_rights (LESSON_ID, SUBJECT_ID, TASK_ID)
                    VALUES (" . (int) $lessonId . ", '" . $DB->ForSql($group) . "', '" . $task_id . "')", true);

                if ($rc === false)
                    throw new CLearnInstall201203ConvertDBException('EA_SQLERROR');
            }

        }

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

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

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

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

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

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

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

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