Пример #1
0
 public function getPermissionAccessObject()
 {
     $db = Loader::db();
     if ($this->permissionObjectToCheck instanceof File) {
         $r = $db->GetCol('select paID from FilePermissionAssignments where fID = ? and pkID = ?', array($this->permissionObject->getFileID(), $this->pk->getPermissionKeyID()));
     } else {
         if (is_array($this->permissionObjectToCheck)) {
             // sets
             $sets = array();
             foreach ($this->permissionObjectToCheck as $fs) {
                 $sets[] = $fs->getFileSetID();
             }
             $inheritedPKID = $db->GetOne('select pkID from PermissionKeys where pkHandle = ?', array($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]));
             $r = $db->GetCol('select distinct paID from FileSetPermissionAssignments where fsID in (' . implode(',', $sets) . ') and pkID = ? ' . $filterString, array($inheritedPKID));
         } else {
             if ($this->permissionObjectToCheck instanceof FileSet && isset($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()])) {
                 $inheritedPKID = $db->GetOne('select pkID from PermissionKeys where pkHandle = ?', array($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]));
                 $r = $db->GetCol('select distinct paID from FileSetPermissionAssignments where fsID = ? and pkID = ?', array($this->permissionObjectToCheck->getFileSetID(), $inheritedPKID));
             } else {
                 return false;
             }
         }
     }
     if (count($r) == 1) {
         $permID = $r[0];
     }
     if (count($r) > 1) {
         $permID = $r;
     }
     if (is_array($permID)) {
         foreach ($permID as $paID) {
             $pa = PermissionAccess::getByID($paID, $this->pk);
             if (is_object($pa)) {
                 $perms[] = $pa;
             }
         }
         return PermissionAccess::createByMerge($perms);
     } else {
         return PermissionAccess::getByID($permID, $this->pk);
     }
 }