• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_chat.php
  • Класс: CIMChat
  • Вызов: CIMChat::Rename
public function Rename($chatId, $title, $checkPermission = true, $sendMessage = true)
{
	global $DB;
	$chatId = intval($chatId);
	$title = mb_substr(trim($title), 0, 255);

	if ($chatId <= 0 || $title == '')
		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'] = BitrixImText::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']); IMModelChatTable::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', "SKIP_USER_CHECK" => 'Y', )); } } $ar = CIMChat::GetRelationById($chatId, false, true, false); 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' => BitrixImCommon::getPullExtra() ); BitrixPullEvent::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; }