• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/disk/norelationpermission.php
  • Класс: BitrixImDiskNoRelationPermission
  • Вызов: NoRelationPermission::add
static function add($chatId, $userId)
{
	$result =  false;

	$rowRelation = RelationTable::getRow(array(
		'select' => array('ID'),
		'filter' => array(
			'=CHAT_ID' => $chatId,
			'=USER_ID' => $userId
		),
		'cache'=>array('ttl'=>self::CACHE_TIME)
	));
	if(empty($rowRelation))
	{
		if(CIMDisk::ChangeFolderMembers($chatId, $userId))
		{
			$raw = NoRelationPermissionDiskTable::getList(array(
				'select' => array('ID'),
				'filter' => array('=CHAT_ID' => $chatId, '=USER_ID' => $userId),
				'cache'=>array('ttl'=>self::CACHE_TIME)
			));

			$count = 0;
			while ($row = $raw->fetch())
			{
				$count++;

				if($count>1)
				{
					NoRelationPermissionDiskTable::delete($row['ID']);
				}
				else
				{
					$updateRaw = NoRelationPermissionDiskTable::update($row['ID'], array(
						'ACTIVE_TO' => DateTime::createFromTimestamp(time() + self::ACCESS_TIME)
					));

					if($updateRaw->isSuccess())
						$result = true;
				}
			}

			if($count === 0)
			{
				$addRaw = NoRelationPermissionDiskTable::add(array(
					'CHAT_ID' => $chatId,
					'USER_ID' => $userId,
					'ACTIVE_TO' => DateTime::createFromTimestamp(time() + self::ACCESS_TIME)
				));

				if($addRaw->isSuccess())
					$result = true;
			}
		}
	}

	return $result;
}