- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/lib/comments/comment.php
- Класс: BitrixForumCommentsComment
- Вызов: Comment::prepareFields
private function prepareFields(array &$params, ErrorCollection $errorCollectionParam)
{
$result = array(
"FORUM_ID" => $this->topic["FORUM_ID"],
"TOPIC_ID" => $this->topic["ID"],
"POST_MESSAGE" => trim($params["POST_MESSAGE"]),
"AUTHOR_ID" => $params["AUTHOR_ID"],
"AUTHOR_NAME" => trim($params["AUTHOR_NAME"]),
"AUTHOR_EMAIL" => trim($params["AUTHOR_EMAIL"]),
"USE_SMILES" => ($params["USE_SMILES"] == "Y" ? "Y" : "N"),
"APPROVED" => $this->topic["APPROVED"],
"XML_ID" => $this->getEntity()->getXmlId(),
"AUX" => ($params["AUX"] ?? 'N'),
"AUX_DATA" => ($params["AUX_DATA"] ?? ''),
) + array_intersect_key($params, array_flip([
"POST_DATE", "SOURCE_ID",
"AUTHOR_IP", "AUTHOR_REAL_IP",
"GUEST_ID"
]));
$errorCollection = new ErrorCollection();
if (isset($params["SERVICE_TYPE"]))
{
if (!in_array($params["SERVICE_TYPE"], BitrixForumCommentsServiceManager::getTypesList()))
{
$errorCollection->addOne(new Error(Loc::getMessage("FORUM_CM_ERR_TYPE_INCORRECT"), self::ERROR_PARAMS_TYPE));
}
else
{
$result["SERVICE_TYPE"] = $params["SERVICE_TYPE"];
if (!isset($params["SERVICE_DATA"]))
{
if (($result["SERVICE_TYPE"] === BitrixForumCommentsServiceManager::TYPE_TASK_INFO ||
$result["SERVICE_TYPE"] === BitrixForumCommentsServiceManager::TYPE_TASK_CREATED)
&& JSon::decode($result["POST_MESSAGE"]) == $params["AUX_DATA"])
{
$params["SERVICE_DATA"] = $result["POST_MESSAGE"];
$result["POST_MESSAGE"] = "";
}
else
{
$params["SERVICE_DATA"] = Json::encode($params["AUX_DATA"] ?? []);
}
}
$result["SERVICE_DATA"] = $params["SERVICE_DATA"];
if ($result["POST_MESSAGE"] == "" &&
($handler = BitrixForumCommentsServiceManager::find(
["SERVICE_TYPE" => $result["SERVICE_TYPE"]]
)))
{
$result["POST_MESSAGE"] = $handler->getText($result["SERVICE_DATA"]);
}
}
}
if ($result["POST_MESSAGE"] == '')
{
$errorCollection->addOne(new Error(Loc::getMessage("FORUM_CM_ERR_EMPTY_TEXT"), self::ERROR_PARAMS_MESSAGE));
}
if ($result["AUTHOR_NAME"] == '' && $result["AUTHOR_ID"] > 0)
$result["AUTHOR_NAME"] = self::getUserName($result["AUTHOR_ID"]);
if ($result["AUTHOR_NAME"] == '')
$errorCollection->addOne(new Error(Loc::getMessage("FORUM_CM_ERR_EMPTY_AUTHORS_NAME"), self::ERROR_PARAMS_MESSAGE));
if (is_array($params["FILES"]) && in_array($this->forum["ALLOW_UPLOAD"], array("Y", "F", "A")))
{
$result["FILES"] = array();
foreach ($params["FILES"] as $key => $val)
{
if (intval($val["FILE_ID"]) > 0 && $val["del"] !== "Y")
{
unset($val["del"]);
}
$result["FILES"][$key] = $val;
}
$res = array(
"FORUM_ID" => $this->forum["ID"],
"TOPIC_ID" => $this->topic["ID"],
"MESSAGE_ID" => 0,
"USER_ID" => $result["AUTHOR_ID"],
"FORUM" => $this->forum
);
if (!CForumFiles::checkFields($result["FILES"], $res, "NOT_CHECK_DB"))
{
$text = "File upload error.";
if (($ex = $this->getApplication()->getException()) && $ex)
$text = $ex->getString();
$errorCollection->addOne(new Error($text, self::ERROR_PARAMS_MESSAGE));
}
}
if ($result["APPROVED"] != "N")
{
$result["APPROVED"] = ($this->forum["MODERATION"] != "Y" || $this->getEntity()->canModerate($this->getUser()->getId())) ? "Y" : "N";
}
if ($errorCollection->hasErrors())
{
$errorCollectionParam->add($errorCollection->toArray());
return false;
}
global $USER_FIELD_MANAGER;
if (!empty($result["SERVICE_TYPE"]))
{
$fields = $USER_FIELD_MANAGER->getUserFields("FORUM_MESSAGE");
if (($ufData = array_intersect_key($params, $fields)) && !empty($ufData))
{
$USER_FIELD_MANAGER->editFormAddFields("FORUM_MESSAGE", $result, ["FORM" => $ufData]);
}
}
else
{
$USER_FIELD_MANAGER->editFormAddFields("FORUM_MESSAGE", $result);
}
$params = $result;
return true;
}