...Человеческий поиск в разработке...
- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/integration/socialnetwork/usecase/taskcreated.php
- Класс: Bitrix\Tasks\Integration\SocialNetwork\UseCase\TaskCreated
- Вызов: TaskCreated::execute
public function execute(Message $message): void { // TODO: this code was moved from classes/tasksnotifications and needs reraftoring global $DB; $task = $message->getMetaData()->getTask(); $arLogFilter = $this->getSonetLogFilter($task->getId(), $task->isCrm()); if (empty($arLogFilter)) { return; } // Check that user exists $rsUser = \CUser::GetList( 'ID', 'ASC', ['ID' => $task->getCreatedBy()], ['FIELDS' => ['ID']] ); if (!($arUser = $rsUser->Fetch())) { return; } $taskId = $task->getId(); $logDate = $DB->CurrentTimeFunction(); $curTimeTimestamp = time() + \CTimeZone::GetOffset(); $arSoFields = !$task->isCrm() ? ['EVENT_ID' => 'tasks', 'TITLE' => $task->getTitle(), 'MESSAGE' => '', 'MODULE_ID' => 'tasks'] : []; if ($task->getCreatedDate()) { $createdDateTimestamp = MakeTimeStamp($task->getCreatedDate(), $this->getDateFormat()); if ($createdDateTimestamp > $curTimeTimestamp) { $logDate = \Bitrix\Tasks\Util\Db::charToDateFunction( $task->getCreatedDate(), 'FULL', SITE_ID ); } } $arSoFields['TEXT_MESSAGE'] = GetMessage('TASKS_SONET_NEW_TASK_MESSAGE'); if ($task->getGroupId()) { $arSoFields['ENTITY_TYPE'] = SONET_ENTITY_GROUP; $arSoFields['ENTITY_ID'] = $task->getGroupId(); } else { $arSoFields['ENTITY_TYPE'] = SONET_ENTITY_USER; $arSoFields['ENTITY_ID'] = $task->getCreatedBy(); } $arParamsLog = [ 'TYPE' => 'create', 'CREATED_BY' => $message->getSender()->getId(), 'PREV_REAL_STATUS' => $task->getRealStatus() ]; $arSoFields['PARAMS'] = serialize($arParamsLog); // rating entity id (ilike) $arSoFields['RATING_ENTITY_ID'] = $taskId; $arSoFields['RATING_TYPE_ID'] = 'TASK'; if (IsModuleInstalled('webdav') || IsModuleInstalled('disk')) { $ufDocID = $GLOBALS['USER_FIELD_MANAGER']->GetUserFieldValue('TASKS_TASK', 'UF_TASK_WEBDAV_FILES', $taskId, LANGUAGE_ID); if ($ufDocID) { $arSoFields['UF_SONET_LOG_DOC'] = $ufDocID; } } $rsSocNetLogItems = \CSocNetLog::GetList( ['ID' => 'DESC'], $arLogFilter, false, false, ['ID', 'ENTITY_TYPE', 'ENTITY_ID'] ); if ($rsSocNetLogItems->Fetch()) { return; } $arSoFields['=LOG_DATE'] = $logDate; $arSoFields['CALLBACK_FUNC'] = false; $arSoFields['SOURCE_ID'] = $taskId; $arSoFields['ENABLE_COMMENTS'] = 'Y'; $arSoFields['URL'] = ''; // url is user-specific, cant keep in database $arSoFields['USER_ID'] = $task->getCreatedBy(); $arSoFields['TITLE_TEMPLATE'] = '#TITLE#'; // Set all sites because any user from any site may be // added to task in future. For example, new auditor, etc. $arSoFields['SITE_ID'] = $this->getSiteIds(); $logId = (int)\CSocNetLog::Add($arSoFields, false); if ($logId > 0) { $logFields = [ 'TMP_ID' => $logId, 'TAG' => [], ]; $tagsResult = \CTaskTags::getList([], ['TASK_ID' => $taskId]); while ($row = $tagsResult->fetch()) { $logFields['TAG'][] = $row['NAME']; } \CSocNetLog::Update($logId, $logFields); $taskMembers = $message->getMetaData()->getUserRepository()->getRecepients( $task, $message->getSender() ); $rights = $this->recepients2Rights($taskMembers); if ($task->getGroupId()) { $rights = array_merge( $rights, ['SG' . $task->getGroupId()] ); } \CSocNetLogRights::Add($logId, $rights); \CSocNetLog::SendEvent($logId, 'SONET_NEW_EVENT', $logId); } }