diff options
author | Michael Gapczynski <mtgap@owncloud.com> | 2012-09-09 18:29:47 -0400 |
---|---|---|
committer | Michael Gapczynski <mtgap@owncloud.com> | 2012-09-09 18:29:47 -0400 |
commit | deb1fbf9a1b9e3f0ac8da4ccc2c3d0e13c0d4f5a (patch) | |
tree | b2868e90a0935fcaef7441ed58ac69cc56c23282 /apps/files_sharing/appinfo/update.php | |
parent | 5c5955b31f25aa637edf955580508aa1a333777a (diff) | |
download | nextcloud-server-deb1fbf9a1b9e3f0ac8da4ccc2c3d0e13c0d4f5a.tar.gz nextcloud-server-deb1fbf9a1b9e3f0ac8da4ccc2c3d0e13c0d4f5a.zip |
Provide update script for files sharing
Diffstat (limited to 'apps/files_sharing/appinfo/update.php')
-rw-r--r-- | apps/files_sharing/appinfo/update.php | 53 |
1 files changed, 42 insertions, 11 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 @@ <?php - -// touch shared directories to trigger one-time re-scan for all users -$datadir = \OCP\Config::getSystemValue('datadirectory'); -$currentVersion=OC_Appconfig::getValue('files_sharing', 'installed_version'); -if (version_compare($currentVersion, '0.2.2', '<')) { - if ($handle = opendir($datadir)) { - while (false !== ($entry = readdir($handle))) { - $sharedFolder = $datadir.'/'.$entry.'/files/Shared'; - if ($entry != "." && $entry != ".." && is_dir($sharedFolder)) { - touch($sharedFolder); +$installedVersion = OCP\Config::getAppValue('files_sharing', 'installed_version'); +if (version_compare($installedVersion, '0.3.2', '<')) { + $query = OCP\DB::prepare('SELECT * FROM `*PREFIX*sharing`'); + $result = $query->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 |