Provide update script for files sharing

This commit is contained in:
Michael Gapczynski 2012-09-09 18:29:47 -04:00
parent 5c5955b31f
commit deb1fbf9a1
3 changed files with 44 additions and 13 deletions

View File

@ -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();
}

View File

@ -1 +1 @@
0.3.1
0.3.2

View File

@ -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;
}