• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/disk/norelationpermission.php
  • Класс: BitrixImDiskNoRelationPermission
  • Вызов: NoRelationPermission::cleaningAgent
static function cleaningAgent()
{
	if (!BitrixMainModuleManager::isModuleInstalled('disk'))
	{
		return __METHOD__.'();';
	}

	$connection = BitrixMainApplication::getInstance()->getConnection();

	$relationTbl = RelationTable::getTableName();
	$noRelationPermTbl = NoRelationPermissionDiskTable::getTableName();

	$connection->queryExecute("
		DELETE 
		FROM 
			{$noRelationPermTbl}
		WHERE (CHAT_ID, USER_ID) in (
			select CHAT_ID, USER_ID FROM {$relationTbl}
		)
	");

	$result = NoRelationPermissionDiskTable::getList([
		'select' => ['CHAT_ID', 'USER_ID'],
		'filter' => [
			'<=ACTIVE_TO' => DateTime::createFromTimestamp(time())
		]
	]);
	$pseudoRelation = [];
	while($row = $result->fetch())
	{
		$pseudoRelation[$row['CHAT_ID']][$row['USER_ID']] = $row['USER_ID'];
	}

	$connection->queryExecute("DELETE FROM {$noRelationPermTbl} WHERE ACTIVE_TO <= now()");

	foreach ($pseudoRelation as $chatId => $userDelete)
	{
		CIMDisk::changeFolderMembers($chatId, $userDelete, false);
	}

	return __METHOD__.'();';
}