Example #1
0
 protected static function checkParams($arMessage = array(), &$arTopic, &$arForum)
 {
     if (\Freetrix\Main\Loader::includeModule('forum')) {
         $arTopic = !empty($arTopic) ? $arTopic : \CForumTopic::GetByID($arMessage["TOPIC_ID"]);
         if (empty($arTopic)) {
             return false;
         }
         $arSitemaps = SitemapForumTable::getSitemapsByEntityId($arTopic["FORUM_ID"]);
         if (!empty($arSitemaps) && ($arForum = \CForumNew::GetByIDEx($arTopic["FORUM_ID"])) && $arForum) {
             $arForum["PATH2FORUM_MESSAGE"] = \CForumNew::GetSites($arTopic["FORUM_ID"]);
             $date = MakeTimeStamp($arTopic['LAST_POST_DATE']);
             $result = array();
             foreach ($arSitemaps as $arSitemap) {
                 $path = $arForum["PATH2FORUM_MESSAGE"][$arSitemap["SITE_ID"]];
                 if (!empty($path)) {
                     $arSitemap["fileName"] = str_replace("#FORUM_ID#", $arForum["ID"], $arSitemap['SITEMAP_FILE_FORUM']);
                     $arSitemap["url"] = \CForumNew::PreparePath2Message($path, array("FORUM_ID" => $arForum["ID"], "TOPIC_ID" => $arTopic["ID"], "TITLE_SEO" => $arTopic["TITLE_SEO"], "MESSAGE_ID" => "s", "SOCNET_GROUP_ID" => $arTopic["SOCNET_GROUP_ID"], "OWNER_ID" => $arTopic["OWNER_ID"], "PARAM1" => $arTopic["PARAM1"], "PARAM2" => $arTopic["PARAM2"]));
                     $arSitemap["date"] = $date;
                     $result[] = $arSitemap;
                 }
             }
             return empty($result) ? false : $result;
         }
     }
     return false;
 }
Example #2
0
 private function updateStatisticModule($mid)
 {
     if (\CModule::IncludeModule("statistic")) {
         $F_EVENT1 = $this->forum["EVENT1"];
         $F_EVENT2 = $this->forum["EVENT2"];
         $F_EVENT3 = $this->forum["EVENT3"];
         if (empty($F_EVENT3)) {
             $site = (array) \CForumNew::GetSites($this->forum["ID"]);
             $F_EVENT3 = \CForumNew::PreparePath2Message(array_key_exists(SITE_ID, $site) ? $site[SITE_ID] : reset($site), array("FORUM_ID" => $this->forum["ID"], "TOPIC_ID" => $this->topic["ID"], "MESSAGE_ID" => $mid));
         }
         \CStatistics::Set_Event($F_EVENT1, $F_EVENT2, $F_EVENT3);
     }
 }
Example #3
0
$lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("NAV")));
$lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "ID", "default" => false), array("id" => "FORUM_GROUP_ID", "content" => GetMessage("FORUM_GROUP_ID"), "sort" => "FORUM_GROUP_LEFT_MARGIN", "default" => true), array("id" => "NAME", "content" => GetMessage("NAME"), "sort" => "NAME", "default" => true), array("id" => "ACTIVE", "content" => GetMessage("ACTIVE"), "sort" => "ACTIVE", "default" => true), array("id" => "LAND", "content" => GetMessage('LAND'), "default" => true), array("id" => "SORT", "content" => GetMessage("SORT"), "sort" => "SORT", "align" => "right"), array("id" => "MODERATION", "content" => GetMessage("MODERATION"), "sort" => "MODERATION"), array("id" => "INDEXATION", "content" => GetMessage("INDEXATION"), "sort" => "INDEXATION"), array("id" => "ORDER_BY", "content" => GetMessage("ORDER_BY"), "sort" => "ORDER_BY"), array("id" => "ORDER_DIRECTION", "content" => GetMessage("ORDER_DIRECTION"), "sort" => "ORDER_DIRECTION")));
$arVisibleColumns = $lAdmin->GetVisibleHeaderColumns();
while ($arForum = $dbResultList->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arForum);
    $bCanUpdateForum = CForumNew::CanUserUpdateForum($f_ID, $USER->GetUserGroupArray(), $USER->GetID());
    $bCanDeleteForum = CForumNew::CanUserDeleteForum($f_ID, $USER->GetUserGroupArray(), $USER->GetID());
    $row->bReadOnly = $bCanUpdateForum ? false : true;
    $row->AddField("ID", $f_ID);
    $row->AddViewField("NAME", '<a title="' . GetMessage("FORUM_EDIT") . '" href="forum_edit.php?ID=' . $f_ID . '&amp;lang=' . LANG . GetFilterParams("filter_") . '">' . $f_NAME . '</a>');
    $row->AddInputField("NAME", $bCanUpdateForum ? array("size" => "30") : false);
    $row->AddCheckField("ACTIVE", $bCanUpdateForum ? array() : false);
    $res = array();
    $res2 = array();
    if (in_array("LAND", $arVisibleColumns)) {
        $arForumSite = CForumNew::GetSites($f_ID);
        foreach ($arSites as $lid => $site) {
            if (array_key_exists($lid, $arForumSite)) {
                $res[] = $site["NAME"] . " [" . $lid . "]";
            }
            $class = empty($arForumSite[$lid]) ? "empty-path" : "";
            $res2[] = <<<HTML
<dt class="{$class}" id="site_lid_{$key}">{$site["NAME"]} [{$key}]</dt>
<dd>
\t<textarea id="site_path_{$key}" rows="2" cols="40" name="SITE_PATH[{$key}]"
\t\tonfocus="BX.removeClass(BX('site_lid_{$key}'), 'empty-path')"
\t\tonblur="if(!BX.type.isNotEmptyString(this.value)){ BX.addClass(BX('site_lid_{$key}'), 'empty-path')}"
\t\t>{$arForumSite[$lid]}</textarea>
</dd>
HTML;
        }
Example #4
0
 /**
  * Gets right search path for comments,
  * http://jabber.bx/view.php?id=25340
  * @param int $forumID - forum's ID were comments saving (for example $arParams['FORUM_ID'])
  * @return array( $siteID => $forumURL )
  */
 static function GetCommentPath($forumID)
 {
     $arForumPath = array();
     if (!$forumID || !CModule::IncludeModule('forum')) {
         return false;
     }
     $arSites = CForumNew::GetSites($forumID);
     if (!is_array($arSites)) {
         return false;
     }
     foreach ($arSites as $siteID => $forumUrl) {
         $arForumPath[$siteID] = $forumUrl;
     }
     return $arForumPath;
 }
Example #5
0
 function AddComment_News($arFields)
 {
     if (!CModule::IncludeModule("forum")) {
         return false;
     }
     if (!CModule::IncludeModule("iblock")) {
         return false;
     }
     if (!CModule::IncludeModule("socialnetwork")) {
         return false;
     }
     $dbResult = CSocNetLog::GetList(array("ID" => "DESC"), array("TMP_ID" => $arFields["LOG_ID"]), false, false, array("ID", "SOURCE_ID", "PARAMS"));
     $bFound = false;
     if ($arLog = $dbResult->Fetch()) {
         if (intval($arLog["SOURCE_ID"]) > 0) {
             $arFilter = array("ID" => $arLog["SOURCE_ID"]);
             $arSelectedFields = array("IBLOCK_ID", "ID", "CREATED_BY", "NAME", "PROPERTY_FORUM_TOPIC_ID", "PROPERTY_FORUM_MESSAGE_CNT");
             $db_res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelectedFields);
             if ($db_res && ($res = $db_res->GetNext())) {
                 $arElement = $res;
                 $val = COption::GetOptionString("intranet", "sonet_log_news_iblock_forum");
                 if (strlen($val) > 0) {
                     $arIBlockForum = unserialize($val);
                 } else {
                     $arIBlockForum = array();
                 }
                 if (array_key_exists($arElement["IBLOCK_ID"], $arIBlockForum)) {
                     $FORUM_ID = $arIBlockForum[$arElement["IBLOCK_ID"]];
                 }
                 if (intval($FORUM_ID) > 0) {
                     CSocNetLogTools::AddComment_Review_CheckIBlock($arElement);
                     $dbMessage = CForumMessage::GetList(array(), array("PARAM2" => $arElement["ID"]));
                     if (!($arMessage = $dbMessage->Fetch())) {
                         // Add Topic
                         $TOPIC_ID = CSocNetLogTools::AddComment_Review_CreateRoot($arElement, $FORUM_ID);
                         $bNewTopic = true;
                     } else {
                         $TOPIC_ID = $arMessage["TOPIC_ID"];
                     }
                     if (intval($TOPIC_ID) > 0) {
                         // Add comment
                         $messageID = false;
                         $bError = false;
                         if (CForumMessage::CanUserAddMessage($TOPIC_ID, $GLOBALS["USER"]->GetUserGroupArray(), $GLOBALS["USER"]->GetID(), false)) {
                             $bSHOW_NAME = true;
                             $res = CForumUser::GetByUSER_ID($GLOBALS["USER"]->GetID());
                             if ($res) {
                                 $bSHOW_NAME = $res["SHOW_NAME"] == "Y";
                             }
                             if ($bSHOW_NAME) {
                                 $AUTHOR_NAME = $GLOBALS["USER"]->GetFullName();
                             }
                             if (strlen(Trim($AUTHOR_NAME)) <= 0) {
                                 $AUTHOR_NAME = $GLOBALS["USER"]->GetLogin();
                             }
                             if (strlen($AUTHOR_NAME) <= 0) {
                                 $bError = true;
                             }
                         }
                         if (!$bError) {
                             $arFieldsMessage = array("POST_MESSAGE" => $arFields["TEXT_MESSAGE"], "USE_SMILES" => "Y", "APPROVED" => "Y", "PARAM2" => $arElement["ID"], "AUTHOR_NAME" => $AUTHOR_NAME, "AUTHOR_ID" => IntVal($GLOBALS["USER"]->GetParam("USER_ID")), "FORUM_ID" => $FORUM_ID, "TOPIC_ID" => $TOPIC_ID, "NEW_TOPIC" => "N", "GUEST_ID" => $_SESSION["SESS_GUEST_ID"], "ADD_TO_LOG" => "N");
                             $AUTHOR_IP = ForumGetRealIP();
                             $AUTHOR_IP_tmp = $AUTHOR_IP;
                             $AUTHOR_REAL_IP = $_SERVER['REMOTE_ADDR'];
                             if (COption::GetOptionString("forum", "FORUM_GETHOSTBYADDR", "N") == "Y") {
                                 $AUTHOR_IP = @gethostbyaddr($AUTHOR_IP);
                                 if ($AUTHOR_IP_tmp == $AUTHOR_REAL_IP) {
                                     $AUTHOR_REAL_IP = $AUTHOR_IP;
                                 } else {
                                     $AUTHOR_REAL_IP = @gethostbyaddr($AUTHOR_REAL_IP);
                                 }
                             }
                             $arFieldsMessage["AUTHOR_IP"] = $AUTHOR_IP !== False ? $AUTHOR_IP : "<no address>";
                             $arFieldsMessage["AUTHOR_REAL_IP"] = $AUTHOR_REAL_IP !== False ? $AUTHOR_REAL_IP : "<no address>";
                             $messageID = CForumMessage::Add($arFieldsMessage, false);
                             if (intVal($messageID) <= 0) {
                                 $bError = true;
                             } else {
                                 if (CModule::IncludeModule("statistic")) {
                                     $arForum = CForumNew::GetByID($FORUM_ID);
                                     $F_EVENT1 = $arForum["EVENT1"];
                                     $F_EVENT2 = $arForum["EVENT2"];
                                     $F_EVENT3 = $arForum["EVENT3"];
                                     if (strlen($F_EVENT3) <= 0) {
                                         $arForumSite_tmp = CForumNew::GetSites($FORUM_ID);
                                         $F_EVENT3 = CForumNew::PreparePath2Message($arForumSite_tmp[SITE_ID], array("FORUM_ID" => $FORUM_ID, "TOPIC_ID" => $TOPIC_ID, "MESSAGE_ID" => $messageID));
                                     }
                                     CStatistic::Set_Event($F_EVENT1, $F_EVENT2, $F_EVENT3);
                                 }
                                 CForumMessage::SendMailMessage($messageID, array(), false, "NEW_FORUM_MESSAGE");
                                 CSocNetLogTools::AddComment_Review_UpdateElement($arElement, $TOPIC_ID, $bNewTopic);
                             }
                         }
                     }
                 }
             }
         }
     }
     if (intval($messageID) <= 0) {
         $strError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR");
     }
     return array("SOURCE_ID" => $messageID, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => $messageID, "ERROR" => $strError, "NOTES" => "");
 }
