- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/lib/comments/comment.php
- Класс: Bitrix\Forum\Comments\Comment
- Вызов: Comment::add
public function add(array $params)
{
$aux = (isset($params['AUX']) && $params['AUX'] === "Y");
$auxData = ($params['AUX_DATA'] ?? '');
$params = array(
"SOURCE_ID" => $params["SOURCE_ID"] ?? 0,
"POST_DATE" => array_key_exists("POST_DATE", $params) ? $params["POST_DATE"] : new \Bitrix\Main\Type\DateTime(),
"POST_MESSAGE" => trim($params["POST_MESSAGE"]),
"FILES" => $params["FILES"] ?? null,
"USE_SMILES" => $params["USE_SMILES"],
"AUTHOR_ID" => $this->getUser()->getId(),
"AUTHOR_NAME" => trim($params["AUTHOR_NAME"] ?? ''),
"AUTHOR_EMAIL" => trim($params["AUTHOR_EMAIL"] ?? ''),
"AUTHOR_IP" => $params["AUTHOR_IP"] ?? "",
"AUTHOR_REAL_IP" => $params["AUTHOR_REAL_IP"] ?? "",
"GUEST_ID" => $params["GUEST_ID"] ?? null,
"AUX" => $params["AUX"] ?? null,
"AUX_DATA" => $auxData,
"SERVICE_TYPE" => ($params["SERVICE_TYPE"] ?? null),
"SERVICE_DATA" => ($params["SERVICE_DATA"] ?? null),
"UF_TASK_COMMENT_TYPE" => ($params["UF_TASK_COMMENT_TYPE"] ?? null),
"UF_FORUM_MES_URL_PRV" => ($params["UF_FORUM_MES_URL_PRV"] ?? null),
);
if ($this->prepareFields($params, $this->errorCollection))
{
/***************** Events OnBeforeCommentAdd ******************/
$event = new Event("forum", "OnBeforeCommentAdd", [
$this->getEntity()->getType(),
$this->getEntity()->getId(),
$params
]);
$event->send($this);
if($event->getResults())
{
foreach($event->getResults() as $eventResult)
{
if($eventResult->getType() != EventResult::SUCCESS)
{
$run = false;
break;
}
}
}
/***************** /Events *****************************************/
$topic = \Bitrix\Forum\Topic::getById($params["TOPIC_ID"]);
$result = \Bitrix\Forum\Message::create($topic, $params);
if ($result->isSuccess())
{
$mid = $result->getId();
if (!$aux)
{
$this->updateStatisticModule($mid);
\CForumMessage::sendMailMessage($mid, array(), false, "NEW_FORUM_MESSAGE");
}
$this->setComment($mid);
if (
!$aux // create task from livefeed
|| $auxData <> '' // tasks commentposter, add to livefeed
)
{
$event = new Event("forum", "OnAfterCommentAdd", array(
$this->getEntity()->getType(),
$this->getEntity()->getId(),
array(
"TOPIC_ID" => $this->topic["ID"],
"MESSAGE_ID" => $mid,
"PARAMS" => $params,
"MESSAGE" => $this->getComment(),
"AUX_DATA" => $auxData
))
);
$event->send();
}
return $this->getComment();
}
$this->errorCollection->addFromResult($result);
}
return false;
}