- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/classes/general/message.php
- Класс: CAllForumMessage
- Вызов: CAllForumMessage::CheckFields
static 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
{
if (
isset($arFields['AUX'])
&& $arFields['AUX'] == 'Y'
)
{
$bDeduplication = false;
}
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") && $arFields["AUTHOR_NAME"] == '')
{
$aMsg[] = array(
"id"=>'empty_author_name',
"text" => GetMessage("F_ERR_EMPTY_AUTHOR_NAME"));
}
if ((is_set($arFields, "POST_MESSAGE") || $ACTION=="ADD") && $arFields["POST_MESSAGE"] == '' &&
(!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") && (!isset($arFields["NEW_TOPIC"]) || $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 (!empty($arFields['POST_MESSAGE']))
{
$arFields["POST_MESSAGE"] = BitrixMainTextEmoji::encode($arFields["POST_MESSAGE"]);
}
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"));
}
}
global $APPLICATION, $USER_FIELD_MANAGER;
if(!empty($aMsg))
{
$e = new CAdminException(array_reverse($aMsg));
$APPLICATION->ThrowException($e);
return false;
}
else if(!$USER_FIELD_MANAGER->CheckFields("FORUM_MESSAGE", $ID, $arFields, (array_key_exists("USER_ID", $arFields) ? $arFields["USER_ID"] : false)))
return false;
if (is_set($arFields, "AUTHOR_ID") || $ACTION=="ADD") $arFields["AUTHOR_ID"] = !isset($arFields["AUTHOR_ID"]) || intval($arFields["AUTHOR_ID"]) <= 0 ? false : $arFields["AUTHOR_ID"];
if (is_set($arFields, "USE_SMILES") || $ACTION=="ADD") $arFields["USE_SMILES"] = (isset($arFields["USE_SMILES"]) && $arFields["USE_SMILES"] == "N" ? "N" : "Y");
if (is_set($arFields, "NEW_TOPIC") || $ACTION=="ADD") $arFields["NEW_TOPIC"] = (isset($arFields["NEW_TOPIC"]) && $arFields["NEW_TOPIC"] == "Y" ? "Y" : "N");
if (is_set($arFields, "APPROVED") || $ACTION=="ADD") $arFields["APPROVED"] = (isset($arFields["APPROVED"]) && $arFields["APPROVED"] == "N" ? "N" : "Y");
if (is_set($arFields, "SOURCE_ID") || $ACTION=="ADD") $arFields["SOURCE_ID"] = (isset($arFields["SOURCE_ID"]) && $arFields["SOURCE_ID"] == "EMAIL" ? "EMAIL" : "WEB");
return True;
}