• Модуль: 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;
}