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); } }