• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_chat.php
  • Класс: CIMChat
  • Вызов: CIMChat::SetColor
public function SetColor($chatId, $color)
{
	global $DB;
	$chatId = intval($chatId);
	$color = ToUpper($color);

	if ($chatId <= 0 || !IMColor::isSafeColor($color))
		return false;

	$strSql = "
		SELECT R.CHAT_ID, C.COLOR CHAT_COLOR, C.AUTHOR_ID CHAT_AUTHOR_ID, C.TYPE CHAT_TYPE, C.ENTITY_TYPE CHAT_ENTITY_TYPE, C.ENTITY_ID CHAT_ENTITY_ID
		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;
	$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) { $arRes['CHAT_TYPE'] = trim($arRes['CHAT_TYPE']); if ($arRes['CHAT_COLOR'] == $color) return false; IMModelChatTable::update($chatId, array('COLOR' => $color)); CIMChat::AddSystemMessage(Array( 'CHAT_ID' => $chatId, 'USER_ID' => $this->user_id, 'MESSAGE_CODE' => 'IM_CHAT_CHANGE_COLOR_', 'MESSAGE_REPLACE' => Array('#CHAT_COLOR#' => IMColor::getName($color)) )); $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")) { $arPushMessage = Array( 'module_id' => 'im', 'command' => 'chatChangeColor', 'expiry' => 3600, 'params' => Array( 'chatId' => $chatId, 'color' => IMColor::getColor($color), ), 'extra' => BitrixImCommon::getPullExtra() ); BitrixPullEvent::add(array_keys($ar), $arPushMessage); if ($arRes['CHAT_TYPE'] == IM_MESSAGE_OPEN || $arRes['CHAT_TYPE'] == IM_MESSAGE_OPEN_LINE) { CPullWatch::AddToStack('IM_PUBLIC_'.$chatId, $arPushMessage); } } return true; } return false; }