Your IP : 3.129.249.61
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
/**
* Bitrix vars
*
* @var array $arParams, $arResult
* @var CBitrixComponent $this
* @var CMain $APPLICATION
* @var CUser $USER
*/
$arParams["ELEMENT_ID"] = $arParams["ELEMENT_ID"] <= 0 ? $GLOBALS["ID"] : $arParams["ELEMENT_ID"];
$arParams["ELEMENT_ID"] = $arParams["ELEMENT_ID"] <= 0 ? $_REQUEST["ELEMENT_ID"] : $arParams["ELEMENT_ID"];
$arParams["ELEMENT_ID"] = intval($arParams["ELEMENT_ID"]);
$arParams["FORUM_ID"] = intval($arParams["FORUM_ID"]);
$arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
if (!CModule::IncludeModule("forum")):
ShowError(GetMessage("F_NO_MODULE"));
return 0;
elseif (!CModule::IncludeModule("iblock")):
ShowError(GetMessage("F_NO_MODULE_IBLOCK"));
return 0;
elseif ($arParams["FORUM_ID"] <= 0):
ShowError(GetMessage("F_ERR_FID_EMPTY"));
return 0;
elseif ($arParams["ELEMENT_ID"] <= 0):
ShowError(GetMessage("F_ERR_EID_EMPTY"));
return 0;
endif;
$arResult["ERROR_MESSAGE"] = "";
$arResult["OK_MESSAGE"] = ($_REQUEST["result"] == "reply" ?
GetMessage("COMM_COMMENT_OK") : ($_REQUEST["result"] == "not_approved" ?
GetMessage("COMM_COMMENT_OK_AND_NOT_APPROVED") : ""));
$arResult["~OK_MESSAGE"] = $arResult["~ERROR_MESSAGE"] = array();
unset($_GET["result"]); unset($GLOBALS["HTTP_GET_VARS"]["result"]);
DeleteParam(array("result"));
/********************************************************************
Input params
********************************************************************/
/***************** BASE ********************************************/
// $arParams["FORUM_ID"] = intval($arParams["FORUM_ID"]);
// $arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
// $arParams["ELEMENT_ID"] = intval($arParams["ELEMENT_ID"]);
/***************** URL *********************************************/
$URL_NAME_DEFAULT = array(
"read" => "PAGE_NAME=read&FID=#FID#&TID=#TID#&MID=#MID#",
"profile_view" => "PAGE_NAME=profile_view&UID=#UID#",
"detail" => "PAGE_NAME=detail&SECTION_ID=#SECTION_ID#&ELEMENT_ID=#ELEMENT_ID#");
foreach ($URL_NAME_DEFAULT as $URL => $URL_VALUE)
{
if (empty($arParams["URL_TEMPLATES_".strToUpper($URL)]))
continue;
$arParams["~URL_TEMPLATES_".strToUpper($URL)] = $arParams["URL_TEMPLATES_".strToUpper($URL)];
$arParams["URL_TEMPLATES_".strToUpper($URL)] = htmlspecialcharsbx($arParams["~URL_TEMPLATES_".strToUpper($URL)]);
}
/***************** ADDITIONAL **************************************/
$arParams["USER_FIELDS"] = (is_array($arParams["USER_FIELDS"]) ? $arParams["USER_FIELDS"] : (empty($arParams["USER_FIELDS"]) ? array() : array($arParams["USER_FIELDS"])));
if (!in_array("UF_FORUM_MESSAGE_DOC", $arParams["USER_FIELDS"]))
$arParams["USER_FIELDS"][] = "UF_FORUM_MESSAGE_DOC";
$arParams["IMAGE_SIZE"] = (intVal($arParams["IMAGE_SIZE"]) > 0 ? $arParams["IMAGE_SIZE"] : 300);
$arParams["PATH_TO_SMILE"] = "";
$arParams["POST_FIRST_MESSAGE"] = "Y";
$arParams["POST_FIRST_MESSAGE_TEMPLATE"] = trim($arParams["POST_FIRST_MESSAGE_TEMPLATE"]);
if (empty($arParams["POST_FIRST_MESSAGE_TEMPLATE"]))
$arParams["POST_FIRST_MESSAGE_TEMPLATE"] = "#IMAGE# \n [url=#LINK#]#TITLE#[/url]\n\n#BODY#";
$arParams["ENABLE_HIDDEN"] = ($arParams["ENABLE_HIDDEN"] == "Y" ? "Y" : "N");
$arParams["EDITOR_CODE_DEFAULT"] = ($arParams["EDITOR_CODE_DEFAULT"] == "Y" ? "Y" : "N");
$arParams["SUBSCRIBE_AUTHOR_ELEMENT"] = ($arParams["SUBSCRIBE_AUTHOR_ELEMENT"] == "Y" ? "Y" : "N");
$arParams["MESSAGES_PER_PAGE"] = intVal($arParams["MESSAGES_PER_PAGE"] > 0 ? $arParams["MESSAGES_PER_PAGE"] : COption::GetOptionString("forum", "MESSAGES_PER_PAGE", "10"));
$arParams["PAGE_NAVIGATION_TEMPLATE"] = trim($arParams["PAGE_NAVIGATION_TEMPLATE"]);
$arParams["PAGE_NAVIGATION_TEMPLATE"] = (!empty($arParams["PAGE_NAVIGATION_TEMPLATE"]) ? $arParams["PAGE_NAVIGATION_TEMPLATE"] : "modern");
$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"] : false);
$arParams["SHOW_AVATAR"] = ($arParams["SHOW_AVATAR"] == "N" || $arParams["SHOW_AVATAR"] == "PHOTO" ? $arParams["SHOW_AVATAR"] : "Y");
$arParams["USE_CAPTCHA"] = ($arParams["USE_CAPTCHA"] == "Y" ? "Y" : "N");
$arParams["PREORDER"] = ($arParams["PREORDER"] == "N" ? "N" : "Y");
$arParams["AUTOSAVE"] = (!isset($arParams["AUTOSAVE"]) ? CForumAutosave::GetInstance() : $arParams["AUTOSAVE"]);
// activation rating
CRatingsComponentsMain::GetShowRating($arParams);
$arParams['AJAX_POST'] = ($arParams["AJAX_POST"] == "N" ? "N" : "Y");
if ($arParams['AJAX_POST'] == 'Y' &&
isset($this->__parent) &&
isset($this->__parent->arParams) &&
isset($this->__parent->arParams['AJAX_MODE']) &&
$this->__parent->arParams['AJAX_MODE'] == 'Y')
$arParams['AJAX_POST'] = 'N';
$arParams['AJAX_TYPE'] = ($arParams["AJAX_TYPE"] == "Y" ? "Y" : "N");
if ($arParams['AJAX_POST'] == 'Y') $arParams['NO_REDIRECT_AFTER_SUBMIT'] = 'Y';
$arParams["SHOW_SUBSCRIBE"] = ($arParams["SHOW_SUBSCRIBE"] == "N" ? "N" : "Y");
$arParams["SHOW_MINIMIZED"] = ($arParams["SHOW_MINIMIZED"] == "Y" ? "Y" : "N");
$arMessages = array(
"MINIMIZED_EXPAND_TEXT" => GetMessage('F_EXPAND_TEXT'),
"MINIMIZED_MINIMIZE_TEXT" => GetMessage('F_MINIMIZE_TEXT'),
"MESSAGE_TITLE" => GetMessage('F_MESSAGE_TEXT')
);
foreach($arMessages as $paramName => $paramValue)
$arParams[$paramName] = (($arParams[$paramName]) ? $arParams[$paramName] : $paramValue);
/***************** 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;
/********************************************************************
/Input params
********************************************************************/
$cache = new CPHPCache();
$cache_path_main = str_replace(array(":", "//"), "/", "/".SITE_ID."/".$componentName);
$cache_path = $cache_path_main;
/********************************************************************
Main Params
********************************************************************/
// ELEMENT
$arIblock = array();
$cache_id = "forum_iblock_".$arParams["ELEMENT_ID"].(CTimeZone::GetOffset() <> 0 ? "_".$tzOffset : "");
if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path_main))
{
$res = $cache->GetVars();
if (is_array($res["arIblock"]) && $res["arIblock"]["ID"] == $arParams["ELEMENT_ID"])
$arIblock = $res["arIblock"];
}
if (!is_array($arIblock) || ($arIblock["ID"] != $arParams["ELEMENT_ID"]))
{
$arFilter = array("ID" => $arParams["ELEMENT_ID"]);
if ($arParams["ENABLE_HIDDEN"] == "Y")
$arFilter["SHOW_HISTORY"] = "Y";
if ($arParams["IBLOCK_ID"] > 0)
$arFilter["IBLOCK_ID"] = $arParams["IBLOCK_ID"];
$db_res = CIBlockElement::GetList(
array(),
$arFilter,
false,
false,
array(
"IBLOCK_ID",
"ID",
"NAME",
"TAGS",
"CODE",
"IBLOCK_SECTION_ID",
"DETAIL_PAGE_URL",
"CREATED_BY",
"PREVIEW_PICTURE",
"PREVIEW_TEXT",
"PROPERTY_FORUM_TOPIC_ID",
"PROPERTY_FORUM_MESSAGE_CNT"
)
);
if ($db_res && $res = $db_res->GetNext())
{
$arIblock = $res;
}
if ($arParams["CACHE_TIME"] > 0)
{
$cache->StartDataCache();
CForumCacheManager::SetTag($cache_path_main, "forum_".$arParams["FORUM_ID"]);
$cache->EndDataCache(array("arIblock" => $arIblock));
}
}
$arResult["ELEMENT"] = $arIblock;
// FORUM
$arResult["FORUM"] = CForumNew::GetByIDEx($arParams["FORUM_ID"], SITE_ID);
// USER PERMISSION
$arResult["USER"] = array(
"ID" => $USER->GetID(),
"GROUPS" => $USER->GetUserGroupArray(),
"PERMISSION" => ForumCurrUserPermissions($arParams["FORUM_ID"]),
"SHOWED_NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"],
"SUBSCRIBE" => array(),
"FORUM_SUBSCRIBE" => "N",
"TOPIC_SUBSCRIBE" => "N");
/********************************************************************
/Main Params
********************************************************************/
if (empty($arResult["FORUM"])):
ShowError(str_replace("#FORUM_ID#", $arParams["FORUM_ID"], GetMessage("F_ERR_FID_IS_NOT_EXIST")));
return false;
elseif (empty($arResult["ELEMENT"])):
ShowError(str_replace("#ELEMENT_ID#", $arParams["ELEMENT_ID"], GetMessage("F_ERR_EID_IS_NOT_EXIST")));
return false;
elseif ($arResult["USER"]["PERMISSION"] <= "A"):
return false;
endif;
/********************************************************************
Default values
********************************************************************/
$arResult["FORUM_TOPIC_ID"] = intval($arResult["ELEMENT"]["PROPERTY_FORUM_TOPIC_ID_VALUE"]);
$arResult["USER"]["RIGHTS"] = array(
"ADD_TOPIC" => CForumTopic::CanUserAddTopic($arParams["FORUM_ID"], $arResult["USER"]["GROUPS"], $arResult["USER"]["ID"], $arResult["FORUM"] ) ? "Y" : "N",
"MODERATE" => CForumNew::CanUserModerateForum($arParams["FORUM_ID"], $arResult["USER"]["GROUPS"], $arResult["USER"]["ID"]) == true ? "Y" : "N",
"EDIT" => CForumNew::CanUserEditForum($arParams["FORUM_ID"], $arResult["USER"]["GROUPS"], $arResult["USER"]["ID"]) ? "Y" : "N",
"ADD_MESSAGE" => CForumMessage::CanUserAddMessage($arResult["FORUM_TOPIC_ID"], $arResult["USER"]["GROUPS"], $arResult["USER"]["ID"]) ? "Y" : "N");
if ($USER->IsAuthorized())
{
$arResult["USER"]["SHOWED_NAME"] = $USER->GetLogin();
if ($_SESSION["FORUM"]["SHOW_NAME"] == "Y")
{
$arResult["USER"]["SHOWED_NAME"] = CUser::FormatName(
$arParams["NAME_TEMPLATE"],
array(
"NAME" => $USER->GetFirstName(),
"LAST_NAME" => $USER->GetLastName(),
"SECOND_NAME" => $USER->GetSecondName(),
"LOGIN" => $USER->GetLogin()),
true,
false
);
}
}
$arResult["PANELS"] = array(
"MODERATE" => $arResult["USER"]["RIGHTS"]["MODERATE"],
"DELETE" => $arResult["USER"]["RIGHTS"]["EDIT"],
);
$arResult["SHOW_PANEL"] = in_array("Y", $arResult["PANELS"]) ? "Y" : "N";
// PARSER
$parser = new forumTextParser(LANGUAGE_ID);
$parser->image_params["width"] = $arParams["IMAGE_SIZE"];
$parser->image_params["height"] = $arParams["IMAGE_SIZE"];
$arResult["PARSER"] = $parser;
// FORUM
$arAllow = forumTextParser::GetFeatures($arResult["FORUM"]);
$_REQUEST["FILES"] = is_array($_REQUEST["FILES"]) ? $_REQUEST["FILES"] : array();
$_REQUEST["FILES_TO_UPLOAD"] = is_array($_REQUEST["FILES_TO_UPLOAD"]) ? $_REQUEST["FILES_TO_UPLOAD"] : array();
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
$arResult["MESSAGES"] = array();
$arResult["MESSAGE_VIEW"] = array();
$arResult["MESSAGE"] = array();
$arResult["FILES"] = array();
/********************************************************************
/Default values
********************************************************************/
/********************************************************************
Actions
********************************************************************/
ForumSetLastVisit($arParams["FORUM_ID"], $arResult["FORUM_TOPIC_ID"]);
$arError = array(); $arNote = array();
include(str_replace(array("\\", "//"), "/", dirname(__FILE__)."/action.php"));
foreach ($arError as $res):
$arResult["ERROR_MESSAGE"] .= (empty($res["title"]) ? $res["code"] : $res["title"]);
$arResult["~ERROR_MESSAGE"][] = array("id" => $res["code"], "text" => $res["title"]);
endforeach;
foreach ($arNote as $res):
$arResult["OK_MESSAGE"] .= (empty($res["text"]) ? $res["id"] : $res["text"]);
$arResult["~OK_MESSAGE"][] = $res;
endforeach;
if (!!$strOKMessage)
{
$arResult["OK_MESSAGE"] .= $strOKMessage;
$arResult["~OK_MESSAGE"][] = array("id" => "good", "text" => $strOKMessage);
}
if (!empty($arResult["ERROR_MESSAGE"]))
$arParams["SHOW_MINIMIZED"] = "N";
/********************************************************************
/Actions
********************************************************************/
/********************************************************************
Input params II
********************************************************************/
/************** URL ************************************************/
if (empty($arParams["~URL_TEMPLATES_READ"]) && !empty($arResult["FORUM"]["PATH2FORUM_MESSAGE"]))
$arParams["~URL_TEMPLATES_READ"] = $arResult["FORUM"]["PATH2FORUM_MESSAGE"];
elseif (empty($arParams["~URL_TEMPLATES_READ"]))
$arParams["~URL_TEMPLATES_READ"] = $APPLICATION->GetCurPage()."?PAGE_NAME=read&FID=#FID#&TID=#TID#&MID=#MID#";
$arParams["~URL_TEMPLATES_READ"] = str_replace(array("#FORUM_ID#", "#TOPIC_ID#", "#MESSAGE_ID#"),
array("#FID#", "#TID#", "#MID#"), $arParams["~URL_TEMPLATES_READ"]);
$arParams["URL_TEMPLATES_READ"] = htmlspecialcharsEx($arParams["~URL_TEMPLATES_READ"]);
/************** ADDITIONAL *****************************************/
$arParams["USE_CAPTCHA"] = $arResult["FORUM"]["USE_CAPTCHA"] == "Y" ? "Y" : $arParams["USE_CAPTCHA"];
/********************************************************************
/Input params
********************************************************************/
/********************************************************************
Data
********************************************************************/
/************** 3. Get inormation about USER ***********************/
if ($arParams["SHOW_SUBSCRIBE"] == "Y" && $USER->IsAuthorized() && $arResult["USER"]["PERMISSION"] > "E")
{
// USER subscribes
$db_res = CForumSubscribe::GetList(
array(),
array(
"USER_ID" => $USER->GetID(),
"FORUM_ID" => $arParams["FORUM_ID"]
)
);
if ($db_res && $res = $db_res->Fetch())
{
do
{
$arResult["USER"]["SUBSCRIBE"][] = $res;
if (intval($res["TOPIC_ID"]) <= 0)
$arResult["USER"]["FORUM_SUBSCRIBE"] = "Y";
elseif(intval($res["TOPIC_ID"]) == intval($arResult["FORUM_TOPIC_ID"]))
$arResult["USER"]["TOPIC_SUBSCRIBE"] = "Y";
} while ($res = $db_res->Fetch());
}
}
/************** 4. Get message list ********************************/
if ($arResult["FORUM_TOPIC_ID"] > 0)
{
ForumSetReadTopic($arParams["FORUM_ID"], $arResult["FORUM_TOPIC_ID"]);
$page_number = $GLOBALS["NavNum"] + 1;
$arMessages = array();
$pageNo = $_GET["PAGEN_".$page_number];
if ($pageNo > 200) $pageNo = 0;
if (isset($arResult['RESULT']) && intval($arResult['RESULT']) > 0) $pageNo = $arResult['RESULT'];
$ar_cache_id = array(
$arParams["FORUM_ID"],
$arParams["ELEMENT_ID"],
$arResult["FORUM_TOPIC_ID"],
$arResult["USER"]["GROUPS"],
$arResult["PANELS"],
$arParams['SHOW_AVATAR'],
$arParams['SHOW_RATING'],
$arParams["MESSAGES_PER_PAGE"],
$arParams["DATE_TIME_FORMAT"],
$arParams["PREORDER"],
$pageNo);
$cache_id = "forum_message_".serialize($ar_cache_id);
//$cache_path = $cache_path_main."forum".$arParams["FORUM_ID"]."/topic".$arResult["FORUM_TOPIC_ID"];
if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path))
{
$res = $cache->GetVars();
if (is_array($res["arMessages"]))
{
$arMessages = $res["arMessages"];
$arResult["NAV_RESULT"] = $db_res;
if (is_array($res["Nav"]))
{
$arResult["NAV_RESULT"] = $res["Nav"]["NAV_RESULT"];
$arResult["NAV_STRING"] = $res["Nav"]["NAV_STRING"];
$APPLICATION->SetAdditionalCSS($res["Nav"]["NAV_STYLE"]);
}
}
}
if (empty($arMessages))
{
$arOrder = array("ID" => ($arParams["PREORDER"] == "N" ? "DESC" : "ASC"));
$arFields = array(
"bDescPageNumbering" => false,
"nPageSize" => $arParams["MESSAGES_PER_PAGE"],
"bShowAll" => false,
"sNameTemplate" => $arParams["NAME_TEMPLATE"]);
$MID = intVal($_REQUEST["MID"]);
unset($_GET["MID"]); unset($GLOBALS["MID"]);
if (isset($arResult['RESULT']) && intval($arResult['RESULT']) > 0)
$MID = $arResult['RESULT'];
if (intVal($MID) > 0)
{
$page_number = CForumMessage::GetMessagePage(
$MID,
$arParams["MESSAGES_PER_PAGE"],
$USER->GetUserGroupArray(),
$arResult["FORUM_TOPIC_ID"],
array(
"ORDER_DIRECTION" => ($arParams["PREORDER"] == "N" ? "DESC" : "ASC"),
"PERMISSION_EXTERNAL" => $arResult["USER"]["PERMISSION"],
"FILTER" => array("!PARAM1" => "IB")
)
);
if ($page_number > 0)
$arFields["iNumPage"] = intVal($page_number);
}
$arFilter = array("FORUM_ID"=>$arParams["FORUM_ID"], "TOPIC_ID"=>$arResult["FORUM_TOPIC_ID"], "!PARAM1" => "IB");
if ($arResult["USER"]["RIGHTS"]["MODERATE"] != "Y")
$arFilter["APPROVED"] = "Y";
$db_res = CForumMessage::GetListEx($arOrder, $arFilter, false, 0, $arFields);
$db_res->NavStart($arParams["MESSAGES_PER_PAGE"], false, ($arFields["iNumPage"] > 0 ? $arFields["iNumPage"] : false));
$arResult["NAV_RESULT"] = $db_res;
if ($db_res)
{
$arResult["NAV_STRING"] = $db_res->GetPageNavStringEx($navComponentObject, GetMessage("NAV_OPINIONS"), $arParams["PAGE_NAVIGATION_TEMPLATE"]);
$arResult["NAV_STYLE"] = $APPLICATION->GetAdditionalCSS();
$arResult["PAGE_COUNT"] = $db_res->NavPageCount;
$arResult['PAGE_NUMBER'] = $db_res->NavPageNomer;
$number = intVal($db_res->NavPageNomer-1)*$arParams["MESSAGES_PER_PAGE"] + 1;
while ($res = $db_res->GetNext())
{
/************** Message info ***************************************/
// number in topic
$res["NUMBER"] = $number++;
// data
$res["POST_DATE"] = CForumFormat::DateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($res["POST_DATE"], CSite::GetDateFormat()));
$res["EDIT_DATE"] = CForumFormat::DateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($res["EDIT_DATE"], CSite::GetDateFormat()));
// text
$res["ALLOW"] = array_merge($arAllow, array("SMILES" => ($res["USE_SMILES"] == "Y" ? $arResult["FORUM"]["ALLOW_SMILES"] : "N")));
$res["~POST_MESSAGE_TEXT"] = (COption::GetOptionString("forum", "FILTER", "Y")=="Y" ? $res["~POST_MESSAGE_FILTER"] : $res["~POST_MESSAGE"]);
// attach
$res["ATTACH_IMG"] = ""; $res["FILES"] = array();
$res["~ATTACH_FILE"] = array(); $res["ATTACH_FILE"] = array();
// links
if ($arResult["SHOW_PANEL"] == "Y")
{
$res["URL"]["REVIEWS"] = $APPLICATION->GetCurPageParam();
$res["URL"]["~MODERATE"] = ForumAddPageParams($res["URL"]["REVIEWS"],
array("MID" => $res["ID"], "REVIEW_ACTION" => $res["APPROVED"]=="Y" ? "HIDE" : "SHOW"), true, false);
$res["URL"]["MODERATE"] = htmlspecialcharsbx($res["URL"]["~MODERATE"])."&".bitrix_sessid_get();
$res["URL"]["~DELETE"] = ForumAddPageParams($res["URL"]["REVIEWS"],
array("MID" => $res["ID"], "REVIEW_ACTION" => "DEL"), true, false);
$res["URL"]["DELETE"] = htmlspecialcharsbx($res["URL"]["~DELETE"])."&".bitrix_sessid_get();
}
/************** Message info/***************************************/
/************** Author info ****************************************/
$res["AUTHOR_ID"] = intval($res["AUTHOR_ID"]);
$res["AUTHOR_URL"] = "";
if ($res["AUTHOR_ID"] > 0)
{
if (!empty($arParams["URL_TEMPLATES_PROFILE_VIEW"]))
{
$res["AUTHOR_URL"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array(
"UID" => $res["AUTHOR_ID"],
"USER_ID" => $res["AUTHOR_ID"],
"ID" => $res["AUTHOR_ID"]
));
}
// avatar
$id = ($arParams['SHOW_AVATAR'] == 'Y' ?
($res["AVATAR"] > 0 ? $res["AVATAR"] : $res["PERSONAL_PHOTO"]) :
($arParams['SHOW_AVATAR'] == 'PHOTO' ? $res["PERSONAL_PHOTO"] : 0)
);
if ($id > 0)
{
$res["AVATAR"] = array(
"ID" => $id,
"FILE" => CFile::ResizeImageGet(
$id,
array("width" => 30, "height" => 30),
BX_RESIZE_IMAGE_EXACT,
false
)
);
if (!empty($res["AVATAR"]["FILE"]))
$res["AVATAR"]["HTML"] = CFile::ShowImage($res["AVATAR"]["FILE"]['src'], 30, 30, "border=0 align='right'");
}
}
/************** Author info/****************************************/
// For quote JS
$res["FOR_JS"] = array(
"AUTHOR_NAME" => Cutil::JSEscape($res["AUTHOR_NAME"]),
"POST_MESSAGE_TEXT" => Cutil::JSEscape(htmlspecialcharsbx($res["POST_MESSAGE_TEXT"]))
);
$arMessages[$res["ID"]] = $res;
}
}
/************** Attach files ***************************************/
if (!empty($arMessages))
{
$res = array_keys($arMessages);
$arFilter = array("FORUM_ID" => $arParams["FORUM_ID"], "TOPIC_ID" => $arResult["FORUM_TOPIC_ID"]);
if ($arResult["USER"]["RIGHTS"]["MODERATE"] != "Y")
$arFilter["APPROVED"] = "Y";
$arFilterProps = $arFilter;
if (min($res) > 1)
$arFilterProps[">ID"] = $arFilter[">MESSAGE_ID"] = intval(min($res) - 1);
$arFilterProps["<ID"] = $arFilter["<MESSAGE_ID"] = intval(max($res) + 1);
$db_files = CForumFiles::GetList(array("MESSAGE_ID" => "ASC"), $arFilter);
if ($db_files && $res = $db_files->Fetch())
{
do
{
$res["SRC"] = CFile::GetFileSRC($res);
if ($arMessages[$res["MESSAGE_ID"]]["~ATTACH_IMG"] == $res["FILE_ID"])
{
// attach for custom
$arMessages[$res["MESSAGE_ID"]]["~ATTACH_FILE"] = $res;
$arMessages[$res["MESSAGE_ID"]]["ATTACH_IMG"] = CFile::ShowFile($res["FILE_ID"], 0,
$arParams["IMAGE_SIZE"], $arParams["IMAGE_SIZE"], true, "border=0", false);
$arMessages[$res["MESSAGE_ID"]]["ATTACH_FILE"] = $arMessages[$res["MESSAGE_ID"]]["ATTACH_IMG"];
}
$arMessages[$res["MESSAGE_ID"]]["FILES"][$res["FILE_ID"]] = $res;
$arResult["FILES"][$res["FILE_ID"]] = $res;
}while ($res = $db_files->Fetch());
}
if (!empty($arParams["USER_FIELDS"]))
{
$db_props = CForumMessage::GetList(array("ID" => "ASC"), $arFilterProps, false, 0, array("SELECT" => $arParams["USER_FIELDS"]));
while ($db_props && ($res = $db_props->Fetch()))
{
$arMessages[$res["ID"]]["PROPS"] = array_intersect_key($res, array_flip($arParams["USER_FIELDS"]));
}
}
/************** Message info ***************************************/
$parser->arFiles = $arResult["FILES"];
foreach ($arMessages as $iID => $res)
$arMessages[$iID]["POST_MESSAGE_TEXT"] = $parser->convert($res["~POST_MESSAGE_TEXT"], array_merge($res["ALLOW"], array("USERFIELDS" => $res["PROPS"])));
}
/************** Message List/***************************************/
if ($arParams["CACHE_TIME"] > 0)
{
$cache->StartDataCache();
CForumCacheManager::SetTag($cache_path, "forum_topic_".$arResult["FORUM_TOPIC_ID"]);
$cache->EndDataCache(array(
"arMessages" => $arMessages,
"Nav" => array(
"NAV_RESULT" => $arResult["NAV_RESULT"],
"NAV_STYLE" => $arResult["NAV_STYLE"],
"NAV_STRING" => $arResult["NAV_STRING"])));
}
}
else
{
$GLOBALS["NavNum"]++;
if ($arAllow["VIDEO"] == "Y")
{
foreach ($arMessages as $key => $res):
$arAllow["SMILES"] = ($res["USE_SMILES"] == "Y" ? $arResult["FORUM"]["ALLOW_SMILES"] : "N");
$arMessages[$key]["POST_MESSAGE_TEXT"] = $parser->convert($res["~POST_MESSAGE_TEXT"], $arAllow);
endforeach;
}
}
/************** Rating ****************************************/
if ($arParams["SHOW_RATING"] == "Y")
{
$arMessageIDs = array_keys($arMessages);
$arRatings = CRatings::GetRatingVoteResult('FORUM_POST', $arMessageIDs);
if ($arRatings)
foreach($arRatings as $messageID => $arRating)
$arMessages[$messageID]['RATING'] = $arRating;
}
$arResult["MESSAGES"] = $arMessages;
// Link to forum
$arResult["read"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_READ"],
array("FID" => $arParams["FORUM_ID"], "TID" => $arResult["FORUM_TOPIC_ID"], "TITLE_SEO" => $arResult["FORUM_TOPIC_ID"], "MID" => "s",
"PARAM1" => "IB", "PARAM2" => $arParams["ELEMENT_ID"]));
}
/************** 5. Show post form **********************************/
$arResult["SHOW_POST_FORM"] = (($arResult["USER"]["PERMISSION"] >= "M" || ($arResult["USER"]["PERMISSION"] >= "I" && !empty($arResult["MESSAGES"]))) ? "Y" : "N");
if ($arResult["SHOW_POST_FORM"] == "Y")
{
// Author name
$arResult["~REVIEW_AUTHOR"] = $arResult["USER"]["SHOWED_NAME"];
$arResult["~REVIEW_USE_SMILES"] = ($arResult["FORUM"]["ALLOW_SMILES"] == "Y" ? "Y" : "N");
if (!empty($arError) || !empty($arResult["MESSAGE_VIEW"]))
{
if (!empty($_POST["REVIEW_AUTHOR"]))
$arResult["~REVIEW_AUTHOR"] = $_POST["REVIEW_AUTHOR"];
$arResult["~REVIEW_EMAIL"] = $_POST["REVIEW_EMAIL"];
$arResult["~REVIEW_TEXT"] = $_POST["REVIEW_TEXT"];
$arResult["~REVIEW_USE_SMILES"] = ($_POST["REVIEW_USE_SMILES"] == "Y" ? "Y" : "N");
}
$arResult["REVIEW_AUTHOR"] = htmlspecialcharsEx($arResult["~REVIEW_AUTHOR"]);
$arResult["REVIEW_EMAIL"] = htmlspecialcharsEx($arResult["~REVIEW_EMAIL"]);
$arResult["REVIEW_TEXT"] = htmlspecialcharsEx($arResult["~REVIEW_TEXT"]);
$arResult["REVIEW_USE_SMILES"] = $arResult["~REVIEW_USE_SMILES"];
$arResult["REVIEW_FILES"] = array();
foreach ($_REQUEST["FILES"] as $key => $val):
if (intVal($val) <= 0)
return false;
$arResult["REVIEW_FILES"][$val] = CFile::GetFileArray($val);
endforeach;
// Form Info
$arResult["SHOW_PANEL_ATTACH_IMG"] = (in_array($arResult["FORUM"]["ALLOW_UPLOAD"], array("A", "F", "Y")) ? "Y" : "N");
$arResult["TRANSLIT"] = (LANGUAGE_ID=="ru" ? "Y" : " N");
if ($arResult["FORUM"]["ALLOW_SMILES"] == "Y"):
$arResult["ForumPrintSmilesList"] = ($arResult["FORUM"]["ALLOW_SMILES"] == "Y" ? ForumPrintSmilesList(3, LANGUAGE_ID) : "");
$arResult["SMILES"] = CForumSmile::getSmiles("S", LANGUAGE_ID);
endif;
$arResult["CAPTCHA_CODE"] = "";
if ($arParams["USE_CAPTCHA"] == "Y" && !$USER->IsAuthorized())
{
include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
$cpt = new CCaptcha();
$captchaPass = COption::GetOptionString("main", "captcha_password", "");
if (strLen($captchaPass) <= 0)
{
$captchaPass = randString(10);
COption::SetOptionString("main", "captcha_password", $captchaPass);
}
$cpt->SetCodeCrypt($captchaPass);
$arResult["CAPTCHA_CODE"] = htmlspecialcharsbx($cpt->GetCodeCrypt());
}
}
/* For custom template */
$arResult["LANGUAGE_ID"] = LANGUAGE_ID;
$arResult["IS_AUTHORIZED"] = $USER->IsAuthorized();
$arResult["PERMISSION"] = $arResult["USER"]["PERMISSION"];
$arResult["SHOW_NAME"] = $arResult["USER"]["SHOWED_NAME"];
$arResult["sessid"] = bitrix_sessid_post();
$arResult["SHOW_SUBSCRIBE"] = ((($arParams["SHOW_SUBSCRIBE"] == "Y") && ($arResult["USER"]["ID"] > 0 && $arResult["USER"]["PERMISSION"] > "E")) ? "Y" : "N");
$arResult["TOPIC_SUBSCRIBE"] = $arResult["USER"]["TOPIC_SUBSCRIBE"];
$arResult["FORUM_SUBSCRIBE"] = $arResult["USER"]["FORUM_SUBSCRIBE"];
$arResult["SHOW_LINK"] = (empty($arResult["read"]) ? "N" : "Y");
$arResult["SHOW_POSTS"] = (empty($arResult["MESSAGES"]) ? "N" : "Y");
$arResult["PARSER"] = $parser;
$arResult["CURRENT_PAGE"] = $APPLICATION->GetCurPageParam();
$arResult["ELEMENT_REAL"] = $arResult["ELEMENT"];
$arResult["ELEMENT"] = array(
"PRODUCT" => $arResult["ELEMENT"],
"PRODUCT_PROPS" => array());
if (is_set($arResult["ELEMENT_REAL"], "PROPERTY_FORUM_TOPIC_ID_VALUE"))
{
$arResult["ELEMENT"]["PRODUCT_PROPS"]["FORUM_TOPIC_ID"] = array("VALUE" => $arResult["ELEMENT_REAL"]["PROPERTY_FORUM_TOPIC_ID_VALUE"]);
$arResult["ELEMENT"]["PRODUCT_PROPS"]["~FORUM_TOPIC_ID"] = array("VALUE" => $arResult["ELEMENT_REAL"]["~PROPERTY_FORUM_TOPIC_ID_VALUE"]);
}
if (is_set($arResult["ELEMENT_REAL"], "PROPERTY_FORUM_MESSAGE_CNT_VALUE"))
{
$arResult["ELEMENT"]["PRODUCT_PROPS"]["FORUM_MESSAGE_CNT"] = array("VALUE" => $arResult["ELEMENT_REAL"]["PROPERTY_FORUM_MESSAGE_CNT_VALUE"]);
$arResult["ELEMENT"]["PRODUCT_PROPS"]["~FORUM_MESSAGE_CNT"] = array("VALUE" => $arResult["ELEMENT_REAL"]["~PROPERTY_FORUM_MESSAGE_CNT_VALUE"]);
}
/* For custom template */
// *****************************************************************************************
$this->IncludeComponentTemplate();
// *****************************************************************************************
if ($arResult["FORUM_TOPIC_ID"] > 0)
return CForumTopic::GetMessageCount($arParams["FORUM_ID"], $arResult["FORUM_TOPIC_ID"], (($arResult["USER"]["RIGHTS"]["MODERATE"] == "Y")?null:true));
else
return 0;
?>