- Модуль: 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);
}
}