- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/internals/steppers/deletedlogmover.php
- Класс: BitrixDiskInternalsSteppersDeletedLogMover
- Вызов: DeletedLogMover::execute
public function execute(array &$result)
{
$statusAgent = self::getStatus();
if ($statusAgent === self::STATUS_DONE || $statusAgent === self::STATUS_PAUSE)
{
return self::FINISH_EXECUTION;
}
$status = $this->loadCurrentStatus();
$lastId = (int)$status['lasId'];
$newStatus = [
'lasId' => $status['lasId'],
];
$connection = Application::getConnection();
$connection->queryExecute("
INSERT IGNORE INTO b_disk_deleted_log_v2 (ID, USER_ID, STORAGE_ID, OBJECT_ID, TYPE, CREATE_TIME)
SELECT ID, USER_ID, STORAGE_ID, OBJECT_ID, TYPE, CREATE_TIME FROM b_disk_deleted_log
WHERE ID < {$lastId}
ORDER BY ID DESC
LIMIT {$this->portionSize}
");
$newStatus['lasId'] = $connection->queryScalar("
SELECT MIN(t.ID)
FROM (
SELECT l.ID FROM b_disk_deleted_log l
WHERE l.ID < {$lastId}
ORDER BY l.ID DESC
LIMIT {$this->portionSize}
) t
");
if ($newStatus['lasId'] > 0)
{
Option::set('disk', 'deleted_log_migrate_data', serialize($newStatus));
$result = [];
return self::CONTINUE_EXECUTION;
}
self::stopExecution();
$connection->queryExecute('TRUNCATE TABLE b_disk_deleted_log');
return self::FINISH_EXECUTION;
}