Exemplo n.º 1
0
if (!empty($arMsg)) {
    $err = new CAdminException($arMsg);
    $lAdmin->AddFilterError($err->GetString());
}
/*******************************************************************/
if ($lAdmin->EditAction() && $forumModulePermissions >= "R") {
    $sError = "";
    $sOk = "";
    foreach ($FIELDS as $ID => $arFields) {
        $ID = intVal($ID);
        if (!$lAdmin->IsUpdated($ID)) {
            continue;
        } elseif (!CForumTopic::CanUserUpdateTopic($ID, $USER->GetUserGroupArray(), $USER->GetID())) {
            continue;
        }
        $res = CForumTopic::GetById($ID, array("NoFilter" => true));
        if (is_set($arFields, "APPROVED")) {
            $arFields["APPROVED"] = $arFields["APPROVED"] == "N" ? "N" : "Y";
            if ($res["APPROVED"] != $arFields["APPROVED"]) {
                ForumActions($arFields["APPROVED"] == "Y" ? "SHOW_TOPIC" : "HIDE_TOPIC", array("TID" => $ID), $sError, $sOk);
            }
            unset($arFields["APPROVED"]);
        }
        if (is_set($arFields, "FORUM_ID")) {
            if ($res["FORUM_ID"] != $arFields["FORUM_ID"]) {
                $result = CForumTopic::MoveTopic2Forum(array($res["ID"]), $arFields["FORUM_ID"], "N");
            }
            unset($arFields["FORUM_ID"]);
        }
        foreach ($arFields as $key => $val) {
            if ($val == $res[$key]) {
Exemplo n.º 2
0
 function CheckFields($ACTION, &$arFields, $ID = 0, $arParams = array())
 {
     $aMsg = array();
     $ID = intVal($ID);
     $arMessage = $arFields;
     if ($ACTION != "ADD" && $ID > 0 && (!is_set($arFields, "AUTHOR_NAME") || !is_set($arFields, "TOPIC_ID") || !is_set($arFields, "FORUM_ID"))) {
         $arMessage = CForumMessage::GetByID($ID, array("FILTER" => "N"));
     }
     $bDeduplication = true;
     if ((is_set($arFields, "FORUM_ID") || $ACTION == "ADD") && intVal($arFields["FORUM_ID"]) <= 0) {
         $aMsg[] = array("id" => 'empty_forum_id', "text" => GetMessage("F_ERR_EMPTY_FORUM_ID"));
     } else {
         $forumID = $ACTION == 'ADD' ? intVal($arFields["FORUM_ID"]) : intVal($arMessage["FORUM_ID"]);
         $arForum = CForumNew::GetByID($forumID);
         if (!is_array($arForum)) {
             $aMsg[] = array("id" => 'invalid_forum_id', "text" => GetMessage("F_ERR_INVALID_FORUM_ID"));
         } else {
             $bDeduplication = $arForum['DEDUPLICATION'] === 'Y';
         }
     }
     if ((is_set($arFields, "TOPIC_ID") || $ACTION == "ADD") && intVal($arFields["TOPIC_ID"]) <= 0) {
         $aMsg[] = array("id" => 'empty_topic_id', "text" => GetMessage("F_ERR_EMPTY_TOPIC_ID"));
     }
     if ((is_set($arFields, "AUTHOR_NAME") || $ACTION == "ADD") && strLen($arFields["AUTHOR_NAME"]) <= 0) {
         $aMsg[] = array("id" => 'empty_author_name', "text" => GetMessage("F_ERR_EMPTY_AUTHOR_NAME"));
     }
     if ((is_set($arFields, "POST_MESSAGE") || $ACTION == "ADD") && strLen($arFields["POST_MESSAGE"]) <= 0 && (!is_set($arFields, 'FILES') || sizeof($arFields['FILES']) < 1)) {
         $aMsg[] = array("id" => 'empty_post_message', "text" => GetMessage("F_ERR_EMPTY_POST_MESSAGE"));
     } elseif (is_set($arFields, "POST_MESSAGE") && $arFields["NEW_TOPIC"] != "Y") {
         $arFields["POST_MESSAGE_CHECK"] = md5($arFields["POST_MESSAGE"] . (is_set($arFields, 'FILES') ? serialize($arFields['FILES']) : ''));
         if ($bDeduplication) {
             $iCnt = CForumMessage::GetList(array(), array("TOPIC_ID" => $arMessage["TOPIC_ID"], "!ID" => $ID, "AUTHOR_NAME" => $arMessage["AUTHOR_NAME"], "POST_MESSAGE_CHECK" => $arFields["POST_MESSAGE_CHECK"]), true);
             if (intVal($iCnt) > 0) {
                 $aMsg[] = array("id" => 'message_already_exists', "text" => GetMessage("F_ERR_MESSAGE_ALREADY_EXISTS"));
             }
         }
     }
     if (!is_set($arFields, "FILES")) {
         $arFields["FILES"] = array();
     }
     if (is_set($arFields, "ATTACH_IMG")) {
         if (!empty($arFields["ATTACH_IMG"])) {
             $arFields["FILES"][] = $arFields["ATTACH_IMG"];
         }
         unset($arFields["ATTACH_IMG"]);
     }
     if (!empty($arFields["FILES"])) {
         if ($ID > 0) {
             $arParams = !empty($arParams) ? $arParams : CForumMessage::GetByID($ID, array("FILTER" => "N"));
             $arParams["MESSAGE_ID"] = $ID;
         } else {
             $arParams = array("FORUM_ID" => $arMessage["FORUM_ID"], "MESSAGE_ID" => 0, "USER_ID" => $arFields["AUTHOR_ID"]);
         }
         if (!CForumFiles::CheckFields($arFields["FILES"], $arParams)) {
             $res = $GLOBALS["APPLICATION"]->GetException();
             $aMsg[] = array("id" => 'attach_error', "text" => $res->GetString());
         }
     } else {
         unset($arFields["FILES"]);
     }
     if (intVal($arFields["TOPIC_ID"]) > 0) {
         $res = CForumTopic::GetById($arFields["TOPIC_ID"]);
         if (!$res) {
             $aMsg[] = array("id" => 'topic_is_not_exists', "text" => GetMessage("F_ERR_TOPIC_IS_NOT_EXISTS"));
         } elseif ($res["STATE"] == "L") {
             $aMsg[] = array("id" => 'topic_is_link', "text" => GetMessage("F_ERR_TOPIC_IS_LINK"));
         }
     }
     if (!empty($aMsg)) {
         $e = new CAdminException(array_reverse($aMsg));
         $GLOBALS["APPLICATION"]->ThrowException($e);
         return false;
     } else {
         if (!$GLOBALS["USER_FIELD_MANAGER"]->CheckFields("FORUM_MESSAGE", $ID, $arFields)) {
             return false;
         }
     }
     if (is_set($arFields, "AUTHOR_ID") || $ACTION == "ADD") {
         $arFields["AUTHOR_ID"] = intVal($arFields["AUTHOR_ID"]) <= 0 ? false : $arFields["AUTHOR_ID"];
     }
     if (is_set($arFields, "USE_SMILES") || $ACTION == "ADD") {
         $arFields["USE_SMILES"] = $arFields["USE_SMILES"] == "N" ? "N" : "Y";
     }
     if (is_set($arFields, "NEW_TOPIC") || $ACTION == "ADD") {
         $arFields["NEW_TOPIC"] = $arFields["NEW_TOPIC"] == "Y" ? "Y" : "N";
     }
     if (is_set($arFields, "APPROVED") || $ACTION == "ADD") {
         $arFields["APPROVED"] = $arFields["APPROVED"] == "N" ? "N" : "Y";
     }
     if (is_set($arFields, "SOURCE_ID") || $ACTION == "ADD") {
         $arFields["SOURCE_ID"] = $arFields["SOURCE_ID"] == "EMAIL" ? "EMAIL" : "WEB";
     }
     // ********************************* QUOTA ********************************* //
     //		if ((!empty($arFields["POST_MESSAGE"])) && (COption::GetOptionInt("main", "disk_space") > 0))
     //		{
     //			$quota = new CDiskQuota();
     //			if (!$quota->checkDiskQuota(strLen($arFields["POST_MESSAGE"])))
     //				return false;
     //		}
     // ********************************* QUOTA ********************************* //
     return True;
 }