• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/internals/rights/table/rightsetupsession.php
  • Класс: BitrixDiskInternalsRightsTableRightSetupSessionTable
  • Вызов: RightSetupSessionTable::markAsBad
static function markAsBad()
{
	$badStatus = self::STATUS_BAD;
	$purifiedStatus = self::STATUS_BAD_PURIFIED;
	$startedStatus = self::STATUS_STARTED;

	$connection = Application::getConnection();
	$connection->queryExecute("
		UPDATE b_disk_right_setup_session s
		INNER JOIN b_disk_right_setup_session s1 ON s1.PARENT_ID=s.ID
		INNER JOIN b_disk_right_setup_session s2 ON s2.PARENT_ID=s1.ID
		SET s2.STATUS = {$badStatus}
		WHERE s2.STATUS = {$startedStatus}
	");

	$badIds = $connection->query(
		"SELECT ID FROM b_disk_right_setup_session WHERE STATUS = {$badStatus} ORDER BY CREATE_TIME LIMIT 50"
	);

	foreach ($badIds as $badId)
	{
		$badId = $badId['ID'];

		$connection->queryExecute("
			DELETE FROM b_disk_tmp_simple_right WHERE SESSION_ID = {$badId}
		");
		$connection->queryExecute("
			UPDATE b_disk_right_setup_session SET STATUS = {$purifiedStatus} WHERE ID = {$badId}
		");
	}
}