- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/integration/recyclebin/task.php
- Класс: BitrixTasksIntegrationRecyclebinTask
- Вызов: Task::removeFromRecyclebin
static function removeFromRecyclebin(Entity $entity, array $params = [])
{
global $USER_FIELD_MANAGER;
$result = new Result;
$taskData = null;
foreach ($entity->getData() as $data)
{
if (
is_array($data)
&& array_key_exists('ACTION', $data)
&& $data['ACTION'] === 'TASK'
)
{
$taskData = unserialize($data['DATA'], ['allowed_classes' => ['BitrixTasksUtilTypeDateTime', 'BitrixMainTypeDateTime', 'DateTime']]);
}
}
try
{
$taskId = $entity->getEntityId();
$tablesToClear = [
ViewedTable::class => ['TASK_ID', 'USER_ID'],
ParameterTable::class => ['ID'],
SearchIndexTable::class => ['ID']
];
CTaskFiles::DeleteByTaskID($taskId);
CTaskTags::DeleteByTaskID($taskId);
CTaskReminders::DeleteByTaskID($taskId);
FavoriteTable::deleteByTaskId($taskId, ['LOW_LEVEL' => true]);
SortingTable::deleteByTaskId($taskId);
UserOption::deleteByTaskId($taskId);
TaskStageTable::clearTask($taskId);
TaskCheckListFacade::deleteByEntityIdOnLowLevel($taskId);
foreach ($tablesToClear as $table => $select)
{
/** @var BitrixMainORMQueryResult $tableResult */
$tableResult = $table::getList([
"select" => $select,
"filter" => [
"=TASK_ID" => $taskId,
],
]);
while ($item = $tableResult->fetch())
{
$table::delete($item);
}
}
if ($taskData)
{
IntegrationForumTaskTopic::delete($taskData["FORUM_TOPIC_ID"]);
}
IntegrationIMInternalsLinkTask::delete($taskId);
$USER_FIELD_MANAGER->Delete('TASKS_TASK', $taskId);
ItemTable::deleteBySourceId($taskId);
TaskTable::delete($taskId);
}
catch (Exception $e)
{
$result->addError(new Error($e->getMessage(), $e->getCode()));
}
IntegrationSocialNetworkLog::deleteLogByTaskId($taskId);
return $result;
}