if (is_set($arResult["~QUESTIONS"], $res["QUESTION_ID"])) { $arResult["~QUESTIONS"][$res["QUESTION_ID"]]["ANSWERS"][$res["ID"]] = $res; } } while ($res = $db_res->Fetch()); } } $arResult["QUESTIONS"] = $arResult["~QUESTIONS"]; } } else { $arError[] = array("id" => "mid_is_lost", "text" => GetMessage("F_MID_IS_LOST")); } } /************** Permission *****************************************/ if ($arParams["MESSAGE_TYPE"] == "NEW" && !CForumTopic::CanUserAddTopic($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), false, $arParams["PERMISSION"])) { $arError[] = array("id" => "acces denied", "text" => GetMessage("F_NO_NPERMS")); } elseif ($arParams["MESSAGE_TYPE"] == "EDIT" && !CForumMessage::CanUserUpdateMessage($arParams["MID"], $USER->GetUserGroupArray(), $USER->GetID(), $arParams["PERMISSION"])) { $arError[] = array("id" => "acces denied", "text" => GetMessage("F_NO_EPERMS")); } /************** Fatal Errors ***************************************/ if (!empty($arError)) { $e = new CAdminException($arError); $res = $e->GetString(); ShowError($res); return false; } /*******************************************************************/ $strErrorMessage = ""; $strOKMessage = ""; $bVarsFromForm = false; $arResult["VIEW"] = strToUpper($_REQUEST["MESSAGE_MODE"]) == "VIEW" && $_SERVER["REQUEST_METHOD"] == "POST" ? "Y" : "N"; $_REQUEST["FILES"] = is_array($_REQUEST["FILES"]) ? $_REQUEST["FILES"] : array();
$arResult["ForumPrintSmilesList"] = ""; $arResult["TOPIC_FILTER"] = array(); $arResult["TOPIC"] = array(); $arResult["MESSAGE"] = array("AUTHOR_ID" => $USER->GetParam("USER_ID"), "USE_SMILES" => "Y", "AUTHOR_NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"], "AUTHOR_EMAIL" => "", "POST_MESSAGE" => "", "EDITOR_NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"], "EDITOR_EMAIL" => "*****@*****.**", "EDIT_REASON" => "", "FILES" => array()); $arResult["TOPIC"] = array("TITLE" => "", "TAGS" => "", "DESCRIPTION" => "", "ICON_ID" => ""); $arResult["QUESTIONS"] = array(); $arResult["~QUESTIONS"] = array(); $arResult['DATE_END'] = GetTime(time() + 30 * 86400); /******************************************************************** /Default params ********************************************************************/ $bShowForm = false; if ($arParams["MESSAGE_TYPE"] == "REPLY" && $arParams["TID"] > 0) { $bShowForm = CForumMessage::CanUserAddMessage($arParams["TID"], $USER->GetUserGroupArray(), $USER->GetID()); } elseif ($arParams["MESSAGE_TYPE"] == "EDIT" && $arParams["MID"] > 0) { $bShowForm = CForumMessage::CanUserUpdateMessage($arParams["MID"], $USER->GetUserGroupArray(), intVal($USER->GetID())); } elseif ($arParams["MESSAGE_TYPE"] == "NEW" && $arParams["FID"] > 0) { $bShowForm = CForumTopic::CanUserAddTopic($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID()); } if (!$bShowForm) { return 0; } if ($arParams["SHOW_VOTE"] == "Y") { CModule::IncludeModule("vote"); $permission = isset($arParams['PERMISSION']) && intval($arParams['PERMISSION'] > 0 || $arParams['PERMISSION'] === 0) ? intval($arParams['PERMISSION']) : CVoteChannel::GetGroupPermission($arParams["VOTE_CHANNEL_ID"]); if ($permission < 2) { $arParams["SHOW_VOTE"] = "N"; } $res = array_intersect($USER->GetUserGroupArray(), $arParams["VOTE_GROUP_ID"]); $arParams["SHOW_VOTE"] = empty($res) ? "N" : $arParams["SHOW_VOTE"]; }
LocalRedirect("index.php"); die; } $FID = IntVal($arMessage["FORUM_ID"]); $TID = IntVal($arMessage["TOPIC_ID"]); } $arForum = CForumNew::GetByID($FID); ForumSetLastVisit(); if (!$arForum) { LocalRedirect("index.php"); die; } if ($MESSAGE_TYPE == "NEW" && !CForumTopic::CanUserAddTopic($FID, $USER->GetUserGroupArray(), $USER->GetID())) { $APPLICATION->AuthForm(GetMessage("FNT_NO_NPERMS")); } if ($MESSAGE_TYPE == "EDIT" && !CForumMessage::CanUserUpdateMessage($MID, $USER->GetUserGroupArray(), IntVal($USER->GetID()))) { $APPLICATION->AuthForm(GetMessage("FNT_NO_EPERMS")); } if ($GLOBALS["SHOW_FORUM_DEBUG_INFO"]) { $arForumDebugInfo[] = "<br><font color=\"#FF0000\">Initializing Variables: " . Round(getmicrotime() - $prexectime, 3) . " sec</font>"; } if ($GLOBALS["SHOW_FORUM_DEBUG_INFO"]) { $prexectime = getmicrotime(); } $strErrorMessage = ""; $strOKMessage = ""; $bVarsFromForm = false; $View = false; if ($_POST["MESSAGE_MODE"] == "VIEW") { $View = true; $bVarsFromForm = true;
$arResult["~QUESTIONS"][$res["QUESTION_ID"]]["ANSWERS"][$res["ID"]] = $res; } } while ($res = $db_res->Fetch()); } } $arResult["QUESTIONS"] = $arResult["~QUESTIONS"]; } } } } else { $arResult["FORUM"] = CForumNew::GetByID($arParams["FID"]); if (empty($arResult["FORUM"])) { $arError = array("code" => "fid_is_lost", "title" => GetMessage("F_FID_IS_LOST"), "link" => $arResult["index"]); } } if (empty($arError) && ($arParams["MESSAGE_TYPE"] == "NEW" && !CForumTopic::CanUserAddTopic($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID())) || $arParams["MESSAGE_TYPE"] == "EDIT" && !CForumMessage::CanUserUpdateMessage($arParams["MID"], $USER->GetUserGroupArray(), $USER->GetID())) { $arError = array("code" => "rightsn_new", "title" => $arParams["MESSAGE_TYPE"] == "NEW" ? GetMessage("F_NO_NPERMS") : GetMessage("F_NO_EPERMS"), "link" => $arResult["index"]); } if (!empty($arError)) { if ($arParams["AJAX_CALL"] == "Y") { $res = array("error" => $arError, "note" => $arNote, "id" => $arParams["MID"], "post" => ShowError($arError["title"])); if ($_REQUEST["CONVERT_DATA"] == "Y") { array_walk($res, "htmlspecialcharsEx"); } $APPLICATION->RestartBuffer(); echo CUtil::PhpToJSObject($res); die; } ShowError($arError["title"]); return false; }
function ForumModerateMessage($message, $TYPE, &$strErrorMessage, &$strOKMessage, $arAddParams = array()) { global $USER; $arError = array(); $arOK = array(); $arAddParams = !is_array($arAddParams) ? array($arAddParams) : $arAddParams; $arAddParams["PERMISSION"] = !empty($arAddParams["PERMISSION"]) ? $arAddParams["PERMISSION"] : false; $message = ForumDataToArray($message); if (empty($message)) { $arError[] = GetMessage("DELMES_NO_MESS") . ". \n"; } else { $db_res = CForumMessage::GetList(array(), array("@ID" => implode(",", $message))); if ($db_res) { while ($arMessage = $db_res->Fetch()) { if (!(ForumCurrUserPermissions($arMessage["FORUM_ID"], $arAddParams) >= "Q" || CForumMessage::CanUserUpdateMessage($arMessage["ID"], $USER->GetUserGroupArray(), $USER->GetID(), $arAddParams["PERMISSION"]))) { $arError[] = GetMessage("MODMESS_NO_PERMS") . " (MID=" . $arMessage["ID"] . "). \n"; } else { $arFields = array("APPROVED" => $TYPE == "SHOW" ? "Y" : "N"); $ID = CForumMessage::Update($arMessage["ID"], $arFields); if ($ID > 0) { $TID = $arMessage["TOPIC_ID"]; $arTopic = CForumTopic::GetByID($TID); /***************** Events onMessageModerate ************************/ foreach (GetModuleEvents("forum", "onMessageModerate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $TYPE, $arMessage, $arTopic)); } /***************** /Events *****************************************/ $res = array("ID" => $arMessage["ID"], "AUTHOR_NAME" => $arMessage["AUTHOR_NAME"], "POST_MESSAGE" => $arMessage["POST_MESSAGE"], "TITLE" => $arTopic["TITLE"], "TOPIC_ID" => $TID, "FORUM_ID" => $arMessage["FORUM_ID"]); $res = serialize($res); if ($TYPE == "SHOW") { $arOK[] = GetMessage("MODMESS_SUCCESS_SHOW") . " (MID=" . $arMessage["ID"] . "). \n"; CForumMessage::SendMailMessage($arMessage["ID"], array(), false, "NEW_FORUM_MESSAGE"); CForumEventLog::Log("message", "approve", $arMessage["ID"], $res); } else { $arOK[] = GetMessage("MODMESS_SUCCESS_HIDE") . " (MID=" . $arMessage["ID"] . "). \n"; CForumMessage::SendMailMessage($arMessage["ID"], array(), false, "EDIT_FORUM_MESSAGE"); CForumEventLog::Log("message", "unapprove", $arMessage["ID"], $res); } } else { $arError[] = GetMessage("MODMESS_ERROR_MODER") . " (MID=" . $arMessage["ID"] . "). \n"; } } } } else { $arError[] = GetMessage("DELMES_NO_MESS") . ". \n"; } } $strErrorMessage .= implode("", $arError); $strOKMessage .= implode("", $arOK); if (count($arError) <= 0) { return true; } else { return false; } }