Fix files_sharing update script, by making filesystem and users available

This commit is contained in:
Arthur Schiwon 2012-09-25 11:47:45 +02:00
parent a8ff1505d6
commit 15e02726d7
1 changed files with 7 additions and 0 deletions

View File

@ -5,6 +5,10 @@ if (version_compare($installedVersion, '0.3', '<')) {
$query = OCP\DB::prepare('SELECT * FROM `*PREFIX*sharing`'); $query = OCP\DB::prepare('SELECT * FROM `*PREFIX*sharing`');
$result = $query->execute(); $result = $query->execute();
$groupShares = array(); $groupShares = array();
//we need to set up user backends, otherwise creating the shares will fail with "because user does not exist"
OC_User::useBackend(new OC_User_Database());
OC_Group::useBackend(new OC_Group_Database());
OC_App::loadApps(array('authentication'));
while ($row = $result->fetchRow()) { while ($row = $result->fetchRow()) {
$itemSource = OC_FileCache::getId($row['source'], ''); $itemSource = OC_FileCache::getId($row['source'], '');
if ($itemSource != -1) { if ($itemSource != -1) {
@ -39,6 +43,8 @@ if (version_compare($installedVersion, '0.3', '<')) {
$shareWith = $row['uid_shared_with']; $shareWith = $row['uid_shared_with'];
} }
OC_User::setUserId($row['uid_owner']); OC_User::setUserId($row['uid_owner']);
//we need to setup the filesystem for the user, otherwise OC_FileSystem::getRoot will fail and break
OC_Util::setupFS($row['uid_owner']);
try { try {
OCP\Share::shareItem($itemType, $itemSource, $shareType, $shareWith, $permissions); OCP\Share::shareItem($itemType, $itemSource, $shareType, $shareWith, $permissions);
} }
@ -46,6 +52,7 @@ if (version_compare($installedVersion, '0.3', '<')) {
$update_error = true; $update_error = true;
echo 'Skipping sharing "'.$row['source'].'" to "'.$shareWith.'" (error is "'.$e->getMessage().'")<br/>'; echo 'Skipping sharing "'.$row['source'].'" to "'.$shareWith.'" (error is "'.$e->getMessage().'")<br/>';
} }
OC_Util::tearDownFS();
} }
} }
if ($update_error) { if ($update_error) {