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

CForumFiles::CheckFields: метод Битрикс

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

//    CForumFiles::CheckFields()
//    /bitrix/modules/forum/classes/general/message.php:1390

    public static function CheckFields(&$arFields, &$arParams, $ACTION = "ADD", $extParams = array())
    {
        $aMsg = array();
        $arFiles = (!is_array($arFields) ? array($arFields) : $arFields);
        $arParams = (!is_array($arParams) ? array($arParams) : $arParams);
        $arParams["FORUM_ID"] = intVal($arParams["FORUM_ID"]);
        if (isset($arParams["TOPIC_ID"]))
            $arParams["TOPIC_ID"] = intVal($arParams["TOPIC_ID"]);
        $arParams["MESSAGE_ID"] = intVal($arParams["MESSAGE_ID"]);
        $arParams["USER_ID"] = intVal($arParams["USER_ID"]);

        if (empty($arFiles))
            return true;
        elseif (!empty($arFiles["name"]))
            $arFiles = array($arFiles);
        $ACTION = ($ACTION == "UPDATE" || "NOT_CHECK_DB" ? $ACTION : "ADD");

        if ($arParams["FORUM_ID"] <= 0):
            $aMsg[] = array(
                "id" => 'bad_forum',
                "text" => GetMessage("F_ERR_EMPTY_FORUM_ID"));
        else:
            // Y - Image files        F - Files of specified type        A - All files
            $arForum = (!!$extParams["FORUM"] ? $extParams["FORUM"] : CForumNew::GetByID($arParams["FORUM_ID"]));
            if (empty($arForum))
                $aMsg[] = array(
                    "id" => 'bad_forum',
                    "text" => GetMessage("F_ERR_FORUM_IS_LOST"));
            elseif (!in_array($arForum["ALLOW_UPLOAD"], array("Y", "F", "A")))
                $aMsg[] = array(
                    "id" => 'bad_forum_permission',
                    "text" => GetMessage("F_ERR_UPOAD_IS_DENIED"));
        endif;
        if (empty($aMsg)):
            $arFilesExists = array();
            $iFileSize = intVal(COption::GetOptionString("forum", "file_max_size", 5242880));
            foreach ($arFiles as $key => $val):
                $res = "";
                if (strLen($val["name"]) <= 0 && intVal($val["FILE_ID"]) <= 0):
                    unset($arFiles[$key]);
                    continue;
                elseif (strLen($val["name"]) > 0):
                    if ($arForum["ALLOW_UPLOAD"] == "Y"):
                        $res = CFile::CheckImageFile($val, $iFileSize, 0, 0);
                    elseif ($arForum["ALLOW_UPLOAD"] == "F"):
                        $res = CFile::CheckFile($val, $iFileSize, false, $arForum["ALLOW_UPLOAD_EXT"]);
                    else:
                        $res = CFile::CheckFile($val, $iFileSize, false, false);
                    endif;
                    if (strLen($res) > 0)
                    {
                        $aMsg[] = array(
                            "id"=>'attach_error',
                            "text" => $res);
                    }
                endif;

                if (intVal($val["FILE_ID"]) > 0):
                    $arFiles[$key]["old_file"] = $val["FILE_ID"];
                    $arFilesExists[$val["FILE_ID"]] = $val;
                    continue;
                endif;
            endforeach;
            if ($ACTION != "NOT_CHECK_DB" && !empty($arFilesExists))
            {
                $arFilter = array("FILE_FORUM_ID" => $arParams["FORUM_ID"]);
                if (isset($arParams["TOPIC_ID"]))
                    $arFilter["FILE_TOPIC_ID"] = $arParams["TOPIC_ID"];
                if (isset($arParams["MESSAGE_ID"]))
                    $arFilter["FILE_MESSAGE_ID"] = $arParams["MESSAGE_ID"];
                $arFilter["@FILE_ID"] = array_keys($arFilesExists);

                $db_res = CForumFiles::GetList(array("FILE_ID" => "ASC"), $arFilter);
                if ($db_res && $res = $db_res->Fetch())
                {
                    do
                    {
                        unset($arFilesExists[$res["FILE_ID"]]);
                    }while ($res = $db_res->Fetch());
                }

                if (!empty($arFilesExists))
                {
                    $aMsg[] = array(
                        "id" => 'attach_error',
                        "text" => str_replace("#FILE_ID#", implode(", ", array_keys($arFilesExists)), GetMessage("F_ERR_UPOAD_FILES_IS_LOST")));
                }
            }
        endif;
        if(!empty($aMsg))
        {
            $e = new CAdminException($aMsg);
            $GLOBALS["APPLICATION"]->ThrowException($e);
            return false;
        }
        $arFields = $arFiles;
        return true;
    }

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

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

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

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

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

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

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

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