- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/lib/message.php
- Класс: BitrixForumMessageTable
- Вызов: MessageTable::onBeforeUpdate
static function onBeforeUpdate(MainORMEvent $event)
{
$result = new MainORMEventResult();
/** @var array $data */
$data = $event->getParameter("fields");
$id = $event->getParameter("id");
$id = $id["ID"];
$strUploadDir = array_key_exists("UPLOAD_DIR", $data) ? $data["UPLOAD_DIR"] : "forum";
self::modifyMessageFields($data);
if (MainConfigOption::get("forum", "FILTER", "Y") == "Y" &&
!empty(array_intersect(self::getFilteredFields(), array_keys($data))))
{
$forFilter = $data;
if (
array_intersect(self::getFilteredFields(), array_keys($data)) !== self::getFilteredFields() &&
($message = MessageTable::getDataById($id))
)
{
$forFilter = array_merge($message, $forFilter);
}
$res = [];
foreach (self::getFilteredFields() as $key)
{
$res[$key] = array_key_exists($key, $forFilter) ? $forFilter[$key] : "";
if (!empty($res[$key]))
{
$res[$key] = CFilterUnquotableWords::Filter($res[$key]);
if ($res[$key] == '' )
{
$res[$key] = "*";
}
}
}
$data["HTML"] = serialize($res);
}
if (array_key_exists("POST_MESSAGE", $data))
{
$data["POST_MESSAGE"] = MainTextEmoji::encode($data["POST_MESSAGE"]);
if (MainConfigOption::get("forum", "FILTER", "Y") == "Y")
{
$data["POST_MESSAGE_FILTER"] = CFilterUnquotableWords::Filter($data["POST_MESSAGE"]);
}
}
unset($data["AUX"]);
unset($data["DEDUPLICATION"]);
//region Files
if (array_key_exists("ATTACH_IMG", $data) && !empty($data["ATTACH_IMG"]))
{
if (!array_key_exists("FILES", $data))
{
$data["FILES"] = [];
}
$data["FILES"][] = $data["ATTACH_IMG"];
unset($data["ATTACH_IMG"]);
}
if (array_key_exists("FILES", $data))
{
$data["FILES"] = is_array($data["FILES"]) ? $data["FILES"] : [$data["FILES"]];
if (!empty($data["FILES"]))
{
$fileFields = $data + MessageTable::getDataById($id);
$res = ForumFile::checkFiles(
ForumForum::getById($fileFields["FORUM_ID"]),
$data["FILES"],
[
"FORUM_ID" => $fileFields["FORUM_ID"],
"TOPIC_ID" => $fileFields["TOPIC_ID"],
"MESSAGE_ID" => $id,
"USER_ID" => $fileFields["AUTHOR_ID"]
]
);
if (!$res->isSuccess())
{
$result->setErrors($res->getErrors());
}
else
{
/*@var MainORMObjectifyEntityObject $object*/
$object = $event->getParameter("object");
/*@var MainDictionary $object->customData*/
$object->sysSetRuntime("FILES", $data["FILES"]);
$object->sysSetRuntime("UPLOAD_DIR", $strUploadDir);
$object->sysSetRuntime("FILE_FIELDS", $fileFields);
}
}
unset($data["FILES"]);
}
//endregion
$fields = $event->getParameter("fields");
if ($data != $fields)
{
foreach ($fields as $key => $val)
{
if (!array_key_exists($key, $data))
{
$result->unsetField($key);
}
else if ($data[$key] == $val)
{
unset($data[$key]);
}
}
$result->modifyFields($data);
}
return $result;
}