function onAfterForumMessageAdd($ID, $arForumMessage, $arTopicInfo, $arForumInfo, $arFields) { // add log comment if (array_key_exists("ADD_TO_LOG", $arFields) && $arFields["ADD_TO_LOG"] == "N") { return; } if (array_key_exists("NEW_TOPIC", $arFields) && $arFields["NEW_TOPIC"] == "Y") { return; } if (!array_key_exists("TOPIC_INFO", $arForumMessage) || !is_array($arForumMessage["TOPIC_INFO"]) || !array_key_exists("XML_ID", $arForumMessage["TOPIC_INFO"]) || empty($arForumMessage["TOPIC_INFO"]["XML_ID"]) || strpos($arForumMessage["TOPIC_INFO"]["XML_ID"], "IBLOCK_") !== 0) { return; } $val = COption::GetOptionString("intranet", "sonet_log_news_iblock_forum"); $arIBlockForum = strlen($val) > 0 ? unserialize($val) : array(); if (CModule::IncludeModule("socialnetwork") && in_array($arFields["FORUM_ID"], $arIBlockForum) && array_key_exists("PARAM2", $arFields) && intval($arFields["PARAM2"]) > 0) { CSocNetAllowed::GetAllowedEntityTypes(); $dbRes = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "news", "SOURCE_ID" => $arFields["PARAM2"]), false, false, array("ID", "ENTITY_TYPE", "ENTITY_ID", "TMP_ID")); if ($arRes = $dbRes->Fetch()) { $log_id = $arRes["ID"]; $entity_id = $arRes["ENTITY_ID"]; $arForum = CForumNew::GetByID($arFields["FORUM_ID"]); $parser = new textParser(LANGUAGE_ID); // second parameter - path to smile! $parser->image_params["width"] = false; $parser->image_params["height"] = false; $arAllow = array("HTML" => "N", "ANCHOR" => "N", "BIU" => "N", "IMG" => "N", "LIST" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "UPLOAD" => $arForum["ALLOW_UPLOAD"], "NL2BR" => "N", "VIDEO" => "N", "SMILES" => "N"); $arMessage = CForumMessage::GetByIDEx($ID); $url = CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_MESSAGE"], array("FID" => $arMessage["FORUM_ID"], "TID" => $arMessage["TOPIC_ID"], "MID" => $ID)); $arFieldsForSocnet = array("ENTITY_TYPE" => SONET_SUBSCRIBE_ENTITY_NEWS, "ENTITY_ID" => $entity_id, "EVENT_ID" => "news_comment", "=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE" => $parser->convert($arFields["POST_MESSAGE"], $arAllow), "TEXT_MESSAGE" => $parser->convert4mail($arFields["POST_MESSAGE"]), "URL" => $url, "MODULE_ID" => false, "SOURCE_ID" => $ID, "LOG_ID" => $log_id, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => $ID); if (intVal($arMessage["AUTHOR_ID"]) > 0) { $arFieldsForSocnet["USER_ID"] = $arMessage["AUTHOR_ID"]; } $comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false); CSocNetLog::CounterIncrement($comment_id, false, false, "LC"); } } }
public function OnAfterPhotoCommentAddForum($ID, $arFields) { static $arSiteWorkgroupsPage; if (!CModule::IncludeModule('iblock')) { return; } if (!$this->IsSocnet) { return; } if ((!array_key_exists("PARAM1", $arFields) || $arFields["PARAM1"] != "IB") && array_key_exists("PARAM2", $arFields) && intval($arFields["PARAM2"]) > 0) { $bSocNetLogRecordExists = false; $dbRes = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "photo_photo", "SOURCE_ID" => $arFields["PARAM2"]), false, false, array("ID", "ENTITY_TYPE", "ENTITY_ID", "TMP_ID", "USER_ID", "TITLE", "URL", "PARAMS")); if ($arRes = $dbRes->Fetch()) { $log_id = $arRes["ID"]; $entity_type = $arRes["ENTITY_TYPE"]; $entity_id = $arRes["ENTITY_ID"]; $log_title = $arRes["TITLE"]; $log_url = $arRes["URL"]; $log_user_id = $arRes["USER_ID"]; if (strlen($arRes["PARAMS"]) > 0) { $arTmp = unserialize($arRes["PARAMS"]); if ($arTmp) { if (array_key_exists("SECTION_NAME", $arTmp) && strlen($arTmp["SECTION_NAME"]) > 0) { $log_section_name = $arTmp["SECTION_NAME"]; } if (array_key_exists("SECTION_URL", $arTmp) && strlen($arTmp["SECTION_URL"]) > 0) { $log_section_url = $arTmp["SECTION_URL"]; } } } $bSocNetLogRecordExists = true; } else { $rsElement = CIBlockElement::GetByID($arFields["PARAM2"]); if ($arElement = $rsElement->Fetch()) { $url = $this->arPath["DETAIL_URL"]; $sAuthorName = GetMessage("SONET_PHOTO_LOG_GUEST"); if (intval($arElement["CREATED_BY"]) > 0) { $rsUser = CUser::GetByID($arElement["CREATED_BY"]); if ($arUser = $rsUser->Fetch()) { $sAuthorName = CUser::FormatName(CSite::GetNameFormat(false), $arUser, true, false); } } if (in_array($this->entity_type, array(SONET_ENTITY_USER, SONET_ENTITY_GROUP)) && intval($this->entity_id) > 0) { $entity_type = $this->entity_type; $entity_id = $this->entity_id; $alias = ($this->entity_type == SONET_ENTITY_GROUP ? "group" : "user") . "_" . $this->entity_id; } $arLogParams = array("FORUM_ID" => intval($this->ForumID)); $rsIBlock = CIBlock::GetByID($arElement["IBLOCK_ID"]); if ($arIBlock = $rsIBlock->Fetch()) { $arLogParams["IBLOCK_ID"] = $arIBlock["ID"]; $arLogParams["IBLOCK_TYPE"] = $arIBlock["IBLOCK_TYPE_ID"]; } $rsSection = CIBlockSection::GetByID($arElement["IBLOCK_SECTION_ID"]); if ($arSection = $rsSection->Fetch()) { $arLogParams["SECTION_ID"] = $arSection["ID"]; $arLogParams["SECTION_NAME"] = $arSection["NAME"]; $arLogParams["SECTION_URL"] = str_replace("#SECTION_ID#", $arSection["ID"], $this->arPath["SECTION_URL"]); $arSectionPath = array(); $bPassword = false; $dbSection = CIBlockSection::GetList(array("LEFT_MARGIN" => "ASC"), array("IBLOCK_ID" => intval($arLogParams["IBLOCK_ID"]), "<=LEFT_BORDER" => intval($arSection["LEFT_MARGIN"]), ">=RIGHT_BORDER" => intval($arSection["RIGHT_MARGIN"]), "<=DEPTH_LEVEL" => intval($arSection["DEPTH_LEVEL"])), false, array("ID", "IBLOCK_ID", "NAME", "CODE", "CREATED_BY", "DEPTH_LEVEL", "LEFT_MARGIN", "RIGHT_MARGIN", "UF_PASSWORD")); while ($arPath = $dbSection->Fetch()) { $arSectionPath[] = $arPath; if (strlen(trim($arPath["UF_PASSWORD"])) > 0) { $bPassword = true; break; } } if (!$alias) { $entity_type = SONET_ENTITY_USER; $entity_id = $arSectionPath[0]["CREATED_BY"]; $alias = $arSectionPath[0]["CODE"]; } if (!$arSiteWorkgroupsPage && IsModuleInstalled("extranet") && $entity_type == SONET_ENTITY_GROUP) { $rsSite = CSite::GetList($by = "sort", $order = "desc", array("ACTIVE" => "Y")); while ($arSite = $rsSite->Fetch()) { $arSiteWorkgroupsPage[$arSite["ID"]] = COption::GetOptionString("socialnetwork", "workgroups_page", $arSite["DIR"] . "workgroups/", $arSite["ID"]); } } if (is_set($arLogParams["SECTION_URL"]) && is_array($arSiteWorkgroupsPage) && $entity_type == SONET_ENTITY_GROUP) { foreach ($arSiteWorkgroupsPage as $groups_page) { if (strpos($arLogParams["SECTION_URL"], $groups_page) === 0) { $arLogParams["SECTION_URL"] = "#GROUPS_PATH#" . substr($arLogParams["SECTION_URL"], strlen($groups_page), strlen($arLogParams["SECTION_URL"]) - strlen($groups_page)); } } } } $arLogParams["ALIAS"] = $alias; $arSonetFields = array("ENTITY_TYPE" => $entity_type, "ENTITY_ID" => $entity_id, "EVENT_ID" => "photo_photo", "LOG_DATE" => $arElement["TIMESTAMP_X"], "TITLE_TEMPLATE" => str_replace("#AUTHOR_NAME#", $sAuthorName, GetMessage("SONET_PHOTOPHOTO_LOG_1")), "TITLE" => $arElement["NAME"], "MESSAGE" => "", "TEXT_MESSAGE" => "", "URL" => CComponentEngine::MakePathFromTemplate($url, array("ELEMENT_ID" => $arElement["ID"], "element_id" => $arElement["ID"], "SECTION_ID" => $arElement["IBLOCK_SECTION_ID"], "section_id" => $arElement["IBLOCK_SECTION_ID"])), "MODULE_ID" => false, "CALLBACK_FUNC" => false, "SOURCE_ID" => $arElement["ID"], "PARAMS" => serialize($arLogParams), "RATING_TYPE_ID" => "IBLOCK_ELEMENT", "RATING_ENTITY_ID" => $arElement["ID"]); if (intval($arElement["CREATED_BY"]) > 0) { $arSonetFields["USER_ID"] = $arElement["CREATED_BY"]; } $log_id = CSocNetLog::Add($arSonetFields, false); if (intval($log_id) > 0) { $log_title = $arSonetFields["TITLE"]; $log_url = $arSonetFields["URL"]; $log_section_name = $arLogParams["SECTION_NAME"]; $log_section_url = $arLogParams["SECTION_URL"]; $log_user_id = $arSonetFields["USER_ID"]; CSocNetLog::Update($log_id, array("TMP_ID" => $log_id)); if ($bPassword) { CSocNetLogRights::DeleteByLogID($log_id); CSocNetLogRights::Add($log_id, array("U" . $GLOBALS["USER"]->GetID(), "SA")); } else { CSocNetLogRights::SetForSonet($log_id, $entity_type, $entity_id, "photo", "view"); } } } } if (intval($log_id) > 0) { $arForum = CForumNew::GetByID($this->ForumID); $parser = new textParser(LANGUAGE_ID, $this->arPath["PATH_TO_SMILE"]); $parser->image_params["width"] = false; $parser->image_params["height"] = false; $arAllow = array("HTML" => "N", "ANCHOR" => "N", "BIU" => "N", "IMG" => "N", "LIST" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "UPLOAD" => $arForum["ALLOW_UPLOAD"], "NL2BR" => "N", "SMILES" => "N", "VIDEO" => "N"); $url = $this->arPath["DETAIL_URL"]; if ($bSocNetLogRecordExists) { $arMessage = CForumMessage::GetByIDEx($ID); $url = CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_MESSAGE"], array("FID" => $arMessage["FORUM_ID"], "TID" => $arMessage["TOPIC_ID"], "MID" => $ID)); $arFieldsForSocnet = array("ENTITY_TYPE" => $entity_type, "ENTITY_ID" => $entity_id, "EVENT_ID" => "photo_comment", "=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE" => $parser->convert(empty($arFields["POST_MESSAGE_FILTER"]) ? $arFields["POST_MESSAGE"] : $arFields["POST_MESSAGE_FILTER"], $arAllow), "TEXT_MESSAGE" => $parser->convert4mail(empty($arFields["POST_MESSAGE_FILTER"]) ? $arFields["POST_MESSAGE"] : $arFields["POST_MESSAGE_FILTER"]), "MODULE_ID" => false, "SOURCE_ID" => $ID, "LOG_ID" => $log_id, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => $ID); if (intVal($arMessage["AUTHOR_ID"]) > 0) { $arFieldsForSocnet["USER_ID"] = $arMessage["AUTHOR_ID"]; } $comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false); if ($comment_id) { CSocNetLog::CounterIncrement($comment_id, false, false, "LC"); $arFieldsIM = array("TYPE" => "COMMENT", "TITLE" => $log_title, "MESSAGE" => $arFieldsForSocnet["MESSAGE"], "URL" => $log_url, "SECTION_NAME" => $log_section_name, "SECTION_URL" => $log_section_url, "ID" => $arFields["PARAM2"], "PHOTO_AUTHOR_ID" => $log_user_id, "COMMENT_AUTHOR_ID" => $arMessage["AUTHOR_ID"]); CSocNetPhotoCommentEvent::NotifyIm($arFieldsIM); } } else { $dbComments = CForumMessage::GetListEx(array(), array('TOPIC_ID' => $arFields["TOPIC_ID"], "NEW_TOPIC" => "N")); while ($arComment = $dbComments->GetNext()) { $url = CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_MESSAGE"], array("FID" => $arComment["FORUM_ID"], "TID" => $arComment["TOPIC_ID"], "MID" => $arComment["ID"])); $arFieldsForSocnet = array("ENTITY_TYPE" => $entity_type, "ENTITY_ID" => $entity_id, "EVENT_ID" => "photo_comment", "=LOG_DATE" => $GLOBALS["DB"]->CharToDateFunction($arComment["POST_DATE"], "FULL", SITE_ID), "MESSAGE" => $parser->convert(empty($arComment["POST_MESSAGE_FILTER"]) ? $arComment["POST_MESSAGE"] : $arComment["POST_MESSAGE_FILTER"], $arAllow), "TEXT_MESSAGE" => $parser->convert4mail(empty($arComment["POST_MESSAGE_FILTER"]) ? $arComment["POST_MESSAGE"] : $arComment["POST_MESSAGE_FILTER"]), "MODULE_ID" => false, "SOURCE_ID" => $arComment["ID"], "LOG_ID" => $log_id, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => $arComment["ID"]); if (intVal($arComment["AUTHOR_ID"]) > 0) { $arFieldsForSocnet["USER_ID"] = $arComment["AUTHOR_ID"]; } $comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false); if ($comment_id) { CSocNetLog::CounterIncrement($comment_id, false, false, "LC"); $arFieldsIM = array("TYPE" => "COMMENT", "TITLE" => $log_title, "MESSAGE" => $arFieldsForSocnet["MESSAGE"], "URL" => $log_url, "SECTION_NAME" => $log_section_name, "SECTION_URL" => $log_section_url, "ID" => $arFields["PARAM2"], "PHOTO_AUTHOR_ID" => $log_user_id, "COMMENT_AUTHOR_ID" => $arComment["AUTHOR_ID"]); CSocNetPhotoCommentEvent::NotifyIm($arFieldsIM); } } if ($arElement) { self::InheriteAlbumFollow($arElement["IBLOCK_SECTION_ID"], $log_id, intVal($arElement["CREATED_BY"]) > 0 ? $arElement["CREATED_BY"] : false); } } } } }
function convert4mail($text, $arFiles = false) { $text = textParser::convert4mail($text); if ($arFiles !== false) { $this->arFiles = is_array($arFiles) ? $arFiles : array($arFiles); } $this->arFilesIDParsed = array(); if (!empty($this->arFiles)) { $this->ParserFile($text, $this, "mail"); } return $text; }
function onAfterMessageAdd($ID, $arFields) { $bSocNetLogRecordExists = false; // add log comment if ((!array_key_exists('PARAM1', $arFields) || $arFields['PARAM1'] != 'IB') && array_key_exists('PARAM2', $arFields) && intval($arFields['PARAM2']) > 0) { $dbRes = CSocNetLog::GetList(array('ID' => 'DESC'), array("EVENT_ID" => "wiki", "SOURCE_ID" => $arFields["PARAM2"]), false, false, array('ID', 'ENTITY_TYPE', 'ENTITY_ID', 'TMP_ID', 'URL')); if ($arRes = $dbRes->Fetch()) { $log_id = $arRes['TMP_ID']; $url = $arRes['URL']; $bSocNetLogRecordExists = true; } else { $rsElement = CIBlockElement::GetByID($arFields['PARAM2']); if ($arElement = $rsElement->Fetch()) { $arWikiElement = CWiki::GetElementById($arElement['ID'], array('IBLOCK_ID' => $arElement['IBLOCK_ID'])); $CWikiParser = new CWikiParser(); $parserLog = new logTextParser(); $arAllow = array("HTML" => "N", "ANCHOR" => "N", "BIU" => "N", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "LIST" => "N", "SMILES" => "N", "NL2BR" => "N", "VIDEO" => "N", "TABLE" => "N"); $text4message = $CWikiParser->Parse($arElement['DETAIL_TEXT'], $arElement['DETAIL_TEXT_TYPE'], $arWikiElement['IMAGES']); $text4message = preg_replace("#<br[\\s]*\\/>#is", "#BR#", $text4message); $text4message = htmlspecialcharsback($parserLog->convert($text4message, array(), $arAllow)); $text4message = preg_replace("#\\#BR\\##is", "\n", $text4message); $text4message = $CWikiParser->Clear($text4message); $url = str_replace(array('#group_id#', '#wiki_name#'), array(intval($this->SonetGroupID), urlencode($arElement['NAME'])), $this->arPath['PATH_TO_POST']); $arSoFields = array('ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP, 'IS_CUSTOM_ET' => 'N', 'ENTITY_ID' => intval($this->SonetGroupID), 'EVENT_ID' => 'wiki', 'USER_ID' => $arElement['CREATED_BY'], 'LOG_DATE' => $arElement['DATE_CREATE'], 'LOG_UPDATE' => $arElement['DATE_CREATE'], 'TITLE_TEMPLATE' => GetMessage('WIKI_SONET_LOG_TITLE_TEMPLATE'), 'TITLE' => $arElement['NAME'], 'MESSAGE' => $text4message, 'TEXT_MESSAGE' => '', 'MODULE_ID' => 'wiki', 'URL' => $url, 'CALLBACK_FUNC' => false, 'SOURCE_ID' => $arFields['PARAM2'], 'PARAMS' => 'forum_id=' . $this->ForumID, 'RATING_TYPE_ID' => 'IBLOCK_ELEMENT', 'RATING_ENTITY_ID' => intval($arFields['PARAM2'])); $log_id = CSocNetLog::Add($arSoFields, false); if (intval($log_id) > 0) { CSocNetLog::Update($log_id, array("TMP_ID" => $log_id)); CSocNetLogRights::SetForSonet($log_id, SONET_SUBSCRIBE_ENTITY_GROUP, intval($this->SonetGroupID), "wiki", "view", true); } } } if (intval($log_id) > 0) { $arForum = CForumNew::GetByID($this->ForumID); $parser = new textParser(LANGUAGE_ID, $this->arPath['PATH_TO_SMILE']); $parser->image_params['width'] = false; $parser->image_params['height'] = false; $arAllow = array('HTML' => "N", 'ANCHOR' => "N", 'BIU' => "N", 'IMG' => "N", 'LIST' => "N", 'QUOTE' => "N", 'CODE' => "N", 'FONT' => "N", 'UPLOAD' => $arForum['ALLOW_UPLOAD'], 'NL2BR' => "N", 'SMILES' => "N"); $sAuthorForMail = str_replace('#TITLE#', $arMessage['AUTHOR_NAME'], GetMessage('SONET_FORUM_LOG_TEMPLATE_GUEST')); if ($bSocNetLogRecordExists) { $arMessage = CForumMessage::GetByIDEx($ID); $parser = new textParser(LANGUAGE_ID, $this->arPath['PATH_TO_SMILE']); $parser->image_params['width'] = false; $parser->image_params['height'] = false; if (intVal($arMessage['AUTHOR_ID']) > 0) { $sAuthorForMail = str_replace(array('#URL#', '#TITLE#'), array('http://' . SITE_SERVER_NAME . CComponentEngine::MakePathFromTemplate($this->arPath['PATH_TO_USER'], array('user_id' => $arMessage['AUTHOR_ID'])), $arMessage['AUTHOR_NAME']), GetMessage('SONET_FORUM_LOG_TEMPLATE_AUTHOR')); } $arFieldsForSocnet = array('ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP, 'ENTITY_ID' => intval($this->SonetGroupID), 'EVENT_ID' => 'wiki_comment', '=LOG_DATE' => $GLOBALS['DB']->CurrentTimeFunction(), 'MESSAGE' => $parser->convert($arMessage['POST_MESSAGE'], $arAllow), 'TEXT_MESSAGE' => $parser->convert4mail($arMessage['POST_MESSAGE'] . $sAuthorForMail), 'URL' => $url, 'MODULE_ID' => false, 'SOURCE_ID' => $ID, 'LOG_ID' => $log_id, 'RATING_TYPE_ID' => 'FORUM_POST', 'RATING_ENTITY_ID' => intval($arMessage['ID'])); if (intVal($arMessage['AUTHOR_ID']) > 0) { $arFieldsForSocnet['USER_ID'] = $arMessage['AUTHOR_ID']; } CSocNetLogComments::Add($arFieldsForSocnet); } else { $dbMessage = CForumMessage::GetListEx(array(), array('TOPIC_ID' => $arFields["TOPIC_ID"], "NEW_TOPIC" => "N")); while ($arMessage = $dbMessage->GetNext()) { if (intVal($arMessage['AUTHOR_ID']) > 0) { $sAuthorForMail = str_replace(array('#URL#', '#TITLE#'), array('http://' . SITE_SERVER_NAME . CComponentEngine::MakePathFromTemplate($this->arPath['PATH_TO_USER'], array('user_id' => $arMessage['AUTHOR_ID'])), $arMessage['AUTHOR_NAME']), GetMessage('SONET_FORUM_LOG_TEMPLATE_AUTHOR')); } $arFieldsForSocnet = array('ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP, 'ENTITY_ID' => intval($this->SonetGroupID), 'EVENT_ID' => 'wiki_comment', '=LOG_DATE' => $GLOBALS['DB']->CharToDateFunction($arMessage['POST_DATE'], "FULL", SITE_ID), 'MESSAGE' => $parser->convert($arMessage['POST_MESSAGE'], $arAllow), 'TEXT_MESSAGE' => $parser->convert4mail($arMessage['POST_MESSAGE'] . $sAuthorForMail), 'URL' => $url, 'MODULE_ID' => false, 'SOURCE_ID' => $ID, 'LOG_ID' => $log_id, 'RATING_TYPE_ID' => 'FORUM_POST', 'RATING_ENTITY_ID' => intval($arMessage['ID'])); if (intVal($arMessage['AUTHOR_ID']) > 0) { $arFieldsForSocnet['USER_ID'] = $arMessage['AUTHOR_ID']; } CSocNetLogComments::Add($arFieldsForSocnet); } } } } }
private function createLogComment($messageID, $bSocNetLogRecordExists, $iblockElementID, $topicID, $arLogParams) { $dbComment = CSocNetLogComments::GetList(array(), array('EVENT_ID' => 'wiki_comment', 'SOURCE_ID' => $messageID), false, false, array('ID')); if (($arComment = $dbComment->Fetch()) && intval($arComment['ID']) > 0) { return false; } $arForum = CForumNew::GetByID($this->ForumID); $parser = new textParser(LANGUAGE_ID, $this->arPath['PATH_TO_SMILE']); $parser->image_params['width'] = false; $parser->image_params['height'] = false; $arAllow = array('HTML' => "N", 'ANCHOR' => "N", 'BIU' => "N", 'IMG' => "N", 'LIST' => "N", 'QUOTE' => "N", 'CODE' => "N", 'FONT' => "N", 'UPLOAD' => $arForum['ALLOW_UPLOAD'], 'NL2BR' => "N", 'SMILES' => "N"); if ($bSocNetLogRecordExists) { $arMessage = CForumMessage::GetByIDEx($messageID); $sAuthorForMail = str_replace('#TITLE#', $arMessage['AUTHOR_NAME'], GetMessage('SONET_FORUM_LOG_TEMPLATE_GUEST')); $parser = new textParser(LANGUAGE_ID, $this->arPath['PATH_TO_SMILE']); $parser->image_params['width'] = false; $parser->image_params['height'] = false; if (intVal($arMessage['AUTHOR_ID']) > 0) { $sAuthorForMail = str_replace(array('#URL#', '#TITLE#'), array('http://' . SITE_SERVER_NAME . CComponentEngine::MakePathFromTemplate($this->arPath['PATH_TO_USER'], array('user_id' => $arMessage['AUTHOR_ID'])), $arMessage['AUTHOR_NAME']), GetMessage('SONET_FORUM_LOG_TEMPLATE_AUTHOR')); } $arFieldsForSocnet = array('ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP, 'ENTITY_ID' => intval($this->SonetGroupID), 'EVENT_ID' => 'wiki_comment', '=LOG_DATE' => $GLOBALS['DB']->CharToDateFunction($arMessage['POST_DATE'], "FULL", SITE_ID), 'MESSAGE' => $parser->convert($arMessage['POST_MESSAGE'], $arAllow), 'TEXT_MESSAGE' => $parser->convert4mail($arMessage['POST_MESSAGE'] . $sAuthorForMail), 'URL' => $arLogParams["URL"], 'MODULE_ID' => false, 'SOURCE_ID' => $messageID, 'LOG_ID' => $arLogParams["LOG_ID"], 'RATING_TYPE_ID' => 'FORUM_POST', 'RATING_ENTITY_ID' => intval($arMessage['ID'])); if (intVal($arMessage['AUTHOR_ID']) > 0) { $arFieldsForSocnet['USER_ID'] = $arMessage['AUTHOR_ID']; } $log_comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false); if ($log_comment_id) { CSocNetLog::CounterIncrement($log_comment_id, false, false, "LC"); if (CModule::IncludeModule("im") && intval($arMessage["AUTHOR_ID"]) > 0 && $arMessage["AUTHOR_ID"] != $arLogParams["LOG_USER_ID"]) { $rsUnFollower = CSocNetLogFollow::GetList(array("USER_ID" => $arLogParams["LOG_USER_ID"], "CODE" => "L" . $arLogParams["LOG_ID"], "TYPE" => "N"), array("USER_ID")); $arUnFollower = $rsUnFollower->Fetch(); if (!$arUnFollower) { $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => $arLogParams["LOG_USER_ID"], "FROM_USER_ID" => $arMessage["AUTHOR_ID"], "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "wiki", "NOTIFY_EVENT" => "comment"); $arParams["TITLE"] = str_replace(array("\r\n", "\n"), " ", $arLogParams["LOG_TITLE"]); $arParams["TITLE"] = TruncateText($arParams["TITLE"], 100); $arParams["TITLE_OUT"] = TruncateText($arParams["TITLE"], 255); $arTmp = CSocNetLogTools::ProcessPath(array("ELEMENT_URL" => $arLogParams["URL"]), $arLogParams["LOG_USER_ID"]); $serverName = $arTmp["SERVER_NAME"]; $url = $arTmp["URLS"]["ELEMENT_URL"]; $arMessageFields["NOTIFY_TAG"] = "WIKI|COMMENT|" . $iblockElementID; $arMessageFields["NOTIFY_MESSAGE"] = GetMessage("WIKI_SONET_IM_COMMENT", array("#title#" => "<a href=\"" . $url . "\" class=\"bx-notifier-item-action\">" . htmlspecialcharsbx($arParams["TITLE"]) . "</a>")); $arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage("WIKI_SONET_IM_COMMENT", array("#title#" => htmlspecialcharsbx($arParams["TITLE_OUT"]))) . " (" . $serverName . $url . ")#BR##BR#" . $arFieldsForSocnet["MESSAGE"]; CIMNotify::Add($arMessageFields); } } } } else { $dbMessage = CForumMessage::GetListEx(array(), array("TOPIC_ID" => $topicID, "NEW_TOPIC" => "N")); while ($arMessage = $dbMessage->GetNext()) { if (intVal($arMessage['AUTHOR_ID']) > 0) { $sAuthorForMail = str_replace(array('#URL#', '#TITLE#'), array('http://' . SITE_SERVER_NAME . CComponentEngine::MakePathFromTemplate($this->arPath['PATH_TO_USER'], array('user_id' => $arMessage['AUTHOR_ID'])), $arMessage['AUTHOR_NAME']), GetMessage('SONET_FORUM_LOG_TEMPLATE_AUTHOR')); } $arFieldsForSocnet = array('ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP, 'ENTITY_ID' => intval($this->SonetGroupID), 'EVENT_ID' => 'wiki_comment', '=LOG_DATE' => $GLOBALS['DB']->CharToDateFunction($arMessage['POST_DATE'], "FULL", SITE_ID), 'MESSAGE' => $parser->convert($arMessage['POST_MESSAGE'], $arAllow), 'TEXT_MESSAGE' => $parser->convert4mail($arMessage['POST_MESSAGE'] . $sAuthorForMail), 'URL' => $arLogParams["URL"], 'MODULE_ID' => false, 'SOURCE_ID' => $arMessage['ID'], 'LOG_ID' => $arLogParams["LOG_ID"], 'RATING_TYPE_ID' => 'FORUM_POST', 'RATING_ENTITY_ID' => intval($arMessage['ID'])); if (intVal($arMessage['AUTHOR_ID']) > 0) { $arFieldsForSocnet['USER_ID'] = $arMessage['AUTHOR_ID']; } $log_comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false); CSocNetLog::CounterIncrement($log_comment_id, false, false, "LC"); } } }
public function SocnetLogMessageAdd($ID, $arFields, $bUpdate = false) { $arForum = CForumNew::GetByID($this->forumID); $arMessage = CForumMessage::GetByIDEx($ID); if ($arMessage["TOPIC_ID"]) { $arTopic = CForumTopic::GetByID($arMessage["TOPIC_ID"]); } $arRes = $this->_getSocnetLogEntityByComment($arMessage); if ($arRes && intval($arRes["TMP_ID"]) > 0) { $parser = new textParser(LANGUAGE_ID, $this->arPath["PATH_TO_SMILE"]); $parser->image_params["width"] = false; $parser->image_params["height"] = false; $arAllow = array("HTML" => "N", "ANCHOR" => "N", "BIU" => "N", "IMG" => "N", "LIST" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "UPLOAD" => $arForum["ALLOW_UPLOAD"], "NL2BR" => "N", "SMILES" => "N"); if (intval($arRes["COMMENTS_COUNT"]) == intval($arTopic["POSTS"])) { $url = CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_MESSAGE"], array("FID" => $arMessage["FORUM_ID"], "TID" => $arMessage["TOPIC_ID"], "MID" => $ID)); $arFieldsForSocnet = array("ENTITY_TYPE" => $arRes["ENTITY_TYPE"], "ENTITY_ID" => $arRes["ENTITY_ID"], "EVENT_ID" => $this->event_comments_id, "=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE" => $parser->convert($arMessage["POST_MESSAGE"], $arAllow), "TEXT_MESSAGE" => $parser->convert4mail($arMessage["POST_MESSAGE"]), "URL" => $url, "MODULE_ID" => false, "SOURCE_ID" => $ID, "LOG_ID" => $arRes["TMP_ID"], "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => intval($ID)); if (intVal($arMessage["AUTHOR_ID"]) > 0) { $arFieldsForSocnet["USER_ID"] = $arMessage["AUTHOR_ID"]; } if ($bUpdate) { $commentID = $this->_getSocnetLogCommentByForumComment($ID, $arRes); if ($arMessage['APPROVED'] == 'Y') { if ($commentID) { CSocNetLogComments::Update($commentID, $arFieldsForSocnet); } else { $log_comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false); //, true CSocNetLog::CounterIncrement($log_comment_id, false, false, "LC"); } } else { if ($commentID) { CSocNetLogComments::Delete($commentID); } } } else { $log_comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false); //, true CSocNetLog::CounterIncrement($log_comment_id, false, false, "LC"); } } else { $dbComments = CForumMessage::GetListEx(array(), array('TOPIC_ID' => $arMessage["TOPIC_ID"], "NEW_TOPIC" => "N")); while ($arComment = $dbComments->GetNext()) { $url = CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_MESSAGE"], array("FID" => $arComment["FORUM_ID"], "TID" => $arComment["TOPIC_ID"], "MID" => $arComment["ID"])); $arFieldsForSocnet = array("ENTITY_TYPE" => $arRes["ENTITY_TYPE"], "ENTITY_ID" => $arRes["ENTITY_ID"], "EVENT_ID" => $this->event_comments_id, "=LOG_DATE" => $GLOBALS["DB"]->CharToDateFunction($arComment['POST_DATE'], "FULL", SITE_ID), "MESSAGE" => $parser->convert($arComment["POST_MESSAGE"], $arAllow), "TEXT_MESSAGE" => $parser->convert4mail($arComment["POST_MESSAGE"]), "URL" => $url, "MODULE_ID" => false, "SOURCE_ID" => $arComment["ID"], "LOG_ID" => $arRes["TMP_ID"], "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => intval($arComment["ID"])); if (intVal($arComment["AUTHOR_ID"]) > 0) { $arFieldsForSocnet["USER_ID"] = $arComment["AUTHOR_ID"]; } $log_comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false); //, true CSocNetLog::CounterIncrement($log_comment_id, false, false, "LC"); } } } }