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

CBPAllStateService::SetState: метод Битрикс

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

//    CBPAllStateService::SetState()
//    /bitrix/modules/bizproc/classes/general/stateservice.php:505

    public function SetState($workflowId, $arState, $arStatePermissions = array())
    {
        global $DB;

        $workflowId = trim($workflowId);
        if (strlen($workflowId) <= 0)
            throw new Exception("workflowId");

        $state = trim($arState["STATE"]);
        $stateTitle = trim($arState["TITLE"]);
        $stateParameters = "";
        if (count($arState["PARAMETERS"]) > 0)
            $stateParameters = serialize($arState["PARAMETERS"]);

        $DB->Query(
            "UPDATE b_bp_workflow_state SET ".
            "    STATE = ".(strlen($state) > 0 ? "'".$DB->ForSql($state)."'" : "NULL").", ".
            "    STATE_TITLE = ".(strlen($stateTitle) > 0 ? "'".$DB->ForSql($stateTitle)."'" : "NULL").", ".
            "    STATE_PARAMETERS = ".(strlen($stateParameters) > 0 ? "'".$DB->ForSql($stateParameters)."'" : "NULL").", ".
            "    MODIFIED = ".$DB->CurrentTimeFunction()." ".
            "WHERE ID = '".$DB->ForSql($workflowId)."' "
        );

        if ($arStatePermissions !== false)
        {
            $arState = self::GetWorkflowState($workflowId);
            $runtime = $this->runtime;
            if (!isset($runtime) || !is_object($runtime))
                $runtime = CBPRuntime::GetRuntime();
            $documentService = $runtime->GetService("DocumentService");
            $documentService->SetPermissions($arState["DOCUMENT_ID"], $workflowId, $arStatePermissions, true);
            $documentType = $documentService->GetDocumentType($arState["DOCUMENT_ID"]);
            if ($documentType)
                $arStatePermissions = $documentService->toInternalOperations($documentType, $arStatePermissions);

            $DB->Query(
                "DELETE FROM b_bp_workflow_permissions ".
                "WHERE WORKFLOW_ID = '".$DB->ForSql($workflowId)."' "
            );

            foreach ($arStatePermissions as $permission => $arObjects)
            {
                foreach ($arObjects as $object)
                {
                    $DB->Query(
                        "INSERT INTO b_bp_workflow_permissions (WORKFLOW_ID, OBJECT_ID, PERMISSION) ".
                        "VALUES ('".$DB->ForSql($workflowId)."', '".$DB->ForSql($object)."', '".$DB->ForSql($permission)."')"
                    );
                }
            }
        }
    }

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

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

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

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

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

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

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

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