• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/replica/taskhandler.php
  • Класс: BitrixTasksReplicaTaskHandler
  • Вызов: TaskHandler::deleteAction
public function deleteAction(array $oldRecord)
{
	global $CACHE_MANAGER;

	CounterService::getInstance()->collectData((int) $oldRecord['ID']);

	$oldRecord['ACCOMPLICES'] = array();
	$oldRecord['AUDITORS'] = array();
	$list = BitrixTasksInternalsTaskMemberTable::getList(array(
		"filter" => array(
			"=TASK_ID" => $oldRecord["ID"],
		),
	));
	while ($item = $list->fetch())
	{
		if ($item['TYPE'] == 'A')
			$oldRecord['ACCOMPLICES'][] = $item['USER_ID'];
		elseif ($item['TYPE'] == 'U')
			$oldRecord['AUDITORS'][] = $item['USER_ID'];
	}

	$arParticipants = array_unique(array_merge(
		array($oldRecord["CREATED_BY"], $oldRecord["RESPONSIBLE_ID"]),
		$oldRecord["ACCOMPLICES"],
		$oldRecord["AUDITORS"]
	));

	CTaskNotifications::sendDeleteMessage($oldRecord);

	// Emit pull event
	try
	{
		$eventGUID = sha1(uniqid('AUTOGUID', true));
		$arPullRecipients = array();

		foreach($arParticipants as $userId)
			$arPullRecipients[] = (int) $userId;

		$arPullData = array(
			'TASK_ID' => (int) $oldRecord["ID"],
			'BEFORE' => array(
				'GROUP_ID' => 0
			),
			'TS' => time(),
			'event_GUID' => $eventGUID
		);

		CTasks::EmitPullWithTagPrefix(
			$arPullRecipients,
			'TASKS_GENERAL_',
			'task_remove',
			$arPullData
		);

		CTasks::EmitPullWithTag(
			$arPullRecipients,
			'TASKS_TASK_' . (int) $oldRecord["ID"],
			'task_remove',
			$arPullData
		);
	}
	catch (Exception $e)
	{
	}

	if (CModule::IncludeModule("search"))
	{
		CSearch::DeleteIndex("tasks", $oldRecord["ID"]);
	}
	$this->clearSearchIndex((int)$oldRecord['ID']);

	CounterService::addEvent(
		EventDictionary::EVENT_AFTER_TASK_DELETE,
		$oldRecord
	);

	// clear cache
	$CACHE_MANAGER->ClearByTag("tasks_".$oldRecord["ID"]);

	foreach($arParticipants as $userId)
	{
		$CACHE_MANAGER->ClearByTag("tasks_user_".$userId);
	}
}