summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/lib
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing/lib')
-rw-r--r--apps/files_sharing/lib/api.php47
-rw-r--r--apps/files_sharing/lib/cache.php12
-rw-r--r--apps/files_sharing/lib/helper.php12
-rw-r--r--apps/files_sharing/lib/maintainer.php2
-rw-r--r--apps/files_sharing/lib/share/file.php21
-rw-r--r--apps/files_sharing/lib/sharedstorage.php62
-rw-r--r--apps/files_sharing/lib/updater.php15
7 files changed, 91 insertions, 80 deletions
diff --git a/apps/files_sharing/lib/api.php b/apps/files_sharing/lib/api.php
index 438d3cc4ba3..21fd5d00a4c 100644
--- a/apps/files_sharing/lib/api.php
+++ b/apps/files_sharing/lib/api.php
@@ -25,7 +25,7 @@ namespace OCA\Files\Share;
class Api {
/**
- * @brief get all shares
+ * get all shares
*
* @param array $params option 'file' to limit the result to a specific file/folder
* @return \OC_OCS_Result share information
@@ -60,7 +60,7 @@ class Api {
}
/**
- * @brief get share information for a given share
+ * get share information for a given share
*
* @param array $params which contains a 'id'
* @return \OC_OCS_Result share information
@@ -76,7 +76,7 @@ class Api {
}
/**
- * @brief collect all share information, either of a specific share or all
+ * collect all share information, either of a specific share or all
* shares for a given path
* @param array $params
* @return \OC_OCS_Result
@@ -130,7 +130,7 @@ class Api {
}
/**
- * @brief add reshares to a array of shares
+ * add reshares to a array of shares
* @param array $shares array of shares
* @param int $itemSource item source ID
* @return array new shares array which includes reshares
@@ -161,7 +161,7 @@ class Api {
}
/**
- * @brief get share from all files in a given folder (non-recursive)
+ * get share from all files in a given folder (non-recursive)
* @param array $params contains 'path' to the folder
* @return \OC_OCS_Result
*/
@@ -196,7 +196,7 @@ class Api {
}
/**
- * @breif create a new share
+ * create a new share
* @param array $params
* @return \OC_OCS_Result
*/
@@ -313,7 +313,7 @@ class Api {
}
/**
- * @brief update permissions for a share
+ * update permissions for a share
* @param array $share information about the share
* @param array $params contains 'permissions'
* @return \OC_OCS_Result
@@ -358,7 +358,7 @@ class Api {
}
/**
- * @brief enable/disable public upload
+ * enable/disable public upload
* @param array $share information about the share
* @param array $params contains 'publicUpload' which can be 'yes' or 'no'
* @return \OC_OCS_Result
@@ -384,9 +384,9 @@ class Api {
}
/**
- * @brief update password for public link share
+ * update password for public link share
* @param array $share information about the share
- * @param type $params 'password'
+ * @param array $params 'password'
* @return \OC_OCS_Result
*/
private static function updatePassword($share, $params) {
@@ -418,13 +418,18 @@ class Api {
return new \OC_OCS_Result(null, 404, "share doesn't exists, can't change password");
}
- $result = \OCP\Share::shareItem(
- $itemType,
- $itemSource,
- \OCP\Share::SHARE_TYPE_LINK,
- $shareWith,
- $permissions
- );
+ try {
+ $result = \OCP\Share::shareItem(
+ $itemType,
+ $itemSource,
+ \OCP\Share::SHARE_TYPE_LINK,
+ $shareWith,
+ $permissions
+ );
+ } catch (\Exception $e) {
+ return new \OC_OCS_Result(null, 403, $e->getMessage());
+ }
+
if($result) {
return new \OC_OCS_Result();
}
@@ -433,7 +438,7 @@ class Api {
}
/**
- * @brief unshare a file/folder
+ * unshare a file/folder
* @param array $params contains the shareID 'id' which should be unshared
* @return \OC_OCS_Result
*/
@@ -473,7 +478,7 @@ class Api {
}
/**
- * @brief get file ID from a given path
+ * get file ID from a given path
* @param string $path
* @return string fileID or null
*/
@@ -490,7 +495,7 @@ class Api {
}
/**
- * @brief get itemType
+ * get itemType
* @param string $path
* @return string type 'file', 'folder' or null of file/folder doesn't exists
*/
@@ -508,7 +513,7 @@ class Api {
}
/**
- * @brief get some information from a given share
+ * get some information from a given share
* @param int $shareID
* @return array with: item_source, share_type, share_with, item_type, permissions
*/
diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php
index 1f316301c47..9d83ed13b87 100644
--- a/apps/files_sharing/lib/cache.php
+++ b/apps/files_sharing/lib/cache.php
@@ -42,7 +42,7 @@ class Shared_Cache extends Cache {
}
/**
- * @brief Get the source cache of a shared file or folder
+ * Get the source cache of a shared file or folder
* @param string $target Shared target file path
* @return \OC\Files\Cache\Cache
*/
@@ -80,7 +80,7 @@ class Shared_Cache extends Cache {
/**
* get the stored metadata of a file or folder
*
- * @param string /int $file
+ * @param string|int $file
* @return array
*/
public function get($file) {
@@ -424,7 +424,7 @@ class Shared_Cache extends Cache {
*
* @param int $id
* @param string $pathEnd (optional) used internally for recursive calls
- * @return string | null
+ * @return string|null
*/
public function getPathById($id, $pathEnd = '') {
// direct shares are easy
@@ -442,6 +442,9 @@ class Shared_Cache extends Cache {
}
}
+ /**
+ * @param integer $id
+ */
private function getShareById($id) {
$item = \OCP\Share::getItemSharedWithBySource('file', $id);
if ($item) {
@@ -454,6 +457,9 @@ class Shared_Cache extends Cache {
return null;
}
+ /**
+ * @param integer $id
+ */
private function getParentInfo($id) {
$sql = 'SELECT `parent`, `name` FROM `*PREFIX*filecache` WHERE `fileid` = ?';
$query = \OC_DB::prepare($sql);
diff --git a/apps/files_sharing/lib/helper.php b/apps/files_sharing/lib/helper.php
index cc1f7d9ffdf..71b496ab944 100644
--- a/apps/files_sharing/lib/helper.php
+++ b/apps/files_sharing/lib/helper.php
@@ -79,7 +79,7 @@ class Helper {
* @param array $linkItem link item array
* @param string $password optional password
*
- * @return true if authorized, false otherwise
+ * @return boolean true if authorized, false otherwise
*/
public static function authenticate($linkItem, $password) {
if ($password !== null) {
@@ -125,9 +125,13 @@ class Helper {
$ids = array();
- while ($path !== '' && $path !== '.' && $path !== '/') {
+ while ($path !== dirname($path)) {
$info = $ownerView->getFileInfo($path);
- $ids[] = $info['fileid'];
+ if ($info instanceof \OC\Files\FileInfo) {
+ $ids[] = $info['fileid'];
+ } else {
+ \OCP\Util::writeLog('sharing', 'No fileinfo available for: ' . $path, \OCP\Util::WARN);
+ }
$path = dirname($path);
}
@@ -158,7 +162,7 @@ class Helper {
}
/**
- * @brief Format a path to be relative to the /user/files/ directory
+ * Format a path to be relative to the /user/files/ directory
* @param string $path the absolute path
* @return string e.g. turns '/admin/files/test.txt' into 'test.txt'
*/
diff --git a/apps/files_sharing/lib/maintainer.php b/apps/files_sharing/lib/maintainer.php
index bbb3268410e..f07c09e5aee 100644
--- a/apps/files_sharing/lib/maintainer.php
+++ b/apps/files_sharing/lib/maintainer.php
@@ -33,7 +33,7 @@ class Maintainer {
* Keeps track of the "allow links" config setting
* and removes all link shares if the config option is set to "no"
*
- * @param array with app, key, value as named values
+ * @param array $params array with app, key, value as named values
*/
static public function configChangeHook($params) {
if($params['app'] === 'core' && $params['key'] === 'shareapi_allow_links' && $params['value'] === 'no') {
diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/share/file.php
index c0c9e0c107e..af71786b104 100644
--- a/apps/files_sharing/lib/share/file.php
+++ b/apps/files_sharing/lib/share/file.php
@@ -33,10 +33,12 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
private $path;
public function isValidSource($itemSource, $uidOwner) {
- $query = \OC_DB::prepare('SELECT `name` FROM `*PREFIX*filecache` WHERE `fileid` = ?');
- $result = $query->execute(array($itemSource));
- if ($row = $result->fetchRow()) {
- $this->path = $row['name'];
+ $path = \OC\Files\Filesystem::getPath($itemSource);
+ if ($path) {
+ // FIXME: attributes should not be set here,
+ // keeping this pattern for now to avoid unexpected
+ // regressions
+ $this->path = basename($path);
return true;
}
return false;
@@ -52,7 +54,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
}
/**
- * @brief create unique target
+ * create unique target
* @param string $filePath
* @param string $shareWith
* @param string $exclude
@@ -152,7 +154,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
}
/**
- * @brief resolve reshares to return the correct source item
+ * resolve reshares to return the correct source item
* @param array $source
* @return array source item
*/
@@ -181,8 +183,13 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
return $source;
}
+ /**
+ * @param string $target
+ * @param string $mountPoint
+ * @param string $itemType
+ * @return array|false source item
+ */
public static function getSource($target, $mountPoint, $itemType) {
-
if ($itemType === 'folder') {
$source = \OCP\Share::getItemSharedWith('folder', $mountPoint, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
if ($source && $target !== '') {
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index 4733dff3d14..4b69276d05a 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -36,7 +36,7 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @breif get id of the mount point
+ * get id of the mount point
* @return string
*/
public function getId() {
@@ -44,7 +44,7 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @breif get file cache of the shared item source
+ * get file cache of the shared item source
* @return string
*/
public function getSourceId() {
@@ -52,9 +52,8 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief Get the source file path, permissions, and owner for a shared file
- * @param string Shared target file path
- * @param string $target
+ * Get the source file path, permissions, and owner for a shared file
+ * @param string $target Shared target file path
* @return Returns array with the keys path, permissions, and owner or false if not found
*/
public function getFile($target) {
@@ -76,9 +75,8 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief Get the source file path for a shared file
- * @param string Shared target file path
- * @param string $target
+ * Get the source file path for a shared file
+ * @param string $target Shared target file path
* @return string source file path or false if not found
*/
public function getSourcePath($target) {
@@ -100,16 +98,17 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief Get the permissions granted for a shared file
- * @param string Shared target file path
- * @return int CRUDS permissions granted or false if not found
+ * Get the permissions granted for a shared file
+ * @param string $target Shared target file path
+ * @return int CRUDS permissions granted
*/
public function getPermissions($target) {
- $source = $this->getFile($target);
- if ($source) {
- return $source['permissions'];
+ $permissions = $this->share['permissions'];
+ // part file are always have delete permissions
+ if (pathinfo($target, PATHINFO_EXTENSION) === 'part') {
+ $permissions |= \OCP\PERMISSION_DELETE;
}
- return false;
+ return $permissions;
}
public function mkdir($path) {
@@ -183,9 +182,6 @@ class Shared extends \OC\Files\Storage\Common {
}
public function isCreatable($path) {
- if ($path == '') {
- $path = $this->getMountPoint();
- }
return ($this->getPermissions($path) & \OCP\PERMISSION_CREATE);
}
@@ -194,23 +190,14 @@ class Shared extends \OC\Files\Storage\Common {
}
public function isUpdatable($path) {
- if ($path == '') {
- $path = $this->getMountPoint();
- }
return ($this->getPermissions($path) & \OCP\PERMISSION_UPDATE);
}
public function isDeletable($path) {
- if ($path == '') {
- $path = $this->getMountPoint();
- }
return ($this->getPermissions($path) & \OCP\PERMISSION_DELETE);
}
public function isSharable($path) {
- if ($path == '') {
- $path = $this->getMountPoint();
- }
return ($this->getPermissions($path) & \OCP\PERMISSION_SHARE);
}
@@ -276,7 +263,7 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief Format a path to be relative to the /user/files/ directory
+ * Format a path to be relative to the /user/files/ directory
* @param string $path the absolute path
* @return string e.g. turns '/admin/files/test.txt' into '/test.txt'
*/
@@ -300,7 +287,7 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief rename a shared folder/file
+ * rename a shared folder/file
* @param string $sourcePath
* @param string $targetPath
* @return bool
@@ -454,9 +441,6 @@ class Shared extends \OC\Files\Storage\Common {
}
public function free_space($path) {
- if ($path == '') {
- $path = $this->getMountPoint();
- }
$source = $this->getSourcePath($path);
if ($source) {
list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
@@ -497,7 +481,7 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief return mount point of share, relative to data/user/files
+ * return mount point of share, relative to data/user/files
* @return string
*/
public function getMountPoint() {
@@ -505,7 +489,7 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief get share type
+ * get share type
* @return integer can be single user share (0) group share (1), unique group share name (2)
*/
private function getShareType() {
@@ -517,7 +501,7 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief does the group share already has a user specific unique name
+ * does the group share already has a user specific unique name
* @return bool
*/
private function uniqueNameSet() {
@@ -525,14 +509,14 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief the share now uses a unique name of this user
+ * the share now uses a unique name of this user
*/
private function setUniqueName() {
$this->share['unique_name'] = true;
}
/**
- * @brief get share ID
+ * get share ID
* @return integer unique share ID
*/
private function getShareId() {
@@ -540,7 +524,7 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief get the user who shared the file
+ * get the user who shared the file
* @return string
*/
public function getSharedFrom() {
@@ -548,7 +532,7 @@ class Shared extends \OC\Files\Storage\Common {
}
/**
- * @brief return share type, can be "file" or "folder"
+ * return share type, can be "file" or "folder"
* @return string
*/
public function getItemType() {
diff --git a/apps/files_sharing/lib/updater.php b/apps/files_sharing/lib/updater.php
index f7c0a75aeeb..21d67caad9d 100644
--- a/apps/files_sharing/lib/updater.php
+++ b/apps/files_sharing/lib/updater.php
@@ -27,7 +27,7 @@ class Shared_Updater {
static private $toRemove = array();
/**
- * @brief walk up the users file tree and update the etags
+ * walk up the users file tree and update the etags
* @param string $user
* @param string $path
*/
@@ -38,14 +38,13 @@ class Shared_Updater {
\OC\Files\Filesystem::initMountPoints($user);
$view = new \OC\Files\View('/' . $user);
if ($view->file_exists($path)) {
- while ($path !== '/') {
+ while ($path !== dirname($path)) {
$etag = $view->getETag($path);
$view->putFileInfo($path, array('etag' => $etag));
$path = dirname($path);
}
} else {
- error_log("error!" . 'can not update etags on ' . $path . ' for user ' . $user);
- \OCP\Util::writeLog('files_sharing', 'can not update etags on ' . $path . ' for user ' . $user, \OCP\Util::ERROR);
+ \OCP\Util::writeLog('files_sharing', 'can not update etags on ' . $path . ' for user ' . $user . '. Path does not exists', \OCP\Util::DEBUG);
}
}
@@ -55,6 +54,12 @@ class Shared_Updater {
* @param string $target
*/
static public function correctFolders($target) {
+
+ // ignore part files
+ if (pathinfo($target, PATHINFO_EXTENSION) === 'part') {
+ return false;
+ }
+
// Correct Shared folders of other users shared with
$shares = \OCA\Files_Sharing\Helper::getSharesFromItem($target);
@@ -73,7 +78,7 @@ class Shared_Updater {
}
/**
- * @brief remove all shares for a given file if the file was deleted
+ * remove all shares for a given file if the file was deleted
*
* @param string $path
*/