|
|
|
@ -14,6 +14,10 @@ if (OC::checkUpgrade(false)) { |
|
|
|
try { |
|
|
|
$result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml'); |
|
|
|
$watcher->success('Updated database'); |
|
|
|
|
|
|
|
// do a file cache upgrade for users with files
|
|
|
|
// this can take loooooooooooooooooooooooong
|
|
|
|
__doFileCacheUpgrade($watcher); |
|
|
|
} catch (Exception $exception) { |
|
|
|
$watcher->failure($exception->getMessage()); |
|
|
|
} |
|
|
|
@ -26,6 +30,47 @@ if (OC::checkUpgrade(false)) { |
|
|
|
$watcher->done(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* The FileCache Upgrade routine |
|
|
|
* |
|
|
|
* @param UpdateWatcher $watcher |
|
|
|
*/ |
|
|
|
function __doFileCacheUpgrade($watcher) { |
|
|
|
file_put_contents('/tmp/debug', "START\n", FILE_APPEND); |
|
|
|
$query = \OC_DB::prepare(' |
|
|
|
SELECT DISTINCT user |
|
|
|
FROM`*PREFIX*fscache` |
|
|
|
'); |
|
|
|
$result = $query->execute(); |
|
|
|
$users = $result->fetchAll(); |
|
|
|
if(count($users) == 0) { |
|
|
|
return; |
|
|
|
} |
|
|
|
$step = 100 / count($users); |
|
|
|
file_put_contents('/tmp/debug', 'Step '. print_r($step, true)."\n", FILE_APPEND); |
|
|
|
$percentCompleted = 0; |
|
|
|
$lastPercentCompletedOutput = 0; |
|
|
|
$startInfoShown = false; |
|
|
|
foreach($users as $userRow) { |
|
|
|
$user = $userRow['user']; |
|
|
|
\OC\Files\Filesystem::initMountPoints($user); |
|
|
|
\OC\Files\Cache\Upgrade::doSilentUpgrade($user); |
|
|
|
if(!$startInfoShown) { |
|
|
|
//We show it only now, because otherwise Info about upgraded apps
|
|
|
|
//will appear between this and progress info
|
|
|
|
$watcher->success('Updating filecache, this may take really long...'); |
|
|
|
$startInfoShown = true; |
|
|
|
} |
|
|
|
$percentCompleted += $step; |
|
|
|
$out = floor($percentCompleted); |
|
|
|
if($out != $lastPercentCompletedOutput) { |
|
|
|
$watcher->success('... '. $out.'% done ...'); |
|
|
|
$lastPercentCompletedOutput = $out; |
|
|
|
} |
|
|
|
} |
|
|
|
$watcher->success('Updated filecache'); |
|
|
|
} |
|
|
|
|
|
|
|
class UpdateWatcher { |
|
|
|
/** |
|
|
|
* @var \OC_EventSource $eventSource; |
|
|
|
|