- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/lib/comments/comment.php
- Класс: BitrixForumCommentsComment
- Вызов: Comment::moderate
public function moderate($show)
{
if ($this->message === null)
{
$this->errorCollection->addOne(new Error(Loc::getMessage("FORUM_CM_ERR_COMMENT_IS_LOST3"), 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"],
"MESSAGE" => $this->getComment(),
"ACTION" => $show ? "SHOW" : "HIDE",
"PARAMS" => array("APPROVED" => ($show ? "Y" : "N"))
));
/***************** Events OnBeforeCommentModerate ****************/
$event = new Event("forum", "OnBeforeCommentModerate", $fields);
$event->send($this);
if($event->getResults())
{
foreach($event->getResults() as $eventResult)
{
if($eventResult->getType() != EventResult::SUCCESS)
{
$run = false;
break;
}
}
}
/***************** /Events *****************************************/
if ($run && $this->message["APPROVED"] == $fields[2]["PARAMS"]["APPROVED"] || ($mid = CForumMessage::update($this->message["ID"], $fields[2]["PARAMS"])) > 0)
{
$this->setComment($this->message["ID"]);
/***************** Event onMessageModerate ***********************/
$event = new Event("forum", "onMessageModerate", array($this->message["ID"], ($show ? "SHOW" : "HIDE"), $this->message, $this->topic));
$event->send();
/***************** Events OnCommentModerate ************************/
$event = new Event("forum", "OnCommentModerate", $fields);
$event->send();
/***************** Events OnAfterCommentUpdate *********************/
$event = new Event("forum", "OnAfterCommentUpdate", $fields); // It is not a mistake
$event->send();
/***************** /Events *****************************************/
$res = serialize(array(
"ID" => $this->message["ID"],
"AUTHOR_NAME" => $this->message["AUTHOR_NAME"],
"POST_MESSAGE" => $this->message["POST_MESSAGE"],
"TITLE" => $this->topic["TITLE"],
"TOPIC_ID" => $this->topic["ID"],
"FORUM_ID" => $this->topic["FORUM_ID"]));
CForumMessage::sendMailMessage($this->message["ID"], array(), false, ($show ? "NEW_FORUM_MESSAGE" : "EDIT_FORUM_MESSAGE"));
CForumEventLog::log("message", ($show ? "approve" : "unapprove"), $this->message["ID"], $res);
return $this->getComment();
}
else
{
$text = Loc::getMessage("FORUM_CM_ERR_MODERATE");
if (($ex = $this->getApplication()->getException()) && $ex)
$text = $ex->getString();
$this->errorCollection->addOne(new Error($text, self::ERROR_PARAMS_MESSAGE));
}
}
return false;
}