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

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

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

<?php 
//    /bitrix/modules/forum/classes/general/message.phpCForumFiles::CheckFields()
//    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"]) <= && intVal($val["FILE_ID"]) <= 0):
                    unset(
$arFiles[$key]);
                    continue;
                elseif (
strLen($val["name"]) > 0):
                    if (
$arForum["ALLOW_UPLOAD"] == "Y"):
                        
$res CFile::CheckImageFile($val$iFileSize00);
                    elseif (
$arForum["ALLOW_UPLOAD"] == "F"):
                        
$res CFile::CheckFile($val$iFileSizefalse$arForum["ALLOW_UPLOAD_EXT"]);
                    else:
                        
$res CFile::CheckFile($val$iFileSizefalsefalse);
                    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, или иной формат общения, но проще всего воспользоваться штатным инструментом:

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