%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/forum.message.move/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/forum.message.move/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if (!CModule::IncludeModule("forum")): ShowError(GetMessage("FM_NO_MODULE")); return 0; elseif (!$GLOBALS["USER"]->IsAuthorized()): $APPLICATION->AuthForm(GetMessage("FM_AUTH")); return 0; endif; /******************************************************************** Input params ********************************************************************/ /***************** BASE ********************************************/ $arParams["FID"] = intVal(empty($arParams["FID"]) ? $_REQUEST["FID"] : $arParams["FID"]); $arParams["TID"] = intVal(empty($arParams["TID"]) ? $_REQUEST["TID"] : $arParams["TID"]); $arParams["MID"] = empty($arParams["MID"]) ? $_REQUEST["MID"] : $arParams["MID"]; $arParams["newTID"] = intVal($_REQUEST["newTID"]); $arParams["action"] = strToUpper($_REQUEST["ACTION"]); $arParams["newFID"] = intVal($_REQUEST["newFID"]); /***************** URL *********************************************/ $URL_NAME_DEFAULT = array( "index" => "", "list" => "PAGE_NAME=list&FID=#FID#", "message" => "PAGE_NAME=message&FID=#FID#&TID=#TID#&MID=#MID#", "message_send" => "PAGE_NAME=message_send&UID=#UID#&TYPE=#TYPE#", "pm_edit" => "PAGE_NAME=pm_edit&FID=#FID#&MID=#MID#&UID=#UID#&mode=#mode#", "read" => "PAGE_NAME=read&FID=#FID#&TID=#TID#", "profile_view" => "PAGE_NAME=profile_view&UID=#UID#", "topic_new" => "PAGE_NAME=topic_new&FID=#FID#", "topic_search" => "PAGE_NAME=topic_search"); 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["USER_FIELDS"] = (is_array($arParams["USER_FIELDS"]) ? $arParams["USER_FIELDS"] : array($arParams["USER_FIELDS"])); if (!in_array("UF_FORUM_MESSAGE_DOC", $arParams["USER_FIELDS"])) $arParams["USER_FIELDS"][] = "UF_FORUM_MESSAGE_DOC"; $arParams["PATH_TO_SMILE"] = ""; $arParams["PATH_TO_ICON"] = ""; $arParams["WORD_LENGTH"] = intVal($arParams["WORD_LENGTH"]); $arParams["IMAGE_SIZE"] = (intVal($arParams["IMAGE_SIZE"]) > 0 ? $arParams["IMAGE_SIZE"] : 300); // Data and data-time format $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"] : false); /***************** STANDART ****************************************/ $arParams["SET_NAVIGATION"] = ($arParams["SET_NAVIGATION"] == "N" ? "N" : "Y"); $arParams["SET_TITLE"] = ($arParams["SET_TITLE"] == "N" ? "N" : "Y"); /******************************************************************** /Input params ********************************************************************/ if (ForumCurrUserPermissions($arParams["FID"]) < "Q"): $APPLICATION->AuthForm(GetMessage("FM_NO_FPERMS")); endif; $arResult["TOPIC"] = array(); $arResult["FORUM"] = array(); $arResult["MESSAGE_LIST"] = array(); $res = CForumTopic::GetByIDEx($arParams["TID"], array("GET_FORUM_INFO" => "Y")); if (!empty($res)) { $arResult["TOPIC"] = $res["TOPIC_INFO"]; $arResult["FORUM"] = $res["FORUM_INFO"]; $arParams["FID"] = $arResult["FORUM"]["ID"]; } if (empty($arResult["TOPIC"])): ShowError(GetMessage("F_ERROR_TOPIC_NOT_FOUND")); return false; endif; $message = ForumDataToArray($arParams["MID"]); if ($message) { $db_res = CForumMessage::GetListEx( array("ID"=>"ASC"), array("@ID" => implode(", ", $message), "TOPIC_ID" => $arParams["TID"]), false, 0, array('sNameTemplate' => $arParams["NAME_TEMPLATE"])); if ($db_res && ($res = $db_res->GetNext())) { do { $arResult["MESSAGE_LIST"][$res["ID"]] = $res; }while ($res = $db_res->GetNext()); } } if (count($arResult["MESSAGE_LIST"]) <= 0): ShowError(GetMessage("F_ERROR_MESSAGES_NOT_FOUND")); return false; endif; foreach ($arResult["TOPIC"] as $key => $val): $arResult["TOPIC"]["~".$key] = $val; $arResult["TOPIC"][$key] = htmlspecialcharsEx($val); endforeach; foreach ($arResult["FORUM"] as $key => $val): $arResult["FORUM"]["~".$key] = $val; $arResult["FORUM"][$key] = htmlspecialcharsEx($val); endforeach; /******************************************************************** Default values ********************************************************************/ $arParams["PERMISSION"] = ForumCurrUserPermissions($arParams["FID"]); $arResult["USER"] = array( "INFO" => array(), "PERMISSION" => $arParams["PERMISSION"], "RIGHTS" => array( "EDIT" => CForumNew::CanUserEditForum($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID()) ? "Y" : "N", "MODERATE" => "Y"), "SUBSCRIBE" => array()); $arResult["MESSAGE"] = array(); $arResult["NEW_TOPIC"] = array( "TOPIC" => array(), "FORUM" => array()); $arResult["VALUES"] = array(); $bVarsFromForm = false; $arResult["TOPIC"]["read"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_READ"], array("FID" => $arResult["FORUM"]["ID"], "TID" => $arResult["TOPIC"]["ID"], "TITLE_SEO" => $arResult["TOPIC"]["TITLE_SEO"], "MID" => "s")); $arResult["FORUM"]["list"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_LIST"], array("FID" => $arResult["FORUM"]["ID"])); $arResult["topic_search"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_SEARCH"], array()); $arResult["ERROR_MESSAGE"] = ""; $arResult["OK_MESSAGE"] = ""; $arResult["sessid"] = bitrix_sessid_post(); $arResult["ForumPrintIconsList"] = ForumPrintIconsList(7, $_POST["ICON"]); $parser = new forumTextParser(LANGUAGE_ID); $parser->MaxStringLen = $arParams["WORD_LENGTH"]; $parser->imageWidth = $arParams["IMAGE_SIZE"]; $parser->imageHeight = $arParams["IMAGE_SIZE"]; $parser->userPath = $arParams["URL_TEMPLATES_PROFILE_VIEW"]; $parser->userNameTemplate = $arParams["NAME_TEMPLATE"]; $arAllow = forumTextParser::GetFeatures($arResult["FORUM"]); $arResult["PARSER"] = $parser; /******************************************************************** /Default values ********************************************************************/ /******************************************************************** Action ********************************************************************/ if (intVal($_REQUEST["step"]) == 1) { $message = array_keys($arResult["MESSAGE_LIST"]); $arError = array(); $strErrorMessage = ""; $strOKMessage = ""; if (!check_bitrix_sessid()): $arError[] = array("id" => "bad_sessid", "text" => GetMessage("F_ERR_SESS_FINISH")); elseif ($arParams["action"] == "MOVE_TO_TOPIC"): if (ForumMoveMessage($arParams["FID"], $arParams["TID"], $message, $arParams["newTID"], array(), $strErrorMessage, $strOKMessage)): $topic = CForumTopic::GetByID($arParams["newTID"]); LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_READ"], array("FID" => $arResult["FORUM"]["ID"], "TID" => $topic["ID"], "TITLE_SEO" => $topic["TITLE_SEO"], "MID" => "s"))); else: $arError[] = array("id" => "bad_move", "text" => $strErrorMessage); endif; elseif ($arParams["action"] == "MOVE_TO_NEW" && strLen(trim($_REQUEST["TITLE"])) <= 0): $arError[] = array("id" => "bad_move", "text" => GetMessage('FM_ERR_NO_DATA')); elseif ($arParams["action"] == "MOVE_TO_NEW"): $arFields = array( "TITLE"=>trim($_REQUEST["TITLE"]), "TITLE_SEO"=>trim($_REQUEST["TITLE_SEO"]), "DESCRIPTION"=>trim($_REQUEST["DESCRIPTION"]), "ICON"=>intVal($_REQUEST["ICON"]), "TAGS" => $_REQUEST["TAGS"]); if (ForumMoveMessage($arParams["FID"], $arParams["TID"], $message, 0, $arFields, $strErrorMessage, $strOKMessage)): $res = CForumMessage::GetByIDEx($message[0], array("GET_TOPIC_INFO" => "Y")); LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_READ"], array("FID" => $arResult["FORUM"]["ID"], "TID" => $res["TOPIC_INFO"]["ID"], "TITLE_SEO" => $res["TOPIC_INFO"]["TITLE_SEO"], "MID" => "s"))); else: $arError[] = array("id" => "bad_move", "text" => $strErrorMessage); endif; endif; if (!empty($arError)): $e = new CAdminException(array_reverse($arError)); $GLOBALS["APPLICATION"]->ThrowException($e); $err = $GLOBALS['APPLICATION']->GetException(); $arResult["ERROR_MESSAGE"] .= $err->GetString(); if (!empty($arParams["newTID"])) { $res = CForumTopic::GetByIDEx($arParams["newTID"]); $arResult["NEW_TOPIC"] = array( "TOPIC" => $res["TOPIC_INFO"], "FORUM" => $res["FORUM_INFO"]); } $arResult["VALUES"]["TITLE"] = htmlspecialcharsEx($_REQUEST["TITLE"]); $arResult["VALUES"]["DESCRIPTION"] = htmlspecialcharsEx($_REQUEST["DESCRIPTION"]); $arResult["VALUES"]["ICON"] = intVal($_REQUEST["ICON"]); endif; $arResult["OK_MESSAGE"] .= $strOKMessage; } /******************************************************************** /Action ********************************************************************/ /******************************************************************** Data ********************************************************************/ $arMessage = array(); $iCount = 1; foreach ($arResult["MESSAGE_LIST"] as $key => $res) { /************** Message info ***************************************/ $res["NUMBER"] = $iCount++; // 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(); /************** Message info/***************************************/ /************** Author info ****************************************/ $res["AUTHOR_ID"] = intVal($res["AUTHOR_ID"]); // Avatar if (strLen($res["AVATAR"]) > 0): $res["AVATAR"] = array("ID" => $res["AVATAR"]); $res["AVATAR"]["FILE"] = CFile::GetFileArray($res["AVATAR"]["ID"]); $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); endif; // data $res["DATE_REG"] = CForumFormat::DateFormat($arParams["DATE_FORMAT"], MakeTimeStamp($res["DATE_REG"], CSite::GetDateFormat())); // Another data $res["AUTHOR_NAME"] = $parser->wrap_long_words($res["AUTHOR_NAME"]); $res["DESCRIPTION"] = $parser->wrap_long_words($res["DESCRIPTION"]); $res["SIGNATURE"] = ""; if ($arResult["FORUM"]["ALLOW_SIGNATURE"] == "Y" && strlen($res["~SIGNATURE"]) > 0) { $arAllow["SMILES"] = "N"; $res["SIGNATURE"] = $parser->convert($res["~SIGNATURE"], $arAllow); } /************** Author info/****************************************/ /************** Urls ***********************************************/ $res["URL"] = array( "~MESSAGE" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_MESSAGE"], array("FID" => $arParams["FID"], "TID" => $arResult["TOPIC"]["ID"], "TITLE_SEO" => $arResult["TOPIC"]["TITLE_SEO"], "MID" => $res["ID"])), "MESSAGE" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE"], array("FID" => $arParams["FID"], "TID" => $arResult["TOPIC"]["ID"], "TITLE_SEO" => $arResult["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")), ); /************** Panels *********************************************/ $res["PANELS"] = array( "MODERATE" => "Y", "DELETE" => $arResult["USER"]["RIGHTS"]["EDIT"], "EDIT" => $arResult["USER"]["RIGHTS"]["EDIT"]); if ($res["PANELS"]["EDIT"] != "Y" && $USER->IsAuthorized() && $res["AUTHOR_ID"] == $USER->GetId()): if (COption::GetOptionString("forum", "USER_EDIT_OWN_POST", "Y") == "Y"): $res["PANELS"]["EDIT"] = "Y"; else: // get last message in topic // $arResult["TOPIC"]["iLAST_TOPIC_MESSAGE"] == intVal($res["ID"]) endif; endif; if ($arResult["USER"]["PERMISSION"] >= "Q") { $bIP = (preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $res["~AUTHOR_IP"]) ? true : false); $res["AUTHOR_IP"] = ($bIP ? GetWhoisLink($res["~AUTHOR_IP"], "") : $res["AUTHOR_IP"]); $bIP = (preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $res["~AUTHOR_REAL_IP"]) ? true : false); $res["AUTHOR_REAL_IP"] = ($bIP ? GetWhoisLink($res["~AUTHOR_REAL_IP"], "") : $res["AUTHOR_REAL_IP"]); $res["IP_IS_DIFFER"] = ($res["AUTHOR_IP"] <> $res["AUTHOR_REAL_IP"] ? "Y" : "N"); } $res["URL"]["~MODERATE"] = ForumAddPageParams($res["URL"]["~MESSAGE"], array("MID" => $res["ID"], "ACTION" => $res["APPROVED"]=="Y" ? "HIDE" : "SHOW"), false, false); $res["URL"]["MODERATE"] = htmlspecialcharsbx($res["URL"]["~MODERATE"])."&".bitrix_sessid_get(); $res["URL"]["~DELETE"] = ForumAddPageParams($res["URL"]["~MESSAGE"],array("MID" => $res["ID"], "ACTION" => "DEL"), false, false); $res["URL"]["DELETE"] = htmlspecialcharsbx($res["URL"]["~DELETE"])."&".bitrix_sessid_get(); $res["URL"]["~EDIT"] = ForumAddPageParams( CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_TOPIC_NEW"], array("FID" => $arParams["FID"])), array("TID" => $arResult["TOPIC"]["ID"], "MID" => $res["ID"], "MESSAGE_TYPE" => "EDIT"), false, false); $res["URL"]["EDIT"] = htmlspecialcharsbx($res["URL"]["~EDIT"]); /************** Panels/*********************************************/ /************** For custom templates *******************************/ $res["profile_view"] = $res["URL"]["AUTHOR"]; $res["MESSAGE_ANCHOR"] = $res["URL"]["MESSAGE"]; $res["message_link"] = $res["URL"]["MESSAGE"]; $res["email"] = $res["URL"]["AUTHOR_EMAIL"]; $res["icq"] = $res["URL"]["AUTHOR_ICQ"]; $res["pm_edit"] = $res["URL"]["AUTHOR_PM"]; /************** For custom templates/*******************************/ $arResult["MESSAGE_LIST"][$res["ID"]] = $res; } /************** Attach files ***************************************/ if (!empty($arResult["MESSAGE_LIST"])) { $arFilter = array("@FILE_MESSAGE_ID" => array_keys($arResult["MESSAGE_LIST"])); $db_files = CForumFiles::GetList(array("MESSAGE_ID" => "ASC"), $arFilter); if ($db_files && $res = $db_files->Fetch()) { do { $res["SRC"] = CFile::GetFileSRC($res); if ($arResult["MESSAGE_LIST"][$res["MESSAGE_ID"]]["~ATTACH_IMG"] == $res["FILE_ID"]) { // attach for custom $arResult["MESSAGE_LIST"][$res["MESSAGE_ID"]]["~ATTACH_FILE"] = $res; $arResult["MESSAGE_LIST"][$res["MESSAGE_ID"]]["ATTACH_IMG"] = CFile::ShowFile($res["FILE_ID"], 0, $arParams["IMAGE_SIZE"], $arParams["IMAGE_SIZE"], true, "border=0", false); $arResult["MESSAGE_LIST"][$res["MESSAGE_ID"]]["ATTACH_FILE"] = $arResult["MESSAGE_LIST"][$res["MESSAGE_ID"]]["ATTACH_IMG"]; } $arResult["MESSAGE_LIST"][$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"), array("@ID" => array_keys($arResult["MESSAGE_LIST"])), false, 0, array("SELECT" => $arParams["USER_FIELDS"])); while ($db_props && ($res = $db_props->Fetch())) { $arResult["MESSAGE_LIST"][$res["ID"]]["PROPS"] = array_intersect_key($res, array_flip($arParams["USER_FIELDS"])); $arResult["MESSAGE_LIST"][$res["ID"]]["ALLOW"] = array_merge( $arResult["MESSAGE_LIST"][$res["ID"]]["ALLOW"], array("USERFIELDS" => $arResult["MESSAGE_LIST"][$res["ID"]]["PROPS"]) ); } } /************** Message info ***************************************/ $parser->arFiles = $arResult["FILES"]; foreach ($arResult["MESSAGE_LIST"] as $iID => $res): $arResult["MESSAGE_LIST"][$iID]["POST_MESSAGE_TEXT"] = $parser->convert($res["~POST_MESSAGE_TEXT"], $res["ALLOW"]); $arResult["MESSAGE_LIST"][$iID]["FILES_PARSED"] = $parser->arFilesIDParsed; endforeach; } /************** Message List/***************************************/ $arResult["MESSAGE"] = $arResult["MESSAGE_LIST"]; /******************************************************************** /Data ********************************************************************/ /*******************************************************************/ if ($arParams["SET_NAVIGATION"] != "N") { $APPLICATION->AddChainItem($arResult["FORUM"]["NAME"], CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_LIST"], array("FID" => $arParams["FID"]))); $APPLICATION->AddChainItem($arResult["TOPIC"]["TITLE"], $arResult["TOPIC"]["read"]); } if ($arParams["SET_TITLE"] != "N") $APPLICATION->SetTitle(GetMessage("FM_TITLE_PAGE")); $this->IncludeComponentTemplate(); ?>