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