- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/task/result/resultmanager.php
- Класс: BitrixTasksInternalsTaskResultResultManager
- Вызов: ResultManager::createFromComment
public function createFromComment(int $commentId, bool $checkServiceData = true): ?Result
{
$comment = $this->loadComment($commentId);
if (
!$comment
|| (int) $comment->getServiceType() === 1
)
{
return null;
}
if (
$checkServiceData
&& $comment->getServiceData() !== self::COMMENT_SERVICE_DATA
)
{
return null;
}
else if (
!$checkServiceData
&& $comment->getServiceData() !== self::COMMENT_SERVICE_DATA
)
{
$comment->setServiceData(self::COMMENT_SERVICE_DATA);
$comment->save();
}
$taskId = (int) str_replace('TASK_', '', $comment->getXmlId());
$task = $this->loadTask($taskId);
if (!$task)
{
return null;
}
$result = new Result();
$result->setTaskId($taskId);
$result->setCommentId($commentId);
$result->setCreatedBy($this->userId);
$result->setCreatedAt($comment->getPostDate());
$result->setText($comment->getPostMessage());
$result->setUpdatedAt($comment->getPostDate());
if (in_array((int)$task->getStatus(), [Status::COMPLETED,Status::SUPPOSEDLY_COMPLETED], true))
{
$result->setStatus(ResultTable::STATUS_CLOSED);
}
else
{
$result->setStatus(ResultTable::STATUS_OPENED);
}
$result->save();
$this->updateUf($result, $commentId);
$this->sendPush(self::COMMAND_CREATE, $result);
$this->log($result, self::RESULT_ADD);
$this->executeAutomationTrigger($task, $result);
$this->sendTimelineEvent($task);
return $result;
}