case "SET_TOP": $ACTION = $ACTION == "SET_ORDINARY" ? "ORDINARY" : "TOP"; if (ForumTopOrdinaryTopic($arResult["TID"], $ACTION, $strErrorMessage, $strOkMessage)) { LocalRedirect(ForumAddPageParams($arResult["URL"]["~TOPIC_LIST"], array("result" => $ACTION == "ORDINARY" ? "unstick" : "stick"))); return true; } break; case "MOVE_TOPIC": $topic_id = is_array($arResult["TID"]) ? implode(",", $arResult["TID"]) : $arResult["TID"]; if (!empty($topic_id)) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_MOVE"], array("FID" => $arParams["FID"], "TID" => $topic_id))); return true; } break; 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")));
if ($_REQUEST['action_target'] != 'selected') { $arFilterAction["@ID"] = $arID; } if ($APPLICATION->GetGroupRight("forum") < "W") { $arFilterAction["PERMISSION_STRONG"] = "Y"; } $rsData = CForumTopic::GetListEx(array($by => $order), $arFilterAction); $arID = array(); while ($res = $rsData->Fetch()) { $arID[] = $res['ID']; } if (empty($arID)) { } else { switch ($_REQUEST['action']) { case "delete": ForumDeleteTopic($arID, $sError, $sOk); break; case "move": if (!CForumTopic::MoveTopic2Forum($arID, intVal($_REQUEST['move_to']))) { $ex = $APPLICATION->GetException(); if ($ex && ($err = $ex->GetString())) { $lAdmin->AddUpdateError($err, $ID); } else { $lAdmin->AddUpdateError(GetMessage("FM_WRONG_UPDATE"), $ID); } } break; } } } if (!empty($sError)) {
$result = ForumTopOrdinaryTopic($arTopic, $ACTION, $strErrorMessage, $strOkMessage, array("PERMISSION" => $arParams["PERMISSION"])); break; case "DEL_TOPIC": case "DELETE": $arLogID = array(); foreach ($arTopic as $topic_id_tmp) { // delete message log records $dbForumMessage = CForumMessage::GetList(array("ID" => "ASC"), array("TOPIC_ID" => $topic_id_tmp)); while ($arForumMessage = $dbForumMessage->Fetch()) { $dbRes = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "forum", "SOURCE_ID" => $arForumMessage["ID"]), false, false, array("ID", "PARAMS")); while ($arRes = $dbRes->Fetch()) { $arLogID[] = $arRes["ID"]; } } } $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:
$sError = $ex->GetString(); } $arError[] = array("id" => "drop error", "text" => PhotoShowError(array("code" => "NOT_DELETED", "title" => $sError, "DATA" => $arRes))); continue; } $iFileSize += intVal($arRes["REAL_PICTURE"]["FILE_SIZE"]); if ($arRes["BLOG_POST_ID"] > 0) { CModule::IncludeModule("blog"); $arPost = CBlogPost::GetByID($arRes["BLOG_POST_ID"]); $arBlog = CBlog::GetByID($arPost["BLOG_ID"]); CBlogPost::Delete($arRes["BLOG_POST_ID"]); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"]); } if ($arRes["FORUM_TOPIC_ID"] > 0) { CModule::IncludeModule("forum"); ForumDeleteTopic($arRes["FORUM_TOPIC_ID"]); } $events = GetModuleEvents("photogallery", "OnAfterPhotoDrop"); $arEventFields = array("ID" => $arRes["ID"], "SECTION_ID" => $arRes["IBLOCK_SECTION_ID"]); $sectionsIds[] = $arRes["IBLOCK_SECTION_ID"]; while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($arEventFields, $arParams)); } break; case "move": $bs = new CIBlockElement(); $itemID = $bs->Update($itemID, array("MODIFIED_BY" => $USER->GetID(), "IBLOCK_SECTION" => $_REQUEST["TO_SECTION_ID"])); if ($itemID <= 0) { $arError[] = array("id" => "move error", "text" => PhotoShowError(array("ID" => $itemID, "code" => "NOT_UPDATED", "title" => $bs->LAST_ERROR, "DATA" => $arRes))); } else { $sectionsIds[] = $arRes["TO_SECTION_ID"];
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; }
case "SET_TOP": if ($action == "SET_ORDINARY") { $action = "ORDINARY"; $sort = "150"; } else { $action = "TOP"; $sort = "100"; } if (ForumTopOrdinaryTopic($TID, $action, $strErrorMessage, $strOKMessage)) { $arTopic["SORT"] = $sort; } LocalRedirect("read.php?FID=" . $FID . "&TID=" . $TID); break; case "DEL_TOPIC": 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;