Implement getDirectoryPermissions() in Shared Permissions, fixes #2846

This commit is contained in:
Michael Gapczynski 2013-05-29 18:22:54 -04:00
parent dbbf195727
commit 5a47054505
2 changed files with 31 additions and 1 deletions

View File

@ -70,6 +70,28 @@ class Shared_Permissions extends Permissions {
return $filePermissions;
}
/**
* get the permissions for all files in a folder
*
* @param int $parentId
* @param string $user
* @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);
}
$permissions = $this->get($parentId, $user);
$query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `parent` = ?');
$result = $query->execute(array($parentId));
$filePermissions = array();
while ($row = $result->fetchRow()) {
$filePermissions[$row['fileid']] = $permissions;
}
return $filePermissions;
}
/**
* remove the permissions for a file
*
@ -83,4 +105,5 @@ class Shared_Permissions extends Permissions {
public function removeMultiple($fileIds, $user) {
// Not a valid action for Shared Permissions
}
}
}

View File

@ -26,6 +26,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
const FORMAT_FILE_APP_ROOT = 2;
const FORMAT_OPENDIR = 3;
const FORMAT_GET_ALL = 4;
const FORMAT_PERMISSIONS = 5;
private $path;
@ -125,6 +126,12 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
$ids[] = $item['file_source'];
}
return $ids;
} else if ($format === self::FORMAT_PERMISSIONS) {
$filePermissions = array();
foreach ($items as $item) {
$filePermissions[$item['file_source']] = $item['permissions'];
}
return $filePermissions;
}
return array();
}