%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.forum.topic.list/ |
Current File : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.forum.topic.list/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); /** @var CBitrixComponent $this */ /** @var array $arParams */ /** @var array $arResult */ /** @var string $componentPath */ /** @var string $componentName */ /** @var string $componentTemplate */ /** @global CDatabase $DB */ /** @global CUser $USER */ /** @global CMain $APPLICATION */ if (!CModule::IncludeModule("forum")): ShowError(GetMessage("F_NO_MODULE")); return false; elseif (!CModule::IncludeModule("socialnetwork")): ShowError(GetMessage("SONET_MODULE_NOT_INSTALL")); return false; elseif (intVal($arParams["FID"]) <= 0): ShowError(GetMessage("F_FID_IS_EMPTY")); return false; endif; /******************************************************************** Input params ********************************************************************/ /***************** BASE ********************************************/ $GLOBALS["FID"] = $arParams["FID"] = intVal($arParams["FID"]); $arParams["USE_DESC_PAGE"] = ($arParams["USE_DESC_PAGE"] == "N" ? "N" : "Y"); $arParams["MODE"] = ($arParams["SOCNET_GROUP_ID"] > 0 ? "GROUP" : "USER"); $arParams["SOCNET_GROUP_ID"] = intVal($arParams["SOCNET_GROUP_ID"]); $arParams["USER_ID"] = intVal(!empty($arParams["USER_ID"]) ? $arParams["USER_ID"] : $USER->GetID()); /***************** URL *********************************************/ $URL_NAME_DEFAULT = array( "topic_list" => "PAGE_NAME=topic_list", "topic" => "PAGE_NAME=topic&TID=#TID#", "topic_edit" => "PAGE_NAME=topic_edit&TID=#TID#&MID=#MID#&MESSAGE_TYPE=#MESSAGE_TYPE#", "message" => "PAGE_NAME=message&FID=#FID#&TID=#TID#&MID=#MID#", "profile_view" => "PAGE_NAME=profile_view&UID=#UID#"); foreach ($URL_NAME_DEFAULT as $URL => $URL_VALUE) { if (strLen(trim($arParams["URL_TEMPLATES_".strToUpper($URL)])) <= 0) $arParams["URL_TEMPLATES_".strToUpper($URL)] = $APPLICATION->GetCurPage()."?".$URL_VALUE; $arParams["~URL_TEMPLATES_".strToUpper($URL)] = $arParams["URL_TEMPLATES_".strToUpper($URL)]; $arParams["URL_TEMPLATES_".strToUpper($URL)] = htmlspecialcharsbx($arParams["~URL_TEMPLATES_".strToUpper($URL)]); } /***************** ADDITIONAL **************************************/ $arParams["PAGEN"] = (intVal($arParams["PAGEN"]) <= 0 ? 1 : intVal($arParams["PAGEN"])); $arParams["PAGE_NAVIGATION_TEMPLATE"] = trim($arParams["PAGE_NAVIGATION_TEMPLATE"]); $arParams["PAGE_NAVIGATION_WINDOW"] = intVal(intVal($arParams["PAGE_NAVIGATION_WINDOW"]) > 0 ? $arParams["PAGE_NAVIGATION_WINDOW"] : 11); $arParams["TOPICS_PER_PAGE"] = intVal($arParams["TOPICS_PER_PAGE"] > 0 ? $arParams["TOPICS_PER_PAGE"] : COption::GetOptionString("forum", "TOPICS_PER_PAGE", "10")); $arParams["MESSAGES_PER_PAGE"] = intVal($arParams["MESSAGES_PER_PAGE"] > 0 ? $arParams["MESSAGES_PER_PAGE"] : COption::GetOptionString("forum", "MESSAGES_PER_PAGE", "10")); $arParams["DATE_FORMAT"] = trim(empty($arParams["DATE_FORMAT"]) ? $DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")) : $arParams["DATE_FORMAT"]); $arParams["DATE_TIME_FORMAT"] = trim(empty($arParams["DATE_TIME_FORMAT"]) ? $DB->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]); $arParams["NAME_TEMPLATE"] = (!empty($arParams["NAME_TEMPLATE"]) ? $arParams["NAME_TEMPLATE"] : CSite::GetNameFormat()); $arParams["WORD_LENGTH"] = intVal($arParams["WORD_LENGTH"]); /***************** STANDART ****************************************/ if ($arParams["CACHE_TYPE"] == "Y" || ($arParams["CACHE_TYPE"] == "A" && COption::GetOptionString("main", "component_cache_on", "Y") == "Y")) $arParams["CACHE_TIME"] = intval($arParams["CACHE_TIME"]); else $arParams["CACHE_TIME"] = 0; $arParams["SET_TITLE"] = ($arParams["SET_TITLE"] == "N" ? "N" : "Y"); /******************************************************************** /Input params ********************************************************************/ /******************************************************************** Default values ********************************************************************/ //************** SocNet Activity ***********************************/ if (($arParams["MODE"] == "GROUP" && !CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "forum")) || ($arParams["MODE"] != "GROUP" && !CSocNetFeatures::IsActiveFeature(SONET_ENTITY_USER, $arParams["USER_ID"], "forum"))): ShowError(GetMessage("FORUM_SONET_MODULE_NOT_AVAIBLE")); return false; endif; //************** Forum *********************************************/ $arResult["TOPICS"] = array(); $arResult["FORUM"] = CForumNew::GetByID($arParams["FID"]); $arParams["PERMISSION_ORIGINAL"] = ForumCurrUserPermissions($arParams["FID"]); $arParams["PERMISSION"] = "A"; $arResult["ERROR_MESSAGE"] = ""; $arResult["OK_MESSAGE"] = ""; $arError = array(); $arNote = array(); $user_id = $USER->GetID(); //************** Permission ****************************************/ $bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin(); if (empty($arResult["FORUM"])) { CHTTP::SetStatus("404 Not Found"); $arError[] = array( "id" => "forum_is_lost", "text" => GetMessage("F_FID_IS_LOST")); } elseif ($arParams["MODE"] == "GROUP") { if (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "forum", "full", $bCurrentUserIsAdmin)) $arParams["PERMISSION"] = "Y"; elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "forum", "newtopic", $bCurrentUserIsAdmin)) $arParams["PERMISSION"] = "M"; elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "forum", "answer", $bCurrentUserIsAdmin)) $arParams["PERMISSION"] = "I"; elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "forum", "view", $bCurrentUserIsAdmin)) $arParams["PERMISSION"] = "E"; } else { if (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $arParams["USER_ID"], "forum", "full", $bCurrentUserIsAdmin)) $arParams["PERMISSION"] = "Y"; elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $arParams["USER_ID"], "forum", "newtopic", $bCurrentUserIsAdmin)) $arParams["PERMISSION"] = "M"; elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $arParams["USER_ID"], "forum", "answer", $bCurrentUserIsAdmin)) $arParams["PERMISSION"] = "I"; elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $arParams["USER_ID"], "forum", "view", $bCurrentUserIsAdmin)) $arParams["PERMISSION"] = "E"; } if (empty($arError) && !CForumNew::CanUserViewForum($arParams["FID"], $USER->GetUserGroupArray(), $arParams["PERMISSION"])): $arError[] = array( "id" => "acces denied", "text" => GetMessage("FORUM_SONET_NO_ACCESS")); endif; if (!empty($arError)): $e = new CAdminException($arError); $res = $e->GetString(); ShowError($res); return false; endif; /******************************************************************** /Default values ********************************************************************/ /******************************************************************** Actions ********************************************************************/ $ACTION = strToUpper(is_set($_REQUEST, "form_action") ? $_REQUEST["form_action"] : $_REQUEST["ACTION"]); if ($_REQUEST["topic_edit"] == "Y") { $strErrorMessage = ""; $strOkMessage = ""; $result = false; $topics = (is_set($_REQUEST, "topic_id") ? $_REQUEST["topic_id"] : $_REQUEST["TID"]); if (!check_bitrix_sessid()) { $arError[] = array( "id" => "bad_sessid", "text" => GetMessage("F_ERR_SESS_FINISH")); } elseif (!in_array($ACTION, array("SET_TOP", "TOP", "SET_ORDINARY", "ORDINARY", "DEL_TOPIC", "DELETE", "STATE_Y", "STATE_N", "CLOSE", "OPEN"))) { $arError[] = array( "id" => "empty action", "text" => GetMessage("F_ERR_EMPTY_ACTION")); } elseif (empty($topics)) { $arError[] = array( "id" => "empty topics", "text" => GetMessage("F_ERR_EMPTY_TOPICS")); } else { $arTopics = array(); $arFilter = array( "FORUM_ID" => $arParams["FID"], "SOCNET_GROUP_ID" => false, "@ID" => $topics); if ($arParams["MODE"] == "GROUP") $arFilter["SOCNET_GROUP_ID"] = $arParams["SOCNET_GROUP_ID"]; else $arFilter["OWNER_ID"] = $arParams["USER_ID"]; $db_res = CForumTopic::GetListEx(array("SORT"=>"ASC"), $arFilter); if ($db_res && $res = $db_res->Fetch()) { do { $arTopic[] = intVal($res["ID"]); }while ($res = $db_res->Fetch()); switch ($ACTION) { case "SET_TOP": case "SET_ORDINARY": case "TOP": case "ORDINARY": $ACTION = ($ACTION == "SET_ORDINARY" ? "ORDINARY" : ($ACTION == "SET_TOP" ? "TOP" : $ACTION)); $sort = ($ACTION == "TOP" ? "150" : "100"); $result = ForumTopOrdinaryTopic($arTopic, $ACTION, $strErrorMessage, $strOkMessage, array("PERMISSION" => $arParams["PERMISSION"])); break; case "DEL_TOPIC": case "DELETE": $arLogID = array(); foreach($arTopic as $topic_id_tmp) { // delete message log records $dbForumMessage = CForumMessage::GetList( array("ID" => "ASC"), array("TOPIC_ID" => $topic_id_tmp) ); while ($arForumMessage = $dbForumMessage->Fetch()) { $dbRes = CSocNetLog::GetList( array("ID" => "DESC"), array( "EVENT_ID" => "forum", "SOURCE_ID" => $arForumMessage["ID"] ), false, false, array("ID", "PARAMS") ); while ($arRes = $dbRes->Fetch()) $arLogID[] = $arRes["ID"]; } } $result = ForumDeleteTopic($arTopic, $strErrorMessage, $strOkMessage, array("PERMISSION" => $arParams["PERMISSION"])); if ($result) foreach($arLogID as $log_id) CSocNetLog::Delete($log_id); break; case "STATE_Y": case "STATE_N": case "CLOSE": case "OPEN": $ACTION = ($ACTION == "STATE_Y" ? "OPEN" : ($ACTION == "STATE_N" ? "CLOSE" : $ACTION)); $state = ($ACTION == "OPEN" ? "Y" : "N"); $result = ForumOpenCloseTopic($arTopic, $ACTION, $strErrorMessage, $strOkMessage, array("PERMISSION" => $arParams["PERMISSION"])); break; default: $arError[] = array( "id" => "bad action", "text" => $ACTION); break; } if (!empty($strErrorMessage)) { $arError[] = array( "id" => "action error", "text" => $strErrorMessage); } } $arTopic = array_diff($topics, $arTopic); if (!empty($arTopic)) { $arError[] = array( "id" => "empty topics", "text" => str_replace("#TOPICS#", implode(", ", $arTopic), GetMessage("F_ERR_TOPICS_NOT_MODERATION"))); } } if (empty($arError)) { $url = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_LIST"], array("FID" => $arParams["FID"], "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])); LocalRedirect($url); } else { $e = new CAdminException($arError); $arResult["ERROR_MESSAGE"] = $e->GetString(); $arResult["OK_MESSAGE"] = $strOkMessage; } } if($arParams["SOCNET_GROUP_ID"]>0 && $USER->IsAuthorized() && check_bitrix_sessid()) { if($_REQUEST['SAVE_EMAIL_FORUM']=='Y' && $_SERVER['REQUEST_METHOD']=='POST' && $arParams["PERMISSION"] >= "Y" && CModule::IncludeModule("mail") && $APPLICATION->GetGroupRight("mail")>"R") { $arFields = Array(); $arFields["FORUM_ID"] = $arParams["FID"]; $arFields["SOCNET_GROUP_ID"] = $arParams["SOCNET_GROUP_ID"]; if($_POST["EMAIL_FORUM_ACTIVE"] != "Y") { $arFields["EMAIL_FORUM_ACTIVE"] = "N"; CForumEMail::Set($arFields); } else { $arFields["EMAIL_FORUM_ACTIVE"] = "Y"; $arFields["EMAIL"] = $_POST["EMAIL"]; $arFields["USE_EMAIL"] = $_POST["USE_EMAIL"]; $arFields["EMAIL_GROUP"] = ($_POST["EMAIL_GROUP"]?$_POST["EMAIL_GROUP"]:""); $arFields["SUBJECT_SUF"] = ($_POST["SUBJECT_SUF"]?$_POST["SUBJECT_SUF"]:""); $arFields["USE_SUBJECT"] = $_POST["USE_SUBJECT"]; $arFields["NOT_MEMBER_POST"] = $_POST["NOT_MEMBER_POST"]; $arFields["URL_TEMPLATES_MESSAGE"] = $arParams["~URL_TEMPLATES_MESSAGE"]; if($_POST["EMAIL_FORUM_MAILBOX"]>0) { $dbrMailF = CMailFilter::GetById($_POST["EMAIL_FORUM_MAILBOX"]); if($arMailF = $dbrMailF->GetNext()) { if($arMailF['MAILBOX_TYPE']=='smtp') { $arFields["EMAIL_GROUP"] = ''; $domains = preg_split("/[\r\n]+/", $arMailF['DOMAINS'], -1, PREG_SPLIT_NO_EMPTY); if(count($domains)>0) $arFields["EMAIL"] = $arFields["EMAIL"]."@".$_POST['EMAIL_DOMAIN']; } $arFields["MAIL_FILTER_ID"] = $_POST["EMAIL_FORUM_MAILBOX"]; if(CForumEMail::Set($arFields)>0) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_LIST"], array("FID" => $arParams["FID"], "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])) ); } } } else { if($_POST["EMAIL_FORUM_MAILBOX"]=="!") //new pop3 { $arMailboxFields = Array( "LID" => SITE_ID, "SERVER_TYPE" => "pop3", "ACTIVE" => "Y", "NAME" => $_POST["EMAIL_FORUM_MAILBOX_NAME"], "SERVER" => $_POST["EMAIL_FORUM_MAILBOX_SERVER"], "PORT" => $_POST["EMAIL_FORUM_MAILBOX_PORT"], "LOGIN" => $_POST["EMAIL_FORUM_MAILBOX_LOGIN"], "PASSWORD" => $_POST["EMAIL_FORUM_MAILBOX_PASSWORD"], "USE_TLS" => $_POST["EMAIL_FORUM_MAILBOX_SSL"], "DELETE_MESSAGES" => $_POST["EMAIL_FORUM_MAILBOX_DELETE_MESSAGES"], "PERIOD_CHECK" => 5, ); $MAILBOX_ID = CMailBox::Add($arMailboxFields); } elseif(substr($_POST["EMAIL_FORUM_MAILBOX"], 0, 1) == 'M') //new smtp rule { $MAILBOX_ID = substr($_POST["EMAIL_FORUM_MAILBOX"], 1); $dbrMailF = CMailBox::GetById($MAILBOX_ID); if(($arMailF = $dbrMailF->GetNext()) && $arMailF['SERVER_TYPE']=='smtp') { $arFields["EMAIL_GROUP"] = ''; $domains = preg_split("/[\r\n]+/", $arMailF['DOMAINS'], -1, PREG_SPLIT_NO_EMPTY); if(count($domains)>0) $arFields["EMAIL"] = $arFields["EMAIL"]."@".$_POST['EMAIL_DOMAIN']; } else $MAILBOX_ID = 0; } if($MAILBOX_ID>0) { $arMailFilterFields = Array( "MAILBOX_ID" => $MAILBOX_ID, "NAME" => GetMessage("SOCNET_FORUM_TL_EMAIL_RULE"), "ACTION_TYPE" => "forumsocnet", "ACTION_VARS" => "", "WHEN_MAIL_RECEIVED" => "Y", "WHEN_MANUALLY_RUN" => "Y", ); $MAIL_FILTER_ID = CMailFilter::Add($arMailFilterFields); $arFields["MAIL_FILTER_ID"] = $MAIL_FILTER_ID; if(CForumEMail::Set($arFields)>0) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_LIST"], array("FID" => $arParams["FID"], "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])) ); } } } } } elseif($ACTION=="FORUM_SUBSCRIBE") { if (ForumSubscribeNewMessagesEx($arParams["FID"], 0, "N", $strErrorMessage, $strOkMessage, false, $arParams["SOCNET_GROUP_ID"])): LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_LIST"], array("FID" => $arParams["FID"], "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])) ); else: $arResult["ERROR_MESSAGE"] = $strErrorMessage; endif; } elseif($ACTION=="FORUM_UNSUBSCRIBE") { $arFields = array( "USER_ID" => $USER->GetID(), "FORUM_ID" => $arParams["FID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => false, "SOCNET_GROUP_ID" => $arParams["SOCNET_GROUP_ID"] ); $db_res = CForumSubscribe::GetListEx(array(), $arFields); if ($db_res && ($res = $db_res->Fetch()) && CForumSubscribe::Delete($res["ID"])) LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_LIST"], array("FID" => $arParams["FID"], "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])) ); } } /******************************************************************** /Actions ********************************************************************/ /******************************************************************** Default params # 2 ********************************************************************/ global $by, $order; InitSorting(); if (!$by): ForumGetTopicSort($by, $order, $arResult["FORUM"]); endif; $by = ($by == "ABS_LAST_POST_DATE" ? "LAST_POST_DATE" : $by); $arResult["SortingEx"]["TITLE"] = SortingEx("TITLE"); $arResult["SortingEx"]["USER_START_NAME"] = SortingEx("USER_START_NAME"); $arResult["SortingEx"]["POSTS"] = SortingEx("POSTS"); $arResult["SortingEx"]["VIEWS"] = SortingEx("VIEWS"); $arResult["SortingEx"]["LAST_POST_DATE"] = SortingEx("LAST_POST_DATE"); $by = ($by == "LAST_POST_DATE" && $arParams["PERMISSION"] >= "Q" ? "ABS_LAST_POST_DATE" : $by); $parser = new forumTextParser(false, false, false, "light"); $parser->MaxStringLen = $arParams["WORD_LENGTH"]; $arResult["TOPICS"] = array(); if ($arParams["PERMISSION"] > "E") $arResult["CanUserAddTopic"] = CForumTopic::CanUserAddTopic( $arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), $arResult["FORUM"], $arParams["PERMISSION"]); else $arResult["CanUserAddTopic"] = false; $arResult["URL"] = array( "TOPIC_NEW" => CComponentEngine::MakePathFromTemplate( $arParams["URL_TEMPLATES_TOPIC_EDIT"], array("FID" => $arParams["FID"], "TID" => "new", "ACTION" => "new", "MESSAGE_TYPE" => "NEW", "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"], "MID" => 0))); /******************************************************************** /Default params # 2 ********************************************************************/ /******************************************************************** Data ********************************************************************/ $arFilter = array( // "FORUM_ID" => $arParams["FID"], "SOCNET_GROUP_ID" => false); if ($arParams["PERMISSION"] < "Q") $arFilter["APPROVED"] = "Y"; if ($USER->IsAuthorized()) $arFilter["USER_ID"] = $USER->GetID(); if ($arParams["MODE"] == "GROUP") $arFilter["SOCNET_GROUP_ID"] = $arParams["SOCNET_GROUP_ID"]; else { $arFilter["OWNER_ID"] = $arParams["USER_ID"]; $arFilter["FORUM_ID"] = $arParams["FID"]; } $db_res = CForumTopic::GetListEx( array("SORT"=>"ASC", $by=>$order), $arFilter, false, false, array( "bDescPageNumbering" => ($arParams["USE_DESC_PAGE"] == "Y" ? true : false), "nPageSize" => $arParams["TOPICS_PER_PAGE"], "bShowAll" => false, "sNameTemplate" => $arParams["NAME_TEMPLATE"] ) ); $db_res->NavStart($arParams["TOPICS_PER_PAGE"], false); //******************************************************************/ $arResult["NAV_RESULT"] = $db_res; $arResult["NAV_STRING"] = $db_res->GetPageNavStringEx($navComponentObject, GetMessage("F_TOPIC_LIST"), $arParams["PAGE_NAVIGATION_TEMPLATE"]); while ($res = $db_res->GetNext()) { $res["STATUS"] = "OLD"; if ($res["APPROVED"] != "Y") { $res["STATUS"] = "NA"; } elseif ($res["STATE"] == "L") { $res["STATUS"] = "MOVED"; $res["URL"]["READ"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC"], array("FID" => $res["FORUM_ID"], "TID" => $res["TOPIC_ID"], "MID" => "s")); } elseif (NewMessageTopic($res["FORUM_ID"], $res["ID"], ($arParams["PERMISSION"] < "Q" ? $res["LAST_POST_DATE"] : $res["ABS_LAST_POST_DATE"]), $res["LAST_VISIT"])) { $res["STATUS"] = "NEW"; } $res["TopicStatus"] = $res["STATUS"]; $res["numMessages"] = $res["POSTS"]; /*******************************************************************/ if($arParams["PERMISSION"] >= "Q"): $res["LAST_POSTER_ID"] = $res["ABS_LAST_POSTER_ID"]; $res["LAST_POST_DATE"] = $res["ABS_LAST_POST_DATE"]; $res["LAST_POSTER_NAME"] = $res["ABS_LAST_POSTER_NAME"]; $res["LAST_MESSAGE_ID"] = $res["ABS_LAST_MESSAGE_ID"]; $res["mCnt"] = intVal($res["POSTS_UNAPPROVED"]); $res["numMessages"] += $res["mCnt"]; $res["mCntURL"] = $res["URL"]["MODERATE_MESSAGE"]; endif; /*******************************************************************/ $res["numMessages"]++; /*******************************************************************/ /*******************************************************************/ $res["pages"] = ForumShowTopicPages($res["numMessages"], $res["URL"]["READ"], "PAGEN_".$arParams["PAGEN"], intVal($arParams["MESSAGES_PER_PAGE"])); $res["PAGES_COUNT"] = intVal(ceil($res["numMessages"]/$arParams["MESSAGES_PER_PAGE"])); /*******************************************************************/ $res["TITLE"] = $parser->wrap_long_words($res["TITLE"]); $res["DESCRIPTION"] = $parser->wrap_long_words($res["DESCRIPTION"]); $res["USER_START_NAME"] = $parser->wrap_long_words($res["USER_START_NAME"]); $res["LAST_POSTER_NAME"] = $parser->wrap_long_words($res["LAST_POSTER_NAME"]); $res["LAST_POST_DATE"] = CForumFormat::DateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($res["LAST_POST_DATE"], CSite::GetDateFormat())); $res["START_DATE"] = CForumFormat::DateFormat($arParams["DATE_FORMAT"], MakeTimeStamp($res["START_DATE"], CSite::GetDateFormat())); /*******************************************************************/ $res["URL"] = array( "TOPIC" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_TOPIC"], array("TID" => $res["ID"], "MID" => "s", "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])), "READ" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_TOPIC"], array("TID" => $res["ID"], "MID" => "s", "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])), "LAST_MESSAGE" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_MESSAGE"], array("TID" => $res["ID"], "MID" => $res["LAST_MESSAGE_ID"], "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])), "UNREAD" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_TOPIC"], array("TID" => $res["ID"], "MID" => "unread_mid", "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])), "MESSAGE_UNREAD" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_TOPIC"], array("TID" => $res["ID"], "MID" => "unread_mid", "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])), "USER_START" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $res["USER_START_ID"], "GID" => $arParams["SOCNET_GROUP_ID"])), "LAST_POSTER" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $res["LAST_POSTER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"]))); foreach ($res["URL"] as $key => $val): $res["URL"]["~".$key] = $val; $res["URL"][$key] = htmlspecialcharsbx($val); endforeach; /*******************************************************************/ $arResult["TOPICS"][] = $res; } if($arParams["SOCNET_GROUP_ID"] > 0 && $USER->IsAuthorized() && CModule::IncludeModule("mail")) { $arResult["EMAIL_INTEGRATION"] = CForumEMail::GetForumFilters($arParams["FID"], $arParams["SOCNET_GROUP_ID"]); if($arResult["EMAIL_INTEGRATION"]) { $dbMBF = CMailFilter::GetById($arResult["EMAIL_INTEGRATION"]["MAIL_FILTER_ID"]); $arResult["EMAIL_INTEGRATION"]["MAIL_FILTER"] = $dbMBF->Fetch(); $arFields = array("USER_ID" => $USER->GetID(), "FORUM_ID" => $arParams["FID"], "TOPIC_ID" => 0, "SITE_ID" => SITE_ID, "SOCNET_GROUP_ID" => $arParams["SOCNET_GROUP_ID"]); $db_res = CForumSubscribe::GetList(array(), $arFields); if($db_res && $res = $db_res->Fetch()) { $arResult["USER"]["SUBSCRIBE"] = "Y"; } } // if user has mail module permissions: if($arParams["PERMISSION"] >= "Y" && $APPLICATION->GetGroupRight("mail")>"R") { $arResult["MAILBOXES"] = Array(); $dbrMailF = CMailFilter::GetList(Array(), Array("SERVER_TYPE"=>"smtp", "EMPTY"=>"Y")); while($arMailF = $dbrMailF->GetNext()) $arResult["MAILBOXES"][] = $arMailF; $dbrMailF = CMailFilter::GetList(Array(), Array("SERVER_TYPE"=>"pop3", "ACTION_TYPE"=>"forumsocnet")); while($arMailF = $dbrMailF->GetNext()) $arResult["MAILBOXES"][] = $arMailF; } } /******************************************************************** /Data ********************************************************************/ $this->IncludeComponentTemplate(); /******************************************************************** Standart Action ********************************************************************/ if ($arParams["SET_TITLE"] != "N"): $APPLICATION->AddChainItem(GetMessage("FL_FORUM_CHAIN")); $APPLICATION->SetTitle(GetMessage("FL_FORUM_CHAIN")); endif; /******************************************************************** /Standart Action ********************************************************************/ ?>