/**
  * (non-PHPdoc)
  * @see \oat\generis\model\data\PermissionInterface::getPermissions()
  */
 public function getPermissions(User $user, array $resourceIds)
 {
     if (in_array(INSTANCE_ROLE_SYSADMIN, $user->getRoles())) {
         $permissions = array();
         foreach ($resourceIds as $id) {
             $permissions[$id] = $this->getSupportedRights();
         }
         return $permissions;
     }
     $dbAccess = new DataBaseAccess();
     $userIds = $user->getRoles();
     $userIds[] = $user->getIdentifier();
     return $dbAccess->getPermissions($userIds, $resourceIds);
 }
 /**
  * Get the permissions a user has on a list of ressources
  * @dataProvider getPermissionProvider
  * @access public
  * @param  array $userIds
  * @param  array $resourceIds
  * @return array()
  */
 public function testGetPermissions($userIds, array $resourceIds)
 {
     // get privileges for a user/roles and a resource
     $returnValue = array();
     $inQueryResource = implode(',', array_fill(0, count($resourceIds), '?'));
     $inQueryUser = implode(',', array_fill(0, count($userIds), '?'));
     $query = "SELECT resource_id, privilege FROM " . DataBaseAccess::TABLE_PRIVILEGES_NAME . " WHERE resource_id IN ({$inQueryResource}) AND user_id IN ({$inQueryUser})";
     $fetchResultFixture = array(array('resource_id' => 1, 'privilege' => 'open'), array('resource_id' => 2, 'privilege' => 'close'), array('resource_id' => 3, 'privilege' => 'create'), array('resource_id' => 3, 'privilege' => 'delete'));
     $resultFixture = array(1 => array('open'), 2 => array('close'), 3 => array('create', 'delete'));
     $params = $resourceIds;
     foreach ($userIds as $userId) {
         $params[] = $userId;
     }
     $persistenceMock = $this->getPersistenceMock($params, $query, $fetchResultFixture);
     $this->instance->setPersistence($persistenceMock);
     $this->assertSame($resultFixture, $this->instance->getPermissions($userIds, $resourceIds));
 }