Example #6
0
 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;
 }
Example #7
0
	function Add($arFields, $strUploadDir = false, $arParams = array())
	{
		global $DB;

		$strUploadDir = ($strUploadDir === false ? "forum/upload" : $strUploadDir);

		if (!CForumMessage::CheckFields("ADD", $arFields))
			return false;

		$arForum = CForumNew::GetByID($arFields["FORUM_ID"]);
		$arParams["SKIP_STATISTIC"] = ($arParams["SKIP_STATISTIC"] == "Y" ? "Y" : "N");
		$arParams["SKIP_INDEXING"] = ($arParams["SKIP_INDEXING"] == "Y" || $arForum["INDEXATION"] != "Y" ? "Y" : "N");

		$POST_MESSAGE = $arFields["POST_MESSAGE"];
		$parser = new forumTextParser(LANGUAGE_ID);
		$allow = forumTextParser::GetFeatures($arForum);
		$allow['SMILES'] = (($arFields["USE_SMILES"] != "Y") ? 'N' : $allow['SMILES']);
		if (COption::GetOptionString("forum", "FILTER", "Y") == "Y")
		{
			$POST_MESSAGE = CFilterUnquotableWords::Filter($POST_MESSAGE);
			$arFields["POST_MESSAGE_FILTER"] = (empty($POST_MESSAGE) ? "*" : $POST_MESSAGE);
		}
/***************** 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" => $arFields["FORUM_ID"], "USER_ID" => $arFields["AUTHOR_ID"], "upload_dir" => $strUploadDir);
			$arFiles = CForumFiles::Save($arFields["FILES"], $res, false);
			if (!empty($arFiles))
			{
				$arFiles = array_keys($arFiles);
				sort($arFiles);
				$arFields["ATTACH_IMG"] = $arFiles[0];
				$arFields["ATTACHED_FILES"] = $arFiles;
			}
			unset($arFields["FILES"]);
		}
/***************** Attach/******************************************/
		if (COption::GetOptionString("forum", "MESSAGE_HTML", "N") == "Y")
			$POST_MESSAGE = $parser->convert($POST_MESSAGE, $allow, "html", $arFiles);
		$arFields["POST_MESSAGE_HTML"] = $POST_MESSAGE;
/***************** Event onBeforeMessageAdd ************************/
		foreach(GetModuleEvents("forum", "onBeforeMessageAdd", true) as $arEvent)
		{
			if (ExecuteModuleEventEx($arEvent, array(&$arFields, &$strUploadDir)) === false)
				return false;
		}
/***************** /Event ******************************************/
		if (empty($arFields))
			return false;
		$arInsert = $DB->PrepareInsert("b_forum_message", $arFields, $strUploadDir);

		$strDatePostField = "";
		$strDatePostValue = "";
		if (!is_set($arFields, "POST_DATE"))
		{
			$strDatePostField = ", POST_DATE";
			$strDatePostValue = ", ".$DB->GetNowFunction()."";
		}

		$strSql = "INSERT INTO b_forum_message(".$arInsert[0].$strDatePostField.") VALUES(".$arInsert[1].$strDatePostValue.")";
		$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
		$ID = intVal($DB->LastID());
/***************** Attach ******************************************/
		if (!empty($arFiles))
			CForumFiles::UpdateByID($arFiles, array("FORUM_ID" => $arFields["FORUM_ID"],
				"TOPIC_ID" => $arFields["TOPIC_ID"], "MESSAGE_ID" => $ID));
/***************** Attach/******************************************/
/***************** Quota *******************************************/
		$_SESSION["SESS_RECOUNT_DB"] = "Y";

		$GLOBALS["USER_FIELD_MANAGER"]->Update("FORUM_MESSAGE", $ID, $arFields);
		if ($arParams["SKIP_STATISTIC"] == "Y" && $arParams["SKIP_INDEXING"] == "Y")
			return $ID;
		$arMessage = CForumMessage::GetByIDEx($ID, array("GET_FORUM_INFO" => "N", "GET_TOPIC_INFO" => "Y", "FILTER" => "Y"));

		if ($arParams["SKIP_STATISTIC"] != "Y")
		{
			if (intVal($arMessage["AUTHOR_ID"]) > 0)
			{
				CForumUser::SetStat($arMessage["AUTHOR_ID"], array("MESSAGE" => $arMessage));
			}
			CForumTopic::SetStat($arMessage["TOPIC_ID"],  array("MESSAGE" => $arMessage));
			CForumNew::SetStat($arMessage["FORUM_ID"],  array("MESSAGE" => $arMessage));
		}
/***************** Events onAfterMessageAdd ************************/
		foreach(GetModuleEvents("forum", "onAfterMessageAdd", true) as $arEvent)
			ExecuteModuleEventEx($arEvent, array(&$ID, $arMessage, $arMessage["TOPIC_INFO"], $arMessage["FORUM_INFO"], $arFields));
/***************** /Events *****************************************/
		if ($arMessage["APPROVED"] == "Y")
		{
			if ($arParams["SKIP_INDEXING"] != "Y" && CModule::IncludeModule("search"))
			{
				$arMessage["POST_MESSAGE"] = (COption::GetOptionString("forum", "FILTER", "Y") == "Y" ?
					$arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"]);
				$arParams = array(
					"PERMISSION" => array(),
					"SITE" => CForumNew::GetSites($arMessage["FORUM_ID"]),
					"DEFAULT_URL" => "/");

				$arGroups = CForumNew::GetAccessPermissions($arMessage["FORUM_ID"]);
				foreach($arGroups as $arGroup)
				{
					if ($arGroup[1] >= "E")
					{
						$arParams["PERMISSION"][] = $arGroup[0];
						if ($arGroup[0] == 2)
							break;
					}
				}

				$arSearchInd = array(
					"LID" => array(),
					"LAST_MODIFIED" => $arMessage["POST_DATE"],
					"PARAM1" => $arMessage["FORUM_ID"],
					"PARAM2" => $arMessage["TOPIC_ID"],
					"ENTITY_TYPE_ID"  => ($arMessage["NEW_TOPIC"] == "Y"? "FORUM_TOPIC": "FORUM_POST"),
					"ENTITY_ID" => ($arMessage["NEW_TOPIC"] == "Y"? $arMessage["TOPIC_ID"]: $ID),
					"USER_ID" => $arMessage["AUTHOR_ID"],
					"PERMISSIONS" => $arParams["PERMISSION"],
					"TITLE" => $arMessage["TOPIC_INFO"]["TITLE"].($arMessage["NEW_TOPIC"] == "Y" && !empty($arMessage["TOPIC_INFO"]["DESCRIPTION"]) ?
						", ".$arMessage["TOPIC_INFO"]["DESCRIPTION"] : ""),
					"TAGS" => ($arMessage["NEW_TOPIC"] == "Y" ? $arMessage["TOPIC_INFO"]["TAGS"] : ""),
					"BODY" => GetMessage("AVTOR_PREF")." ".$arMessage["AUTHOR_NAME"].". ".(textParser::killAllTags($arMessage["POST_MESSAGE"])),
					"URL" => "",
					"INDEX_TITLE" => $arMessage["NEW_TOPIC"] == "Y",
				);

				// get mentions
				$arMentionedUserID = CForumMessage::GetMentionedUserID($arMessage["POST_MESSAGE"]);
				if (!empty($arMentionedUserID))
				{
					$arSearchInd["PARAMS"] = array(
						"mentioned_user_id" => $arMentionedUserID
					);
				}

				$urlPatterns = 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" => $arMessage["TOPIC_INFO"]["SOCNET_GROUP_ID"],
					"OWNER_ID" => $arMessage["TOPIC_INFO"]["OWNER_ID"],
					"PARAM1" => $arMessage["PARAM1"],
					"PARAM2" => $arMessage["PARAM2"]);
				foreach ($arParams["SITE"] as $key => $val)
				{
					$arSearchInd["LID"][$key] = CForumNew::PreparePath2Message($val, $urlPatterns);
					if (empty($arSearchInd["URL"]) && !empty($arSearchInd["LID"][$key]))
						$arSearchInd["URL"] = $arSearchInd["LID"][$key];
				}

				if (empty($arSearchInd["URL"]))
				{
					foreach ($arParams["SITE"] as $key => $val):
						$db_lang = CLang::GetByID($key);
						if ($db_lang && $ar_lang = $db_lang->Fetch()):
							$arParams["DEFAULT_URL"] = $ar_lang["DIR"];
							break;
						endif;
					endforeach;
					$arParams["DEFAULT_URL"] .= COption::GetOptionString("forum", "REL_FPATH", "").
						"forum/read.php?FID=#FID#&TID=#TID#&MID=#MID##message#MID#";

					$arSearchInd["URL"] = CForumNew::PreparePath2Message($arParams["DEFAULT_URL"], $urlPatterns);
				}
				CSearch::Index("forum", $ID, $arSearchInd);
			}
		}
		return $ID;
	}
