• Модуль: imconnector
  • Путь к файлу: ~/bitrix/modules/imconnector/lib/update/update200650.php
  • Класс: BitrixImconnectorUpdateUpdate200650
  • Вызов: Update200650::execute
public function execute(array &$result): bool
{
	$return = false;

	$status = $this->loadCurrentStatus();

	if ($status['count'] > 0)
	{
		if(
			!is_numeric($status['lastId']) ||
			$status['lastId'] < 0
		)
		{
			$status['lastId'] = 0;
		}

		$found = false;
		$files = [];

		$rawFile = FileTable::getList([
			'select' => ['ID'],
			'filter' => [
				'MODULE_ID' => self::$moduleId,
				'>ID' => $status['lastId']
			],
			'limit' => self::PORTION,
			'order' => ['ID' => 'ASC'],
		]);

		while ($rowFile = $rawFile->fetch())
		{
			if(!empty($rowFile['ID']))
			{
				$files[$rowFile['ID']] = $rowFile['ID'];
			}

			$status['lastId'] = $rowFile['ID'];
			$status['number']++;
			$found = true;
		}

		if(!empty($files))
		{
			$rawUser = UserTable::getList([
				'select' => ['PERSONAL_PHOTO'],
				'filter' => ['PERSONAL_PHOTO' => $files],
			]);

			while ($rowUser = $rawUser->fetch())
			{
				if(!empty($files[$rowUser['PERSONAL_PHOTO']]))
				{
					unset($files[$rowUser['PERSONAL_PHOTO']]);
				}
			}
		}

		if(
			!empty($files) &&
			Loader::includeModule('disk')
		)
		{
			$rawDisk = VersionTable::getList([
				'select' => ['FILE_ID'],
				'filter' => ['FILE_ID' => $files],
			]);

			while ($rowDisk = $rawDisk->fetch())
			{
				if(!empty($files[$rowDisk['FILE_ID']]))
				{
					unset($files[$rowDisk['FILE_ID']]);
				}
			}
		}

		if(!empty($files))
		{
			foreach ($files as $fileId)
			{
				CFile::Delete($fileId);
			}
		}

		if ($found)
		{
			Option::set(self::$moduleId, self::OPTION_NAME, serialize($status));
			$return = true;
		}

		if ($found === false)
		{
			Option::delete(self::$moduleId, ['name' => self::OPTION_NAME]);
		}
	}

	return $return;
}