Current Path : /var/www/html/clients/e-nkama.ru/e-nkama_bitrix/bitrix/modules/im/classes/general/ |
Current File : /var/www/html/clients/e-nkama.ru/e-nkama_bitrix/bitrix/modules/im/classes/general/im_event.php |
<? IncludeModuleLangFile(__FILE__); use Bitrix\Im as IM; class CIMEvent { public static function OnFileDelete($params) { $result = IM\ChatTable::getList(Array( 'select' => Array('ID', 'AUTHOR_ID'), 'filter' => Array('=AVATAR' => $params['ID']) )); while ($row = $result->fetch()) { IM\ChatTable::update($row['ID'], Array('AVATAR' => '')); $obCache = new CPHPCache(); $arRel = CIMChat::GetRelationById($row['ID']); foreach ($arRel as $rel) { $obCache->CleanDir('/bx/imc/recent'.CIMMessenger::GetCachePath($rel['USER_ID'])); } } } public static function OnAddRatingVote($id, $arParams) { $bSocialnetworkInstalled = CModule::IncludeModule("socialnetwork"); if ( $arParams['ENTITY_TYPE_ID'] == 'LISTS_NEW_ELEMENT' && CModule::IncludeModule("socialnetwork") ) // BP { $rsLog = CSocNetLog::GetList( array(), array( "RATING_TYPE_ID" => $arParams['ENTITY_TYPE_ID'], "RATING_ENTITY_ID" => $arParams['ENTITY_ID'] ), false, false, array("ID", "USER_ID", "TITLE_TEMPLATE", "TITLE") ); if ($arLog = $rsLog->Fetch()) { if ($arLog['USER_ID'] != $arParams['USER_ID']) { $url = COption::GetOptionString("socialnetwork", "log_entry_page", $arSites[$user_site_id]["DIR"]."company/personal/log/#log_id#/", SITE_ID); $url = str_replace("#log_id#", $arLog["ID"], $url); $arParams['ENTITY_LINK'] = $url; $arParams['ENTITY_TITLE'] = htmlspecialcharsback($arLog["TITLE"]); $arMessageFields = array( "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => intval($arLog['USER_ID']), "FROM_USER_ID" => intval($arParams['USER_ID']), "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "main", "NOTIFY_EVENT" => "rating_vote", "NOTIFY_TAG" => "RATING|".($arParams['VALUE'] >= 0 ? "" : "DL|").$arParams['ENTITY_TYPE_ID']."|".$arParams['ENTITY_ID'], "NOTIFY_MESSAGE" => self::GetMessageRatingVote($arParams), "NOTIFY_MESSAGE_OUT" => self::GetMessageRatingVote($arParams, true) ); CIMNotify::Add($arMessageFields); } } } elseif ($arParams['ENTITY_TYPE_ID'] == 'LOG_COMMENT') // no source { if ($arComment = CSocNetLogComments::GetByID($arParams['ENTITY_ID'])) { preg_match_all("/\[user\s*=\s*([^\]]*)\](.+?)\[\/user\]/ies".BX_UTF_PCRE_MODIFIER, $arComment["TEXT_MESSAGE"], $arMention); if(!empty($arMention)) { $arMentionedUserID = $arMention[1]; } if ($arComment['USER_ID'] == $arParams['USER_ID'] && empty($arMentionedUserID)) { return false; } $arEventTmp = CSocNetLogTools::FindLogCommentEventByID($arComment["EVENT_ID"]); if ( $arEventTmp && array_key_exists("CLASS_FORMAT", $arEventTmp) && array_key_exists("METHOD_FORMAT", $arEventTmp) ) { $arComment["MESSAGE"] = preg_replace( array( '|\[DISK\sFILE\sID=[n]*\d+\]|', '|\[DOCUMENT\sID=[n]*\d+\]|' ), '', $arComment["MESSAGE"] ); $arComment["MESSAGE"] = preg_replace( '|\[QUOTE\](.+?)\[\/QUOTE\]|is'.BX_UTF_PCRE_MODIFIER, '"\\1"', $arComment["MESSAGE"] ); $arFIELDS_FORMATTED = call_user_func(array($arEventTmp["CLASS_FORMAT"], $arEventTmp["METHOD_FORMAT"]), $arComment, array("IM" => "Y")); $CCTP = new CTextParser(); $CCTP->MaxStringLen = 200; $CCTP->allow = array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "N", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "LIST" => "N", "SMILES" => "Y", "NL2BR" => "Y", "VIDEO" => "N", "TABLE" => "N", "CUT_ANCHOR" => "N", "ALIGN" => "N"); $arComment["MESSAGE"] = $CCTP->convertText($arFIELDS_FORMATTED["EVENT_FORMATTED"]["MESSAGE"]); } $arComment["MESSAGE"] = preg_replace( array( '|\[DISK\sFILE\sID=[n]*\d+\]|', '|\[DOCUMENT\sID=[n]*\d+\]|' ), '', $arComment["MESSAGE"] ); $arParams["ENTITY_TITLE"] = strip_tags(str_replace(array("<br>","<br/>","<br />", "#BR#"), Array(" "," ", " ", " "), htmlspecialcharsback($arComment["MESSAGE"]))); $bExtranetInstalled = CModule::IncludeModule("extranet"); if ($bExtranetInstalled) { $arSites = array(); $extranet_site_id = CExtranet::GetExtranetSiteID(); $intranet_site_id = CSite::GetDefSite(); $dbSite = CSite::GetList($by="sort", $order="desc", array("ACTIVE" => "Y")); while($arSite = $dbSite->Fetch()) { $arSites[$arSite["ID"]] = array( "DIR" => (strlen(trim($arSite["DIR"])) > 0 ? $arSite["DIR"] : "/"), "SERVER_NAME" => (strlen(trim($arSite["SERVER_NAME"])) > 0 ? $arSite["SERVER_NAME"] : COption::GetOptionString("main", "server_name", $_SERVER["HTTP_HOST"])) ); } } if ($arComment['USER_ID'] != $arParams['USER_ID']) { $followValue = "Y"; if ($bSocialnetworkInstalled) { $followValue = CSocNetLogFollow::GetExactValueByRating( $arComment['USER_ID'], trim($arParams["ENTITY_TYPE_ID"]), intval($arParams["ENTITY_ID"]) ); } if ($followValue != "N") { $arParams['ENTITY_LINK'] = self::GetMessageRatingLogCommentURL( $arComment, intval($arComment['USER_ID']), $arSites, $intranet_site_id, $extranet_site_id ); $arMessageFields = array( "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => intval($arComment['USER_ID']), "FROM_USER_ID" => intval($arParams['USER_ID']), "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "main", "NOTIFY_EVENT" => "rating_vote", "NOTIFY_TAG" => "RATING|".($arParams['VALUE'] >= 0?"":"DL|").$arParams['ENTITY_TYPE_ID']."|".$arParams['ENTITY_ID'], "NOTIFY_MESSAGE" => self::GetMessageRatingVote($arParams), "NOTIFY_MESSAGE_OUT" => self::GetMessageRatingVote($arParams, true) ); CIMNotify::Add($arMessageFields); } } if ( !empty($arMentionedUserID) && is_array($arMentionedUserID) ) { $arParams["MENTION"] = true; // for self::GetMessageRatingVote() foreach ($arMentionedUserID as $mentioned_user_id) { if ( $mentioned_user_id != $arParams['USER_ID'] && CSocNetLogRights::CheckForUserOnly($arComment["LOG_ID"], $mentioned_user_id) ) { $followValue = "Y"; if ($bSocialnetworkInstalled) { $followValue = CSocNetLogFollow::GetExactValueByRating( intval($mentioned_user_id), trim($arParams["ENTITY_TYPE_ID"]), intval($arParams["ENTITY_ID"]) ); } if ($followValue != "N") { $arParams['ENTITY_LINK'] = self::GetMessageRatingLogCommentURL( $arComment, intval($mentioned_user_id), $arSites, $intranet_site_id, $extranet_site_id ); $arMessageFields = array( "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => intval($mentioned_user_id), "FROM_USER_ID" => intval($arParams['USER_ID']), "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "main", "NOTIFY_EVENT" => "rating_vote_mentioned", "NOTIFY_TAG" => "RATING_MENTION|".($arParams['VALUE'] >= 0?"":"DL|").$arParams['ENTITY_TYPE_ID']."|".$arParams['ENTITY_ID'], "NOTIFY_MESSAGE" => self::GetMessageRatingVote($arParams), "NOTIFY_MESSAGE_OUT" => self::GetMessageRatingVote($arParams, true) ); CIMNotify::Add($arMessageFields); } } } } } } else // with source { if ( !CModule::IncludeModule("search") || BX_SEARCH_VERSION <= 1 ) { return false; } $CSI = new CSearchItem; $arFSearch = Array('=ENTITY_TYPE_ID' => $arParams['ENTITY_TYPE_ID'], '=ENTITY_ID' => $arParams['ENTITY_ID']); if ( defined("SITE_ID") && strlen(SITE_ID) > 0 ) { $arFSearch["=SITE_ID"] = SITE_ID; } $res = $CSI->GetList(Array(), $arFSearch, Array('ID', 'URL', 'TITLE', 'BODY', 'PARAM1')); if ($arItem = $res->GetNext(true, false)) { // notify mentioned users $arSearchItemParams = CSearch::GetContentItemParams($arItem['ID'], 'mentioned_user_id'); if ( is_array($arSearchItemParams) && array_key_exists('mentioned_user_id', $arSearchItemParams) && is_array($arSearchItemParams['mentioned_user_id']) ) { $arMentionedUserID = $arSearchItemParams['mentioned_user_id']; } // send to author if ( $arParams['OWNER_ID'] != $arParams['USER_ID'] || $arMentionedUserID ) { $arParams["ENTITY_LINK"] = $arItem['URL']; $arParams["ENTITY_PARAM"] = $arItem['PARAM1']; $arParams["ENTITY_TITLE"] = trim(strip_tags(str_replace(array("\r\n","\n","\r"), ' ', htmlspecialcharsback($arItem['TITLE'])))); $arParams["ENTITY_MESSAGE"] = trim(strip_tags(str_replace(array("\r\n","\n","\r"), ' ', htmlspecialcharsback($arItem['BODY'])))); if ( ( strlen($arParams["ENTITY_TITLE"]) > 0 || strlen($arParams["ENTITY_MESSAGE"]) > 0 ) && strlen($arParams["ENTITY_LINK"]) > 0 ) { $originalLink = $arParams["ENTITY_LINK"]; $bExtranetInstalled = CModule::IncludeModule("extranet"); if ($bExtranetInstalled) { $arSites = array(); $extranet_site_id = CExtranet::GetExtranetSiteID(); $intranet_site_id = CSite::GetDefSite(); $dbSite = CSite::GetList($by="sort", $order="desc", array("ACTIVE" => "Y")); while($arSite = $dbSite->Fetch()) { $arSites[$arSite["ID"]] = array( "DIR" => (strlen(trim($arSite["DIR"])) > 0 ? $arSite["DIR"] : "/"), "SERVER_NAME" => (strlen(trim($arSite["SERVER_NAME"])) > 0 ? $arSite["SERVER_NAME"] : COption::GetOptionString("main", "server_name", $_SERVER["HTTP_HOST"])) ); } } if ($arParams['OWNER_ID'] != $arParams['USER_ID']) { $followValue = "Y"; if ($bSocialnetworkInstalled) { $followValue = CSocNetLogFollow::GetExactValueByRating( intval($arParams['OWNER_ID']), trim($arParams["ENTITY_TYPE_ID"]), intval($arParams["ENTITY_ID"]) ); } if ($followValue != "N") { $arParams['ENTITY_LINK'] = self::GetMessageRatingEntityURL( $originalLink, intval($arParams['OWNER_ID']), $arSites, $intranet_site_id, $extranet_site_id ); $arMessageFields = array( "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => intval($arParams['OWNER_ID']), "FROM_USER_ID" => intval($arParams['USER_ID']), "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "main", "NOTIFY_EVENT" => "rating_vote", "NOTIFY_TAG" => "RATING|".($arParams['VALUE'] >= 0?"":"DL|").$arParams['ENTITY_TYPE_ID']."|".$arParams['ENTITY_ID'], "NOTIFY_MESSAGE" => self::GetMessageRatingVote($arParams), "NOTIFY_MESSAGE_OUT" => self::GetMessageRatingVote($arParams, true) ); CIMNotify::Add($arMessageFields); } } if ( is_array($arMentionedUserID) && $bSocialnetworkInstalled ) { if (in_array($arParams['ENTITY_TYPE_ID'], array("BLOG_COMMENT", "FORUM_POST"))) { $rsLogComment = CSocNetLogComments::GetList( array(), array( "RATING_TYPE_ID" => $arParams['ENTITY_TYPE_ID'], "RATING_ENTITY_ID" => $arParams['ENTITY_ID'] ), false, false, array("LOG_ID") ); if ($arLogComment = $rsLogComment->Fetch()) { $log_id = $arLogComment["LOG_ID"]; } } elseif (in_array($arParams['ENTITY_TYPE_ID'], array("BLOG_POST"))) { $rsLog = CSocNetLog::GetList( array(), array( "RATING_TYPE_ID" => $arParams['ENTITY_TYPE_ID'], "RATING_ENTITY_ID" => $arParams['ENTITY_ID'] ), false, false, array("ID") ); if ($arLog = $rsLog->Fetch()) { $log_id = $arLog["ID"]; } } if (intval($log_id) > 0) { $arParams["MENTION"] = true; // for self::GetMessageRatingVote() foreach ($arMentionedUserID as $mentioned_user_id) { if ( $mentioned_user_id != $arParams['USER_ID'] && CSocNetLogRights::CheckForUserOnly($log_id, $mentioned_user_id) ) { $followValue = "Y"; if ($bSocialnetworkInstalled) { $followValue = CSocNetLogFollow::GetExactValueByRating( intval($mentioned_user_id), trim($arParams["ENTITY_TYPE_ID"]), intval($arParams["ENTITY_ID"]) ); } if ($followValue != "N") { $arParams['ENTITY_LINK'] = self::GetMessageRatingEntityURL( $originalLink, intval($mentioned_user_id), $arSites, $intranet_site_id, $extranet_site_id ); $arMessageFields = array( "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => intval($mentioned_user_id), "FROM_USER_ID" => intval($arParams['USER_ID']), "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "main", "NOTIFY_EVENT" => "rating_vote_mentioned", "NOTIFY_TAG" => "RATING_MENTION|".($arParams['VALUE'] >= 0?"":"DL|").$arParams['ENTITY_TYPE_ID']."|".$arParams['ENTITY_ID'], "NOTIFY_MESSAGE" => self::GetMessageRatingVote($arParams), "NOTIFY_MESSAGE_OUT" => self::GetMessageRatingVote($arParams, true) ); CIMNotify::Add($arMessageFields); } } } } } } } } } } public static function OnCancelRatingVote($id, $arParams) { CIMNotify::DeleteByTag("RATING|".$arParams['ENTITY_TYPE_ID']."|".$arParams['ENTITY_ID'], $arParams['USER_ID']); } private static function GetMessageRatingVote($arParams, $bForMail = false) { $like = $arParams['VALUE'] >= 0? '_LIKE': '_DISLIKE'; foreach(\Bitrix\Main\EventManager::getInstance()->findEventHandlers("im", "OnGetMessageRatingVote") as $event) { ExecuteModuleEventEx($event, array(&$arParams, &$bForMail)); } if(isset($arParams['MESSAGE'])) // message was generated manually inside OnGetMessageRatingVote { return $arParams['MESSAGE']; } if ( $arParams['ENTITY_TYPE_ID'] == 'FORUM_POST' || $arParams['ENTITY_TYPE_ID'] == 'BLOG_COMMENT' ) { $dot = strlen($arParams["ENTITY_MESSAGE"])>=200? '...': ''; $arParams["ENTITY_MESSAGE"] = substr($arParams["ENTITY_MESSAGE"], 0, 199).$dot; } else { $dot = strlen($arParams["ENTITY_TITLE"])>=200? '...': ''; $arParams["ENTITY_TITLE"] = substr($arParams["ENTITY_TITLE"], 0, 199).$dot; } if ($bForMail) { if ($arParams['ENTITY_TYPE_ID'] == 'BLOG_POST') { $message = str_replace('#LINK#', $arParams["ENTITY_TITLE"], GetMessage('IM_EVENT_RATING_BLOG_POST'.($arParams['MENTION'] ? '_MENTION' : '').$like).' ('.$arParams['ENTITY_LINK'].')'); } elseif ($arParams['ENTITY_TYPE_ID'] == 'BLOG_COMMENT') { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_MESSAGE"], '', ''), GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like).' ('.$arParams['ENTITY_LINK'].')'); } elseif ($arParams['ENTITY_TYPE_ID'] == 'FORUM_TOPIC') { $message = str_replace('#LINK#', $arParams["ENTITY_TITLE"], GetMessage('IM_EVENT_RATING_FORUM_TOPIC'.$like).' ('.$arParams['ENTITY_LINK'].')'); } elseif ($arParams['ENTITY_TYPE_ID'] == 'FORUM_POST') { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_MESSAGE"], '', ''), GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like).' ('.$arParams['ENTITY_LINK'].')'); } elseif ( $arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT' && $arParams['ENTITY_PARAM'] == 'library' ) { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_TITLE"], '', ''), GetMessage('IM_EVENT_RATING_FILE'.$like).' ('.$arParams['ENTITY_LINK'].')'); } elseif ( $arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT' && $arParams['ENTITY_PARAM'] == 'photos' ) { if (is_numeric($arParams["ENTITY_TITLE"])) { $message = str_replace(Array('#A_START#', '#A_END#'), Array('', ''), GetMessage('IM_EVENT_RATING_PHOTO1'.$like).' ('.$arParams['ENTITY_LINK'].')'); } else { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_TITLE"], '', ''), GetMessage('IM_EVENT_RATING_PHOTO'.$like).' ('.$arParams['ENTITY_LINK'].')'); } } elseif ($arParams['ENTITY_TYPE_ID'] == 'LOG_COMMENT') { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_TITLE"], '', ''), GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like).' ('.$arParams['ENTITY_LINK'].')'); } elseif ($arParams['ENTITY_TYPE_ID'] == 'LISTS_NEW_ELEMENT') { $message = str_replace( array( '#TITLE#', '#A_START#', '#A_END#' ), array( $arParams["ENTITY_TITLE"], '', '' ), GetMessage('IM_EVENT_RATING_LISTS_NEW_ELEMENT_LIKE'.$like) ); } else { $message = str_replace('#LINK#', $arParams["ENTITY_TITLE"], GetMessage('IM_EVENT_RATING_ELSE'.$like).strlen($arParams['ENTITY_LINK'])>0?' ('.$arParams['ENTITY_LINK'].')': ''); } } else { if ($arParams['ENTITY_TYPE_ID'] == 'BLOG_POST') { $message = str_replace('#LINK#', '<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">'.$arParams["ENTITY_TITLE"].'</a>', GetMessage('IM_EVENT_RATING_BLOG_POST'.($arParams['MENTION'] ? '_MENTION' : '').$like)); } elseif ($arParams['ENTITY_TYPE_ID'] == 'BLOG_COMMENT') { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_MESSAGE"], '<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">', '</a>'), GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like)); } elseif ($arParams['ENTITY_TYPE_ID'] == 'FORUM_TOPIC') { $message = str_replace('#LINK#', '<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">'.$arParams["ENTITY_TITLE"].'</a>', GetMessage('IM_EVENT_RATING_FORUM_TOPIC'.$like)); } elseif ($arParams['ENTITY_TYPE_ID'] == 'FORUM_POST') { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_MESSAGE"], '<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">', '</a>'), GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like)); } elseif ( $arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT' && $arParams['ENTITY_PARAM'] == 'library' ) { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_TITLE"], '<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">', '</a>'), GetMessage('IM_EVENT_RATING_FILE'.$like)); } elseif ( $arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT' && $arParams['ENTITY_PARAM'] == 'photos' ) { if (is_numeric($arParams["ENTITY_TITLE"])) { $message = str_replace(Array('#A_START#', '#A_END#'), Array('<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">', '</a>'), GetMessage('IM_EVENT_RATING_PHOTO1'.$like)); } else { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_TITLE"], '<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">', '</a>'), GetMessage('IM_EVENT_RATING_PHOTO'.$like)); } } elseif ($arParams['ENTITY_TYPE_ID'] == 'LOG_COMMENT') { $message = str_replace(Array('#TITLE#', '#A_START#', '#A_END#'), Array($arParams["ENTITY_TITLE"], '<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">', '</a>'), GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like)); } elseif ($arParams['ENTITY_TYPE_ID'] == 'LISTS_NEW_ELEMENT') { $message = str_replace( array( '#TITLE#', '#A_START#', '#A_END#' ), array( $arParams["ENTITY_TITLE"], '<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">', '</a>' ), GetMessage('IM_EVENT_RATING_LISTS_NEW_ELEMENT'.$like) ); } else { $message = str_replace('#LINK#', strlen($arParams['ENTITY_LINK'])>0?'<a href="'.$arParams['ENTITY_LINK'].'" class="bx-notifier-item-action">'.$arParams["ENTITY_TITLE"].'</a>': '<i>'.$arParams["ENTITY_TITLE"].'</i>', GetMessage('IM_EVENT_RATING_ELSE'.$like)); } } return $message; } private static function GetMessageRatingEntityURL($url, $user_id = false, $arSites = false, $intranet_site_id = false, $extranet_site_id = false) { static $arSiteData = false; if ( !$arSiteData && IsModuleInstalled('intranet') && CModule::IncludeModule('socialnetwork') ) { $arSiteData = CSocNetLogTools::GetSiteData(); } if ( $arSiteData && count($arSiteData) > 1 ) { foreach($arSiteData as $siteId => $arUrl) { $url = str_replace($arUrl["USER_PATH"], "#USER_PATH#", $url); } $arTmp = CSocNetLogTools::ProcessPath( array( "URL" => $url ), $user_id ); $url = $arTmp["URLS"]["URL"]; $url = ( strpos($url, "http://") === 0 || strpos($url, "https://") === 0 ? "" : ( isset($arTmp["SERVER_NAME"]) && !empty($arTmp["SERVER_NAME"]) ? $arTmp["SERVER_NAME"] : "" ) ).$arTmp["URLS"]["URL"]; } else { if ( is_array($arSites) && intval($user_id) > 0 && strlen($extranet_site_id) > 0 && strlen($intranet_site_id) > 0 ) { $bExtranetUser = false; if ($arSites[$extranet_site_id]) { $bExtranetUser = true; $rsUser = CUser::GetByID(intval($user_id)); if ($arUser = $rsUser->Fetch()) { if (intval($arUser["UF_DEPARTMENT"][0]) > 0) { $bExtranetUser = false; } } } if ($bExtranetUser) { $link = $url; if (substr($link, 0, strlen($arSites[$extranet_site_id]['DIR'])) == $arSites[$extranet_site_id]['DIR']) { $link = substr($link, strlen($arSites[$extranet_site_id]['DIR'])); } $SiteServerName = $arSites[$extranet_site_id]['SERVER_NAME'].$arSites[$extranet_site_id]['DIR'].ltrim($link, "/"); } else { $link = $url; if (substr($link, 0, strlen($arSites[$intranet_site_id]['DIR'])) == $arSites[$intranet_site_id]['DIR']) { $link = substr($link, strlen($arSites[$intranet_site_id]['DIR'])); } $SiteServerName = $arSites[$intranet_site_id]['SERVER_NAME'].$arSites[$intranet_site_id]['DIR'].ltrim($link, "/"); } $url = (CMain::IsHTTPS() ? "https" : "http")."://".$SiteServerName; } else { $SiteServerName = (defined('SITE_SERVER_NAME') && strlen(SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", $_SERVER['SERVER_NAME'])); if (strlen($SiteServerName) > 0) { $url = (CMain::IsHTTPS() ? "https" : "http")."://".$SiteServerName.$url; } } } return $url; } private static function GetMessageRatingLogCommentURL($arComment, $user_id = false, $arSites = false, $intranet_site_id = false, $extranet_site_id = false) { $url = false; if ( !is_array($arComment) || !isset($arComment["ENTITY_TYPE"]) || strlen($arComment["ENTITY_TYPE"]) <= 0 || !isset($arComment["ID"]) || intval($arComment["ID"]) <= 0 || !isset($arComment["LOG_ID"]) || intval($arComment["LOG_ID"]) <= 0 ) { return false; } if ( is_array($arSites) && intval($user_id) > 0 && strlen($extranet_site_id) > 0 && strlen($intranet_site_id) > 0 ) { $bExtranetUser = false; if ($arSites[$extranet_site_id]) { $bExtranetUser = true; $rsUser = CUser::GetByID($user_id); if ($arUser = $rsUser->Fetch()) { if (intval($arUser["UF_DEPARTMENT"][0]) > 0) { $bExtranetUser = false; } } } $user_site_id = ($bExtranetUser ? $extranet_site_id : $intranet_site_id); $url = (in_array($arComment["ENTITY_TYPE"], array("CRMLEAD", "CRMCONTACT", "CRMCOMPANY", "CRMDEAL", "CRMACTIVITY")) ? $arSites[$user_site_id]["DIR"]."crm/stream?log_id=#log_id#" : COption::GetOptionString("socialnetwork", "log_entry_page", $arSites[$user_site_id]["DIR"]."company/personal/log/#log_id#/", $user_site_id)); $url = str_replace("#log_id#", $arComment["LOG_ID"], $url); $url .= (strpos($url, "?") !== false ? "&" : "?")."commentId=".$arComment["ID"]."#com".$arComment["ID"]; $url = (CMain::IsHTTPS() ? "https" : "http")."://".$arSites[$user_site_id]['SERVER_NAME'].$url; } else { $url = (in_array($arComment["ENTITY_TYPE"], array("CRMLEAD", "CRMCONTACT", "CRMCOMPANY", "CRMDEAL", "CRMACTIVITY")) ? SITE_DIR."crm/stream?log_id=#log_id#" : COption::GetOptionString("socialnetwork", "log_entry_page", SITE_DIR."company/personal/log/#log_id#/", SITE_ID)); $url = str_replace("#log_id#", $arComment["LOG_ID"], $url); $url .= (strpos($url, "?") !== false ? "&" : "?")."commentId=".$arComment["ID"]."#com".$arComment["ID"]; $SiteServerName = (defined('SITE_SERVER_NAME') && strlen(SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", $_SERVER['SERVER_NAME'])); if (strlen($SiteServerName) > 0) { $url = (CMain::IsHTTPS() ? "https" : "http")."://".$SiteServerName.$url; } } return $url; } public static function OnAfterUserAdd($arParams) { if($arParams["ID"] <= 0) return false; if ($arParams['ACTIVE'] == 'N') return false; if (!CIMContactList::IsExtranet($arParams)) { $commonChatId = CIMChat::GetGeneralChatId(); if ($commonChatId <= 0) return true; if (!CIMChat::CanJoinGeneralChatId($arParams["ID"])) return true; $CIMChat = new CIMChat(0); $CIMChat->AddUser($commonChatId, Array($arParams["ID"])); } return true; } public static function OnAfterUserUpdate($arParams) { $commonChatId = CIMChat::GetGeneralChatId(); if ($commonChatId > 0 && (isset($arParams['ACTIVE']) || isset($arParams['UF_DEPARTMENT']))) { if ($arParams['ACTIVE'] == 'N') { CIMMessage::SetReadMessageAll($arParams['ID']); if ($commonChatId && CIMChat::GetRelationById($commonChatId, $arParams["ID"])) { $CIMChat = new CIMChat($arParams["ID"]); $CIMChat->DeleteUser($commonChatId, $arParams["ID"]); } } else { $commonChatId = CIMChat::GetGeneralChatId(); if ($commonChatId) { $userInChat = CIMChat::GetRelationById($commonChatId, $arParams["ID"]); $userCanJoin = CIMChat::CanJoinGeneralChatId($arParams["ID"]); if ($userInChat && !$userCanJoin) { $CIMChat = new CIMChat($arParams["ID"]); $CIMChat->DeleteUser($commonChatId, $arParams["ID"]); } else if (!$userInChat && $userCanJoin) { $CIMChat = new CIMChat(0); $CIMChat->AddUser($commonChatId, Array($arParams["ID"])); } } } } } public static function OnUserDelete($ID) { $ID = intval($ID); if ($ID <= 0) return false; global $DB; $arChat = Array(); $strSQL = " SELECT R.CHAT_ID FROM b_im_chat C, b_im_relation R WHERE R.USER_ID = ".$ID." and R.MESSAGE_TYPE IN ('".IM_MESSAGE_PRIVATE."', '".IM_MESSAGE_SYSTEM."') and R.CHAT_ID = C.ID "; $dbRes = $DB->Query($strSQL, true, "File: ".__FILE__."<br>Line: ".__LINE__); while ($arRes = $dbRes->Fetch()) $arChat[$arRes['CHAT_ID']] = $arRes['CHAT_ID']; if (count($arChat) > 0) { $strSQL = "DELETE FROM b_im_chat WHERE ID IN (".implode(',', $arChat).")"; $DB->Query($strSQL, true, "File: ".__FILE__."<br>Line: ".__LINE__); } $strSQL = "DELETE FROM b_im_message WHERE AUTHOR_ID = ".$ID; $DB->Query($strSQL, true, "File: ".__FILE__."<br>Line: ".__LINE__); $strSQL = "DELETE FROM b_im_relation WHERE USER_ID =".$ID; $DB->Query($strSQL, true, "File: ".__FILE__."<br>Line: ".__LINE__); $strSQL = "DELETE FROM b_im_recent WHERE USER_ID = ".$ID; $DB->Query($strSQL, true, "File: ".__FILE__."<br>Line: ".__LINE__); $strSQL = "DELETE FROM b_im_recent WHERE ITEM_TYPE = 'P' and ITEM_ID = ".$ID; $DB->Query($strSQL, true, "File: ".__FILE__."<br>Line: ".__LINE__); $strSQL = "DELETE FROM b_im_status WHERE USER_ID = ".$ID; $DB->Query($strSQL, true, "File: ".__FILE__."<br>Line: ".__LINE__); $obCache = new CPHPCache(); $obCache->CleanDir('/bx/imc/recent'); return true; } public static function OnGetDependentModule() { return Array( 'MODULE_ID' => "im", 'USE' => Array("PUBLIC_SECTION") ); } } class DesktopApplication extends Bitrix\Main\Authentication\Application { protected $validUrls = array( "/desktop_app/", "/bitrix/tools/disk/", "/bitrix/services/disk/index.php" ); public static function OnApplicationsBuildList() { return array( "ID" => "desktop", "NAME" => GetMessage('DESKTOP_APPLICATION_NAME'), "DESCRIPTION" => GetMessage("DESKTOP_APPLICATION_DESC"), "SORT" => 80, "CLASS" => "DesktopApplication", ); } } ?>