Example #8
0
}
$arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y";
$arParams["SET_NAVIGATION"] = $arParams["SET_NAVIGATION"] == "N" ? "N" : "Y";
// $arParams["DISPLAY_PANEL"] = ($arParams["DISPLAY_PANEL"] == "Y" ? "Y" : "N");
/********************************************************************
				/Input params
********************************************************************/
$arResult["FORUM"] = CForumNew::GetByID($arParams["FID"]);
if (empty($arResult["FORUM"])) {
    CHTTP::SetStatus("404 Not Found");
    ShowError(GetMessage("F_ERROR_FORUM_NOT_EXISTS"));
    return false;
} elseif (!CForumNew::CanUserViewForum($arParams["FID"], $USER->GetUserGroupArray())) {
    $APPLICATION->AuthForm(GetMessage("F_NO_FPERMS"));
    return false;
} elseif (!array_key_exists(SITE_ID, CForumNew::GetSites($arParams["FID"])) && ($arParams["SHOW_FORUM_ANOTHER_SITE"] == "N" || $GLOBALS["APPLICATION"]->GetGroupRight("forum") < "W")) {
    CHTTP::SetStatus("404 Not Found");
    ShowError(GetMessage("F_ERROR_FORUM_NOT_EXISTS"));
    return false;
}
/********************************************************************
				Default values
********************************************************************/
$arParams["PERMISSION"] = $arResult["PERMISSION"] = ForumCurrUserPermissions($arParams["FID"]);
$arResult["Topics"] = array();
$arResult["TOPICS"] = array();
$arResult["URL"] = array("INDEX" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_INDEX"], array()), "~INDEX" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_INDEX"], array()), "TOPIC_LIST" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_LIST"], array("FID" => $arParams["FID"])), "~TOPIC_LIST" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_LIST"], array("FID" => $arParams["FID"])), "TOPIC_NEW" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_NEW"], array("FID" => $arParams["FID"])), "~TOPIC_NEW" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_TOPIC_NEW"], array("FID" => $arParams["FID"])), "RSS" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_RSS"], array("TYPE" => "default", "MODE" => "forum", "IID" => $arParams["FID"])), "~RSS" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_RSS"], array("TYPE" => "default", "MODE" => "forum", "IID" => $arParams["FID"])), "RSS_DEFAULT" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_RSS"], array("TYPE" => "rss2", "MODE" => "forum", "IID" => $arParams["FID"])), "~RSS_DEFAULT" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_RSS"], array("TYPE" => "rss2", "MODE" => "forum", "IID" => $arParams["FID"])));
$arResult["CanUserAddTopic"] = CForumTopic::CanUserAddTopic($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), $arResult["FORUM"]);
global $by, $order;
if (empty($by)) {
    $by = "LAST_POST_DATE";
Example #9
0
 case "FORUM_TOPIC_EDIT":
     if (intval($a_ITEM_ID) <= 0) {
         continue;
     } elseif (!array_key_exists($a_ITEM_ID, $arForumCache["TOPIC"])) {
         CModule::IncludeModule("forum");
         $res = CForumTopic::GetByID($a_ITEM_ID);
         $res["MESSAGE_ID"] = $res["LAST_MESSAGE_ID"];
         $res["TOPIC_ID"] = $res["ID"];
         $arForumCache["TOPIC"][$a_ITEM_ID] = $res;
     } else {
         $res = $arForumCache["TOPIC"][$a_ITEM_ID];
     }
     if (!array_key_exists($res["FORUM_ID"], $arForumCache["FORUM"])) {
         $arForumCache["FORUM"][$res["FORUM_ID"]] = CForumNew::GetByID($res["FORUM_ID"]);
         if ($arForumCache["FORUM"][$res["FORUM_ID"]]) {
             $arSitesPath = CForumNew::GetSites($res["FORUM_ID"]);
             $arForumCache["FORUM"][$res["FORUM_ID"]]["PATH"] = array_shift($arSitesPath);
         }
     }
     if ($arForumCache["FORUM"][$res["FORUM_ID"]]["PATH"]) {
         $sPath = CForumNew::PreparePath2Message($arForumCache["FORUM"][$res["FORUM_ID"]]["PATH"], $res);
         $row->AddViewField("ITEM_ID", '[<a href="' . $sPath . '">' . $a_ITEM_ID . '</a>] ' . GetMessage("MAIN_EVENTLOG_FORUM_TOPIC"));
     } else {
         $row->AddViewField("ITEM_ID", '[' . $a_ITEM_ID . '] ' . GetMessage("MAIN_EVENTLOG_FORUM_TOPIC"));
     }
     break;
 case "FORUM_MESSAGE_DELETE":
     $row->AddViewField("ITEM_ID", '[' . $a_ITEM_ID . '] ' . GetMessage("MAIN_EVENTLOG_FORUM_MESSAGE"));
     break;
 case "FORUM_TOPIC_DELETE":
     $row->AddViewField("ITEM_ID", '[' . $a_ITEM_ID . '] ' . GetMessage("MAIN_EVENTLOG_FORUM_TOPIC"));
Example #10
0
         $site_id_tmp = $arSonetGroup["SITE_ID"];
     } else {
         $site_id_tmp = false;
     }
     $bIsCurrentUserModuleAdmin = CSocNetUser::IsCurrentUserModuleAdmin($site_id_tmp);
     if (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $group_id, "forum", "full", $bIsCurrentUserModuleAdmin)) {
         $arParams["PERMISSION"] = "Y";
     } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $group_id, "forum", "newtopic", $bIsCurrentUserModuleAdmin)) {
         $arParams["PERMISSION"] = "M";
     } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $group_id, "forum", "answer", $bIsCurrentUserModuleAdmin)) {
         $arParams["PERMISSION"] = "I";
     } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $group_id, "forum", "view", $bIsCurrentUserModuleAdmin)) {
         $arParams["PERMISSION"] = "E";
     }
 } else {
     $arForumSites = CForumNew::GetSites($arResult["FORUM"]["ID"]);
     if (count($arForumSites) > 0) {
         list($key, $val) = each($arForumSites);
         if (strlen($key) > 0) {
             $site_id_tmp = $key;
         } else {
             $site_id_tmp = false;
         }
     } else {
         $site_id_tmp = false;
     }
     $bIsCurrentUserModuleAdmin = CSocNetUser::IsCurrentUserModuleAdmin($site_id_tmp);
     if (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $owner_id, "forum", "full", CForumUser::IsAdmin($user_id))) {
         $arParams["PERMISSION"] = "Y";
     } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $owner_id, "forum", "newtopic", $bIsCurrentUserModuleAdmin)) {
         $arParams["PERMISSION"] = "M";
Example #11
0
		endif;
	else:
		$res = CForumTopic::GetByIDEx($arParams["TID"], array("GET_FORUM_INFO" => "Y"));
		if (empty($res)):
			$arError = array(
				"code" => "404",
				"title" => GetMessage("F_ERROR_TID_IS_LOST"));
		else:
			$arResult["TOPIC"] = $res;
			$arResult["FORUM"] = $res["FORUM_INFO"];
		endif;
	endif;

	if ($arParams["FID"] > 0)
	{
		$arValidSites = CForumNew::GetSites($arParams["FID"]);
		if (!isset($arValidSites[SITE_ID]) && ($arParams["SHOW_FORUM_ANOTHER_SITE"] == "N" || $GLOBALS["APPLICATION"]->GetGroupRight("forum") < "W"))
		{
			$arError = array(
				"code" => "404",
				"title" => GetMessage("F_ERROR_TID_IS_LOST"));
		}
	}
	if (empty($arResult["TOPIC"])):
	elseif ($arResult["TOPIC"]["STATE"] == "L" && intVal($arResult["TOPIC"]["TOPIC_ID"]) > 0):
		$res = CForumTopic::GetByIDEx($arResult["TOPIC"]["TOPIC_ID"], array("GET_FORUM_INFO" => "Y"));
		if (empty($res)):
			$arError = array(
				"code" => "404",
				"title" => GetMessage("F_ERROR_TID_IS_LOST"));
		else:
Example #12
0
function ForumAddMessage($MESSAGE_TYPE, $FID, $TID, $MID, $arFieldsG, &$strErrorMessage, &$strOKMessage, $iFileSize = false, $captcha_word = "", $captcha_sid = 0, $captcha_code = "")
{
    global $USER, $DB, $APPLICATION;
    $APPLICATION->ResetException();
    $aMsg = array();
    $bUpdateTopic = False;
    $bAddEditNote = $MESSAGE_TYPE == "EDIT";
    $arParams = array("PERMISSION" => false);
    $arUserGroups = $USER->GetUserGroupArray();
    // ************ External Permission *********************************
    if (!empty($arFieldsG["PERMISSION_EXTERNAL"])) {
        $arParams["PERMISSION"] = CForumNew::GetUserPermission($FID, $arUserGroups);
        $arParams["PERMISSION"] = $arParams["PERMISSION"] < "Q" ? $arFieldsG["PERMISSION_EXTERNAL"] : $arParams["PERMISSION"];
        unset($arFieldsG["PERMISSION_EXTERNAL"]);
    } elseif (!empty($arFieldsG["SONET_PERMS"])) {
        $arParams["PERMISSION"] = CForumNew::GetUserPermission($FID, $arUserGroups);
        if ($arParams["PERMISSION"] < "Q") {
            if ($arFieldsG["SONET_PERMS"]["bCanFull"] === true) {
                $arParams["PERMISSION"] = "Y";
            } elseif ($arFieldsG["SONET_PERMS"]["bCanNew"] === true) {
                $arParams["PERMISSION"] = "M";
            } elseif ($arFieldsG["SONET_PERMS"]["bCanWrite"] === true) {
                $arParams["PERMISSION"] = "I";
            } else {
                $arParams["PERMISSION"] = "A";
            }
        }
        unset($arFieldsG["SONET_PERMS"]);
    }
    $DB->StartTransaction();
    if (!in_array($MESSAGE_TYPE, array("NEW", "EDIT", "REPLY"))) {
        $aMsg[] = array("id" => "MESSAGE_TYPE", "text" => GetMessage("ADDMES_NO_TYPE") . ".");
    }
    $MID = intval($MID);
    $TID = intval($TID);
    $FID = intval($FID);
    $arFieldsG["EDIT_ADD_REASON"] = $arFieldsG["EDIT_ADD_REASON"] == "Y" ? "Y" : "N";
    if ($MID > 0) {
        $arMessage = CForumMessage::GetByID($MID, array("FILTER" => "N"));
        if ($arMessage) {
            $TID = IntVal($arMessage["TOPIC_ID"]);
            $FID = IntVal($arMessage["FORUM_ID"]);
        }
    }
    $arTopic = array();
    if ($TID > 0) {
        $arTopic = CForumTopic::GetByID($TID);
        if ($arTopic) {
            $FID = IntVal($arTopic["FORUM_ID"]);
        }
    }
    $arForum = CForumNew::GetByID($FID);
    //************************* Input params **************************************************************************
    if ($MESSAGE_TYPE == "NEW" && !CForumTopic::CanUserAddTopic($FID, $arUserGroups, $USER->GetID(), $arForum, $arParams["PERMISSION"])) {
        $aMsg[] = array("id" => "PERMISSION", "text" => GetMessage("ADDMESS_NO_PERMS2NEW") . ".");
    } elseif ($MESSAGE_TYPE == "EDIT" && !CForumMessage::CanUserUpdateMessage($MID, $arUserGroups, $USER->GetID(), $arParams["PERMISSION"])) {
        $aMsg[] = array("id" => "PERMISSION", "text" => GetMessage("ADDMESS_NO_PERMS2EDIT") . ".");
    } elseif ($MESSAGE_TYPE == "REPLY" && !CForumMessage::CanUserAddMessage($TID, $arUserGroups, $USER->GetID(), $arParams["PERMISSION"])) {
        $aMsg[] = array("id" => "PERMISSION", "text" => GetMessage("ADDMESS_NO_PERMS2REPLY") . ".");
    }
    if ($MESSAGE_TYPE == "NEW" || $MESSAGE_TYPE == "EDIT" && array_intersect_key($arFieldsG, array("TITLE" => "", "DESCRIPTION" => "", "ICON" => "", "TAGS" => "", "OWNER_ID" => "", "SOCNET_GROUP_ID" => "")) && CForumTopic::CanUserUpdateTopic($TID, $arUserGroups, $USER->GetID(), $arParams["PERMISSION"])) {
        $bUpdateTopic = True;
    }
    if ($MESSAGE_TYPE == "EDIT" && (ForumCurrUserPermissions($FID, $arParams) > "Q" && $arFieldsG["EDIT_ADD_REASON"] == "N")) {
        $bAddEditNote = false;
    }
    //*************************!CAPTCHA********************************************************************************
    if (!$USER->IsAuthorized() && $arForum["USE_CAPTCHA"] == "Y") {
        include_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/captcha.php";
        $cpt = new CCaptcha();
        if (strlen($captcha_code) > 0) {
            $captchaPass = COption::GetOptionString("main", "captcha_password", "");
            if (!$cpt->CheckCodeCrypt($captcha_word, $captcha_code, $captchaPass)) {
                $aMsg[] = array("id" => "CAPTCHA", "text" => GetMessage("FORUM_POSTM_CAPTCHA") . ".");
            }
        } else {
            if (!$cpt->CheckCode($captcha_word, $captcha_sid)) {
                $aMsg[] = array("id" => "CAPTCHA", "text" => GetMessage("FORUM_POSTM_CAPTCHA") . ".");
            }
        }
    }
    //*************************!CAPTCHA********************************************************************************
    $arFieldsG["POST_MESSAGE"] = trim($arFieldsG["POST_MESSAGE"]);
    if (empty($arFieldsG["POST_MESSAGE"])) {
        $aMsg[] = array("id" => "POST_MESSAGE", "text" => GetMessage("ADDMESS_INPUT_MESSAGE") . ".");
    }
    if ($bUpdateTopic && is_set($arFieldsG, "TITLE")) {
        $arFieldsG["TITLE"] = trim($arFieldsG["TITLE"]);
        if (empty($arFieldsG["TITLE"])) {
            $aMsg[] = array("id" => "TITLE", "text" => GetMessage("ADDMESS_INPUT_TITLE") . ".");
        }
    }
    //*************************!QUOTA**********************************************************************************
    /*	if (empty($aMsg))
    	{
    		$quota = new CDiskQuota();
    		if ($MESSAGE_TYPE=="EDIT")
    		{
    			if (!$quota->checkDiskQuota(strLen($arFieldsG["POST_MESSAGE"]) - strLen($arMessage["POST_MESSAGE"])))
    			{
    				if (!$quota->LAST_ERROR)
    					$aMsg[] = array("id" => "QUOTA", "text" => GetMessage("MAIN_QUOTA_BAD")."( ".COption::GetOptionInt("main", "disk_space")." ).");
    				else
    					$aMsg[] = array("id" => "QUOTA", "text" => $quota->LAST_ERROR);
    			}
    		}
    		elseif (!$quota->checkDiskQuota($arFieldsG["POST_MESSAGE"]))
    		{
    			if (!$quota->LAST_ERROR)
    				$aMsg[] = array("id" => "QUOTA", "text" => GetMessage("MAIN_QUOTA_BAD")."( ".COption::GetOptionInt("main", "disk_space")." ).");
    			else
    				$aMsg[] = array("id" => "QUOTA", "text" => $quota->LAST_ERROR);
    		}
    	}*/
    //*************************!QUOTA**********************************************************************************
    if (empty($aMsg)) {
        //		*************************!ATTACH_IMG*****************************************************************************
        if (is_set($arFieldsG, "ATTACH_IMG") && empty($arFieldsG["ATTACH_IMG"]["name"]) && empty($arFieldsG["ATTACH_IMG"]["del"])) {
            unset($arFieldsG["ATTACH_IMG"]);
        }
        if (is_set($arFieldsG, "ATTACH_IMG")) {
            $arFieldsG["ATTACH_IMG"]["FILE_ID"] = $arMessage["ATTACH_IMG"];
            $arFieldsG["FILES"] = array($arFieldsG["ATTACH_IMG"]);
        }
        unset($arFieldsG["ATTACH_IMG"]);
        if (!empty($arFieldsG["FILES"]) && is_array($arFieldsG["FILES"])) {
            foreach ($arFieldsG["FILES"] as $key => $val) {
                if (intVal($val["FILE_ID"]) > 0) {
                    $arFieldsG["FILES"][$key]["del"] = $val["del"] == "Y" ? "Y" : "";
                }
            }
            $res = array("FORUM_ID" => $arForum["ID"], "TOPIC_ID" => 0, "MESSAGE_ID" => 0, "USER_ID" => $USER->GetID());
            if (!in_array($arForum["ALLOW_UPLOAD"], array("Y", "F", "A"))) {
                unset($arFieldsG["FILES"]);
            } elseif (!CForumFiles::CheckFields($arFieldsG["FILES"], $res, "NOT_CHECK_DB")) {
                if ($ex = $APPLICATION->GetException()) {
                    $aMsg[] = array("id" => "FILE", "text" => $ex->GetString());
                } else {
                    $aMsg[] = array("id" => "FILE", "text" => "File upload error.");
                }
            }
        }
    }
    //*************************/ATTACH_IMG*****************************************************************************
    if (empty($aMsg) && ($MESSAGE_TYPE == "NEW" || $MESSAGE_TYPE == "REPLY")) {
        $AUTHOR_ID = IntVal($USER->GetParam("USER_ID"));
        if ($USER->IsAuthorized()) {
            $res = CForumUser::GetByUSER_ID($USER->GetID());
            $bSHOW_NAME = !empty($res) ? $res["SHOW_NAME"] == "Y" : true;
            $arFieldsG["AUTHOR_NAME"] = $bSHOW_NAME ? trim($USER->GetFullName()) : "";
            $arFieldsG["AUTHOR_NAME"] = !empty($arFieldsG["AUTHOR_NAME"]) ? $arFieldsG["AUTHOR_NAME"] : $USER->GetLogin();
        }
        if (empty($arFieldsG["AUTHOR_NAME"])) {
            $aMsg[] = array("id" => "AUTHOR_NAME", "text" => GetMessage("ADDMESS_INPUT_AUTHOR") . ".");
        }
    } elseif (empty($aMsg) && $MESSAGE_TYPE == "EDIT") {
        $AUTHOR_ID = IntVal($arMessage["AUTHOR_ID"]);
        if (is_set($arFieldsG, "AUTHOR_NAME") && empty($arFieldsG["AUTHOR_NAME"])) {
            if ($AUTHOR_ID <= 0) {
                $aMsg[] = array("id" => "AUTHOR_NAME", "text" => GetMessage("ADDMESS_INPUT_AUTHOR") . ".");
            } else {
                $res = CForumUser::GetByUSER_ID($AUTHOR_ID);
                $bSHOW_NAME = !empty($res) ? $res["SHOW_NAME"] == "Y" : true;
                if ($USER->GetID() == $AUTHOR_ID) {
                    $arFieldsG["AUTHOR_NAME"] = $bSHOW_NAME ? trim($USER->GetFullName()) : "";
                    $arFieldsG["AUTHOR_NAME"] = !empty($arFieldsG["AUTHOR_NAME"]) ? $arFieldsG["AUTHOR_NAME"] : $USER->GetLogin();
                } else {
                    $res = CForumUser::GetByUSER_IDEx($AUTHOR_ID);
                    if ($res) {
                        $arFieldsG["AUTHOR_NAME"] = trim($bSHOW_NAME ? $res["NAME"] . " " . $res["LAST_NAME"] : "");
                        $arFieldsG["AUTHOR_NAME"] = !empty($arFieldsG["AUTHOR_NAME"]) ? $arFieldsG["AUTHOR_NAME"] : $res["LOGIN"];
                    } else {
                        unset($arFieldsG["AUTHOR_NAME"]);
                    }
                }
            }
        }
        if ($USER->IsAuthorized()) {
            $res = CForumUser::GetByUSER_ID($USER->GetID());
            $bSHOW_NAME = !empty($res) ? $res["SHOW_NAME"] == "Y" : true;
            $arFieldsG["EDITOR_NAME"] = $bSHOW_NAME ? trim($USER->GetFullName()) : "";
            $arFieldsG["EDITOR_NAME"] = !empty($arFieldsG["EDITOR_NAME"]) ? $arFieldsG["EDITOR_NAME"] : $USER->GetLogin();
        }
        if ($bAddEditNote && empty($arFieldsG["EDITOR_NAME"])) {
            $aMsg[] = array("id" => "EDITOR_NAME", "text" => GetMessage("ADDMESS_INPUT_EDITOR") . ".");
        }
    }
    //*************************/Input params ***************************************************************************
    //************************* Actions ********************************************************************************
    //************************* Add/edit topic *************************************************************************
    if (empty($aMsg)) {
        // The longest step by time. Actualization of topic, user and forum statistic info (~0.7-0.8 sec)
        if ($MESSAGE_TYPE == "EDIT" && ($arMessage["APPROVED"] == "Y" || $arMessage["APPROVED"] == "N")) {
            $arFieldsG["APPROVED"] = $arMessage["APPROVED"];
        } elseif (!empty($arTopic) && $arTopic["APPROVED"] != "Y") {
            $arFieldsG["APPROVED"] = "N";
        } else {
            $arFieldsG["APPROVED"] = $arForum["MODERATION"] == "Y" ? "N" : "Y";
            if (ForumCurrUserPermissions($FID, $arParams) >= "Q") {
                $arFieldsG["APPROVED"] = "Y";
            }
        }
        if ($bUpdateTopic) {
            $arFields = array();
            foreach (array("TITLE", "TITLE_SEO", "DESCRIPTION", "ICON", "TAGS") as $key) {
                if (is_set($arFieldsG, $key)) {
                    $arFields[$key] = $arFieldsG[$key];
                }
            }
            if ($MESSAGE_TYPE == "NEW") {
                $arFields["FORUM_ID"] = $FID;
                $arFields["USER_START_ID"] = $AUTHOR_ID;
                $arFields["USER_START_NAME"] = $arFieldsG["AUTHOR_NAME"];
                $arFields["LAST_POSTER_NAME"] = $arFieldsG["AUTHOR_NAME"];
                $arFields["APPROVED"] = $arFieldsG["APPROVED"];
                $arFields["OWNER_ID"] = $arFieldsG["OWNER_ID"];
                $arFields["SOCNET_GROUP_ID"] = $arFieldsG["SOCNET_GROUP_ID"];
                if (is_set($arFieldsG, "TOPIC_XML_ID")) {
                    $arFields["XML_ID"] = $arFieldsG["TOPIC_XML_ID"];
                }
                $TID = CForumTopic::Add($arFields);
                if (IntVal($TID) <= 0) {
                    $aMsg[] = array("id" => "TOPIC_ID", "text" => GetMessage("ADDMESS_ERROR_ADD_TOPIC") . ".");
                }
            } else {
                if (is_set($arFieldsG, "AUTHOR_NAME")) {
                    if ($arTopic["LAST_MESSAGE_ID"] == $MID && $arMessage["LAST_POSTER_NAME"] != $arFieldsG["AUTHOR_NAME"]) {
                        $arFields["LAST_POSTER_NAME"] = $arFieldsG["AUTHOR_NAME"];
                    }
                    if ($arTopic["ABS_LAST_MESSAGE_ID"] == $MID && $arMessage["ABS_LAST_POSTER_NAME"] != $arFieldsG["AUTHOR_NAME"]) {
                        $arFields["ABS_LAST_POSTER_NAME"] = $arFieldsG["AUTHOR_NAME"];
                    }
                    if ($arTopic["USER_START_NAME"] == $arMessage["USER_START_NAME"] && $arTopic["USER_START_NAME"] != $arFieldsG["AUTHOR_NAME"]) {
                        $arFields["USER_START_NAME"] = $arFieldsG["AUTHOR_NAME"];
                    }
                }
                if (!empty($arFields)) {
                    $TID1 = CForumTopic::Update($TID, $arFields);
                    if (intval($TID1) <= 0) {
                        $aMsg[] = array("id" => "TOPIC_ID", "text" => GetMessage("ADDMESS_ERROR_EDIT_TOPIC") . ".");
                    } else {
                        foreach ($arFields as $key => $val) {
                            if ($arFields[$key] != $arTopic[$key]) {
                                $res_log[$key] = $arFields[$key];
                                $res_log["before" . $key] = $arTopic[$key];
                            }
                        }
                        if (!empty($res_log)) {
                            $arTopic = CForumTopic::GetByID($TID);
                            $res_log['FORUM_ID'] = $arTopic['FORUM_ID'];
                            CForumEventLog::Log("topic", "edit", $TID, serialize($res_log));
                        }
                    }
                    if (is_set($arFieldsG, "AUTHOR_NAME") && $arForum["LAST_MESSAGE_ID"] == $MID && $arForum["LAST_POSTER_NAME"] != $arFieldsG["AUTHOR_NAME"]) {
                        $arFieldsForum = array("LAST_POSTER_NAME" => $arFieldsG["AUTHOR_NAME"]);
                        if ($arForum["ABS_LAST_MESSAGE_ID"] == $MID) {
                            $arFieldsForum["LAST_POSTER_NAME"] = $arFieldsG["AUTHOR_NAME"];
                        }
                        CForumNew::Update($arForum["ID"], $arFieldsForum);
                    }
                }
            }
        }
    }
    //*************************/Add/edit topic *************************************************************************
    //************************* Add/edit message ***********************************************************************
    if (empty($aMsg)) {
        $arFields = array("POST_MESSAGE" => $arFieldsG["POST_MESSAGE"], "USE_SMILES" => $arFieldsG["USE_SMILES"] == "Y" ? "Y" : "N", "APPROVED" => $arFieldsG["APPROVED"]);
        if (is_set($arFieldsG, "ATTACH_IMG")) {
            $arFields["ATTACH_IMG"] = $arFieldsG["ATTACH_IMG"];
        } elseif (is_set($arFieldsG, "FILES")) {
            $arFields["FILES"] = $arFieldsG["FILES"];
        }
        if (is_set($arFieldsG, "PARAM1")) {
            $arFields["PARAM1"] = $arFieldsG["PARAM1"];
        }
        if (is_set($arFieldsG, "PARAM2")) {
            $arFields["PARAM2"] = $arFieldsG["PARAM2"];
        }
        /*		elseif ($MESSAGE_TYPE != "NEW")
        		{
        			$db_res = CForumMessage::GetList(array(), array("TOPIC_ID" => $TID, "NEW_TOPIC" => "Y"));
        			if ($db_res && $res = $db_res->Fetch())
        				$res["PARAM2"] = $res["PARAM2"];
        		}*/
        $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("FORUM_MESSAGE", $arFields);
        if ($MESSAGE_TYPE == "NEW" || $MESSAGE_TYPE == "REPLY") {
            $arFields["AUTHOR_NAME"] = $arFieldsG["AUTHOR_NAME"];
            $arFields["AUTHOR_EMAIL"] = $arFieldsG["AUTHOR_EMAIL"];
            $arFields["AUTHOR_ID"] = $AUTHOR_ID;
            $arFields["FORUM_ID"] = $FID;
            $arFields["TOPIC_ID"] = $TID;
            $AUTHOR_IP = ForumGetRealIP();
            $AUTHOR_IP_tmp = $AUTHOR_IP;
            $AUTHOR_REAL_IP = $_SERVER['REMOTE_ADDR'];
            if (COption::GetOptionString("forum", "FORUM_GETHOSTBYADDR", "N") == "Y") {
                $AUTHOR_IP = @gethostbyaddr($AUTHOR_IP);
                $AUTHOR_REAL_IP = $AUTHOR_IP_tmp == $AUTHOR_REAL_IP ? $AUTHOR_IP : @gethostbyaddr($AUTHOR_REAL_IP);
            }
            $arFields["AUTHOR_IP"] = $AUTHOR_IP !== False ? $AUTHOR_IP : "<no address>";
            $arFields["AUTHOR_REAL_IP"] = $AUTHOR_REAL_IP !== False ? $AUTHOR_REAL_IP : "<no address>";
            $arFields["NEW_TOPIC"] = $MESSAGE_TYPE == "NEW" ? "Y" : "N";
            $arFields["GUEST_ID"] = $_SESSION["SESS_GUEST_ID"];
            $MID = CForumMessage::Add($arFields, false);
            if (intVal($MID) <= 0) {
                $str = $APPLICATION->GetException();
                if ($str && $str->GetString()) {
                    $aMsg[] = array("id" => "MESSAGE_ID", "text" => $str->GetString());
                } else {
                    $aMsg[] = array("id" => "MESSAGE_ID", "text" => GetMessage("ADDMESS_ERROR_ADD_MESSAGE") . ".");
                }
                if ($MESSAGE_TYPE == "NEW") {
                    CForumTopic::Delete($TID);
                    $TID = 0;
                }
            }
        } else {
            if (empty($AUTHOR_ID)) {
                if (is_set($arFieldsG, "AUTHOR_NAME")) {
                    $arFields["AUTHOR_NAME"] = $arFieldsG["AUTHOR_NAME"];
                }
                if (is_set($arFieldsG, "AUTHOR_EMAIL")) {
                    $arFields["AUTHOR_EMAIL"] = $arFieldsG["AUTHOR_EMAIL"];
                }
            }
            if ($bAddEditNote) {
                $arFields["EDITOR_NAME"] = $arFieldsG["EDITOR_NAME"];
                $arFields["EDITOR_EMAIL"] = $arFieldsG["EDITOR_EMAIL"];
                $arFields["EDIT_REASON"] = $arFieldsG["EDIT_REASON"];
                $arFields["EDIT_DATE"] = "";
                if ($GLOBALS["USER"]->IsAuthorized()) {
                    $arFields["EDITOR_ID"] = $GLOBALS["USER"]->GetID();
                }
            }
            $MID1 = CForumMessage::Update($MID, $arFields);
            if (IntVal($MID1) <= 0) {
                $ex = $GLOBALS['APPLICATION']->GetException();
                if ($ex) {
                    $aMsg[] = array("id" => "MESSAGE_ID", "text" => $ex->GetString());
                } else {
                    $aMsg[] = array("id" => "MESSAGE_ID", "text" => GetMessage("ADDMESS_ERROR_EDIT_MESSAGE") . ".");
                }
            } elseif ($AUTHOR_ID == $GLOBALS["USER"]->GetId() && COption::GetOptionString("forum", "LOGS", "Q") < "U") {
            } else {
                $res_log = array();
                foreach ($arFields as $key => $val) {
                    if ($arFields[$key] != $arMessage[$key]) {
                        if ($key == "FILES" || $key == "ATTACH_IMG") {
                            $res_log[$key] = GetMessage("F_ATTACH_IS_MODIFIED");
                            continue;
                        }
                        $res_log["BeforeMessage"] = $arMessage[$key];
                        $res_log["AfterMessage"] = $arFields[$key];
                    }
                }
                if (!empty($res_log)) {
                    $arMessage = CForumMessage::GetByID($MID);
                    $TID = $arMessage['TOPIC_ID'];
                    $res_log['FORUM_ID'] = $arMessage['FORUM_ID'];
                    $arTopic = CForumTopic::GetByID($TID);
                    $res_log['TITLE'] = $arTopic['TITLE'];
                    $res_log['TOPIC_ID'] = $TID;
                    $res_log = serialize($res_log);
                    CForumEventLog::Log("message", "edit", $MID, $res_log);
                }
            }
        }
    }
    //*************************/Add/edit message ***********************************************************************
    if (empty($aMsg)) {
        $DB->Commit();
    } else {
        $DB->Rollback();
    }
    if (empty($aMsg) && CModule::IncludeModule("statistic")) {
        $F_EVENT1 = $arForum["EVENT1"];
        $F_EVENT2 = $arForum["EVENT2"];
        $F_EVENT3 = $arForum["EVENT3"];
        if (empty($F_EVENT3)) {
            $arForumSite_tmp = CForumNew::GetSites($FID);
            if (defined("ADMIN_SECTION") && ADMIN_SECTION === true) {
                $arForumSiteCode_tmp = array_keys($arForumSite_tmp);
                $F_EVENT3 = CForumNew::PreparePath2Message(empty($arForumSite_tmp[$arForumSiteCode_tmp[0]]) ? '' : $arForumSite_tmp[$arForumSiteCode_tmp[0]], array("FORUM_ID" => $FID, "TOPIC_ID" => $TID, "MESSAGE_ID" => $MID));
            } else {
                $F_EVENT3 = CForumNew::PreparePath2Message(empty($arForumSite_tmp[SITE_ID]) ? '' : $arForumSite_tmp[SITE_ID], array("FORUM_ID" => $FID, "TOPIC_ID" => $TID, "MESSAGE_ID" => $MID));
            }
        }
        CStatistics::Set_Event($F_EVENT1, $F_EVENT2, $F_EVENT3);
    }
    if (empty($aMsg)) {
        $arNote = array();
        if ($MESSAGE_TYPE == "NEW" || $MESSAGE_TYPE == "REPLY") {
            CForumMessage::SendMailMessage($MID, array(), false, "NEW_FORUM_MESSAGE");
            $arNote = array("id" => $MESSAGE_TYPE, "text" => GetMessage("ADDMESS_SUCCESS_ADD") . ". \n");
        } else {
            CForumMessage::SendMailMessage($MID, array(), false, "EDIT_FORUM_MESSAGE");
            $arNote = array("id" => "EDIT", "text" => GetMessage("ADDMESS_SUCCESS_EDIT") . ". \n");
        }
        if ($arFieldsG["APPROVED"] != "Y") {
            $arNote["id"] .= "_NOT_APPROVED";
            $arNote["text"] .= GetMessage("ADDMESS_AFTER_MODERATE") . ". \n";
        }
        if (is_array($strOKMessage)) {
            $strOKMessage[] = $arNote;
        } else {
            $strOKMessage .= $arNote["text"];
        }
        return $MID;
    }
    $e = new CAdminException($aMsg);
    $strErrorMessage = $e->GetString();
    return false;
}
Example #13
0
 function _check_iblock_prop($arProperty = false)
 {
     static $dataType = 'IblockProperties';
     $checked = $this->_dataCache($dataType);
     if (!$checked) {
         $arProps = $this->GetProperties();
         foreach ($arProps as $code => &$arIBProp) {
             if (!isset($arProperty[$code])) {
                 continue;
             }
             if ($arIBProp['PROPERTY_TYPE'] != $arProperty[$code]['type'] || $arIBProp['USER_TYPE'] != null) {
                 continue;
             }
             unset($arProperty[$code]);
         }
         $prp = new CIBlockProperty();
         foreach ($arProperty as $sPropertyCode => $arPropertyParams) {
             $properties = array("IBLOCK_ID" => $this->IBLOCK_ID, "ACTIVE" => "Y", "CODE" => $sPropertyCode, "MULTIPLE" => "N", "PROPERTY_TYPE" => $arPropertyParams["type"], "NAME" => $arPropertyParams["name"]);
             if (isset($arPropertyParams["properties"])) {
                 $properties += $arPropertyParams["properties"];
             }
             $res = $prp->Add($properties);
         }
         if ($this->FORUM_ID !== null && empty($this->arRootSection) && CModule::IncludeModule('forum')) {
             $arForum = CForumNew::GetByID($this->FORUM_ID);
             if ($arForum['ACTIVE'] == 'Y') {
                 $arSites = CForumNew::GetSites($this->FORUM_ID);
                 foreach ($arSites as $siteID => $forumUrl) {
                     if (strpos($forumUrl, '/community/forum/') === 0) {
                         $arSites[$siteID] = str_replace(array('///', '//'), '/', $this->base_url . "/element/comment/#TOPIC_ID#/#MESSAGE_ID#/");
                     }
                 }
                 $arUpForum = array();
                 $arUpForum["SITES"] = $arSites;
                 CForumNew::Update($this->FORUM_ID, $arUpForum);
             }
         }
         $this->_dataCache($dataType, true);
     }
 }
Example #14
0
$arAdmin = $arUsers[1];
unset($arUsers[1]);
$arUser = !empty($arUsers) ? array_shift($arUsers) : array("USER_ID" => 0, "SHOW_ABC" => GetMessage("GUEST1"));
$arUser2 = !empty($arUsers) ? array_shift($arUsers) : array("USER_ID" => 0, "SHOW_ABC" => GetMessage("GUEST2"));
$arUser3 = !empty($arUsers) ? array_shift($arUsers) : array("USER_ID" => 0, "SHOW_ABC" => GetMessage("GUEST3"));
$arUser4 = !empty($arUsers) ? array_shift($arUsers) : array("USER_ID" => 0, "SHOW_ABC" => GetMessage("GUEST4"));
$arUser5 = !empty($arUsers) ? array_shift($arUsers) : array("USER_ID" => 0, "SHOW_ABC" => GetMessage("GUEST5"));
$arUser6 = !empty($arUsers) ? array_shift($arUsers) : array("USER_ID" => 0, "SHOW_ABC" => GetMessage("GUEST6"));
$arForums = array(array("XML_ID" => "COMMUNITY_PHOTO_COMMENTS", "NAME" => GetMessage("PHOTOGALLERY_COMMENTS_FORUM_NAME"), "DESCRIPTION" => "", "SORT" => 3, "ACTIVE" => "Y", "ALLOW_HTML" => "N", "ALLOW_ANCHOR" => "Y", "ALLOW_BIU" => "Y", "ALLOW_IMG" => "Y", "ALLOW_LIST" => "Y", "ALLOW_QUOTE" => "Y", "ALLOW_CODE" => "Y", "ALLOW_FONT" => "Y", "ALLOW_SMILES" => "Y", "ALLOW_UPLOAD" => "Y", "ALLOW_NL2BR" => "N", "MODERATION" => "N", "ALLOW_MOVE_TOPIC" => "Y", "ORDER_BY" => "P", "ORDER_DIRECTION" => "DESC", "LID" => LANGUAGE_ID, "PATH2FORUM_MESSAGE" => "", "ALLOW_UPLOAD_EXT" => "", "FORUM_GROUP_ID" => $arGroupID["HIDDEN"], "ASK_GUEST_EMAIL" => "N", "USE_CAPTCHA" => "N", "INDEXATION" => "Y", "SITES" => array(WIZARD_SITE_ID => WIZARD_SITE_DIR . "forum/messages/forum#FORUM_ID#/topic#TOPIC_ID#/message#MESSAGE_ID#/#message#MESSAGE_ID#"), "EVENT1" => "forum", "EVENT2" => "message", "EVENT3" => "", "GROUP_ID" => array("2" => "M", "1" => "Y")), array("XML_ID" => "COMMUNITY_USERS_AND_GROUPS", "NAME" => GetMessage("USERS_AND_GROUPS_FORUM_NAME"), "DESCRIPTION" => GetMessage("USERS_AND_GROUPS_FORUM_DESCRIPTION"), "SORT" => 4, "ACTIVE" => "Y", "ALLOW_HTML" => "N", "ALLOW_ANCHOR" => "Y", "ALLOW_BIU" => "Y", "ALLOW_IMG" => "Y", "ALLOW_LIST" => "Y", "ALLOW_QUOTE" => "Y", "ALLOW_CODE" => "Y", "ALLOW_FONT" => "Y", "ALLOW_SMILES" => "Y", "ALLOW_UPLOAD" => "Y", "ALLOW_NL2BR" => "N", "MODERATION" => "N", "ALLOW_MOVE_TOPIC" => "Y", "ORDER_BY" => "P", "ORDER_DIRECTION" => "DESC", "LID" => LANGUAGE_ID, "PATH2FORUM_MESSAGE" => "", "ALLOW_UPLOAD_EXT" => "", "FORUM_GROUP_ID" => $arGroupID["HIDDEN"], "ASK_GUEST_EMAIL" => "N", "USE_CAPTCHA" => "N", "INDEXATION" => "Y", "SITES" => array(WIZARD_SITE_ID => WIZARD_SITE_DIR . "forum/messages/forum#FORUM_ID#/topic#TOPIC_ID#/message#MESSAGE_ID#/#message#MESSAGE_ID#"), "EVENT1" => "forum", "EVENT2" => "message", "EVENT3" => "", "GROUP_ID" => array("1" => "Y")));
foreach ($arForums as $arForum) {
    $dbForum = CForumNew::GetList(array(), array("SITE_ID" => WIZARD_SITE_ID, "XML_ID" => $arForum["XML_ID"]));
    if ($resForum = $dbForum->Fetch()) {
        if (WIZARD_INSTALL_DEMO_DATA) {
            CForumNew::Delete($resForum["ID"]);
        } else {
            $res = CForumNew::GetSites($resForum["ID"]);
            if (!array_key_exists(WIZARD_SITE_ID, $res)) {
                $res[WIZARD_SITE_ID] = WIZARD_SITE_DIR . "forum/messages/forum#FORUM_ID#/topic#TOPIC_ID#/message#MESSAGE_ID#/#message#MESSAGE_ID#";
                CForumNew::Update($resForum["ID"], array("SITES" => $res));
            }
            continue;
        }
    }
    $forumID = CForumNew::Add($arForum);
    if ($forumID < 1 || !isset($arForum["TOPICS"]) || !is_array($arForum["TOPICS"])) {
        continue;
    }
    foreach ($arForum["TOPICS"] as $arTopic) {
        $arTopic["FORUM_ID"] = $forumID;
        $topicID = CForumTopic::Add($arTopic);
        if ($topicID < 1 || !isset($arTopic["MESSAGES"]) || !is_array($arTopic["MESSAGES"])) {
Example #15
0
}
$arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y";
$arParams["SET_NAVIGATION"] = $arParams["SET_NAVIGATION"] == "N" ? "N" : "Y";
// $arParams["DISPLAY_PANEL"] = ($arParams["DISPLAY_PANEL"] == "Y" ? "Y" : "N");
/********************************************************************
				/Input params
********************************************************************/
$arResult["FORUM"] = CForumNew::GetByID($arParams["FID"]);
if (empty($arResult["FORUM"])) {
    CHTTP::SetStatus("404 Not Found");
    ShowError(GetMessage("F_ERROR_FORUM_NOT_EXISTS"));
    return false;
} elseif (!CForumNew::CanUserViewForum($arParams["FID"], $USER->GetUserGroupArray())) {
    $APPLICATION->AuthForm(GetMessage("F_NO_FPERMS"));
    return false;
} elseif (!array_key_exists(SITE_ID, CForumNew::GetSites($arParams["FID"])) && ($arParams["SHOW_FORUM_ANOTHER_SITE"] == "N" || !CForumUser::IsAdmin())) {
    CHTTP::SetStatus("404 Not Found");
    ShowError(GetMessage("F_ERROR_FORUM_NOT_EXISTS"));
    return false;
}
/********************************************************************
				Default values
********************************************************************/
$arParams["PERMISSION"] = $arResult["PERMISSION"] = ForumCurrUserPermissions($arParams["FID"]);
$arResult["Topics"] = array();
$arResult["TOPICS"] = array();
$arResult["URL"] = array("INDEX" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_INDEX"], array()), "~INDEX" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_INDEX"], array()), "TOPIC_LIST" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_LIST"], array("FID" => $arParams["FID"])), "~TOPIC_LIST" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_LIST"], array("FID" => $arParams["FID"])), "TOPIC_NEW" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_NEW"], array("FID" => $arParams["FID"])), "~TOPIC_NEW" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_TOPIC_NEW"], array("FID" => $arParams["FID"])), "RSS" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_RSS"], array("TYPE" => "default", "MODE" => "forum", "IID" => $arParams["FID"])), "~RSS" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_RSS"], array("TYPE" => "default", "MODE" => "forum", "IID" => $arParams["FID"])), "RSS_DEFAULT" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_RSS"], array("TYPE" => "rss2", "MODE" => "forum", "IID" => $arParams["FID"])), "~RSS_DEFAULT" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_RSS"], array("TYPE" => "rss2", "MODE" => "forum", "IID" => $arParams["FID"])));
$arResult["CanUserAddTopic"] = CForumTopic::CanUserAddTopic($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), $arResult["FORUM"]);
$arResult["ERROR_MESSAGE"] = "";
$arResult["OK_MESSAGE"] = "";
$parser = new forumTextParser(false, false, false, "light");
Example #16
0
        }
    }
}
/********************************************************************
				/Action
********************************************************************/
$APPLICATION->SetTitle($ID > 0 ? str_replace("#ID#", $ID, GetMessage("FE_PAGE_TITLE1")) : GetMessage("FE_PAGE_TITLE2"));
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
/********************************************************************
				Data
********************************************************************/
$arForum = array("NAME" => "", "DESCRIPTION" => "", "FORUM_GROUP_ID" => "", "GROUP_ID" => "", "SITES" => array(), "PATH2FORUM_MESSAGE" => "/" . SITE_DIR . "/forum/message.php?FID=#FORUM_ID#&TID=#TOPIC_ID#&MID=#MESSAGE_ID#", "MODERATION" => "N", "ACTIVE" => "Y", "INDEXATION" => "Y", "DEDUPLICATION" => "Y", "SORT" => 150, "ORDER_BY" => "P", "ORDER_DIRECTION" => "DESC", "ASK_GUEST_EMAIL" => "N", "USE_CAPTCHA" => "Y", "ALLOW_HTML" => "N", "ALLOW_ANCHOR" => "Y", "ALLOW_BIU" => "Y", "ALLOW_IMG" => "Y", "ALLOW_VIDEO" => "Y", "ALLOW_LIST" => "Y", "ALLOW_QUOTE" => "Y", "ALLOW_CODE" => "Y", "ALLOW_TABLE" => "Y", "ALLOW_ALIGN" => "Y", "ALLOW_FONT" => "Y", "ALLOW_SMILES" => "Y", "ALLOW_UPLOAD" => "N", "ALLOW_TOPIC_TITLED" => "N", "ALLOW_NL2BR" => "N", "ALLOW_MOVE_TOPIC" => "N", "ALLOW_SIGNATURE" => "Y", "EVENT1" => "forum", "EVENT2" => "message", "EVENT3" => "");
if ($ID > 0) {
    $db_res = CForumNew::GetList(array(), array("ID" => $ID));
    $arForum = $db_res->Fetch();
    $arForum["SITES"] = CForumNew::GetSites($ID);
    $arForum["GROUP_ID"] = CForumNew::GetAccessPermissions($ID, "TWO");
}
if ($bVarsFromForm) {
    $arForum = $arFields;
}
if (!function_exists("__recursive_htmlspecialcharsbx")) {
    function __recursive_htmlspecialcharsbx(&$res)
    {
        if (is_array($res)) {
            foreach ($res as $key => $val) {
                $res[$key] = __recursive_htmlspecialcharsbx($val);
            }
        } elseif (is_string($res)) {
            $res = htmlspecialcharsbx($res);
        }
Example #17
0
 function OnReindex($NS = array(), $oCallback = NULL, $callback_method = "")
 {
     global $DB;
     $arResultAll = array();
     $arParams = array("PERMISSION" => array(), "SITE" => array(), "DEFAULT_URL" => array());
     $search_message_count = intVal(COption::GetOptionInt("forum", "search_message_count", 0));
     $strNSJoin = "";
     $strFilter = "";
     if ($NS["MODULE"] == "forum" && intVal($NS["ID"]) > 0 && intVal($NS["CNT"]) > 0) {
         $strFilter = " AND (FM.ID>" . intVal($NS["ID"]) . ") ";
     } elseif ($NS["MODULE"] == "forum" && intVal($NS["ID"]) > 0) {
         // out of date
         $strFilter = " AND (FM.ID>=" . intVal($NS["ID"]) . ") ";
     }
     if ($NS["SITE_ID"] != "") {
         $strNSJoin .= " INNER JOIN b_forum2site FS ON (FS.FORUM_ID=F.ID) ";
         $strFilter .= " AND FS.SITE_ID='" . $DB->ForSQL($NS["SITE_ID"]) . "' ";
     }
     $strSql = "SELECT STRAIGHT_JOIN FT.ID as TID, FM.ID as MID, FM.ID as ID, FT.FORUM_ID, FT.TITLE, " . CForumNew::Concat("-", array("FT.ID", "FT.TITLE_SEO")) . ",\n\t\t\t\tFT.DESCRIPTION, FT.TAGS, FT.HTML as FT_HTML,\n\t\t\t\tFM.PARAM1, FM.PARAM2, FM.POST_MESSAGE, FM.POST_MESSAGE_FILTER, FM.POST_MESSAGE_HTML, FM.AUTHOR_NAME, FM.AUTHOR_ID, FM.NEW_TOPIC,\n\t\t\t\t" . $DB->DateToCharFunction("FM.POST_DATE") . " as POST_DATE, " . $DB->DateToCharFunction("FM.EDIT_DATE") . " as EDIT_DATE, FT.SOCNET_GROUP_ID, FT.OWNER_ID\n\t\t\tFROM b_forum_message FM use index (PRIMARY), b_forum_topic FT, b_forum F\n\t\t\t" . $strNSJoin . "\n\t\t\tWHERE (FM.TOPIC_ID = FT.ID) AND (F.ID = FT.FORUM_ID) AND (F.INDEXATION = 'Y') AND (FM.APPROVED = 'Y')\n\t\t\t" . $strFilter . "\n\t\t\tORDER BY FM.ID";
     if ($search_message_count > 0) {
         $strSql .= " LIMIT 0, " . $search_message_count;
     }
     $db_res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     if ($db_res && COption::GetOptionString("forum", "FILTER", "Y") == "Y") {
         $db_res = new _CMessageDBResult($db_res);
     }
     $rownum = 0;
     while ($res = $db_res->Fetch()) {
         $rownum++;
         if (empty($arParams["PERMISSION"][$res["FORUM_ID"]])) {
             $arGroups = CForumNew::GetAccessPermissions($res["FORUM_ID"]);
             $arParams["PERMISSION"][$res["FORUM_ID"]] = array();
             for ($i = 0; $i < count($arGroups); $i++) {
                 if ($arGroups[$i][1] >= "E") {
                     $arParams["PERMISSION"][$res["FORUM_ID"]][] = $arGroups[$i][0];
                     if ($arGroups[$i][0] == 2) {
                         break;
                     }
                 }
             }
         }
         if (empty($arParams["SITE"][$res["FORUM_ID"]])) {
             $arParams["SITE"][$res["FORUM_ID"]] = CForumNew::GetSites($res["FORUM_ID"]);
         }
         $arResult = array("ID" => $res["MID"], "LID" => array(), "LAST_MODIFIED" => !empty($res["EDIT_DATE"]) ? $res["EDIT_DATE"] : $res["POST_DATE"], "PARAM1" => $res["FORUM_ID"], "PARAM2" => $res["TID"], "USER_ID" => $res["AUTHOR_ID"], "ENTITY_TYPE_ID" => $res["NEW_TOPIC"] == "Y" ? "FORUM_TOPIC" : "FORUM_POST", "ENTITY_ID" => $res["NEW_TOPIC"] == "Y" ? $res["TID"] : $res["MID"], "PERMISSIONS" => $arParams["PERMISSION"][$res["FORUM_ID"]], "TITLE" => $res["TITLE"] . ($res["NEW_TOPIC"] == "Y" && !empty($res["DESCRIPTION"]) ? ", " . $res["DESCRIPTION"] : ""), "TAGS" => $res["NEW_TOPIC"] == "Y" ? $res["TAGS"] : "", "BODY" => GetMessage("AVTOR_PREF") . " " . $res["AUTHOR_NAME"] . ". " . textParser::killAllTags(COption::GetOptionString("forum", "FILTER", "Y") != "Y" ? $res["POST_MESSAGE"] : $res["POST_MESSAGE_FILTER"]), "URL" => "", "INDEX_TITLE" => $res["NEW_TOPIC"] == "Y");
         foreach ($arParams["SITE"][$res["FORUM_ID"]] as $key => $val) {
             $arResult["LID"][$key] = CForumNew::PreparePath2Message($val, array("FORUM_ID" => $res["FORUM_ID"], "TOPIC_ID" => $res["TID"], "MESSAGE_ID" => $res["MID"], "SOCNET_GROUP_ID" => $res["SOCNET_GROUP_ID"], "OWNER_ID" => $res["OWNER_ID"], "PARAM1" => $res["PARAM1"], "PARAM2" => $res["PARAM2"]));
             if (empty($arResult["URL"]) && !empty($arResult["LID"][$key])) {
                 $arResult["URL"] = $arResult["LID"][$key];
             }
         }
         if (empty($arResult["URL"])) {
             if (empty($arParams["DEFAULT_URL"][$res["FORUM_ID"]])) {
                 $arParams["DEFAULT_URL"][$res["FORUM_ID"]] = "/";
                 foreach ($arParams["SITE"][$res["FORUM_ID"]] as $key => $val) {
                     $db_lang = CLang::GetByID($key);
                     if ($db_lang && ($ar_lang = $db_lang->Fetch())) {
                         $arParams["DEFAULT_URL"][$res["FORUM_ID"]] = $ar_lang["DIR"];
                         break;
                     }
                 }
                 $arParams["DEFAULT_URL"][$res["FORUM_ID"]] .= COption::GetOptionString("forum", "REL_FPATH", "") . "forum/read.php?FID=#FID#&TID=#TID#&MID=#MID##message#MID#";
             }
             $arResult["URL"] = CForumNew::PreparePath2Message($arParams["DEFAULT_URL"][$res["FORUM_ID"]], array("FORUM_ID" => $res["FORUM_ID"], "TOPIC_ID" => $res["TID"], "MESSAGE_ID" => $res["MID"], "SOCNET_GROUP_ID" => $res["SOCNET_GROUP_ID"], "OWNER_ID" => $res["OWNER_ID"], "PARAM1" => $res["PARAM1"], "PARAM2" => $res["PARAM2"]));
         }
         if ($oCallback) {
             $resCall = call_user_func(array($oCallback, $callback_method), $arResult);
             if (!$resCall) {
                 return $arResult["ID"];
             }
         } else {
             $arResultAll[] = $arResult;
         }
     }
     if ($oCallback && $search_message_count > 0 && $rownum >= $search_message_count - 1) {
         return $arResult["ID"];
     }
     if ($oCallback) {
         return false;
     }
     return $arResultAll;
 }
Example #18
0
        $arMessages = CExtranetWizardServices::IncludeServiceLang("index.php", $languageID, $bReturnArray = true);
        $arNewGroup["LANG"][] = array("LID" => $languageID, "NAME" => array_key_exists($xmlID . "_GROUP_NAME", $arMessages) ? $arMessages[$xmlID . "_GROUP_NAME"] : GetMessage($xmlID . "_GROUP_NAME"), "DESCRIPTION" => array_key_exists($xmlID . "_GROUP_DESCRIPTION", $arMessages) ? $arMessages[$xmlID . "_GROUP_DESCRIPTION"] : GetMessage($xmlID . "_GROUP_DESCRIPTION"));
    }
    $arGroupID[$xmlID] = CForumGroup::Add($arNewGroup);
}
$arForums = array(array("XML_ID" => "USERS_AND_GROUPS", "NAME" => GetMessage("USERS_AND_GROUPS_EXTRANET_FORUM_NAME"), "DESCRIPTION" => GetMessage("USERS_AND_GROUPS_EXTRANET_FORUM_DESCRIPTION"), "SORT" => 101, "ACTIVE" => "Y", "ALLOW_HTML" => "N", "ALLOW_ANCHOR" => "Y", "ALLOW_BIU" => "Y", "ALLOW_IMG" => "Y", "ALLOW_LIST" => "Y", "ALLOW_QUOTE" => "Y", "ALLOW_CODE" => "Y", "ALLOW_FONT" => "Y", "ALLOW_SMILES" => "Y", "ALLOW_UPLOAD" => "Y", "ALLOW_NL2BR" => "N", "MODERATION" => "N", "ALLOW_MOVE_TOPIC" => "Y", "ORDER_BY" => "P", "ORDER_DIRECTION" => "DESC", "LID" => LANGUAGE_ID, "PATH2FORUM_MESSAGE" => "", "ALLOW_UPLOAD_EXT" => "", "FORUM_GROUP_ID" => $arGroupID["HIDDEN"], "ASK_GUEST_EMAIL" => "N", "USE_CAPTCHA" => "N", "SITES" => array(WIZARD_SITE_ID => WIZARD_SITE_DIR), "EVENT1" => "forum", "EVENT2" => "message", "EVENT3" => "", "GROUP_ID" => array(WIZARD_EXTRANET_ADMIN_GROUP => "Y")), array("XML_ID" => "GROUPS_AND_USERS_FILES_COMMENTS", "NAME" => GetMessage("GROUPS_AND_USERS_FILES_COMMENTS_EXTRANET_NAME"), "DESCRIPTION" => GetMessage("GROUPS_AND_USERS_FILES_COMMENTS_EXTRANET_DECRIPTION"), "SORT" => 106, "ACTIVE" => "Y", "ALLOW_HTML" => "N", "ALLOW_ANCHOR" => "Y", "ALLOW_BIU" => "Y", "ALLOW_IMG" => "Y", "ALLOW_LIST" => "Y", "ALLOW_QUOTE" => "Y", "ALLOW_CODE" => "Y", "ALLOW_FONT" => "Y", "ALLOW_SMILES" => "Y", "ALLOW_UPLOAD" => "Y", "ALLOW_NL2BR" => "N", "MODERATION" => "N", "ALLOW_MOVE_TOPIC" => "Y", "ORDER_BY" => "P", "ORDER_DIRECTION" => "DESC", "LID" => LANGUAGE_ID, "PATH2FORUM_MESSAGE" => "", "ALLOW_UPLOAD_EXT" => "", "FORUM_GROUP_ID" => $arGroupID["COMMENTS"], "ASK_GUEST_EMAIL" => "N", "USE_CAPTCHA" => "N", "SITES" => array(WIZARD_SITE_ID => WIZARD_SITE_DIR), "EVENT1" => "forum", "EVENT2" => "message", "EVENT3" => "", "GROUP_ID" => array(WIZARD_EXTRANET_GROUP => "M", WIZARD_EXTRANET_ADMIN_GROUP => "Y")), array("XML_ID" => "PHOTOGALLERY_COMMENTS", "NAME" => GetMessage("GROUPS_AND_USERS_PHOTOGALLERY_COMMENTS_EXTRANET_NAME"), "DESCRIPTION" => GetMessage("GROUPS_AND_USERS_PHOTOGALLERY_COMMENTS_EXTRANET_DECRIPTION"), "SORT" => 106, "ACTIVE" => "Y", "ALLOW_HTML" => "N", "ALLOW_ANCHOR" => "Y", "ALLOW_BIU" => "Y", "ALLOW_IMG" => "Y", "ALLOW_LIST" => "Y", "ALLOW_QUOTE" => "Y", "ALLOW_CODE" => "Y", "ALLOW_FONT" => "Y", "ALLOW_SMILES" => "Y", "ALLOW_UPLOAD" => "Y", "ALLOW_NL2BR" => "N", "MODERATION" => "N", "ALLOW_MOVE_TOPIC" => "Y", "ORDER_BY" => "P", "ORDER_DIRECTION" => "DESC", "LID" => LANGUAGE_ID, "PATH2FORUM_MESSAGE" => "", "ALLOW_UPLOAD_EXT" => "", "FORUM_GROUP_ID" => $arGroupID["COMMENTS"], "ASK_GUEST_EMAIL" => "N", "USE_CAPTCHA" => "N", "SITES" => array(WIZARD_SITE_ID => WIZARD_SITE_DIR), "EVENT1" => "forum", "EVENT2" => "message", "EVENT3" => "", "GROUP_ID" => array(WIZARD_EXTRANET_GROUP => "M", WIZARD_EXTRANET_ADMIN_GROUP => "Y")));
$default_site_id = CSite::GetDefSite();
if (strlen($default_site_id) > 0) {
    foreach ($arForums as $arForum) {
        $dbForum = CForumNew::GetList(array(), array("SITE_ID" => WIZARD_SITE_ID, "XML_ID" => $arForum["XML_ID"]));
        if ($arForumTmp = $dbForum->Fetch()) {
            continue;
        } else {
            $dbForumDefault = CForumNew::GetList(array(), array("SITE_ID" => $default_site_id, "XML_ID" => $arForum["XML_ID"]));
            if ($arForumDefault = $dbForumDefault->Fetch()) {
                $arSites = CForumNew::GetSites($arForumDefault["ID"]);
                $arSites[WIZARD_SITE_ID] = WIZARD_SITE_DIR;
                $arForumFields = array("ACTIVE" => $arForumDefault["ACTIVE"], "SITES" => $arSites);
                CForumNew::Update($arForumDefault["ID"], $arForumFields);
            } else {
                $forumID = CForumNew::Add($arForum);
            }
        }
    }
}
$UsersAndGroupsForumID = 0;
$dbRes = CForumNew::GetListEx(array(), array("SITE_ID" => WIZARD_SITE_ID, "XML_ID" => "USERS_AND_GROUPS"));
if ($arRes = $dbRes->Fetch()) {
    $UsersAndGroupsForumID = $arRes["ID"];
}
CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/index.php", array("FORUM_ID" => $UsersAndGroupsForumID));