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