]> source.dussan.org Git - nextcloud-server.git/commitdiff
Use hooks to send updates from apps
authorMichael Gapczynski <mtgap@owncloud.com>
Fri, 4 Jan 2013 15:21:33 +0000 (10:21 -0500)
committerMichael Gapczynski <mtgap@owncloud.com>
Fri, 4 Jan 2013 15:21:33 +0000 (10:21 -0500)
core/ajax/update.php
lib/app.php

index 6f5398f41cb6178d88637b8a9a4df2a43fc07890..0d58f17f097df6583d58654239bd36a8d7767fd6 100644 (file)
@@ -5,7 +5,11 @@ require_once '../../lib/base.php';
 
 if (OC::checkUpgrade(false)) {
        $updateEventSource = new OC_EventSource();
-       $updateEventSource->send('success', 'Turned on maintenance mode');
+       $watcher = new UpdateWatcher($updateEventSource);
+       OC_Hook::connect('update', 'success', $watcher, 'success');
+       OC_Hook::connect('update', 'error', $watcher, 'error');
+       OC_Hook::connect('update', 'error', $watcher, 'failure');
+       $watcher->success('Turned on maintenance mode');
        // Check if the .htaccess is existing - this is needed for upgrades from really old ownCloud versions
        if (isset($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache')) {
                if (!OC_Util::ishtaccessworking()) {
@@ -16,11 +20,9 @@ if (OC::checkUpgrade(false)) {
        }
        $result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml');
        if (!$result) {
-               $updateEventSource->send('failure', 'Error updating database');
-               $updateEventSource->close();
-               die();
+               $watcher->failure('Error updating database');
        }
-       $updateEventSource->send('success', 'Updated database');
+       $watcher->success('Updated database');
        $minimizerCSS = new OC_Minimizer_CSS();
        $minimizerCSS->clearCache();
        $minimizerJS = new OC_Minimizer_JS();
@@ -30,7 +32,43 @@ if (OC::checkUpgrade(false)) {
        // load all apps to also upgrade enabled apps
        OC_App::loadApps();
        OC_Config::setValue('maintenance', false);
-       $updateEventSource->send('success', 'Turned off maintenance mode');
-       $updateEventSource->send('done', 'done');
-       $updateEventSource->close();
+       $watcher->success('Turned off maintenance mode');
+       $watcher->done();
+}
+
+class UpdateWatcher {
+       /**
+        * @var \OC_EventSource $eventSource;
+        */
+       private $eventSource;
+
+       public function __construct($eventSource) {
+               $this->eventSource = $eventSource;
+       }
+
+       public function success($message) {
+               OC_Util::obEnd();
+               $this->eventSource->send('success', $message);
+               ob_start();
+       }
+
+       public function error($message) {
+               OC_Util::obEnd();
+               $this->eventSource->send('error', $message);
+               ob_start();
+       }
+
+       public function failure($message) {
+               OC_Util::obEnd();
+               $this->eventSource->send('failure', $message);
+               $this->eventSource->close();
+               die();
+       }
+
+       public function done() {
+               OC_Util::obEnd();
+               $this->eventSource->send('done', '');
+               $this->eventSource->close();
+       }
+
 }
\ No newline at end of file
index be6d5ab3dd34f0907831944de59bef22fa23cd15..596f3bf3a79bb75376dcedd0032a7d17eed7d5c4 100755 (executable)
@@ -642,6 +642,7 @@ class OC_App{
                                        echo 'Failed to upgrade "'.$app.'". Exception="'.$e->getMessage().'"';
                                        die;
                                }
+                               OC_Hook::emit('update', 'success', 'Updated '.$app.' app');
                                OC_Appconfig::setValue($app, 'installed_version', OC_App::getAppVersion($app));
                        }
                }