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

forumTextParser::convert_attachment: метод Битрикс

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

//    forumTextParser::convert_attachment()
//    /bitrix/modules/forum/classes/general/functions.php:315

    function convert_attachment($fileID = "", $p = "", $type = "", $text = "")
    {
        if (is_array($fileID))
        {
            $text = $fileID[0];
            $p = $fileID[3];
            $fileID = $fileID[2];
        }

        $fileID = intval($fileID);
        $type = strtolower(empty($type) ? $this->type : $type);
        $type = (in_array($type, array("html", "mail", "bbcode", "rss")) ? $type : "html");

        $this->arFiles = (is_array($this->arFiles) ? $this->arFiles : array($this->arFiles));
        if ($fileID <= 0 || (!array_key_exists($fileID, $this->arFiles) && !in_array($fileID, $this->arFiles)))
            return $text;

        if (!array_key_exists($fileID, $this->arFiles) && in_array($fileID, $this->arFiles)): // array(fileID10, fileID12, fileID14)
            unset($this->arFiles[array_search($fileID, $this->arFiles)]);
            $this->arFiles[$fileID] = $fileID; // array(fileID10 => fileID10, fileID12 => fileID12, fileID14 => fileID14)
        endif;

        if (!is_array($this->arFiles[$fileID]))
            $this->arFiles[$fileID] = CFile::GetFileArray($fileID); // array(fileID10 => array about file, ....)

        if (!is_array($this->arFiles[$fileID])): // if file does not exist
            unset($this->arFiles[$fileID]);
            return $text;
        endif;

        if (!array_key_exists($fileID, $this->arFilesParsed) || empty($this->arFilesParsed[$fileID][$type]))
        {
            $arFile = $this->arFiles[$fileID];
            if ($type == "html" || $type == "rss")
            {
                $width = 0; $height = 0;
                if (preg_match_all("/width\=(?P\d+)|height\=(?P\d+)/is".BX_UTF_PCRE_MODIFIER, $p, $matches)):
                    $width = intval(!empty($matches["width"][0]) ? $matches["width"][0] : $matches["width"][1]);
                    $height = intval(!empty($matches["height"][0]) ? $matches["height"][0] : $matches["height"][1]);
                endif;
                $arFile[$type] = $GLOBALS["APPLICATION"]->IncludeComponent(
                        "bitrix:forum.interface",
                        "show_file",
                        Array(
                            "FILE" => $arFile,
                            "SHOW_MODE" => ($type == "html" ? "THUMB" : "RSS"),
                            "SIZE" => array("width" => $width, "height" => $height),
                            "MAX_SIZE" => array("width" => $this->imageWidth, "height" => $this->imageHeight),
                            "HTML_SIZE"=> array("width" => $this->imageHtmlWidth, "height" => $this->imageHtmlHeight),
                            "CONVERT" => "N",
                            "NAME_TEMPLATE" => $this->userNameTemplate,
                            "FAMILY" => "FORUM",
                            "SINGLE" => "Y",
                            "RETURN" => "Y"),
                        $this->component,
                        array("HIDE_ICONS" => "Y"));
            }
            else
            {
                $path = '/bitrix/components/bitrix/forum.interface/show_file.php?fid='.$arFile["ID"];
                $bIsImage = (CFile::CheckImageFile(CFile::MakeFileArray($fileID)) === null);
//                $path = ($bIsImage && !empty($arFile["SRC"]) ? $arFile["SRC"] : !$bIsImage && !empty($arFile["URL"]) ? $arFile["URL"] : $path);
                $path = preg_replace("'(?CHTTP::URN2URI($path, $this->serverName) : $path));
                switch ($type)
                {
                    case "bbcode":
                            $arFile["bbcode"] = ($bIsImage ? '[IMG]'.$path.'[/IMG]' : '[URL='.$path.']'.$arFile["ORIGINAL_NAME"].'[/URL]');
                        break;
                    case "mail":
                            $arFile["mail"] = $arFile["ORIGINAL_NAME"].($bIsImage ? " (IMAGE: ".$path.")" : " (URL: ".$path.")");
                        break;
                }
            }
            $this->arFilesParsed[$fileID] = $arFile;
        }
        $this->arFilesIDParsed[] = $fileID;
        return $this->arFilesParsed[$fileID][$type];
    }

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

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

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

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

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

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

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

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