} else { $e = new CAdminException(array_reverse($arError)); $GLOBALS["APPLICATION"]->ThrowException($e); $err = $GLOBALS['APPLICATION']->GetException(); $arResult["ERROR_MESSAGE"] = $err->GetString(); $bVarsFromForm = true; } } /******************************************************************** Action ********************************************************************/ /******************************************************************** Data ********************************************************************/ $arResult["action"] = $mode == "edit" ? "save" : "send"; $arResult["count"] = CForumPrivateMessage::PMSize($USER->GetID(), COption::GetOptionInt("forum", "MaxPrivateMessages", 100)); $arResult["count"] = round($arResult["count"] * 100); $arResult["sessid"] = bitrix_sessid_post(); $arResult["FID"] = intVal($arParams["FID"]); $arResult["MID"] = intVal($arParams["MID"]); $arResult["mode"] = $mode; $arResult["SystemFolder"] = FORUM_SystemFolder; $resFolder = CForumPMFolder::GetList(array(), array("USER_ID" => $USER->GetID())); $arResult["UserFolder"] = array(); if ($resFolder && ($resF = $resFolder->GetNext())) { do { $arResult["UserFolder"][$resF["ID"]] = $resF; } while ($resF = $resFolder->GetNext()); } // ***************************************************************************************** // Info about current user
$arResult["InputOutput"] = "AUTHOR_ID"; $SortingField = "AUTHOR_NAME"; } elseif (1 < $arParams["FID"] && $arParams["FID"] <= 3) { $arResult["StatusUser"] = "******"; $arResult["InputOutput"] = "RECIPIENT_ID"; $SortingField = "RECIPIENT_NAME"; } $arResult["SortingEx"]["POST_SUBJ"] = SortingEx("post_subj"); $arResult["SortingEx"]["AUTHOR_NAME"] = SortingEx(strToLower($SortingField)); $arResult["SortingEx"]["POST_DATE"] = SortingEx("post_date"); $arFilter = array("USER_ID" => $arParams["UID"], "FOLDER_ID" => $arParams["FID"]); if ($arParams["FID"] == 2) { //If this is outbox folder $arFilter = array("OWNER_ID" => $arParams["UID"]); } $dbrMessages = CForumPrivateMessage::GetListEx(array($by => $order), $arFilter); $dbrMessages->NavStart($arParams["PM_PER_PAGE"]); $dbrMessages->bShowAll = false; $dbrMessages->nPageWindow = $arParams["PAGE_NAVIGATION_WINDOW"]; $arResult["NAV_RESULT"] = $dbrMessages; $arResult["NAV_STRING"] = $dbrMessages->GetPageNavStringEx($navComponentObject, GetMessage("PM_TITLE_PAGES"), $arParams["PAGE_NAVIGATION_TEMPLATE"]); if ($dbrMessages && ($arMsg = $dbrMessages->GetNext())) { do { $arMsg["POST_SUBJ"] = wordwrap($arMsg["POST_SUBJ"], 100, " ", 1); $arMsg["~SHOW_NAME"] = GetUserName($arMsg[$arResult["InputOutput"]], $arParams["NAME_TEMPLATE"]); $arMsg["SHOW_NAME"] = htmlspecialcharsEx($arMsg["~SHOW_NAME"]); $arMsg["URL"] = array("MESSAGE" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PM_READ"], array("FID" => $arParams["FID"], "MID" => $arMsg["ID"])), "MESSAGE_EDIT" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PM_EDIT"], array("FID" => $arParams["FID"], "mode" => "new", "MID" => 0, "UID" => $arMsg[$arResult["InputOutput"]])), "RECIPIENT" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $arMsg["RECIPIENT_ID"])), "SENDER" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $arMsg["AUTHOR_ID"]))); $arMsg["pm_read"] = $arMsg["URL"]["MESSAGE"]; $arMsg["pm_edit"] = $arMsg["URL"]["MESSAGE_EDIT"]; $arMsg["profile_view"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $arMsg[$arResult["InputOutput"]])); $arMsg["POST_DATE"] = CForumFormat::DateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($arMsg["POST_DATE"], CSite::GetDateFormat()));
if ($arParams["mode"] == "edit" || $arParams["mode"] == "new") { if (intVal($arParams["FID"]) > 0) { $db_res = CForumPMFolder::GetByID($arParams["FID"]); if ($db_res && ($res = $db_res->GetNext())) { $arResult["FOLDER"] = $res; $arResult["POST_VALUES"]["FOLDER_TITLE"] = $res["TITLE"]; } } if (!empty($arError)) { $arResult["POST_VALUES"]["FOLDER_TITLE"] = htmlspecialcharsEx($_REQUEST["FOLDER_TITLE"]); } } else { for ($ii = 1; $ii <= FORUM_SystemFolder; $ii++) { $arResult["SYSTEM_FOLDER"][$ii]["cnt"] = ""; $arFilter = $ii == 2 ? array("FOLDER_ID" => $ii, "USER_ID" => $USER->GetId(), "OWNER_ID" => $USER->GetId()) : array("FOLDER_ID" => $ii, "USER_ID" => $USER->GetId()); $db_res = CForumPrivateMessage::GetList(array(), $arFilter, true); if ($db_res && ($res = $db_res->GetNext())) { $arResult["SYSTEM_FOLDER"][$ii]["cnt"] = intVal($res["CNT"]); $arResult["SYSTEM_FOLDER"][$ii]["CNT"] = intVal($res["CNT"]); $arResult["SYSTEM_FOLDER"][$ii]["CNT_NEW"] = intVal($res["CNT_NEW"]); } $arResult["SYSTEM_FOLDER"][$ii]["URL"] = array("FOLDER" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PM_LIST"], array("FID" => $ii)), "REMOVE" => ForumAddPageParams($arResult["CURRENT_PAGE"], array("action" => "remove", "FID" => $ii))); $arResult["SYSTEM_FOLDER"][$ii]["pm_list"] = $arResult["SYSTEM_FOLDER"][$ii]["URL"]["FOLDER"]; $arResult["SYSTEM_FOLDER"][$ii]["remove"] = $arResult["SYSTEM_FOLDER"][$ii]["URL"]["REMOVE"]; } $arResult["SHOW_USER_FOLDER"] = "N"; $db_res = CForumPMFolder::GetList(array($by => $order), array("USER_ID" => $USER->GetId())); if ($db_res && ($res = $db_res->GetNext())) { $arResult["SHOW_USER_FOLDER"] = "Y"; do { $res["URL"] = array("FOLDER" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PM_LIST"], array("FID" => $res["ID"])), "DELETE" => ForumAddPageParams($arResult["CURRENT_PAGE"], array("action" => "delete", "FID" => $res["ID"])), "REMOVE" => ForumAddPageParams($arResult["CURRENT_PAGE"], array("action" => "remove", "FID" => $res["ID"])), "EDIT" => ForumAddPageParams($arResult["CURRENT_PAGE"], array("mode" => "edit", "FID" => $res["ID"])));
if (intval(COption::GetOptionString("forum", "UsePMVersion", "2")) > 0) { $pm = ""; $arUserPM = array(); $cache = new CPHPCache(); $cache_path_main = str_replace(array(":", "//"), "/", "/" . SITE_ID . "/" . $this->__component->__name . "/"); $cache_id = "forum_user_pm_" . $GLOBALS["USER"]->GetId(); $cache_path = $cache_path_main . "user" . $GLOBALS["USER"]->GetId(); if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path)) { $val = $cache->GetVars(); if (is_array($val["arUserPM"])) { $arUserPM = $val["arUserPM"]; } } if (!is_array($arUserPM) || empty($arUserPM)) { CModule::IncludeModule("forum"); $arUserPM = CForumPrivateMessage::GetNewPM(); if ($arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); $cache->EndDataCache(array("arUserPM" => $arUserPM)); } } if (intVal($arUserPM["UNREAD_PM"]) > 0) { $pm = " (" . intVal($arUserPM["UNREAD_PM"]) . ")"; } ?> <span class="forum-menu-item forum-menu-messages"><a href="<?php echo $arResult["URL_TEMPLATES"]["MESSAGES"]; ?> "><span><?php echo GetMessage("F_MESSAGES"); echo $pm;
$arResult["InputOutput"] = "AUTHOR_ID"; $SortingField = "AUTHOR_NAME"; } elseif (1 < $arParams["FID"] && $arParams["FID"] <= 3) { $arResult["StatusUser"] = "******"; $arResult["InputOutput"] = "RECIPIENT_ID"; $SortingField = "RECIPIENT_NAME"; } $arResult["SortingEx"]["POST_SUBJ"] = SortingEx("post_subj"); $arResult["SortingEx"]["AUTHOR_NAME"] = SortingEx(strToLower($SortingField)); $arResult["SortingEx"]["POST_DATE"] = SortingEx("post_date"); $arFilter = array("USER_ID" => $arParams["UID"], "FOLDER_ID" => $arParams["FID"]); if ($arParams["FID"] == 2) { //If this is outbox folder $arFilter = array("OWNER_ID" => $arParams["UID"]); } $dbrMessages = CForumPrivateMessage::GetListEx(array($by => $order), $arFilter, array("bDescPageNumbering" => false, "nPageSize" => $arParams["PM_PER_PAGE"], "bShowAll" => false, "sNameTemplate" => $arParams["NAME_TEMPLATE"])); $dbrMessages->NavStart($arParams["PM_PER_PAGE"]); $dbrMessages->nPageWindow = $arParams["PAGE_NAVIGATION_WINDOW"]; $arResult["NAV_RESULT"] = $dbrMessages; $arResult["NAV_STRING"] = $dbrMessages->GetPageNavStringEx($navComponentObject, GetMessage("PM_TITLE_PAGES"), $arParams["PAGE_NAVIGATION_TEMPLATE"]); if ($dbrMessages && ($arMsg = $dbrMessages->GetNext())) { do { $arMsg["POST_SUBJ"] = wordwrap($arMsg["POST_SUBJ"], 100, " ", 1); $arMsg["~SHOW_NAME"] = $arMsg["~" . $SortingField]; $arMsg["SHOW_NAME"] = $arMsg[$SortingField]; $arMsg["URL"] = array("MESSAGE" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PM_READ"], array("FID" => $arParams["FID"], "MID" => $arMsg["ID"])), "MESSAGE_EDIT" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PM_EDIT"], array("FID" => $arParams["FID"], "mode" => "new", "MID" => 0, "UID" => $arMsg[$arResult["InputOutput"]])), "RECIPIENT" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $arMsg["RECIPIENT_ID"])), "SENDER" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $arMsg["AUTHOR_ID"]))); $arMsg["pm_read"] = $arMsg["URL"]["MESSAGE"]; $arMsg["pm_edit"] = $arMsg["URL"]["MESSAGE_EDIT"]; $arMsg["profile_view"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $arMsg[$arResult["InputOutput"]])); $arMsg["POST_DATE"] = CForumFormat::DateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($arMsg["POST_DATE"], CSite::GetDateFormat())); $arMsg["checked"] = "";
public static function PMSize($USER_ID, $CountMess = false) { $USER_ID = intVal($USER_ID); if (COption::GetOptionString("forum", "UsePMVersion", "2") == 2) { $count = CForumPrivateMessage::GetList(array(), array("USER_ID" => $USER_ID), true); } else { $count = CForumPrivateMessage::GetList(array(), array("USER_ID" => $USER_ID, "OWNER_ID" => $USER_ID), true); } $count = $count->GetNext(); if ($CountMess) { $ratio = $count["CNT"] / $CountMess; return $ratio < 1 ? $ratio : 1; } return $count["CNT"]; }