/** * Checks read permissions by user for group. * Uses denormalized rights (b_disk_simple_right). * * Be careful^ this is internal method. * @param mixed $user User. * @param int $groupId Id of group. * @internal * @return bool */ public static function canRead($user, $groupId) { $entityType = static::className(); $groupStorage = Storage::buildFromArray(array('ENTITY_ID' => $groupId, 'ENTITY_TYPE' => $entityType)); $proxyType = new static($groupId, $groupStorage); $parameters = array('filter' => array('ENTITY_ID' => (int) $groupId, 'ENTITY_TYPE' => $entityType, 'MODULE_ID' => Driver::INTERNAL_MODULE_ID, 'USE_INTERNAL_RIGHTS' => 1)); $parameters = Driver::getInstance()->getRightsManager()->addRightsCheck($proxyType->getSecurityContextByUser($user), $parameters, array('ROOT_OBJECT_ID', 'USE_INTERNAL_RIGHTS')); return (bool) Storage::getList($parameters)->fetch(); }
/** * Creates storage if it doesn't exist. * See method Driver::addStorage. * * @param array $data Data to add storage. * @param array $rights Rights on storage. * @throws \Bitrix\Main\ArgumentException * @return null|Storage */ public function addStorageIfNotExist(array $data, array $rights = array()) { $filter = array_intersect_key($data, array('ID' => true, 'MODULE_ID' => true, 'ENTITY_TYPE' => true, 'ENTITY_ID' => true)); if (empty($filter)) { throw new ArgumentException('Empty fields for filtering.'); } $storage = Storage::getList(array('select' => array('ID'), 'filter' => $filter))->fetch(); if ($storage) { return Storage::loadById($storage['ID']); } return self::addStorage($data, $rights); }