- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/lib/comments/comment.php
- Класс: BitrixForumCommentsComment
- Вызов: Comment::edit
public function edit(array $params)
{
$paramsRaw = $params;
if ($this->message === null)
{
$this->errorCollection->addOne(new Error(Loc::getMessage("FORUM_CM_ERR_COMMENT_IS_LOST1"), self::ERROR_MESSAGE_IS_NULL));
}
else
{
$run = true;
$fields = array(
$this->getEntity()->getType(),
$this->getEntity()->getId(),
array(
"TOPIC_ID" => $this->topic["ID"],
"MESSAGE_ID" => $this->message["ID"],
"PARAMS" => &$paramsRaw,
"ACTION" => "EDIT",
"MESSAGE" => $this->getComment()
)
);
/***************** Events OnBeforeCommentUpdate ******************/
$event = new Event("forum", "OnBeforeCommentUpdate", $fields);
$event->send($this);
if($event->getResults())
{
foreach($event->getResults() as $eventResult)
{
if($eventResult->getType() != EventResult::SUCCESS)
{
$run = false;
break;
}
}
}
/***************** /Events *****************************************/
if (!$run)
{
$text = Loc::getMessage("ADDMESS_ERROR_EDIT_MESSAGE");
if (($str = $this->getApplication()->getException()) && $str)
$text = $str->getString();
$this->errorCollection->addOne(new Error($text, self::ERROR_PARAMS_MESSAGE));
}
else if (($params = array(
"POST_MESSAGE" => trim($params["POST_MESSAGE"]),
"AUTHOR_ID" => $this->message["AUTHOR_ID"],
"AUTHOR_NAME" => (array_key_exists("AUTHOR_NAME", $params) ? trim($params["AUTHOR_NAME"]) : $this->message["AUTHOR_NAME"]),
"AUTHOR_EMAIL" => (array_key_exists("AUTHOR_EMAIL", $params) ? trim($params["AUTHOR_EMAIL"]) : $this->message["AUTHOR_EMAIL"]),
"USE_SMILES" => $params["USE_SMILES"],
"FILES" => $params["FILES"],
"AUX" => $params["AUX"],
"AUX_DATA" => $params["AUX_DATA"],
)) && $this->prepareFields($params, $this->errorCollection))
{
if (array_key_exists("POST_DATE", $paramsRaw))
{
$params["POST_DATE"] = $paramsRaw["POST_DATE"];
}
if (array_key_exists("EDIT_REASON", $paramsRaw))
{
$params += array(
"EDITOR_ID" => $this->getUser()->getId(),
"EDITOR_NAME" => trim($paramsRaw["EDITOR_NAME"]),
"EDITOR_EMAIL" => trim($paramsRaw["EDITOR_EMAIL"]),
"EDIT_REASON" => trim($paramsRaw["EDIT_REASON"]),
"EDIT_DATE" => ""
);
if ($params["EDITOR_NAME"] == '')
$params["EDITOR_NAME"] = ($params["EDITOR_ID"] > 0 ? self::getUserName($params["EDITOR_ID"]) : Loc::getMessage("GUEST"));
}
$result = BitrixForumMessage::getById($this->message["ID"])->edit($params);
if ($result->isSuccess())
{
$mid = $this->message["ID"];
unset($GLOBALS["FORUM_CACHE"]["MESSAGE"][$mid]);
unset($GLOBALS["FORUM_CACHE"]["MESSAGE_FILTER"][$mid]);
if ($params["AUTHOR_ID"] != $this->getUser()->getId() || Option::get("forum", "LOGS", "Q") < "U")
{
$resLog = array();
foreach ($paramsRaw as $key => $val)
{
if ($val == $this->message[$key])
continue;
else if ($key == "FILES")
$resLog["FILES"] = GetMessage("F_ATTACH_IS_MODIFIED");
else
$resLog[$key] = array(
"before" => $this->message[$key],
"after" => $val
);
}
if (!empty($resLog))
{
$resLog["FORUM_ID"] = $this->forum["ID"];
$resLog["TOPIC_ID"] = $this->topic["ID"];
$resLog["TITLE"] = $this->topic["TITLE"];
CForumEventLog::log("message", "edit", $this->message["ID"], serialize($resLog));
}
}
$this->updateStatisticModule($mid);
CForumMessage::sendMailMessage($mid, array(), false, "EDIT_FORUM_MESSAGE");
$this->setComment($mid);
$fields["PARAMS"] = $params;
/***************** Events OnAfterCommentUpdate *******************/
$event = new Event("forum", "OnAfterCommentUpdate", $fields);
$event->send();
/***************** /Events *****************************************/
return $this->getComment();
}
$this->errorCollection->addFromResult($result);
}
}
return false;
}