function Delete($ID) { global $DB; $ID = intVal($ID); $arMessage = array(); if ($ID > 0) { $arMessage = CForumMessage::GetByID($ID, array("FILTER" => "N")); } if (empty($arMessage)) { return false; } /***************** Event onBeforeMessageAdd ************************/ foreach (GetModuleEvents("forum", "onBeforeMessageDelete", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array(&$ID, $arMessage)) === false) { return false; } } /***************** /Event ******************************************/ $AUTHOR_ID = intVal($arMessage["AUTHOR_ID"]); $TOPIC_ID = intVal($arMessage["TOPIC_ID"]); $FORUM_ID = intVal($arMessage["FORUM_ID"]); $DB->StartTransaction(); // delete votes if ($arMessage["PARAM1"] == "VT" && intVal($arMessage["PARAM2"]) > 0 && IsModuleInstalled("vote")) { CModule::IncludeModule("vote"); CVote::Delete($arMessage["PARAM2"]); } // delete files CForumFiles::Delete(array("MESSAGE_ID" => $ID), array("DELETE_MESSAGE_FILE" => "Y")); // delete message $DB->Query("DELETE FROM b_forum_message WHERE ID=" . $ID); // after delete $db_res = CForumMessage::GetList(array("ID" => "ASC"), array("TOPIC_ID" => $TOPIC_ID), false, 1); $res = false; if (!($db_res && ($res = $db_res->Fetch()))) { CForumTopic::Delete($TOPIC_ID); } else { // if deleted message was first if ($arMessage["NEW_TOPIC"] == "Y") { $DB->Update('b_forum_message', array('NEW_TOPIC' => '"Y"'), "WHERE ID=" . $res["ID"]); } CForumTopic::SetStat($TOPIC_ID); } $DB->Commit(); $GLOBALS["USER_FIELD_MANAGER"]->Delete("FORUM_MESSAGE", $ID); if ($AUTHOR_ID > 0) { CForumUser::SetStat($AUTHOR_ID); } CForumNew::SetStat($FORUM_ID); /***************** Event onBeforeMessageAdd ************************/ foreach (GetModuleEvents("forum", "onAfterMessageDelete", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arMessage)); } /***************** /Event ******************************************/ if (CModule::IncludeModule("search")) { CSearch::DeleteIndex("forum", $ID); if (is_array($res) && !empty($res)) { CForumMessage::Reindex($res["ID"], $res); } } return true; }
function SetStat($ID = 0, $arParams = array()) { global $DB; $ID = intVal($ID); if ($ID <= 0) { return false; } $arParams = is_array($arParams) ? $arParams : array(); $arMessage = is_array($arParams["MESSAGE"]) ? $arParams["MESSAGE"] : array(); if ($arMessage["TOPIC_ID"] != $ID) { $arMessage = array(); } $arFields = array(); if (!empty($arMessage)) { $arFields = array("ABS_LAST_POSTER_ID" => intVal($arMessage["AUTHOR_ID"]) > 0 ? $arMessage["AUTHOR_ID"] : false, "ABS_LAST_POSTER_NAME" => $arMessage["AUTHOR_NAME"], "ABS_LAST_POST_DATE" => $arMessage["POST_DATE"], "ABS_LAST_MESSAGE_ID" => $arMessage["ID"]); if ($arMessage["APPROVED"] == "Y") { $arFields["APPROVED"] = "Y"; $arFields["LAST_POSTER_ID"] = $arFields["ABS_LAST_POSTER_ID"]; $arFields["LAST_POSTER_NAME"] = $arFields["ABS_LAST_POSTER_NAME"]; $arFields["LAST_POST_DATE"] = $arFields["ABS_LAST_POST_DATE"]; $arFields["LAST_MESSAGE_ID"] = $arFields["ABS_LAST_MESSAGE_ID"]; if ($arMessage["NEW_TOPIC"] != "Y") { $arFields["=POSTS"] = "POSTS+1"; } } else { $arFields["=POSTS_UNAPPROVED"] = "POSTS_UNAPPROVED+1"; } } else { $res = CForumMessage::GetList(array(), array("TOPIC_ID" => $ID), "cnt_not_approved"); $res["CNT"] = intVal($res["CNT"]) - intVal($res["CNT_NOT_APPROVED"]); $res["CNT"] = $res["CNT"] > 0 ? $res["CNT"] : 0; if (intval($res["ABS_FIRST_MESSAGE_ID"]) > 0 && intval($res["ABS_FIRST_MESSAGE_ID"]) != intval($res["FIRST_MESSAGE_ID"])) { $GLOBALS["DB"]->Query("UPDATE b_forum_message SET NEW_TOPIC = (CASE WHEN ID=" . intval($res["ABS_FIRST_MESSAGE_ID"]) . " THEN 'Y' ELSE 'N' END) WHERE TOPIC_ID=" . $ID, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); CForumMessage::Reindex($res["ABS_FIRST_MESSAGE_ID"], $messFirst = array()); CForumMessage::Reindex($res["FIRST_MESSAGE_ID"], $mess = array()); } $arFields = array("APPROVED" => $res["CNT"] > 0 ? "Y" : "N", "POSTS" => $res["CNT"] > 0 ? $res["CNT"] - 1 : 0, "LAST_POSTER_ID" => false, "LAST_POSTER_NAME" => false, "LAST_POST_DATE" => false, "LAST_MESSAGE_ID" => intVal($res["LAST_MESSAGE_ID"]), "POSTS_UNAPPROVED" => intVal($res["CNT_NOT_APPROVED"]), "ABS_LAST_POSTER_ID" => false, "ABS_LAST_POSTER_NAME" => false, "ABS_LAST_POST_DATE" => false, "ABS_LAST_MESSAGE_ID" => intVal($res["ABS_LAST_MESSAGE_ID"])); if ($arFields["ABS_LAST_MESSAGE_ID"] > 0) { $res = CForumMessage::GetByID($arFields["ABS_LAST_MESSAGE_ID"], array("FILTER" => "N")); $arFields["ABS_LAST_POSTER_ID"] = intVal($res["AUTHOR_ID"]) > 0 ? $res["AUTHOR_ID"] : false; $arFields["ABS_LAST_POSTER_NAME"] = $res["AUTHOR_NAME"]; $arFields["ABS_LAST_POST_DATE"] = $res["POST_DATE"]; if (intVal($arFields["LAST_MESSAGE_ID"]) > 0) { if ($arFields["LAST_MESSAGE_ID"] < $arFields["ABS_LAST_MESSAGE_ID"]) { $res = CForumMessage::GetByID($arFields["LAST_MESSAGE_ID"], array("FILTER" => "N")); } $arFields["LAST_POSTER_ID"] = intVal($res["AUTHOR_ID"]) > 0 ? $res["AUTHOR_ID"] : false; $arFields["LAST_POSTER_NAME"] = $res["AUTHOR_NAME"]; $arFields["LAST_POST_DATE"] = $res["POST_DATE"]; } } foreach (array("LAST_POST_DATE" => "START_DATE", "ABS_LAST_POST_DATE" => "START_DATE", "LAST_POSTER_NAME" => "USER_START_NAME", "ABS_LAST_POSTER_NAME" => "USER_START_NAME") as $key => $val) { if ($arFields[$key] == false) { $arFields["=" . $key] = $val; unset($arFields[$key]); } } } return CForumTopic::Update($ID, $arFields); }
function Update($ID, $arFields, $skip_counts = False) { global $DB; $ID = intVal($ID); $arFields1 = array(); $arFieldsForFilter = array(); $bNeedFilter = false; if ($ID <= 0 || !CForumTopic::CheckFields("UPDATE", $arFields)) { return false; } /***************** Event onBeforeTopicUpdate **************************/ $events = GetModuleEvents("forum", "onBeforeTopicUpdate"); while ($arEvent = $events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array(&$ID, &$arFields)) === false) { return false; } } /***************** /Event ******************************************/ if (empty($arFields)) { return false; } foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!$skip_counts && is_set($arFields, "FORUM_ID") || COption::GetOptionString("forum", "FILTER", "Y") == "Y" || (is_set($arFields, "TITLE") || is_set($arFields, "TAGS")) && IsModuleInstalled("search")) { $arTopic_prev = CForumTopic::GetByID($ID, array("NoFilter" => true)); } // Fields "HTML". if (COption::GetOptionString("forum", "FILTER", "Y") == "Y") { $arFieldsForFilter = array("TITLE" => is_set($arFields, "TITLE") ? $arFields["TITLE"] : $arTopic_prev["TITLE"], "TAGS" => is_set($arFields, "TAGS") ? $arFields["TAGS"] : $arTopic_prev["TAGS"], "DESCRIPTION" => is_set($arFields, "DESCRIPTION") ? $arFields["DESCRIPTION"] : $arTopic_prev["DESCRIPTION"], "LAST_POSTER_NAME" => is_set($arFields, "LAST_POSTER_NAME") ? $arFields["LAST_POSTER_NAME"] : $arTopic_prev["LAST_POSTER_NAME"], "ABS_LAST_POSTER_NAME" => is_set($arFields, "ABS_LAST_POSTER_NAME") ? $arFields["ABS_LAST_POSTER_NAME"] : $arTopic_prev["ABS_LAST_POSTER_NAME"], "USER_START_NAME" => is_set($arFields, "USER_START_NAME") ? $arFields["USER_START_NAME"] : $arTopic_prev["USER_START_NAME"]); $bNeedFilter = false; foreach ($arFieldsForFilter as $key => $val) { if (is_set($arFields, $key)) { $bNeedFilter = true; break; } } if ($bNeedFilter) { foreach ($arFieldsForFilter as $key => $val) { $res = CFilterUnquotableWords::Filter($val); if (empty($res) && !empty($val)) { $res = "*"; } $arFieldsForFilter[$key] = $res; } $arFields["HTML"] = serialize($arFieldsForFilter); } } $strUpdate = $DB->PrepareUpdate("b_forum_topic", $arFields); foreach ($arFields1 as $key => $value) { if (strLen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } if (!empty($strUpdate)) { $strSql = "UPDATE b_forum_topic SET " . $strUpdate . " WHERE ID = " . $ID; $DB->QueryBind($strSql, array("HTML" => $arFields["HTML"]), false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); } $res = array_merge($arFields1, $arFields); if (count($res) == 1 && !empty($res["VIEWS"])) { if (intVal($res["VIEWS"]) <= 0) { $GLOBALS["FORUM_CACHE"]["TOPIC"][$ID]["VIEWS"]++; $GLOBALS["FORUM_CACHE"]["TOPIC_FILTER"][$ID]["VIEWS"]++; } else { $GLOBALS["FORUM_CACHE"]["TOPIC"][$ID]["VIEWS"] = intVal($res["VIEWS"]); $GLOBALS["FORUM_CACHE"]["TOPIC_FILTER"][$ID]["VIEWS"] = intVal($res["VIEWS"]); } } else { unset($GLOBALS["FORUM_CACHE"]["FORUM"][$arTopic_prev["FORUM_ID"]]); unset($GLOBALS["FORUM_CACHE"]["TOPIC"][$ID]); unset($GLOBALS["FORUM_CACHE"]["TOPIC_FILTER"][$ID]); if (intVal($arFields1["FORUM_ID"]) > 0) { unset($GLOBALS["FORUM_CACHE"]["FORUM"][intVal($arFields1["FORUM_ID"])]); } if (intVal($arFields["FORUM_ID"]) > 0) { unset($GLOBALS["FORUM_CACHE"]["FORUM"][intVal($arFields["FORUM_ID"])]); } } if (count($res) == 1 && !empty($res["VIEWS"])) { return $ID; } if (is_set($arFields, "FORUM_ID") && intVal($arFields["FORUM_ID"]) != intVal($arTopic_prev["FORUM_ID"])) { $arFiles = array(); $db_res = CForumFiles::GetList(array(), array("TOPIC_ID" => $ID)); if ($db_res && ($res = $db_res->Fetch())) { do { $arFiles[] = $res["ID"]; } while ($res = $db_res->Fetch()); } CForumFiles::UpdateByID($arFiles, array("FORUM_ID" => $arFields["FORUM_ID"])); } /***************** Event onAfterTopicUpdate ************************/ $events = GetModuleEvents("forum", "onAfterTopicUpdate"); if ($events->nSelectedCount > 0) { $arTopicFields = CForumTopic::GetByID($ID, array("NoFilter" => true)); } while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arTopicFields)); } /***************** /Event ******************************************/ // recalc statistic if topic removed from another forum if (!$skip_counts && is_set($arFields, "FORUM_ID") && intVal($arFields["FORUM_ID"]) != intVal($arTopic_prev["FORUM_ID"])) { $DB->StartTransaction(); $db_res = CForumMessage::GetList(array(), array("TOPIC_ID" => $ID)); while ($ar_res = $db_res->Fetch()) { CForumMessage::Update($ar_res["ID"], array("FORUM_ID" => $arFields["FORUM_ID"]), true); } $db_res = CForumSubscribe::GetList(array(), array("TOPIC_ID" => $ID)); while ($ar_res = $db_res->Fetch()) { CForumSubscribe::Update($ar_res["ID"], array("FORUM_ID" => $arFields["FORUM_ID"])); } $DB->Commit(); CForumNew::SetStat($arFields["FORUM_ID"]); CForumNew::SetStat($arTopic_prev["FORUM_ID"]); } if (IsModuleInstalled("search")) { $bNeedDeleteIndex = false; if (is_set($arFields, "FORUM_ID") && intVal($arFields["FORUM_ID"]) != intVal($arTopic_prev["FORUM_ID"])) { $res = CForumNew::GetByID($arFields["FORUM_ID"]); $bNeedDeleteIndex = $res["INDEXATION"] != "Y" ? true : false; } if ($bNeedDeleteIndex) { CModule::IncludeModule("search"); CSearch::DeleteIndex("forum", false, $arTopic_prev["FORUM_ID"], $ID); } elseif (is_set($arFields, "TITLE") || is_set($arFields, "TAGS") || is_set($arFields, "DESCRIPTION")) { $arReindex = array(); $arFields["FORUM_ID"] = is_set($arFields, "FORUM_ID") ? $arFields["FORUM_ID"] : $arTopic_prev["FORUM_ID"]; if (is_set($arFields, "TITLE") && trim($arTopic_prev["TITLE"]) != trim($arFields["TITLE"])) { $arReindex["TITLE"] = $bNeedFilter ? $arFieldsForFilter["TITLE"] : $arFields["TITLE"]; } if (is_set($arFields, "DESCRIPTION") && trim($arTopic_prev["DESCRIPTION"]) != trim($arFields["DESCRIPTION"])) { $title = is_set($arReindex, "TITLE") ? $arReindex["TITLE"] : ($bNeedFilter ? $arFieldsForFilter["TITLE"] : $arTopic_prev["TITLE"]); $description = $bNeedFilter ? $arFieldsForFilter["DESCRIPTION"] : $arFields["DESCRIPTION"]; $arReindex["TITLE_FOR_FIRST_POST"] = $title . (!empty($description) ? ", " . $description : ""); } if (is_set($arFields, "TAGS") && trim($arTopic_prev["TAGS"]) != trim($arFields["TAGS"])) { $arReindex["TAGS"] = $bNeedFilter ? $arFieldsForFilter["TAGS"] : $arFields["TAGS"]; } if (!empty($arReindex)) { CModule::IncludeModule("search"); if (is_set($arReindex, "TITLE")) { $db_res = CForumMessage::GetList(array("ID" => "ASC"), array("FORUM_ID" => $arFields["FORUM_ID"], "TOPIC_ID" => $ID, "NEW_TOPIC" => "Y")); if ($db_res) { while ($arMessage = $db_res->Fetch()) { CForumMessage::Reindex($arMessage['ID'], array_merge($arMessage, $arReindex)); } } } if (is_set($arReindex, "TITLE_FOR_FIRST_POST") || is_set($arReindex, "TAGS")) { unset($arReindex["TITLE"]); if (is_set($arReindex, "TITLE_FOR_FIRST_POST")) { $arReindex["TITLE"] = $arReindex["TITLE_FOR_FIRST_POST"]; unset($arReindex["TITLE_FOR_FIRST_POST"]); } $db_res = CForumMessage::GetList(array("ID" => "ASC"), array("TOPIC_ID" => $ID, "NEW_TOPIC" => "Y")); if ($db_res && ($arMessage = $db_res->Fetch())) { CForumMessage::Reindex($arMessage['ID'], array_merge($arMessage, $arReindex)); } } } } } return $ID; }
/** * <p>Изменяет параметры существующего сообщения с кодом <i>ID</i> на параметры, указанные в массиве <i>arFields</i>. Возвращает код изменяемого сообщения.</p> * * * * * @param int $ID Код сообщения, параметры которого необходимо изменить. * * * * @param array $arFields Массив вида Array(<i>field1</i>=><i>value1</i>[, <i>field2</i>=><i>value2</i> [, ..]]), где * <br><br><i>field</i> - название поля;<br><i>value</i> - значение поля.<br><br> Поля * перечислены в <a href="http://dev.1c-bitrix.ru/api_help/forum/fields.php#cforummessage">списке * полей сообщения</a>. * * * * @param bool $skip_counts Если этот параметр установлен в значение true, то при изменении * сообщения не будут автоматически обсчитаны статистические * данные. Это ускоряет работу функции, но создает логические ошибки * в данных. Необязательный. По умолчанию равен False. * * * * @param string $strUploadDir Каталог для загрузки файлов. Должен быть задан относительно * главного каталога для загрузки. Необязательный. По умолчанию * равен "forum". * * * * @return int <p>Возвращает код измененного сообщения. В случае ошибки * изменения возвращает False.</p><h4>Примечания</h4><p>Перед изменением * сообщения следует проверить возможность изменения методом <a * href="http://dev.1c-bitrix.ru/api_help/forum/developer/cforummessage/canuserupdatemessage.php">CForumMessage::CanUserUpdateMessage</a>.</p><p>Для * добавления и изменения сообщения и темы рекомендуется * пользоваться высокоуровневой функцией <a * href="http://dev.1c-bitrix.ru/api_help/forum/functions/forumaddmessage.php">ForumAddMessage</a>.</p> * * * <h4>See Also</h4> * <ul><li> <a href="http://dev.1c-bitrix.ru/api_help/forum/fields.php#cforummessage">Поля сообщения</a> * </li></ul> * * * @static * @link http://dev.1c-bitrix.ru/api_help/forum/developer/cforummessage/update.php * @author Bitrix */ public static function Update($ID, $arFields, $skip_counts = false, $strUploadDir = false) { global $DB; $ID = intVal($ID); $strSql = ""; $strUploadDir = ($strUploadDir === false ? "forum" : $strUploadDir); if ($ID <= 0 || !CForumMessage::CheckFields("UPDATE", $arFields, $ID) || empty($arFields)) return false; // if (!$skip_counts || IsModuleInstalled("search") || is_array($arFields["ATTACH_IMG"]) || is_array($arFields["FILES"])) // { $arMessage_prev = CForumMessage::GetByID($ID, array("FILTER" => "N")); // } if (is_set($arFields, "POST_MESSAGE") || is_set($arFields, "FORUM_ID")) { $arFields["POST_MESSAGE_HTML"] = ''; $arFields["POST_MESSAGE_FILTER"] = ''; } $arr = array( "AUTHOR_NAME" => $arMessage_prev["AUTHOR_NAME"], "AUTHOR_EMAIL" => $arMessage_prev["AUTHOR_EMAIL"], "EDITOR_NAME" => $arMessage_prev["EDITOR_NAME"], "EDITOR_EMAIL" => $arMessage_prev["EDITOR_EMAIL"], "EDIT_REASON" => $arMessage_prev["EDIT_REASON"]); $bUpdateHTML = false; foreach ($arr as $key => $val): if (is_set($arFields, $key) && $val != $arFields[$key]): $bUpdateHTML = true; break; endif; endforeach; if ($bUpdateHTML): $arFields["HTML"] = ''; endif; if (is_set($arFields, "POST_DATE") && (strLen(trim($arFields["POST_DATE"])) <= 0)) { $strSql = ", POST_DATE=".$DB->GetNowFunction(); unset($arFields["POST_DATE"]); } if (!is_set($arFields, "EDIT_DATE")) { $strSql .= ", EDIT_DATE=".$DB->GetNowFunction(); } else { if (strLen(trim($arFields["EDIT_DATE"])) <= 0) { $strSql .= ", EDIT_DATE=".$DB->GetNowFunction(); unset($arFields["EDIT_DATE"]); } } /***************** Event onBeforeMessageUpdate *********************/ $events = GetModuleEvents("forum", "onBeforeMessageUpdate"); while ($arEvent = $events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array(&$ID, &$arFields, &$strUploadDir)) === false) return false; } /***************** /Event ******************************************/ /***************** Attach ******************************************/ $arFiles = array(); if (is_array($arFields["ATTACH_IMG"])) $arFields["FILES"] = array($arFields["ATTACH_IMG"]); unset($arFields["ATTACH_IMG"]); if (is_array($arFields["FILES"]) && !empty($arFields["FILES"])) { $res = array("FORUM_ID" => $arMessage_prev["FORUM_ID"], "TOPIC_ID" => $arMessage_prev["TOPIC_ID"], "MESSAGE_ID" => $ID, "USER_ID" => $arFields["EDITOR_ID"], "upload_dir" => $strUploadDir); $arFiles = CForumFiles::Save($arFields["FILES"], $res, false); $db_res = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $ID)); if ($db_res && $res = $db_res->Fetch()) { do { $arFiles[$res["FILE_ID"]] = $res; } while ($db_res && $res = $db_res->Fetch()); } if (!empty($arFiles)) { $arFiles = array_keys($arFiles); sort($arFiles); $arFields["ATTACH_IMG"] = $arFiles[0]; } else { $arFields["ATTACH_IMG"] = 0; } unset($arFields["FILES"]); } /***************** Attach/******************************************/ if (empty($arFields) && empty($strSql)) return false; $strUpdate = $DB->PrepareUpdate("b_forum_message", $arFields, $strUploadDir); $strSql = "UPDATE b_forum_message SET ".$strUpdate.$strSql." WHERE ID = ".$ID; $DB->QueryBind($strSql, array("POST_MESSAGE" => $arFields["POST_MESSAGE"], "POST_MESSAGE_HTML" => $arFields["POST_MESSAGE_HTML"], "POST_MESSAGE_FILTER" => $arFields["POST_MESSAGE_FILTER"], "EDIT_REASON" => $arFields["EDIT_REASON"], "HTML" => $arFields["HTML"])); /***************** Attach ******************************************/ if (!empty($arFiles)) { $res = array( "FORUM_ID" => (is_set($arFields, "FORUM_ID") ? $arFields["FORUM_ID"] : $arMessage_prev["FORUM_ID"]), "TOPIC_ID" => (is_set($arFields, "TOPIC_ID") ? $arFields["TOPIC_ID"] : $arMessage_prev["TOPIC_ID"]), "MESSAGE_ID" => $ID); CForumFiles::UpdateByID($arFiles, $res); } /***************** Attach/******************************************/ /***************** Quota *******************************************/ $_SESSION["SESS_RECOUNT_DB"] = "Y"; $GLOBALS["USER_FIELD_MANAGER"]->Update("FORUM_MESSAGE", $ID, $arFields); /***************** Event onAfterMessageUpdate **********************/ $events = GetModuleEvents("forum", "onAfterMessageUpdate"); while ($arEvent = $events->Fetch()) ExecuteModuleEventEx($arEvent, array(&$ID, &$arFields)); /***************** /Event ******************************************/ unset($GLOBALS["FORUM_CACHE"]["MESSAGE"][$ID]); unset($GLOBALS["FORUM_CACHE"]["MESSAGE_FILTER"][$ID]); if (!$skip_counts || IsModuleInstalled("search")) { $arMessage = CForumMessage::GetByIDEx($ID, array("GET_TOPIC_INFO" => "Y", "GET_FORUM_INFO" => "Y", "FILTER" => "Y")); if (!$skip_counts) { // author if ($arMessage["AUTHOR_ID"] != $arMessage_prev["AUTHOR_ID"]): CForumUser::SetStat($arMessage_prev["AUTHOR_ID"], array("MESSAGE" => $arMessage_prev, "ACTION" => "DECREMENT")); CForumUser::SetStat($arMessage["AUTHOR_ID"], array("MESSAGE" => $arMessage, "ACTION" => "INCREMENT")); endif; // Topic if ($arMessage["TOPIC_ID"] != $arMessage_prev["TOPIC_ID"]): CForumTopic::SetStat($arMessage_prev["TOPIC_ID"]); CForumTopic::SetStat($arMessage["TOPIC_ID"]); endif; // Forum if ($arMessage["FORUM_ID"] != $arMessage_prev["FORUM_ID"]): CForumNew::SetStat($arMessage_prev["FORUM_ID"], array("MESSAGE" => $arMessage_prev, "ACTION" => "DECREMENT")); CForumNew::SetStat($arMessage["FORUM_ID"], array("MESSAGE" => $arMessage, "ACTION" => "INCREMENT")); endif; if ($arMessage["APPROVED"] != $arMessage_prev["APPROVED"]): if ($arMessage["AUTHOR_ID"] == $arMessage_prev["AUTHOR_ID"]): CForumUser::SetStat($arMessage["AUTHOR_ID"], array("MESSAGE" => $arMessage, "ACTION" => "UPDATE")); endif; if ($arMessage["TOPIC_ID"] == $arMessage_prev["TOPIC_ID"]): CForumTopic::SetStat($arMessage["TOPIC_ID"]); endif; if ($arMessage["FORUM_ID"] == $arMessage_prev["FORUM_ID"]): CForumNew::SetStat($arMessage["FORUM_ID"], array("MESSAGE" => $arMessage, "ACTION" => "UPDATE")); endif; $bUpdatedStatistic = true; endif; } $arForum = CForumNew::GetByID($arMessage["FORUM_ID"]); if (CModule::IncludeModule("search") && $arForum["INDEXATION"] == "Y") { // if message was removed from indexing forum to no-indexing forum we must delete index if ($arMessage_prev["FORUM_INFO"]["INDEXATION"] == "Y" && $arMessage["FORUM_INFO"]["INDEXATION"] != "Y") { CSearch::DeleteIndex("forum", $ID); } elseif ($arMessage["FORUM_INFO"]["INDEXATION"] == "Y" && $arMessage_prev["APPROVED"] != "N" && $arMessage["APPROVED"] == "N") { CSearch::DeleteIndex("forum", $ID); } elseif ($arMessage["APPROVED"] == "Y") { CForumMessage::Reindex($ID, $arMessage); } } } return $ID; }