case "DEL_TOPIC": if (ForumDeleteTopic($arResult["TID"], $strErrorMessage, $strOkMessage)) { if (isset($_REQUEST['NAV_PAGE']) && strpos($_REQUEST['NAV_PAGE'], ':') !== false) { list($NavNum, $NavPageNomer) = explode(":", $_REQUEST['NAV_PAGE']); LocalRedirect(ForumAddPageParams($arResult["URL"]["~TOPIC_LIST"], array("result" => "delele", "PAGEN_" . intval($NavNum) => intval($NavPageNomer)))); return true; } LocalRedirect(ForumAddPageParams($arResult["URL"]["~TOPIC_LIST"], array("result" => "delele"))); return true; } break; case "STATE_Y": case "STATE_N": $ACTION = $ACTION == "STATE_Y" ? "OPEN" : "CLOSE"; $state = $ACTION == "STATE_Y" ? "Y" : "N"; if (ForumOpenCloseTopic($arResult["TID"], $ACTION, $strErrorMessage, $strOkMessage)) { LocalRedirect(ForumAddPageParams($arResult["URL"]["~TOPIC_LIST"], array("result" => $ACTION == "OPEN" ? "open" : "close"))); return true; } break; } } elseif (!check_bitrix_sessid() && strLen($ACTION) > 0) { $strErrorMessage .= GetMessage("F_ERR_SESS_FINISH") . ".\n"; } //******************************************************************* $arResult["ERROR_MESSAGE"] .= trim($strErrorMessage); if (!empty($strErrorMessage)) { $arResult["OK_MESSAGE"] = trim($strOkMessage); } else { $arResult["OK_MESSAGE"] .= trim($strOkMessage); }
} } $result = ForumDeleteTopic($arTopic, $strErrorMessage, $strOkMessage, array("PERMISSION" => $arParams["PERMISSION"])); if ($result) { foreach ($arLogID as $log_id) { CSocNetLog::Delete($log_id); } } break; case "STATE_Y": case "STATE_N": case "CLOSE": case "OPEN": $ACTION = $ACTION == "STATE_Y" ? "OPEN" : ($ACTION == "STATE_N" ? "CLOSE" : $ACTION); $state = $ACTION == "OPEN" ? "Y" : "N"; $result = ForumOpenCloseTopic($arTopic, $ACTION, $strErrorMessage, $strOkMessage, array("PERMISSION" => $arParams["PERMISSION"])); break; default: $arError[] = array("id" => "bad action", "text" => $ACTION); break; } if (!empty($strErrorMessage)) { $arError[] = array("id" => "action error", "text" => $strErrorMessage); } } $arTopic = array_diff($topics, $arTopic); if (!empty($arTopic)) { $arError[] = array("id" => "empty topics", "text" => str_replace("#TOPICS#", implode(", ", $arTopic), GetMessage("F_ERR_TOPICS_NOT_MODERATION"))); } } if (empty($arError)) {
if ($TID > 0) { if (ForumDeleteTopic($TID, $strErrorMessage, $strOKMessage)) { LocalRedirect("list.php?FID=" . $FID); } } break; case "STATE_Y": case "STATE_N": if ($action == "STATE_Y") { $action = "OPEN"; $state = "Y"; } else { $action = "CLOSE"; $state = "N"; } if (ForumOpenCloseTopic($TID, $action, $strErrorMessage, $strOKMessage)) { $arTopic["STATE"] = $state; } LocalRedirect("read.php?FID=" . $FID . "&TID=" . $TID); break; case "DEL": if (ForumDeleteMessage($MID, $strErrorMessage, $strOKMessage)) { $arTopic = CForumTopic::GetByID($TID); if (!$arTopic) { LocalRedirect("list.php?FID=" . $FID); } } LocalRedirect("read.php?FID=" . $FID . "&TID=" . $TID); break; } global $HTTP_GET_VARS;
function ForumActions($action, $arFields, &$strErrorMessage, &$strOKMessage) { $result = false; $sError = ""; $sNote = ""; if (empty($action)) { $sError = GetMessage("FORUM_NO_ACTION"); } else { switch ($action) { case "REPLY": $result = ForumAddMessage("REPLY", $arFields["FID"], $arFields["TID"], 0, $arFields, $sError, $sNote, false, $arFields["captcha_word"], 0, $arFields["captcha_code"], $arFields["NAME_TEMPLATE"]); break; case "DEL": $result = ForumDeleteMessage($arFields["MID"], $sError, $sNote, $arFields); break; case "SHOW": case "HIDE": $result = ForumModerateMessage($arFields["MID"], $action, $sError, $sNote, $arFields); break; case "VOTE4USER": $result = ForumVote4User($arFields["UID"], $arFields["VOTES"], $arFields["VOTE"], $sError, $sNote, $arFields); break; case "FORUM_MESSAGE2SUPPORT": $result = ForumMoveMessage2Support($arFields["MID"], $sError, $sNote, $arFields); break; case "FORUM_SUBSCRIBE": case "TOPIC_SUBSCRIBE": case "FORUM_SUBSCRIBE_TOPICS": $result = ForumSubscribeNewMessagesEx($arFields["FID"], $arFields["TID"], $arFields["NEW_TOPIC_ONLY"], $sError, $sNote); break; case "SET_ORDINARY": case "SET_TOP": case "ORDINARY": case "TOP": if ($action == "SET_ORDINARY") { $action = "ORDINARY"; } elseif ($action == "SET_TOP") { $action = "TOP"; } $result = ForumTopOrdinaryTopic($arFields["TID"], $action, $sError, $sNote, $arFields); break; case "DEL_TOPIC": $result = ForumDeleteTopic($arFields["TID"], $sError, $sNote, $arFields); break; case "OPEN": case "CLOSE": case "STATE_Y": case "STATE_N": if ($action == "STATE_Y") { $action = "OPEN"; } elseif ($action == "STATE_N") { $action = "CLOSE"; } $result = ForumOpenCloseTopic($arFields["TID"], $action, $sError, $sNote, $arFields); break; case "SHOW_TOPIC": case "HIDE_TOPIC": $db_res = CForumMessage::GetList(array(), array("TOPIC_ID" => $arFields["TID"], "APPROVED" => $action == "HIDE_TOPIC" ? "Y" : "N")); $message = array(); if ($db_res && ($res = $db_res->Fetch())) { do { $message[] = $res["ID"]; } while ($res = $db_res->Fetch()); } if (!empty($message)) { $s = ""; $result = ForumModerateMessage($message, $action == "HIDE_TOPIC" ? "HIDE" : "SHOW", $sError, $s, $arFields); } else { $result = true; } CForumEventLog::Log("topic", $action == "HIDE_TOPIC" ? "unapprove" : "approve", $arFields["TID"], serialize(CForumTopic::GetByID($arFields["TID"]))); break; case "SPAM_TOPIC": $result = ForumSpamTopic($arFields["TID"], $sError, $sNote, $arFields); break; case "SPAM": $result = ForumSpamMessage($arFields["MID"], $sError, $sNote, $arFields); break; default: $sError = GetMessage("FORUM_NO_ACTION") . " (" . htmlspecialcharsbx($action) . ")"; break; } } $strErrorMessage = $sError; $strOKMessage = $sNote; return $result; }
$arTopic["SORT"] = "150"; } } elseif ($_SERVER["REQUEST_METHOD"] == "GET" && $_GET["ACTION"] == "SET_TOP") { if (ForumTopOrdinaryTopic($TID, "TOP", $strErrorMessage, $strOKMessage)) { $arTopic["SORT"] = "100"; } } elseif ($_SERVER["REQUEST_METHOD"] == "GET" && $_GET["ACTION"] == "DEL_TOPIC" && $TID > 0) { if (ForumDeleteTopic($TID, $strErrorMessage, $strOKMessage)) { LocalRedirect("list.php?FID=" . $FID); } } elseif ($_SERVER["REQUEST_METHOD"] == "GET" && $_GET["ACTION"] == "STATE_Y") { if (ForumOpenCloseTopic($TID, "OPEN", $strErrorMessage, $strOKMessage)) { $arTopic["STATE"] = "Y"; } } elseif ($_SERVER["REQUEST_METHOD"] == "GET" && $_GET["ACTION"] == "STATE_N") { if (ForumOpenCloseTopic($TID, "CLOSE", $strErrorMessage, $strOKMessage)) { $arTopic["STATE"] = "N"; } } elseif ($_SERVER["REQUEST_METHOD"] == "GET" && $_GET["ACTION"] == "DEL") { if (ForumDeleteMessage($MID, $strErrorMessage, $strOKMessage)) { $arTopic = CForumTopic::GetByID($TID); if (!$arTopic) { LocalRedirect("list.php?FID=" . $FID); } } } if ($GLOBALS["SHOW_FORUM_DEBUG_INFO"]) { $arForumDebugInfo[] = "<br><font color=\"#FF0000\">Actions: " . Round(getmicrotime() - $prexectime, 3) . " sec</font>"; } // End of ACTIONS $APPLICATION->AddChainItem($arForum["NAME"], "list.php?FID=" . $FID);