$res["~ATTACH_FILE"] = array(); $res["ATTACH_FILE"] = array(); /************** Message info/***************************************/ /************** Author info ****************************************/ $res["AUTHOR_ID"] = intVal($res["AUTHOR_ID"]); $res["AUTHOR_NAME"] = $parser->wrap_long_words($res["AUTHOR_NAME"]); if ($res["AUTHOR_ID"] <= 0) { // Status list($res["AUTHOR_STATUS_CODE"], $res["AUTHOR_STATUS"]) = ForumGetUserForumStatus(0); } else { if (!array_key_exists($res["AUTHOR_ID"], $UserInfo)) { $perm = CForumNew::GetUserPermission($res["FORUM_ID"], CUser::GetUserGroup($res["AUTHOR_ID"])); $arUser = array("Perms" => $perm, "Rank" => $perm <= "Q" ? CForumUser::GetUserRank($res["AUTHOR_ID"], LANGUAGE_ID) : "", "Points" => !empty($res["POINTS"]) ? array("POINTS" => $res["POINTS"], "DATE_UPDATE" => $res["DATE_UPDATE"]) : false); $arUData = array(); // Status list($arUData["AUTHOR_STATUS_CODE"], $arUData["AUTHOR_STATUS"]) = ForumGetUserForumStatus($res["AUTHOR_ID"], $arUser["Perms"], $arUser); // Avatar if (!empty($res["AVATAR"])) { $arUData["AVATAR"] = array("ID" => $res["~AVATAR"], "FILE" => CFile::GetFileArray($res["~AVATAR"])); $arUData["AVATAR"]["HTML"] = CFile::ShowImage($arUData["AVATAR"]["FILE"], COption::GetOptionString("forum", "avatar_max_width", 90), COption::GetOptionString("forum", "avatar_max_height", 90), "border=\"0\"", "", true); } // Voting $arUData["VOTING"] = "N"; if (COption::GetOptionString("forum", "SHOW_VOTES", "Y") == "Y" && $USER->IsAuthorized() && ($GLOBALS["APPLICATION"]->GetGroupRight("forum") >= "W" || $USER->GetID() != $res["AUTHOR_ID"])) { $bUnVote = $arUser["Points"]; $bVote = !$arUser["Points"] ? $arResult["USER"]["RANK"]["VOTES"] : intval($arUser["Points"]["POINTS"]) < intval($arResult["USER"]["RANK"]["VOTES"]); $bVote = $bVote ? $bVote : $GLOBALS["APPLICATION"]->GetGroupRight("forum") >= "W"; $arUData["VOTING"] = $bVote ? "VOTE" : ($bUnVote ? "UNVOTE" : "N"); } // data $arUData["DATE_REG"] = CForumFormat::DateFormat($arParams["DATE_FORMAT"], MakeTimeStamp($res["DATE_REG"], CSite::GetDateFormat()));
if (!CForumUser::IsAdmin()) { $arFilter["PERMS"] = array($USER->GetGroups(), 'A'); $arFilter["ACTIVE"] = "Y"; } $arUserPerm = array(); $db_res = CForumNew::GetList(array(), $arFilter); if ($db_res && ($res = $db_res->GetNext())) { $arUserGroup = CUser::GetUserGroup($arParams["UID"]); do { $arResult["FORUMS"][$res["ID"]] = $res; $arUserPerm[] = CForumNew::GetUserPermission($res["ID"], $arUserGroup); } while ($res = $db_res->GetNext()); } rsort($arUserPerm); $arRank = CForumUser::GetUserRank($arParams["UID"], LANGUAGE_ID); list($arResult["USER_RANK_CODE"], $arResult["USER_RANK"]) = ForumGetUserForumStatus($arParams["UID"], $arUserPerm[0], array("Rank" => $arRank)); $arResult["SHOW_POINTS"] = "N"; $arResult["arRank"] = array_merge(is_array($arRank) ? $arRank : array(), array("NAME" => $arResult["USER_RANK"])); if ($USER->IsAuthorized() && (CForumUser::IsAdmin() || intval($USER->GetID()) == $arParams["UID"])) { $arResult["SHOW_POINTS"] = "Y"; $arResult["USER_POINTS"] = !empty($arRank["VOTES"]) ? intval($arRank["VOTES"]) : GetMessage("F_NO_VOTES"); } /*******************************************************************/ $arResult["arTopic"] = "N"; if (!empty($arResult["FORUMS"])) { $db_res = CForumUser::UserAddInfo(array("LAST_POST" => "DESC"), array("AUTHOR_ID" => $arParams["UID"], "@FORUM_ID" => array_keys($arResult["FORUMS"])), "topics"); if ($db_res && ($res = $db_res->GetNext())) { $res["TITLE"] = $parser->wrap_long_words($res["TITLE"]); $res["DESCRIPTION"] = $parser->wrap_long_words($res["DESCRIPTION"]); $res["LAST_POST_DATE"] = CForumFormat::DateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($res["LAST_POST_DATE"], CSite::GetDateFormat())); $arResult["arTopic"] = array_merge($res, array("read" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE"], array("FID" => $res["FORUM_ID"], "TID" => $res["TOPIC_ID"], "TITLE_SEO" => $res["TITLE_SEO"], "MID" => intval($res["LAST_POST"]))) . "#message" . intval($res["LAST_POST"])));
$arResult["SortingEx"]["LAST_VISIT"] = SortingEx("LAST_VISIT", $APPLICATION->GetCurPageParam()); if ($res = $db_res->GetNext()) { do { $arUserGroup = array(); $UserPerm = array(); $res["AUTHOR_STATUS"] = ""; $res["AUTHOR_STATUS_CODE"] = ""; // geting max permisson of User from all forums if ($arParams["SHOW_USER_STATUS"] == "Y") { $arUserGroup = CUser::GetUserGroup($res["USER_ID"]); sort($arUserGroup); foreach ($arForums as $forum) { $UserPerm[] = CForumNew::GetUserPermission($forum["ID"], $arUserGroup); } rsort($UserPerm); list($res["AUTHOR_STATUS_CODE"], $res["AUTHOR_STATUS"]) = ForumGetUserForumStatus($res["USER_ID"], $UserPerm[0]); } $res["UserStatus"] = $res["AUTHOR_STATUS"]; $res["URL"] = array("AUTHOR" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $res["USER_ID"])), "~AUTHOR" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $res["USER_ID"])), "POSTS" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_USER_POST"], array("UID" => $res["USER_ID"], "mode" => "all")), "~POSTS" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_USER_POST"], array("UID" => $res["USER_ID"], "mode" => "all"))); $res["profile_view"] = $res["URL"]["AUTHOR"]; $res["user_post"] = $res["URL"]["POSTS"]; $res["pm_edit"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PM_EDIT"], array("FID" => 0, "MID" => 0, "mode" => "new", "UID" => $res["USER_ID"])); $res["mail"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE_SEND"], array("TYPE" => "mail", "UID" => $res["USER_ID"])); $res["DATE_REG"] = !empty($res["DATE_REGISTER_SHORT"]) ? CForumFormat::DateFormat($arParams["DATE_FORMAT"], MakeTimeStamp($res["DATE_REGISTER_SHORT"], CSite::GetDateFormat())) : ""; $res["LAST_VISIT"] = !empty($res["LAST_VISIT"]) ? CForumFormat::DateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($res["LAST_VISIT"], CSite::GetDateFormat())) : ""; $res["icq"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE_SEND"], array("TYPE" => "icq", "UID" => $res["USER_ID"])); if (strLen($res["AVATAR"]) > 0) { $res["~AVATAR"] = array("ID" => $res["AVATAR"], "FILE" => CFile::GetFileArray($res["AVATAR"])); $res["~AVATAR"]["HTML"] = CFile::ShowImage($res["~AVATAR"]["FILE"], COption::GetOptionString("forum", "avatar_max_width", 100), COption::GetOptionString("forum", "avatar_max_height", 100), "border=\"0\"", "", true); $res["~AVATAR"]["HTML_SMALL"] = CFile::ShowImage($res["~AVATAR"]["FILE"], 20, 20, "border=0 alt=\"\"", "", true); $res["AVATAR_ARRAY"] = $res["~AVATAR"];
/************** Message List/***************************************/ if (!empty($arTopicNeeded)) { $db_res = CForumUser::UserAddInfo(array(), array("@TOPIC_ID" => implode(",", $arTopicNeeded), "AUTHOR_ID" => $arParams["UID"]), false, false, false); if ($db_res && ($res = $db_res->GetNext())) { do { $arTopics[$res["TOPIC_ID"]] = $res; } while ($res = $db_res->GetNext()); } } foreach ($topics as $topic_id => $res) { $forum_id = intval($arTopics[$topic_id]["FORUM_ID"]); if (!array_key_exists($forum_id, $forums)) { $UserPermStr = ""; $UserPermCode = ""; $UserPerm = CForumNew::GetUserPermission($forum_id, $arResult["USER"]["GROUPS"]); list($UserPermCode, $UserPermStr) = ForumGetUserForumStatus($arParams["UID"], $UserPerm, $arResult["USER"]["RANK"]); $forums[$forum_id] = array_merge($arResult["FORUMS_ALL"][$forum_id], array("NUM_POSTS_ALL" => $arForum_posts[$forum_id], "PERMISSION" => $UserPerm, "USER_PERM" => $UserPerm, "AUTHOR_STATUS" => $UserPermStr, "USER_PERM_STR" => $UserPermStr, "AUTHOR_STATUS_CODE" => $UserPermCode, "TOPICS" => array())); } $arTopics[$topic_id]["TITLE"] = $arResult["PARSER"]->wrap_long_words($arTopics[$topic_id]["TITLE"]); $arTopics[$topic_id]["DESCRIPTION"] = $arResult["PARSER"]->wrap_long_words($arTopics[$topic_id]["DESCRIPTION"]); $arTopics[$topic_id]["URL"] = array("TOPIC" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_READ"], array("FID" => $arTopics[$topic_id]["FORUM_ID"], "TID" => $arTopics[$topic_id]["TOPIC_ID"], "TITLE_SEO" => $arTopics[$topic_id]["TOPIC_ID"], "MID" => "s")), "~TOPIC" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_READ"], array("FID" => $arTopics[$topic_id]["FORUM_ID"], "TID" => $arTopics[$topic_id]["TOPIC_ID"], "TITLE_SEO" => $arTopics[$topic_id]["TOPIC_ID"], "MID" => "s"))); /************** For custom templates *******************************/ $arTopics[$topic_id]["read"] = $arTopics[$topic_id]["URL"]["TOPIC"]; /************** For custom templates *******************************/ $forums[$forum_id]["TOPICS"][$topic_id] = $topics[$topic_id] = array_merge($arTopics[$topic_id], $res); } /*******************************************************************/ /************** Urls ***********************************************/ foreach ($arResult["MESSAGE_LIST"] as $iID => $res) { $topic = $arTopics[$topic_id]; $res["URL"] = array("MESSAGE" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE"], array("FID" => $res["FORUM_ID"], "TID" => $topic["ID"], "TITLE_SEO" => $topic["TITLE_SEO"], "MID" => $res["ID"])), "EDITOR" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $res["EDITOR_ID"])), "AUTHOR" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $res["AUTHOR_ID"])), "AUTHOR_EMAIL" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE_SEND"], array("UID" => $res["AUTHOR_ID"], "TYPE" => "email")), "AUTHOR_ICQ" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE_SEND"], array("UID" => $res["AUTHOR_ID"], "TYPE" => "icq")), "AUTHOR_PM" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PM_EDIT"], array("FID" => 0, "MID" => 0, "UID" => $res["AUTHOR_ID"], "mode" => "new")));