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

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

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

<?php 
//    /bitrix/modules/im/classes/general/im_chat.phpCIMChat::Rename()
//    2037:

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

        if (
$chatId <= || 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($strSqlfalse"File: ".__FILE__."<br>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, или иной формат общения, но проще всего воспользоваться штатным инструментом:

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