• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity/provider/task.php
  • Класс: Bitrix\Crm\Activity\Provider\Task
  • Вызов: Task::createLiveFeedLog
static function createLiveFeedLog($entityId, array $activity, array &$logFields)
{
	$entityId = (int) $entityId;
	$activityId = isset($activity['ID']) ? (int)$activity['ID'] : 0;
	if ($entityId <= 0 || !Loader::includeModule('tasks') || !Loader::includeModule('socialnetwork'))
	{
		return false;
	}

	$eventId = 0;

	$dbTask = \CTasks::getByID($entityId, false);
	if ($task = $dbTask->fetch())
	{
		$ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->getUserFieldValue("TASKS_TASK", "UF_TASK_WEBDAV_FILES", $task["ID"], LANGUAGE_ID);
		if ($ufDocID)
		{
			$logFields["UF_SONET_LOG_DOC"] = $ufDocID;
		}
	}

	if ($task)
	{
		$rsLog = \CSocNetLog::getList(
			array(),
			array(
				"EVENT_ID" => "tasks",
				"SOURCE_ID" => $task["ID"]
			),
			array("ID")
		);
		if ($arLog = $rsLog->fetch())
		{
			$eventId = (int)\CCrmLiveFeed::convertTasksLogEvent(array(
				"LOG_ID" => $arLog["ID"],
				"ACTIVITY_ID" => $activityId,
				"PARENTS" => (!empty($logFields['PARENTS']) ? $logFields['PARENTS'] : array())
			));
		}
		elseif (!empty($task['GROUP_ID']))
		{
			$arSite = array();
			$rsGroupSite = \CSocNetGroup::getSite(intval($task['GROUP_ID']));
			if ($rsGroupSite)
			{
				while($arGroupSite = $rsGroupSite->fetch())
				{
					$arSite[] = $arGroupSite["LID"];
				}
			}
			if (!empty($arSite))
			{
				$logFields['SITE_ID'] = $arSite;
			}
		}
	}

	if ($eventId === 0)
	{
		if ($task['CREATED_BY'] > 0)
		{
			$logFields['USER_ID'] = $task['CREATED_BY'];
		}
		$eventId = \CCrmLiveFeed::createLogEvent($logFields, \CCrmLiveFeedEvent::Add, array('ACTIVITY_PROVIDER_ID' => self::getId()));
	}

	if ($task && $eventId > 0)
	{
		$arTaskParticipant = \CTaskNotifications::getRecipientsIDs($task, false);// don't exclude current user

		$arSocnetRights = \CTaskNotifications::__userIDs2Rights($arTaskParticipant);

		if (
			isset($task['GROUP_ID'])
			&& intval($task['GROUP_ID']) > 0
		)
		{
			$arSocnetRights = array_merge(
				$arSocnetRights,
				array('SG'.$task['GROUP_ID'])
			);
		}

		\CSocNetLogRights::DeleteByLogID($eventId);
		\CSocNetLogRights::Add($eventId, $arSocnetRights);
	}

	return $eventId;
}