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