$arResult["MESSAGE_FIRST"] = array(); $arResult["MESSAGE_LIST"] = array(); $arResult["MESSAGE_VIEW"] = array(); $arResult["VIEW"] = "N"; $bVarsFromForm = false; /************** Current User ***************************************/ $arResult["USER"] = array("INFO" => array(), "PERMISSION" => $arParams["PERMISSION"], "RIGHTS" => array("ADD_TOPIC" => CForumTopic::CanUserAddTopic($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), $arResult["FORUM"], $arParams["PERMISSION"]) ? "Y" : "N", "MODERATE" => CForumNew::CanUserModerateForum($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), $arParams["PERMISSION"]) == true ? "Y" : "N", "EDIT" => CForumNew::CanUserEditForum($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), $arParams["PERMISSION"]) ? "Y" : "N", "ADD_MESSAGE" => CForumMessage::CanUserAddMessage($arParams["TID"], $USER->GetUserGroupArray(), $USER->GetID(), $arParams["PERMISSION"]) ? "Y" : "N"), "SUBSCRIBE" => array(), "SHOW_NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"]); // to avoid forum module permissions extension for admin if ($arParams["PERMISSION"] <= "E") { $arResult["USER"]["RIGHTS"] = array("ADD_TOPIC" => "N", "MODERATE" => "N", "EDIT" => "N", "ADD_MESSAGE" => "N"); } if ($USER->IsAuthorized()) { $arResult["USER"]["INFO"] = CForumUser::GetByUSER_ID($USER->GetParam("USER_ID")); $arResult["USER"]["SHOW_NAME"] = $_SESSION["FORUM"]["SHOW_NAME"]; $arResult["USER"]["RANK"] = CForumUser::GetUserRank($USER->GetParam("USER_ID")); $db_res = CForumSubscribe::GetList(array(), array("USER_ID" => $USER->GetID(), "FORUM_ID" => $arParams["FID"], "TOPIC_ID" => $arParams["TID"], "SITE_ID" => SITE_ID)); if ($db_res && ($res = $db_res->Fetch())) { $arResult["USER"]["SUBSCRIBE"][$res["ID"]] = $res; } } /*******************************************************************/ $arResult["PANELS"] = array("MODERATE" => $arResult["USER"]["RIGHTS"]["MODERATE"], "DELETE" => $arResult["USER"]["RIGHTS"]["EDIT"], "SUPPORT" => IsModuleInstalled("support") && $APPLICATION->GetGroupRight("forum") >= "W" ? "Y" : "N", "EDIT" => $arResult["USER"]["RIGHTS"]["EDIT"], "STATISTIC" => IsModuleInstalled("statistic") && $APPLICATION->GetGroupRight("statistic") > "D" ? "Y" : "N", "MAIN" => $APPLICATION->GetGroupRight("main") > "D" ? "Y" : "N", "MAIL" => $APPLICATION->GetGroupRight("mail") > "R" ? "Y" : "N"); /*******************************************************************/ $_SERVER["REQUEST_URI"] = $arResult["CURRENT_PAGE"]; unset($_GET["MID"]); unset($GLOBALS["HTTP_GET_VARS"]["MID"]); unset($_GET["ACTION"]); unset($GLOBALS["HTTP_GET_VARS"]["ACTION"]); $parser = new forumTextParser(LANGUAGE_ID, $arParams["PATH_TO_SMILE"]); $parser->MaxStringLen = $arParams["WORD_LENGTH"]; $parser->image_params["width"] = $parser->image_params["height"] = $arParams["IMAGE_SIZE"];
$arResult["TOPICS"] = $arResult["Topics"]; /************** Navigation *****************************************/ if (intVal($arResult["FORUM"]["FORUM_GROUP_ID"]) > 0) { $PARENT_ID = intVal($arResult["FORUM"]["FORUM_GROUP_ID"]); while ($PARENT_ID > 0) { $res = $arResult["GROUPS"][$PARENT_ID]; $res["URL"] = array("GROUP" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_FORUMS"], array("GID" => $PARENT_ID)), "~GROUP" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_FORUMS"], array("GID" => $PARENT_ID))); $arResult["GROUP_NAVIGATION"][] = $res; $PARENT_ID = intVal($arResult["GROUPS"][$PARENT_ID]["PARENT_ID"]); } $arResult["GROUP_NAVIGATION"] = array_reverse($arResult["GROUP_NAVIGATION"]); } /************** User info ******************************************/ if ($USER->IsAuthorized()) { $arFields = array("USER_ID" => $USER->GetID(), "FORUM_ID" => $arParams["FID"], "TOPIC_ID" => 0, "SITE_ID" => SITE_ID); $db_res = CForumSubscribe::GetList(array(), $arFields); if ($db_res && ($res = $db_res->Fetch())) { do { $arResult["USER"]["SUBSCRIBE"][$res["ID"]] = $res; } while ($res = $db_res->Fetch()); } } /******************************************************************** /Data ********************************************************************/ /************** For custom template ********************************/ $arResult["CURRENT_PAGE"] = $arResult["URL"]["TOPIC_LIST"]; $arResult["index"] = $arResult["URL"]["INDEX"]; $arResult["topic_new"] = $arResult["URL"]["TOPIC_NEW"]; $arResult["UserPermission"] = $arResult["PERMISSION"]; $arParams["IsAdmin"] = CForumUser::IsAdmin() ? "Y" : "N";
if (CForumSubscribe::CanUserDeleteSubscribe($ID, $USER->GetUserGroupArray(), $USER->GetID())) { CForumSubscribe::Delete($ID); } else { $arMsg[] = array("id" => "NO_PERMS", "text" => GetMessage("FSUBSC_NO_SPERMS")); } break; } } } } //************************************/Actions ******************************************************************** if (!empty($arMsg)) { $err = new CAdminException($arMsg); $lAdmin->AddFilterError($err->GetString()); } $rsData = CForumSubscribe::GetListEx(array($by => $order), $arFilter); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("FM_TITLE_PAGE"))); //************************************ Headers ******************************************************************** $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("FM_HEAD_ID"), "sort" => "ID", "default" => true), array("id" => "FORUM_NAME", "content" => GetMessage("FM_HEAD_FORUM"), "sort" => "FORUM_NAME", "default" => true), array("id" => "TITLE", "content" => GetMessage("FM_HEAD_TOPIC"), "sort" => "TITLE", "default" => true), array("id" => "START_DATE", "content" => GetMessage("FM_HEAD_START_DATE"), "sort" => "START_DATE", "default" => true), array("id" => "LAST_SEND", "content" => GetMessage("FM_HEAD_LAST_SEND"), "sort" => "LAST_SEND", "default" => true))); //************************************ Body *********************************************************************** while ($arRes = $rsData->NavNext(true, "t_")) { $row =& $lAdmin->AddRow($t_ID, $arRes); $LOGIN = $arRes["LOGIN"]; if ($t_TOPIC_ID <= 0) { $t_TITLE = $t_NEW_TOPIC_ONLY == "Y" ? GetMessage("FM_NEW_TOPIC_ONLY") : GetMessage("FM_ALL_MESSAGE"); } $row->AddViewField("TITLE", $t_TITLE); $arActions = array(); $arActions[] = array("ICON" => "delete", "TEXT" => GetMessage("FM_ACT_DELETE"), "ACTION" => "if(confirm('" . GetMessage("FM_ACT_DEL_CONFIRM") . "')) " . $lAdmin->ActionDoGroup($t_ID, "delete", "USER_ID=" . $USER_ID . "&lang=" . LANG));
function SendMailMessage($MID, $arFields = array(), $strLang = false, $mailTemplate = false) { global $USER; $MID = intVal($MID); $arMessage = array(); $arTopic = array(); $arForum = array(); $arFiles = array(); $mailTemplate = $mailTemplate === false ? "NEW_FORUM_MESSAGE" : $mailTemplate; $event = new CEvent(); if ($MID > 0) { CTimeZone::Disable(); $arMessage = CForumMessage::GetByIDEx($MID, array("GET_TOPIC_INFO" => "Y", "GET_FORUM_INFO" => "Y", "FILTER" => "Y")); CTimeZone::Enable(); $db_files = CForumFiles::GetList(array("MESSAGE_ID" => "ASC"), array("MESSAGE_ID" => $MID)); if ($db_files && ($res = $db_files->Fetch())) { do { $arFiles[$res["ID"]] = CFile::GetFileArray($res["FILE_ID"]); } while ($res = $db_files->Fetch()); } } if (empty($arMessage)) { return false; } $arTopic = $arMessage["TOPIC_INFO"]; $arForum = $arMessage["FORUM_INFO"]; $TID = intVal($arMessage["TOPIC_ID"]); $FID = intVal($arMessage["FORUM_ID"]); if (!is_set($arFields, "FORUM_ID")) { $arFields["FORUM_ID"] = $arMessage["FORUM_ID"]; } if (!is_set($arFields, "FORUM_NAME")) { $arFields["FORUM_NAME"] = $arForum["NAME"]; } if (!is_set($arFields, "TOPIC_ID")) { $arFields["TOPIC_ID"] = $arMessage["TOPIC_ID"]; } if (!is_set($arFields, "MESSAGE_ID")) { $arFields["MESSAGE_ID"] = $arMessage["ID"]; } if (!is_set($arFields, "TOPIC_TITLE")) { $arFields["TOPIC_TITLE"] = $arTopic["TITLE"]; } if (!is_set($arFields, "MESSAGE_DATE")) { $arFields["MESSAGE_DATE"] = $arMessage["POST_DATE"]; } if (!is_set($arFields, "AUTHOR")) { $arFields["AUTHOR"] = $arMessage["AUTHOR_NAME"]; } if (!is_set($arFields, "TAPPROVED")) { $arFields["TAPPROVED"] = $arTopic["APPROVED"]; } if (!is_set($arFields, "MAPPROVED")) { $arFields["MAPPROVED"] = $arMessage["APPROVED"]; } if (!is_set($arFields, "FROM_EMAIL")) { $arFields["FROM_EMAIL"] = COption::GetOptionString("forum", "FORUM_FROM_EMAIL", "*****@*****.**"); } //If the message is from socialnetwork, check if mail processor exists for this social network if ($arTopic["SOCNET_GROUP_ID"] > 0) { if (CModule::IncludeModule("mail") && CModule::IncludeModule("socialnetwork")) { $arMailParams = CForumEMail::GetForumFilters($FID, $arTopic["SOCNET_GROUP_ID"]); //If the processor exists: if ($arMailParams) { global $DB; if ($arMessage["XML_ID"] == '') { //check if MSG_ID field exists, generate it if not $arMessage["XML_ID"] = "M" . $MID . "." . md5(uniqid()) . "@" . ($_SERVER["SERVER_NAME"] != '' ? $_SERVER["SERVER_NAME"] : $_SERVER["SERVER_ADDR"]); $DB->Query("UPDATE b_forum_message SET XML_ID='" . $DB->ForSQL($arMessage["XML_ID"]) . "' WHERE ID=" . $MID); } //get MSG_ID topics, it would be IN_REPLY_TO if ($arTopic["XML_ID"] == '') { $arTopic["XML_ID"] = "T" . $TID . "." . md5(uniqid()) . "@" . ($_SERVER["SERVER_NAME"] != '' ? $_SERVER["SERVER_NAME"] : $_SERVER["SERVER_ADDR"]); $DB->Query("UPDATE b_forum_topic SET XML_ID='" . $DB->ForSQL($arTopic["XML_ID"]) . "' WHERE ID=" . $TID); } //fill FROM_EMAIL from AUTHOR_NAME + FROM_EMAIL or AUTHOR_EMAIL or from 'b_user' by AUTHOR_ID depending on the settings of mail processor if ($arMailParams['USE_EMAIL'] == 'Y' && $arMessage["AUTHOR_EMAIL"] != '') { $arFields["FROM_EMAIL"] = '"' . $arMessage['AUTHOR_NAME'] . '" <' . $arMessage['AUTHOR_EMAIL'] . '>'; } elseif ($arMailParams['USE_EMAIL'] == 'Y' && $arMessage["EMAIL"] != '') { $arFields["FROM_EMAIL"] = '"' . $arMessage['AUTHOR_NAME'] . '" <' . $arMessage['EMAIL'] . '>'; } else { $arFields["FROM_EMAIL"] = '"' . $arMessage['AUTHOR_NAME'] . '" <' . $arMailParams['EMAIL'] . '>'; } if ($arMessage["NEW_TOPIC"] == "Y") { $arFields["=Message-Id"] = $arFields["MSG_ID"] = "<" . $arTopic["XML_ID"] . ">"; } else { $arFields["TOPIC_TITLE"] = "Re" . ($arMessage["TOPIC_INFO"]["POSTS"] > 1 ? "[" . $arMessage["TOPIC_INFO"]["POSTS"] . "]" : "") . ": " . $arFields["TOPIC_TITLE"]; $arFields["=Message-Id"] = $arFields["MSG_ID"] = "<" . $arMessage["XML_ID"] . ">"; $arFields["=In-Reply-To"] = $arFields["IN_REPLY_TO"] = "<" . $arTopic["XML_ID"] . ">"; } //fill REPLY_TO from the settings of the mail processor $arFields["=Reply-To"] = $arFields["REPLY_TO"] = $arMailParams["EMAIL"]; $arFields["FORUM_EMAIL"] = $arMailParams["EMAIL"]; $arSocNetGroup = CSocNetGroup::GetById($arTopic["SOCNET_GROUP_ID"]); $arFields["FORUM_NAME"] = $arSocNetGroup["NAME"]; if ($arMailParams["SUBJECT_SUF"] != '') { $arFields["TOPIC_TITLE"] .= ' ' . $arMailParams["SUBJECT_SUF"]; } if ($arMailParams["USE_SUBJECT"] == "Y") { $arFields["=Subject"] = $arFields["TOPIC_TITLE"]; } $arFields["PATH2FORUM"] = CComponentEngine::MakePathFromTemplate($arMailParams["URL_TEMPLATES_MESSAGE"], array("FID" => $arMessage["FORUM_ID"], "TID" => $arMessage["TOPIC_ID"], "TITLE_SEO" => $arMessage["TOPIC_INFO"]["TITLE_SEO"], "MID" => $arMessage["ID"])); } else { return false; } } else { return false; } } else { $arForumSites = CForumNew::GetSites($FID); foreach ($arForumSites as $site_id => $path) { $arForumSites[$site_id] = trim(CForumNew::PreparePath2Message($arForumSites[$site_id], array("FORUM_ID" => $arMessage["FORUM_ID"], "TOPIC_ID" => $arMessage["TOPIC_ID"], "TITLE_SEO" => $arMessage["TOPIC_INFO"]["TITLE_SEO"], "MESSAGE_ID" => $arMessage["ID"], "SOCNET_GROUP_ID" => $arTopic["SOCNET_GROUP_ID"], "OWNER_ID" => $arTopic["OWNER_ID"], "PARAM1" => $arMessage["PARAM1"], "PARAM2" => $arMessage["PARAM2"]))); if (empty($arForumSites[$site_id])) { $db_lang = CSite::GetByID($site_id); $arForumSites[$site_id] = "/"; if ($ar_lang = $db_lang->Fetch()) { $arForumSites[$site_id] = $ar_lang["DIR"]; } $arForumSites[$site_id] = COption::GetOptionString("forum", "REL_FPATH", "") . "forum/read.php?FID=#FID#&TID=#TID#&MID=#MID##message#MID#"; } } foreach (GetModuleEvents("forum", "onBeforeMailMessageSend", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array(&$mailTemplate, &$arForumSites, &$arFields, $arForum, $arTopic, $arMessage)) === false) { return false; } } } /* ?? ALTER TABLE dbo.B_FORUM_MESSAGE ADD MSG_ID varchar(255) NULL, MAIL_MESSAGE_ID int NULL */ $arFilter = array("FORUM_ID" => $FID, "TOPIC_ID_OR_NULL" => $TID, "ACTIVE" => "Y", ">=PERMISSION" => $arTopic["APPROVED"] != "Y" || $arMessage["APPROVED"] != "Y" ? "Q" : "E"); if ($arMessage["NEW_TOPIC"] != "Y") { $arFilter["NEW_TOPIC_ONLY"] = "N"; } if ($mailTemplate == "NEW_FORUM_MESSAGE") { $arFilter["LAST_SEND_OR_NULL"] = $MID; } if ($arTopic["SOCNET_GROUP_ID"] > 0) { $mailTemplate = "FORUM_NEW_MESSAGE_MAIL"; $arFilter["SOCNET_GROUP_ID"] = $arTopic["SOCNET_GROUP_ID"]; } else { $arFilter["SOCNET_GROUP_ID"] = false; } $db_res = CForumSubscribe::GetListEx(array("USER_ID" => "ASC"), $arFilter); $arID = array(); $arSiteFields = array(); $currentUserID = false; while ($res = $db_res->Fetch()) { // SUBSC_GET_MY_MESSAGE - Send my messages to myself. if ($res["SUBSC_GET_MY_MESSAGE"] == "N" && $res["USER_ID"] == $USER->GetId()) { continue; } // SUBSC_GROUP_MESSAGE - Group messages. if ($currentUserID == $res["USER_ID"]) { continue; } // Check email if (empty($res["EMAIL"])) { continue; } if ($mailTemplate == "FORUM_NEW_MESSAGE_MAIL" && $res["USER_ID"] == $arMessage["AUTHOR_ID"]) { continue; } $currentUserID = $res["USER_ID"]; $arFields_tmp = $arFields; if (!is_set($arFields_tmp, "PATH2FORUM")) { $arFields_tmp["PATH2FORUM"] = $arForumSites[$res["SITE_ID"]]; } if (!is_set($arFields_tmp, "MESSAGE_TEXT")) { if (!isset(${"parser_" . $res["SITE_ID"]})) { ${"parser_" . $res["SITE_ID"]} = new forumTextParser($res["SITE_ID"]); } if (empty($arSiteFields[$res["SITE_ID"]])) { $arSiteFields[$res["SITE_ID"]] = $event->GetSiteFieldsArray($res["SITE_ID"]); $db_site = CSite::GetByID($res["SITE_ID"]); if ($db_site && ($arSite = $db_site->Fetch())) { $arSiteFields[$res["SITE_ID"]] = array_merge($arSiteFields[$res["SITE_ID"]], $arSite, array("LANG_MESS" => IncludeModuleLangFile(__FILE__, $arSiteFields[$res["SITE_ID"]]["LANGUAGE_ID"], true))); $arSiteFields[$res["SITE_ID"]]["ATTACHED_FILES"] = $arSiteFields[$res["SITE_ID"]]["LANG_MESS"]["F_ATTACHED_FILES"]; } } if (!empty($arSiteFields[$res["SITE_ID"]]["SERVER_NAME"])) { ${"parser_" . $res["SITE_ID"]}->serverName = $arSiteFields[$res["SITE_ID"]]["SERVER_NAME"]; } ${"parser_" . $res["SITE_ID"]}->arFiles = $arFiles; $POST_MESSAGE_HTML = $arMessage["POST_MESSAGE"]; if (COption::GetOptionString("forum", "FILTER", "Y") == "Y") { $POST_MESSAGE_HTML = empty($arMessage["POST_MESSAGE_FILTER"]) ? CFilterUnquotableWords::Filter($POST_MESSAGE_HTML) : $arMessage["POST_MESSAGE_FILTER"]; } $arFields_tmp["MESSAGE_TEXT"] = ${"parser_" . $res["SITE_ID"]}->convert4mail($POST_MESSAGE_HTML); $arFields_tmp["PARSED_FILES"] = ${"parser_" . $res["SITE_ID"]}->arFilesIDParsed; $tmp = array_diff(array_keys($arFiles), ${"parser_" . $res["SITE_ID"]}->arFilesIDParsed); if (!empty($tmp)) { $str = "[FILE ID=" . implode("]\n[FILE ID=", $tmp) . "]"; ${"parser_" . $res["SITE_ID"]}->ParserFile($str, ${"parser_" . $res["SITE_ID"]}, "mail"); $arFields_tmp["MESSAGE_TEXT"] .= "\n\n" . $arSiteFields[$res["SITE_ID"]]["ATTACHED_FILES"] . "\n" . $str; } } $arFields_tmp["RECIPIENT"] = $res["EMAIL"]; $event->Send($mailTemplate, $res["SITE_ID"], $arFields_tmp, "N"); $arID[] = $res["ID"]; if (count($arID) > 255) { CForumSubscribe::UpdateLastSend($MID, implode(",", $arID)); $arID = array(); } } if (count($arID) > 0) { CForumSubscribe::UpdateLastSend($MID, implode(",", $arID)); } return true; }
$arParams["USE_CAPTCHA"] = $arResult["FORUM"]["USE_CAPTCHA"] == "Y" ? "Y" : $arParams["USE_CAPTCHA"]; /******************************************************************** /Input params ********************************************************************/ /******************************************************************** Data ********************************************************************/ /************** 3. Get inormation about USER ***********************/ if ($arParams["SHOW_SUBSCRIBE"] == "Y" && $USER->IsAuthorized() && $arResult["USER"]["PERMISSION"] > "E") { // USER subscribes $db_res = CForumSubscribe::GetList( array(), array( "USER_ID" => $USER->GetID(), "FORUM_ID" => $arParams["FORUM_ID"] ) ); if ($db_res && $res = $db_res->Fetch()) { do { $arResult["USER"]["SUBSCRIBE"][] = $res; if (intval($res["TOPIC_ID"]) <= 0) $arResult["USER"]["FORUM_SUBSCRIBE"] = "Y"; elseif(intval($res["TOPIC_ID"]) == intval($arResult["FORUM_TOPIC_ID"])) $arResult["USER"]["TOPIC_SUBSCRIBE"] = "Y"; } while ($res = $db_res->Fetch()); } }
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; }
public static function Update($ID, $arFields) { global $DB; $ID = intVal($ID); if (!CForumSubscribe::CheckFields("UPDATE", $arFields)) { return false; } $strUpdate = $DB->PrepareUpdate("b_forum_subscribe", $arFields); $strSql = "UPDATE b_forum_subscribe SET " . $strUpdate . " WHERE ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); return $ID; }
********************************************************************/ $arResult["CURRENT_PAGE"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_SUBSCR_LIST"], array()); $arResult["~FORUMS"] = $arResult["FORUMS"] = array(); $arResult["~TOPICS"] = $arResult["TOPICS"] = array(); $arResult["ERROR_MESSAGE"] = implode("\n", $arError); $arResult["OK_MESSAGE"] = implode("\n", $arNote); $arResult["sessid"] = bitrix_sessid_get(); $arResult["SHOW_SUBSCRIBE_LIST"] = "N"; $arResult["SUBSCRIBE_LIST"] = array(); /******************************************************************** /Default values ********************************************************************/ /******************************************************************** Data ********************************************************************/ $db_res = CForumSubscribe::GetListEx(array("FORUM_ID" => "ASC", "TOPIC_ID" => "ASC", "START_DATE" => "ASC"), array("USER_ID" => $arParams["UID"]), array("bDescPageNumbering" => false, "nPageSize" => $arParams["TOPICS_PER_PAGE"])); $db_res->NavStart($arParams["TOPICS_PER_PAGE"]); $db_res->nPageWindow = $arParams["PAGE_NAVIGATION_WINDOW"]; $db_res->bShowAll = false; $arResult["NAV_RESULT"] = $db_res; $arResult["NAV_STRING"] = $db_res->GetPageNavStringEx($navComponentObject, GetMessage("F_SUBSCRIBE"), $arParams["PAGE_NAVIGATION_TEMPLATE"]); if ($db_res && ($res = $db_res->GetNext())) { $arResult["SHOW_SUBSCRIBE_LIST"] = "Y"; do { $arResult["~FORUMS"][] = $res["FORUM_ID"]; $arResult["~TOPICS"][] = $res["TOPIC_ID"]; $res["START_DATE"] = trim($res["START_DATE"]); if (strLen($res["START_DATE"]) > 0) { $res["START_DATE"] = CForumFormat::DateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($res["START_DATE"], CSite::GetDateFormat())); } $res["SUBSCRIBE_TYPE"] = intVal($res["TOPIC_ID"]) > 0 ? "TOPIC" : ($res["NEW_TOPIC_ONLY"] == "Y" ? "NEW_TOPIC_ONLY" : "ALL_MESSAGES");
$APPLICATION->AddChainItem("Профиль", "profile.php"); $APPLICATION->SetTitle("Список подписки на сообщения форума"); $APPLICATION->SetTemplateCSS("forum/forum_tmpl_2/forum.css"); $APPLICATION->IncludeFile("forum/forum_tmpl_2/menu.php"); if (!$bUserFound) { $strErrorMessage .= "Пользователь с кодом {$UID} не найден. \n"; } ?> <?php echo ShowMessage(array("MESSAGE" => $strErrorMessage, "TYPE" => "ERROR")); echo ShowMessage(array("MESSAGE" => $strOKMessage, "TYPE" => "OK")); ?> <?php $db_res = CForumSubscribe::GetList(array("FORUM_ID" => "ASC", "TOPIC_ID" => "ASC", "START_DATE" => "ASC"), array("USER_ID" => $UID)); ?> <form action="<?php echo $APPLICATION->GetCurPage(); ?> " method="post"> <font class="text"> <?php $FID = IntVal($_REQUEST["FID"]); $TID = IntVal($_REQUEST["TID"]); if ($TID > 0) { ?> <a href="read.php?FID=<?php echo $FID; ?>
function ForumDeleteSubscribe($ID, &$strErr, &$strOk) { global $USER; $ID = IntVal($ID); if (CForumSubscribe::CanUserDeleteSubscribe($ID, $USER->GetUserGroupArray(), $USER->GetID())) { CForumSubscribe::Delete($ID); return true; } else { $strErr = GetMessage("FSUBSC_NO_SPERMS") . ". \n"; } return false; }
function AddComment_Review_CreateRoot_Forum($arElement, $forumID, $bPostFirstMessage = false, $strFirstMessage = "") { if (!CModule::IncludeModule("forum")) { return false; } if ($bPostFirstMessage && strlen($strFirstMessage) <= 0) { return false; } // Add Topic $arUserStart = array("ID" => intVal($arElement["~CREATED_BY"]), "NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"]); if ($arUserStart["ID"] > 0) { $res = array(); $db_res = CForumUser::GetListEx(array(), array("USER_ID" => $arElement["~CREATED_BY"])); if ($db_res && ($res = $db_res->Fetch())) { $res["FORUM_USER_ID"] = intVal($res["ID"]); $res["ID"] = $res["USER_ID"]; } else { $db_res = CUser::GetByID($arElement["~CREATED_BY"]); if ($db_res && ($res = $db_res->Fetch())) { $res["SHOW_NAME"] = COption::GetOptionString("forum", "USER_SHOW_NAME", "Y"); $res["USER_PROFILE"] = "N"; } } if (!empty($res)) { $arUserStart = $res; $sName = $res["SHOW_NAME"] == "Y" ? trim($res["NAME"] . " " . $res["LAST_NAME"]) : ""; $arUserStart["NAME"] = empty($sName) ? trim($res["LOGIN"]) : $sName; } } $arUserStart["NAME"] = empty($arUserStart["NAME"]) ? $GLOBALS["FORUM_STATUS_NAME"]["guest"] : $arUserStart["NAME"]; $GLOBALS["DB"]->StartTransaction(); $arFields = array("TITLE" => $arElement["~NAME"], "TAGS" => $arElement["~TAGS"], "FORUM_ID" => $forumID, "USER_START_ID" => $arUserStart["ID"], "USER_START_NAME" => $arUserStart["NAME"], "LAST_POSTER_NAME" => $arUserStart["NAME"], "APPROVED" => "Y", "XML_ID" => "IBLOCK_" . $arElement["ID"]); if (isset($arElement["ENTITY_TYPE"]) && $arElement["ENTITY_TYPE"] == SONET_ENTITY_GROUP && isset($arElement["ENTITY_ID"]) && intval($arElement["ENTITY_ID"]) > 0) { $arFields["SOCNET_GROUP_ID"] = intval($arElement["ENTITY_ID"]); } $TOPIC_ID = CForumTopic::Add($arFields); if ($bPostFirstMessage && intVal($TOPIC_ID) > 0) { if (COption::GetOptionString("forum", "FILTER", "Y") == "Y") { $strFirstMessage = CFilterUnquotableWords::Filter($strFirstMessage); } // Add post as new message $arFields = array("POST_MESSAGE" => $strFirstMessage, "AUTHOR_ID" => $arUserStart["ID"], "AUTHOR_NAME" => $arUserStart["NAME"], "FORUM_ID" => $forumID, "TOPIC_ID" => $TOPIC_ID, "APPROVED" => "Y", "NEW_TOPIC" => "Y", "PARAM1" => "IB", "PARAM2" => intVal($arElement["ID"])); $MID = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N")); if (intVal($MID) <= 0) { $arError[] = array("code" => "message is not added 1", "title" => GetMessage("F_ERR_ADD_MESSAGE")); CForumTopic::Delete($TOPIC_ID); $TOPIC_ID = 0; } elseif ($arParams["SUBSCRIBE_AUTHOR_ELEMENT"] == "Y" && intVal($arResult["ELEMENT"]["~CREATED_BY"]) > 0) { if ($arUserStart["USER_PROFILE"] == "N") { $arUserStart["FORUM_USER_ID"] = CForumUser::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"])); } if (intVal($arUserStart["FORUM_USER_ID"]) > 0) { CForumSubscribe::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"], "FORUM_ID" => $arParams["FORUM_ID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => $TID, "NEW_TOPIC_ONLY" => "N")); BXClearCache(true, "/bitrix/forum/user/" . $arResult["ELEMENT"]["~CREATED_BY"] . "/subscribe/"); // Sorry, Max. } } } elseif (intVal($TOPIC_ID) <= 0) { $GLOBALS["DB"]->Rollback(); return false; } $GLOBALS["DB"]->Commit(); return $TOPIC_ID; }
$sElementPreview = $arResult["ELEMENT"]["~PREVIEW_TEXT"]; if ($arAllow["HTML"] != "Y") { $sElementPreview = strip_tags($sElementPreview); } $arFields = array("POST_MESSAGE" => str_replace(array("#IMAGE#", "#TITLE#", "#BODY#", "#LINK#"), array($sImage, $arResult["ELEMENT"]["~NAME"], $sElementPreview, $url), $arParams["POST_FIRST_MESSAGE_TEMPLATE"]), "AUTHOR_ID" => $arUserStart["ID"], "AUTHOR_NAME" => $arUserStart["NAME"], "FORUM_ID" => $arParams["FORUM_ID"], "TOPIC_ID" => $TID, "APPROVED" => "Y", "NEW_TOPIC" => "Y", "PARAM1" => "IB", "PARAM2" => intVal($arParams["ELEMENT_ID"])); $MID = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N")); if (intVal($MID) <= 0) { $arError[] = array("code" => "message is not added 1", "title" => GetMessage("F_ERR_ADD_MESSAGE")); CForumTopic::Delete($TID); $TID = 0; } elseif ($arParams["SUBSCRIBE_AUTHOR_ELEMENT"] == "Y" && intVal($arResult["ELEMENT"]["~CREATED_BY"]) > 0) { if ($arUserStart["USER_PROFILE"] == "N") { $arUserStart["FORUM_USER_ID"] = CForumUser::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"])); } if (intVal($arUserStart["FORUM_USER_ID"]) > 0) { CForumSubscribe::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"], "FORUM_ID" => $arParams["FORUM_ID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => $TID, "NEW_TOPIC_ONLY" => "N")); BXClearCache(true, "/bitrix/forum/user/" . $arResult["ELEMENT"]["~CREATED_BY"] . "/subscribe/"); // Sorry, Max. } } } // Second exit point if (!empty($arError)) { $DB->Rollback(); return false; } else { $DB->Commit(); } } // 1.6.1 Add post comment $arFieldsG = array("POST_MESSAGE" => $_POST["REVIEW_TEXT"], "AUTHOR_NAME" => trim($_POST["REVIEW_AUTHOR"]), "AUTHOR_EMAIL" => $_POST["REVIEW_EMAIL"], "USE_SMILES" => $_POST["REVIEW_USE_SMILES"], "PARAM2" => intVal($arParams["ELEMENT_ID"]), "TITLE" => $PRODUCT_NAME);
} if ($arAllow["HTML"] != "Y") { $arTopic['MESSAGE'] = strip_tags($arTopic['MESSAGE']); } $arFields = array("POST_MESSAGE" => $arTopic['MESSAGE'], "AUTHOR_ID" => $arUserStart["ID"], "AUTHOR_NAME" => $arUserStart["NAME"], "FORUM_ID" => $arParams["FORUM_ID"], "TOPIC_ID" => $TID, "APPROVED" => "Y", "NEW_TOPIC" => "Y", "PARAM1" => $arParams['ENTITY_TYPE'], "PARAM2" => intVal($arParams["ENTITY_ID"]), "PERMISSION_EXTERNAL" => $arResult['USER']["PERMISSION"], "PERMISSION" => $arResult['USER']["PERMISSION"]); $res = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N")); if (intVal($res) <= 0) { $arError[] = array("code" => "message is not added 1", "title" => GetMessage("F_ERR_ADD_MESSAGE")); CForumTopic::Delete($TID); $TID = 0; } elseif ($arParams["SUBSCRIBE_AUTHOR_ELEMENT"] == "Y" && intVal($arResult["ELEMENT"]["~CREATED_BY"]) > 0) { if ($arUserStart["USER_PROFILE"] == "N") { $arUserStart["FORUM_USER_ID"] = CForumUser::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"])); } if (intVal($arUserStart["FORUM_USER_ID"]) > 0) { CForumSubscribe::Add(array("USER_ID" => $arUserStart["ID"], "FORUM_ID" => $arParams["FORUM_ID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => $TID, "NEW_TOPIC_ONLY" => "N")); BXClearCache(true, "/bitrix/forum/user/" . $arUserStart["ID"] . "/subscribe/"); } } } // Second exit point if (!empty($arError)) { $DB->Rollback(); return false; } else { $DB->Commit(); $arResult["FORUM_TOPIC_ID"] = $TID; } } // Add post comment $arFieldsG = array("POST_MESSAGE" => $arPost["MESSAGE"], "AUTHOR_NAME" => trim($post["REVIEW_AUTHOR"]), "AUTHOR_EMAIL" => $post["REVIEW_EMAIL"], "USE_SMILES" => isset($post["REVIEW_USE_SMILES"]) ? $post["REVIEW_USE_SMILES"] : "N", "PARAM2" => $arParams["ENTITY_ID"], "PERMISSION_EXTERNAL" => $arResult['USER']["PERMISSION"], "PERMISSION" => $arResult['USER']["PERMISSION"]);
if ($_REQUEST['action_target'] == 'selected') { $rsData = CForumUser::GetListEx(array($by => $order), $arFilter); while ($arRes = $rsData->Fetch()) { $arID[] = $arRes['USER_ID']; } } if (check_bitrix_sessid()) { foreach ($arID as $ID) { if (strlen($ID) <= 0) { continue; } $ID = intval($ID); switch ($_REQUEST['action']) { case "delete": if (CForumUser::IsAdmin()) { CForumSubscribe::DeleteUSERSubscribe($ID); } break; } } } } $rsData = CForumUser::GetListEx(array($by => $order), $arFilter); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("FM_TITLE_PAGE"))); /*******************************************************************/ $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("FM_HEAD_FORUM_USER_ID"), "sort" => "ID", "default" => false), array("id" => "USER_ID", "content" => GetMessage("FM_HEAD_USER_ID"), "sort" => "USER_ID", "default" => true), array("id" => "EMAIL", "content" => GetMessage("FM_HEAD_EMAIL"), "sort" => "EMAIL", "default" => true), array("id" => "LOGIN", "content" => GetMessage("FM_HEAD_LOGIN"), "sort" => "LOGIN", "default" => true), array("id" => "NAME", "content" => GetMessage("FM_HEAD_NAME"), "sort" => "NAME", "default" => true), array("id" => "LAST_NAME", "content" => GetMessage("FM_HEAD_LAST_NAME"), "sort" => "LAST_NAME", "default" => true), array("id" => "SUBSC_COUNT", "content" => GetMessage("FM_HEAD_SUBSC"), "sort" => "SUBSC_COUNT", "default" => true), array("id" => "SUBSC_START_DATE", "content" => GetMessage("FM_HEAD_START_DATE"), "sort" => "SUBSC_START_DATE", "default" => true))); /*******************************************************************/ while ($arRes = $rsData->NavNext(true, "t_")) { $row =& $lAdmin->AddRow($t_USER_ID, $arRes);
********************************************************************/ /******************************************************************** Data ********************************************************************/ /************** Forum subscribe ************************************/ if (!$bDialog && $arParams["USE_COMMENTS"] == "Y" && CModule::IncludeModule("forum")) { $arParams["USE_COMMENTS"] = $arParams["FORUM_CAN_VIEW"] = CForumNew::CanUserViewForum($arParams["FORUM_ID"], $GLOBALS['USER']->GetUserGroupArray()) ? "Y" : "N"; if ($arParams["FORUM_CAN_VIEW"] == "Y" && $GLOBALS['USER']->IsAuthorized()) { $bShowSubscribe = true; $arUserSubscribe = array(); $cache_id = "/" . $arParams['IBLOCK_ID'] . "/forum_user_subscribe_" . intVal($currentUserID) . "_" . $arParams["FORUM_ID"]; if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path_main)) { $res = $cache->GetVars(); $arUserSubscribe = $res["arUserSubscribe"]; } else { $db_res = CForumSubscribe::GetList(array(), array("USER_ID" => $currentUserID, "FORUM_ID" => $arParams["FORUM_ID"])); $arUserSubscribe = array(); if ($db_res && ($res = $db_res->Fetch())) { do { $arUserSubscribe[] = $res; } while ($res = $db_res->Fetch()); } $arUserSubscribe = array("USER_ID" => intVal($currentUserID), "DATA" => $arUserSubscribe); if ($arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path_main); $cache->EndDataCache(array("arUserSubscribe" => $arUserSubscribe)); } } $arResult["USER"]["SUBSCRIBE"] = $arUserSubscribe["DATA"]; if (is_array($arResult["USER"]["SUBSCRIBE"])) { $arTmp = array("FORUM" => "N", "TOPIC" => "N", "TOPICS" => array());
private function subscribeAuthor($type, $id, $tid) { if ($this->feed->getentity()->getType() == $type && $this->feed->getentity()->getId() == $id) { CForumSubscribe::Add(array("USER_ID" => $this->getUser()->getId(), "FORUM_ID" => $this->arParams["FORUM_ID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => $tid, "NEW_TOPIC_ONLY" => "N")); BXClearCache(true, "/bitrix/forum/user/" . $this->getUser()->getId() . "/subscribe/"); } }