From deb1fbf9a1b9e3f0ac8da4ccc2c3d0e13c0d4f5a Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sun, 9 Sep 2012 18:29:47 -0400 Subject: [PATCH] Provide update script for files sharing --- apps/files_sharing/appinfo/update.php | 53 +++++++++++++++++++++------ apps/files_sharing/appinfo/version | 2 +- apps/files_sharing/lib/share/file.php | 2 +- 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php index feafa5fb992..cb6af2d5f0d 100644 --- a/apps/files_sharing/appinfo/update.php +++ b/apps/files_sharing/appinfo/update.php @@ -1,16 +1,47 @@ execute(); + $groupShares = array(); + while ($row = $result->fetchRow()) { + $itemSource = OC_FileCache::getId($row['source'], ''); + if ($itemSource != -1) { + $file = OC_FileCache::get($row['source'], ''); + if ($file['mimetype'] == 'httpd/unix-directory') { + $itemType = 'folder'; + } else { + $itemType = 'file'; } + if ($row['permissions'] == 0) { + $permissions = OCP\Share::PERMISSION_READ; + } else { + $permissions = OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE; + if ($itemType == 'folder') { + $permissions |= OCP\Share::PERMISSION_CREATE; + } + } + $pos = strrpos($row['uid_shared_with'], '@'); + if ($pos !== false && OC_Group::groupExists(substr($row['uid_shared_with'], $pos + 1))) { + $shareType = OCP\Share::SHARE_TYPE_GROUP; + $shareWith = substr($row['uid_shared_with'], 0, $pos); + if (isset($groupShares[$shareWith][$itemSource])) { + continue; + } else { + $groupShares[$shareWith][$itemSource] = true; + } + } else if ($row['uid_shared_with'] == 'public') { + $shareType = OCP\Share::SHARE_TYPE_LINK; + $shareWith = null; + } else { + $shareType = OCP\Share::SHARE_TYPE_USER; + $shareWith = $row['uid_shared_with']; + } + OC_User::setUserId($row['uid_owner']); + OCP\Share::shareItem($itemType, $itemSource, $shareType, $shareWith, $permissions); } - closedir($handle); } + // NOTE: Let's drop the table after more testing +// $query = OCP\DB::prepare('DROP TABLE `*PREFIX*sharing`'); +// $query->execute(); } \ No newline at end of file diff --git a/apps/files_sharing/appinfo/version b/apps/files_sharing/appinfo/version index a2268e2de44..9fc80f937fa 100644 --- a/apps/files_sharing/appinfo/version +++ b/apps/files_sharing/appinfo/version @@ -1 +1 @@ -0.3.1 \ No newline at end of file +0.3.2 \ No newline at end of file diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/share/file.php index c8821ee0fe8..2149da1d731 100644 --- a/apps/files_sharing/lib/share/file.php +++ b/apps/files_sharing/lib/share/file.php @@ -30,7 +30,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent { public function isValidSource($itemSource, $uidOwner) { $path = OC_FileCache::getPath($itemSource, $uidOwner); - if (OC_Filesystem::file_exists($path)) { + if ($path) { $this->path = $path; return true; } -- 2.39.5