|
|
|
|
@ -27,25 +27,13 @@ class Shared_Permissions extends Permissions {
|
|
|
|
|
*
|
|
|
|
|
* @param int $fileId
|
|
|
|
|
* @param string $user
|
|
|
|
|
* @return int (-1 if file no permissions set)
|
|
|
|
|
* @return int permissions
|
|
|
|
|
*/
|
|
|
|
|
public function get($fileId, $user) {
|
|
|
|
|
|
|
|
|
|
if ($fileId == -1) {
|
|
|
|
|
// if we ask for the mount point return -1 so that we can get the correct
|
|
|
|
|
// permissions by the path, with the root fileId we have no idea which share is meant
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
$source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE,
|
|
|
|
|
null, true);
|
|
|
|
|
|
|
|
|
|
$permission = -1;
|
|
|
|
|
|
|
|
|
|
if ($source) {
|
|
|
|
|
$permission = $this->updatePermissions($source['permissions']);
|
|
|
|
|
}
|
|
|
|
|
$permissions = $this->storage->getPermissions();
|
|
|
|
|
|
|
|
|
|
return $permission;
|
|
|
|
|
return $this->updatePermissions($permissions);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -53,16 +41,7 @@ class Shared_Permissions extends Permissions {
|
|
|
|
|
* @param string $user
|
|
|
|
|
*/
|
|
|
|
|
private function getFile($fileId, $user) {
|
|
|
|
|
if ($fileId == -1) {
|
|
|
|
|
return \OCP\PERMISSION_READ;
|
|
|
|
|
}
|
|
|
|
|
$source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE,
|
|
|
|
|
null, false);
|
|
|
|
|
if ($source) {
|
|
|
|
|
return $this->updatePermissions($source['permissions']);
|
|
|
|
|
} else {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
return $this->get($fileId, $user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -84,11 +63,9 @@ class Shared_Permissions extends Permissions {
|
|
|
|
|
* @return int[]
|
|
|
|
|
*/
|
|
|
|
|
public function getMultiple($fileIds, $user) {
|
|
|
|
|
if (count($fileIds) === 0) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
$filePermissions = array();
|
|
|
|
|
foreach ($fileIds as $fileId) {
|
|
|
|
|
$filePermissions[$fileId] = self::get($fileId, $user);
|
|
|
|
|
$filePermissions[$fileId] = $this->get($fileId, $user);
|
|
|
|
|
}
|
|
|
|
|
return $filePermissions;
|
|
|
|
|
}
|
|
|
|
|
@ -101,16 +78,19 @@ class Shared_Permissions extends Permissions {
|
|
|
|
|
* @return int[]
|
|
|
|
|
*/
|
|
|
|
|
public function getDirectoryPermissions($parentId, $user) {
|
|
|
|
|
// Root of the Shared folder
|
|
|
|
|
if ($parentId === -1) {
|
|
|
|
|
return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_PERMISSIONS);
|
|
|
|
|
|
|
|
|
|
if ($parentId === -1 && $this->storage->instanceOfStorage('\OC\Files\Storage\Shared')) {
|
|
|
|
|
$fileCacheId = $this->storage->getSourceId();
|
|
|
|
|
} else {
|
|
|
|
|
$fileCacheId = $parentId;
|
|
|
|
|
}
|
|
|
|
|
$permissions = $this->getFile($parentId, $user);
|
|
|
|
|
|
|
|
|
|
$query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `parent` = ?');
|
|
|
|
|
$result = $query->execute(array($parentId));
|
|
|
|
|
$result = $query->execute(array($fileCacheId));
|
|
|
|
|
$permissions = $this->get($parentId, $user);
|
|
|
|
|
$filePermissions = array();
|
|
|
|
|
while ($row = $result->fetchRow()) {
|
|
|
|
|
$filePermissions[$row['fileid']] = $this->updatePermissions($permissions);
|
|
|
|
|
$filePermissions[$row['fileid']] = $permissions;
|
|
|
|
|
}
|
|
|
|
|
return $filePermissions;
|
|
|
|
|
}
|
|
|
|
|
|