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

CIMChat::Rename: метод Битрикс

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

//    CIMChat::Rename()
//    /bitrix/modules/im/classes/general/im_chat.php:2081

    public function Rename($chatId, $title, $checkPermission = true, $sendMessage = true)
    {
        global $DB;
        $chatId = intval($chatId);
        $title = substr(trim($title), 0, 255);

        if ($chatId <= 0 || strlen($title) <= 0)
            return false;

        if ($checkPermission)
        {
            $strSql = "
                SELECT R.CHAT_ID, C.TITLE CHAT_TITLE, C.AUTHOR_ID CHAT_AUTHOR_ID, C.TYPE CHAT_TYPE, C.ENTITY_TYPE CHAT_ENTITY_TYPE, C.ENTITY_ID CHAT_ENTITY_ID, R.MANAGER IS_MANAGER
                FROM b_im_relation R LEFT JOIN b_im_chat C ON R.CHAT_ID = C.ID
                WHERE R.USER_ID = ".$this->user_id." AND R.MESSAGE_TYPE IN ('".IM_MESSAGE_OPEN."','".IM_MESSAGE_CHAT."','".IM_MESSAGE_OPEN_LINE."') AND R.CHAT_ID = ".$chatId;
        }
        else
        {
            $strSql = "
                SELECT C.ID CHAT_ID, C.TITLE CHAT_TITLE, C.AUTHOR_ID CHAT_AUTHOR_ID, C.TYPE CHAT_TYPE, C.ENTITY_TYPE CHAT_ENTITY_TYPE, C.ENTITY_ID CHAT_ENTITY_ID, 'Y' IS_MANAGER
                FROM b_im_chat C
                WHERE C.ID = ".$chatId." AND C.TYPE IN ('".IM_MESSAGE_OPEN."','".IM_MESSAGE_CHAT."','".IM_MESSAGE_OPEN_LINE."')";
        }
        $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
        if ($arRes = $dbRes->Fetch())
        {
            $arRes['CHAT_TITLE'] = \Bitrix\Im\Text::decodeEmoji($arRes['CHAT_TITLE']);

            if ($arRes['CHAT_TITLE'] == $title)
                return false;

            if ($arRes['CHAT_ENTITY_TYPE'] === 'ANNOUNCEMENT' && $arRes['IS_MANAGER'] !== 'Y')
            {
                return false;
            }

            $arRes['CHAT_TYPE'] = trim($arRes['CHAT_TYPE']);

            IM\Model\ChatTable::update($chatId, array('TITLE' => $title));

            if ($sendMessage)
            {
                if ($checkPermission)
                {
                    CIMChat::AddSystemMessage(Array(
                        'CHAT_ID' => $chatId,
                        'USER_ID' => $this->user_id,
                        'MESSAGE_CODE' => 'IM_CHAT_CHANGE_TITLE_',
                        'MESSAGE_REPLACE' => Array('#CHAT_TITLE#' => $title)
                    ));
                }
                else
                {
                    self::AddMessage(Array(
                        "TO_CHAT_ID" => $chatId,
                        "MESSAGE" => GetMessage("IM_CHAT_CHANGE_TITLE", Array('#CHAT_TITLE#' => $title)),
                        "SYSTEM" => 'Y',
                    ));
                }
            }

            $ar = CIMChat::GetRelationById($chatId);
            if ($arRes['CHAT_ENTITY_TYPE'] == 'LINES')
            {
                foreach ($ar as $rel)
                {
                    if ($rel["EXTERNAL_AUTH_ID"] == 'imconnector')
                    {
                        unset($ar[$rel["USER_ID"]]);
                    }
                }
            }

            if ($arRes['CHAT_TYPE'] == IM_MESSAGE_OPEN)
            {
                CIMContactList::CleanAllChatCache();
            }
            else
            {
                foreach ($ar as $rel)
                {
                    CIMContactList::CleanChatCache($rel['USER_ID']);
                }
            }
            if (CModule::IncludeModule("pull"))
            {
                $pushMessage = Array(
                    'module_id' => 'im',
                    'command' => 'chatRename',
                    'params' => Array(
                        'chatId' => $chatId,
                        'name' => $title,
                    ),
                    'extra' => \Bitrix\Im\Common::getPullExtra()
                );
                \Bitrix\Pull\Event::add(array_keys($ar), $pushMessage);
                if ($arRes['CHAT_TYPE'] == IM_MESSAGE_OPEN || $arRes['CHAT_TYPE'] == IM_MESSAGE_OPEN_LINE)
                {
                    CPullWatch::AddToStack('IM_PUBLIC_'.$chatId, $pushMessage);
                }
            }

            foreach(GetModuleEvents("im", "OnChatRename", true) as $arEvent)
            {
                ExecuteModuleEventEx($arEvent, array($chatId, $title, $arRes['CHAT_ENTITY_TYPE'], $arRes['CHAT_ENTITY_ID'], $this->user_id));
            }

            return true;
        }
        return false;
    }

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

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

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

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

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

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

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

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