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