} $this->IncludeComponentLang("action.php"); if ((strlen($action) > 0 || strlen($s_action) > 0) && $_REQUEST["MESSAGE_MODE"] != "VIEW" && check_bitrix_sessid()) { //*************************!Subscribe*************************************************** if ($s_action == 'SUBSCRIBE' || $s_action == 'UNSUBSCRIBE') { if ($_REQUEST["TOPIC_UNSUBSCRIBE"] == "Y") { ForumUnsubscribeNewMessagesEx($arParams["FID"], $arParams["TID"], "N", $strErrorMessage, $strOKMessage); } if ($_REQUEST["FORUM_UNSUBSCRIBE"] == "Y") { ForumUnsubscribeNewMessagesEx($arParams["FID"], 0, "N", $strErrorMessage, $strOKMessage); } if ($_REQUEST["TOPIC_SUBSCRIBE"] == "Y") { ForumSubscribeNewMessagesEx($arParams["FID"], $arParams["TID"], "N", $strErrorMessage, $strOKMessage); } if ($_REQUEST["FORUM_SUBSCRIBE"] == "Y") { ForumSubscribeNewMessagesEx($arParams["FID"], 0, "N", $strErrorMessage, $strOKMessage); } if (empty($strErrorMessage) && $_SERVER['REQUEST_METHOD'] == 'GET') { LocalRedirect($APPLICATION->GetCurPageParam("", array("TOPIC_UNSUBSCRIBE", "FORUM_UNSUBSCRIBE", "TOPIC_SUBSCRIBE", "FORUM_SUBSCRIBE", "sessid"))); } } $result = false; //*************************!Subscribe*************************************************** if (strlen($action) > 0 && $action != "SUBSCRIBE" && $action != "UNSUBSCRIBE") { $arFields = array(); $url = false; $code = false; $message = array(); if ($_SERVER['REQUEST_METHOD'] == "POST") { $message = !empty($_POST["MID_ARRAY"]) ? $_POST["MID_ARRAY"] : $_POST["MID"]; if ((empty($message) || $message == "s") && !empty($_POST["message_id"])) {
} else { $MAILBOX_ID = 0; } } if ($MAILBOX_ID > 0) { $arMailFilterFields = array("MAILBOX_ID" => $MAILBOX_ID, "NAME" => GetMessage("SOCNET_FORUM_TL_EMAIL_RULE"), "ACTION_TYPE" => "forumsocnet", "ACTION_VARS" => "", "WHEN_MAIL_RECEIVED" => "Y", "WHEN_MANUALLY_RUN" => "Y"); $MAIL_FILTER_ID = CMailFilter::Add($arMailFilterFields); $arFields["MAIL_FILTER_ID"] = $MAIL_FILTER_ID; if (CForumEMail::Set($arFields) > 0) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_LIST"], array("FID" => $arParams["FID"], "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"]))); } } } } } elseif ($ACTION == "FORUM_SUBSCRIBE") { if (ForumSubscribeNewMessagesEx($arParams["FID"], 0, "N", $strErrorMessage, $strOkMessage, false, $arParams["SOCNET_GROUP_ID"])) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_LIST"], array("FID" => $arParams["FID"], "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"]))); } else { $arResult["ERROR_MESSAGE"] = $strErrorMessage; } } elseif ($ACTION == "FORUM_UNSUBSCRIBE") { $arFields = array("USER_ID" => $USER->GetID(), "FORUM_ID" => $arParams["FID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => false, "SOCNET_GROUP_ID" => $arParams["SOCNET_GROUP_ID"]); $db_res = CForumSubscribe::GetListEx(array(), $arFields); if ($db_res && ($res = $db_res->Fetch()) && CForumSubscribe::Delete($res["ID"])) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_TOPIC_LIST"], array("FID" => $arParams["FID"], "UID" => $arParams["USER_ID"], "GID" => $arParams["SOCNET_GROUP_ID"]))); } } } /******************************************************************** /Actions ********************************************************************/
$strErrorMessage = ""; $strOkMessage = ""; $arResult["USER"] = array("INFO" => array(), "RIGHTS" => array("CAN_ADD_TOPIC" => $arResult["CanUserAddTopic"] ? "Y" : "N"), "PERMISSION" => $arResult["PERMISSION"], "SUBSCRIBE" => array()); /******************************************************************** /Default values ********************************************************************/ CPageOption::SetOptionString("main", "nav_page_in_session", "N"); /******************************************************************** Actions ********************************************************************/ if (check_bitrix_sessid() && strLen($ACTION) > 0) { $aMsg = array(); switch ($ACTION) { case "FORUM_SUBSCRIBE": case "FORUM_SUBSCRIBE_TOPICS": if (ForumSubscribeNewMessagesEx($arParams["FID"], 0, $ACTION == "FORUM_SUBSCRIBE_TOPICS" ? "Y" : "N", $strErrorMessage, $strOkMessage)) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_SUBSCR_LIST"], array("FID" => $arParams["FID"]))); return true; } break; case "SET_BE_READ": ForumSetReadForum($arParams["FID"]); LocalRedirect($APPLICATION->GetCurPageParam('', array('sessid', 'ACTION'))); break; case "SET_ORDINARY": 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; }
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; }
if ($TID > 0) { CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $PRODUCT_IBLOCK_ID, intVal($TID), "FORUM_TOPIC_ID"); } else { if ($TOPIC_ID > 0) { $TID = $TOPIC_ID; } if ($FORUM_TOPIC_ID > 0) { $TID = $FORUM_TOPIC_ID; } } $strOKMessage = GetMessage("COMM_COMMENT_OK"); $arResult["FORUM_TOPIC_ID"] = intVal($FORUM_TOPIC_ID); ForumClearComponentCache($componentName); // SUBSCRIBE if ($_REQUEST["TOPIC_SUBSCRIBE"] == "Y") { ForumSubscribeNewMessagesEx($arParams["FORUM_ID"], $FORUM_TOPIC_ID, "N", $strErrorMessage, $strOKMessage); BXClearCache(true, "/bitrix/forum/user/" . $GLOBALS["USER"]->GetID() . "/subscribe/"); } $strURL = !empty($_REQUEST["back_page"]) ? $_REQUEST["back_page"] : $APPLICATION->GetCurPageParam("", array("MID", "SEF_APPLICATION_CUR_PAGE_URL", BX_AJAX_PARAM_ID, "result")); $bNotModerated = $arResult["FORUM"]["MODERATION"] != "Y" || CForumNew::CanUserModerateForum($arParams["FORUM_ID"], $USER->GetUserGroupArray()); $strURL = ForumAddPageParams($strURL, array("MID" => $MID, "result" => $bNotModerated ? "reply" : "not_approved")); $strURL .= $bNotModerated ? "#message" . $MID : "#reviewnote"; if ($arParams["NO_REDIRECT_AFTER_SUBMIT"] != "Y") { LocalRedirect($strURL); } else { $arResult['RESULT'] = $MID; $strOKMessage = $bNotModerated ? GetMessage("COMM_COMMENT_OK") : GetMessage("COMM_COMMENT_OK_AND_NOT_APPROVED"); } } } elseif ($_REQUEST["save_product_review"] == "Y") { $arParams['SHOW_MINIMIZED'] = 'N';
LocalRedirect("read.php?FID=" . $FID . "&TID=" . $TID); } elseif ($_SERVER["REQUEST_METHOD"] == "GET" && check_bitrix_sessid()) { $action = strToUpper($_GET["ACTION"]); switch ($action) { case "FORUM_MESSAGE2SUPPORT": if (CModule::IncludeModule("support")) { $SuID = ForumMoveMessage2Support($MID, $strErrorMessage, $strOKMessage); if (IntVal($SuID) > 0) { LocalRedirect("/bitrix/admin/ticket_edit.php?ID=" . IntVal($SuID) . "&lang=" . LANGUAGE_ID); } } break; case "FORUM_SUBSCRIBE": case "TOPIC_SUBSCRIBE": case "FORUM_SUBSCRIBE_TOPICS": if (ForumSubscribeNewMessagesEx($FID, $action == "FORUM_SUBSCRIBE" ? 0 : $TID, $action == "FORUM_SUBSCRIBE_TOPICS" ? "Y" : "N", $strErrorMessage, $strOKMessage)) { LocalRedirect("subscr_list.php?FID=" . $FID . "&TID=" . $TID); } break; case "MOVE_TOPIC": LocalRedirect("move.php?FID=" . $FID . "&TID=" . $TID); break; case "HIDE": case "SHOW": ForumModerateMessage($MID, $action, $strErrorMessage, $strOKMessage); LocalRedirect("read.php?FID=" . $FID . "&TID=" . $TID); break; case "SET_ORDINARY": case "SET_TOP": if ($action == "SET_ORDINARY") { $action = "ORDINARY";
private function checkActions() { if ($this->request["ENTITY_XML_ID"] !== $this->feed->getEntity()->getXmlId()) { return null; } $post = array_merge($this->request->getQueryList()->toArray(), $this->request->getPostList()->toArray()); $action = strtolower($post["comment_review"] == "Y" ? strtolower($post['REVIEW_ACTION']) == "edit" ? "edit" : "add" : $post['REVIEW_ACTION']); if (!in_array($action, array("add", 'del', 'hide', 'show', 'edit'))) { return null; } $actionErrors = new ErrorCollection(); $arPost = array(); if (!check_bitrix_sessid()) { $actionErrors->addOne(new Error(Loc::getMessage("F_ERR_SESSION_TIME_IS_UP"), self::ERROR_ACTION)); } else { if (!$this->checkCaptcha($actionErrors)) { $actionErrors->addOne(new Error(Loc::getMessage("POSTM_CAPTCHA"), self::ERROR_ACTION)); } else { if ($post["AJAX_POST"] == "Y") { CUtil::decodeURIComponent($post); } if ($action == "add" || $action == "edit") { $arPost = array("POST_MESSAGE" => $post["REVIEW_TEXT"], "AUTHOR_NAME" => $this->getUser()->isAuthorized() ? $this->getUserName() : (empty($post["REVIEW_AUTHOR"]) ? $GLOBALS["FORUM_STATUS_NAME"]["guest"] : $post["REVIEW_AUTHOR"]), "AUTHOR_EMAIL" => $post["REVIEW_EMAIL"], "USE_SMILES" => $post["REVIEW_USE_SMILES"]); foreach (GetModuleEvents('forum', 'OnCommentAdd', true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($this->feed->getEntity()->getType(), $this->feed->getEntity()->getId(), &$arPost)) === false) { $actionErrors->addOne(new Error(isset($arPost['ERROR']) ? $arPost['ERROR'] : Loc::getMessage("F_ERR_DURING_ACTIONS") . print_r($arEvent, true), self::ERROR_ACTION)); } } } } } if (!$actionErrors->hasErrors()) { if ($action == "add" || $action == "edit") { $message = $action == "add" ? $this->feed->add($arPost) : $this->feed->edit($this->request["MID"], $arPost); if ($message && $this->request["TOPIC_SUBSCRIBE"] == "Y") { ForumSubscribeNewMessagesEx($this->arParams["FORUM_ID"], $message["TOPIC_ID"], "N", $strErrorMessage, $strOKMessage); BXClearCache(true, "/bitrix/forum/user/" . $this->getUser()->getId() . "/subscribe/"); } } elseif ($action == "show" || $action == "hide") { $message = $this->feed->moderate($this->request["MID"], $action == "show"); } else { $message = $this->feed->delete($this->request["MID"]); } if ($this->feed->hasErrors()) { $actionErrors->add($this->feed->getErrors()); } else { if ($this->request["NOREDIRECT"] != "Y" && !$this->isAjaxRequest()) { $strURL = $this->request["back_page"] ?: $this->getApplication()->GetCurPageParam("", array("MID", "SEF_APPLICATION_CUR_PAGE_URL", BX_AJAX_PARAM_ID, "result", "sessid", "bxajaxid")); $strURL = ForumAddPageParams($strURL, array("MID" => $message["ID"], "result" => $message["APPROVED"] == "Y" ? "reply" : "not_approved")); LocalRedirect($strURL); } else { $this->arResult['RESULT'] = $message["ID"]; if ($action == "add") { $this->arResult['OK_MESSAGE'] = $message["APPROVED"] == "Y" ? GetMessage("COMM_COMMENT_OK") : GetMessage("COMM_COMMENT_OK_AND_NOT_APPROVED"); } else { if ($action == "edit") { $this->arResult['OK_MESSAGE'] = Loc::getMessage("COMM_COMMENT_UPDATED"); } else { if ($action == "show") { $this->arResult['OK_MESSAGE'] = Loc::getMessage("COMM_COMMENT_SHOWN"); } else { if ($action == "hide") { $this->arResult['OK_MESSAGE'] = Loc::getMessage("COMM_COMMENT_HIDDEN"); } else { $this->arResult['OK_MESSAGE'] = Loc::getMessage("COMM_COMMENT_DELETED"); } } } } } } } if ($actionErrors->hasErrors()) { /** @var $error Error */ $this->arResult["RESULT"] = false; $this->arResult["OK_MESSAGE"] = ''; foreach ($actionErrors->toArray() as $error) { $this->arResult['ERROR_MESSAGE'] .= $error->getMessage(); } return false; } return true; }
/Default params ********************************************************************/ /******************************************************************** Data ********************************************************************/ /*************** Show webdav interface *****************************/ $arParams["SHOW_WEBDAV"] = $ob->CheckRight($arParams["PERMISSION"], "element_edit") >= "U" ? 'Y' : 'N'; /*************** Forum subscribe to document ***********************/ if ($arParams["USE_COMMENTS"] == "Y" && $GLOBALS['USER']->IsAuthorized()) { CModule::IncludeModule("forum"); $cache_id = "/" . $arParams["IBLOCK_ID"] . "/forum_user_subscribe_" . intVal($GLOBALS["USER"]->GetID()) . "_" . $arParams["FORUM_ID"]; $arParams["FORUM_CAN_VIEW"] = CForumNew::CanUserViewForum($arParams["FORUM_ID"], $GLOBALS['USER']->GetUserGroupArray()) ? "Y" : "N"; if ($arParams["FORUM_CAN_VIEW"] == "Y" && $GLOBALS['USER']->IsAuthorized()) { if ((!empty($_REQUEST["SUBSCRIBE_FORUM"]) || !empty($_REQUEST["subscribe_forum"])) && check_bitrix_sessid()) { if ($_REQUEST["SUBSCRIBE_FORUM"] == "Y" || $_REQUEST["subscribe_forum"] == "Y") { ForumSubscribeNewMessagesEx($arParams["FORUM_ID"], 0, "N", $strErrorMessage = "", $strOKMessage = ""); } elseif ($_REQUEST["SUBSCRIBE_FORUM"] == "N" || $_REQUEST["subscribe_forum"] == "N") { $arFilter = array("USER_ID" => $GLOBALS["USER"]->GetId(), "FORUM_ID" => $arParams["FORUM_ID"]); $db_res = CForumSubscribe::GetList(array(), $arFilter); if ($db_res && ($res = $db_res->Fetch())) { do { if (CForumSubscribe::CanUserDeleteSubscribe($res["ID"], $GLOBALS["USER"]->GetUserGroupArray(), $GLOBALS["USER"]->GetID())) { CForumSubscribe::Delete($res["ID"]); } } while ($res = $db_res->Fetch()); } } BXClearCache(true, $cache_path_main); $arNavChain = $arParams["CONVERT"] ? $arResult["NAV_CHAIN_UTF8"] : $arResult["NAV_CHAIN"]; $url = CComponentEngine::MakePathFromTemplate($arParams["~SECTIONS_URL"], array("PATH" => implode("/", $arNavChain), "SECTION_ID" => $arParams["SECTION_ID"])); }