From 75058370795fda4f06f589ee970edf94dc0ddf88 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Thu, 3 Jan 2013 21:32:33 -0500 Subject: Basic update progress of database update only --- core/ajax/update.php | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 core/ajax/update.php (limited to 'core/ajax') diff --git a/core/ajax/update.php b/core/ajax/update.php new file mode 100644 index 00000000000..6f5398f41cb --- /dev/null +++ b/core/ajax/update.php @@ -0,0 +1,36 @@ +send('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()) { + if (!file_exists(OC::$SERVERROOT . '/data/.htaccess')) { + OC_Setup::protectDataDirectory(); + } + } + } + $result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml'); + if (!$result) { + $updateEventSource->send('failure', 'Error updating database'); + $updateEventSource->close(); + die(); + } + $updateEventSource->send('success', 'Updated database'); + $minimizerCSS = new OC_Minimizer_CSS(); + $minimizerCSS->clearCache(); + $minimizerJS = new OC_Minimizer_JS(); + $minimizerJS->clearCache(); + OC_Config::setValue('version', implode('.', OC_Util::getVersion())); + OC_App::checkAppsRequirements(); + // 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(); +} \ No newline at end of file -- cgit v1.2.3 From e7eea3dd2e3eb0f5bd77901167656275d835cfb3 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Fri, 4 Jan 2013 10:21:33 -0500 Subject: Use hooks to send updates from apps --- core/ajax/update.php | 54 ++++++++++++++++++++++++++++++++++++++++++++-------- lib/app.php | 1 + 2 files changed, 47 insertions(+), 8 deletions(-) (limited to 'core/ajax') diff --git a/core/ajax/update.php b/core/ajax/update.php index 6f5398f41cb..0d58f17f097 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -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 diff --git a/lib/app.php b/lib/app.php index be6d5ab3dd3..596f3bf3a79 100755 --- a/lib/app.php +++ b/lib/app.php @@ -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)); } } -- cgit v1.2.3 From 6b2216f0d6ca610178ef295c1a9c6e246f5fc6da Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sat, 5 Jan 2013 11:09:48 -0500 Subject: Remove old data directory protection from update, should already have taken place or not working because the server isn't Apache --- core/ajax/update.php | 8 -------- 1 file changed, 8 deletions(-) (limited to 'core/ajax') diff --git a/core/ajax/update.php b/core/ajax/update.php index 0d58f17f097..1c77a4ab67e 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -10,14 +10,6 @@ if (OC::checkUpgrade(false)) { 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()) { - if (!file_exists(OC::$SERVERROOT . '/data/.htaccess')) { - OC_Setup::protectDataDirectory(); - } - } - } $result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml'); if (!$result) { $watcher->failure('Error updating database'); -- cgit v1.2.3 From f6426cee047e435fbed020105ef4e896b68b1e10 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sat, 5 Jan 2013 12:13:36 -0500 Subject: Tweak failure message and throw exceptions from updateDbFromStructure() --- core/ajax/update.php | 9 +++++---- lib/app.php | 2 +- lib/db.php | 10 ++++++---- 3 files changed, 12 insertions(+), 9 deletions(-) (limited to 'core/ajax') diff --git a/core/ajax/update.php b/core/ajax/update.php index 1c77a4ab67e..20ab045c892 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -10,11 +10,12 @@ if (OC::checkUpgrade(false)) { OC_Hook::connect('update', 'error', $watcher, 'error'); OC_Hook::connect('update', 'error', $watcher, 'failure'); $watcher->success('Turned on maintenance mode'); - $result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml'); - if (!$result) { - $watcher->failure('Error updating database'); + try { + $result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml'); + $watcher->success('Updated database'); + } catch (Exception $exception) { + $watcher->failure($exception->getMessage()); } - $watcher->success('Updated database'); $minimizerCSS = new OC_Minimizer_CSS(); $minimizerCSS->clearCache(); $minimizerJS = new OC_Minimizer_JS(); diff --git a/lib/app.php b/lib/app.php index 48bbe53c744..9d4ead71b90 100755 --- a/lib/app.php +++ b/lib/app.php @@ -642,7 +642,7 @@ class OC_App{ } catch (Exception $e) { echo 'Failed to upgrade "'.$app.'". Exception="'.$e->getMessage().'"'; - OC_Hook::emit('update', 'failure', 'Error updating '.$info['name'].' app: '.$e->getMessage()); + OC_Hook::emit('update', 'failure', 'Failed to update '.$info['name'].' app: '.$e->getMessage()); die; } OC_Appconfig::setValue($app, 'installed_version', OC_App::getAppVersion($app)); diff --git a/lib/db.php b/lib/db.php index 7e60b41d230..74e7ca5b0e0 100644 --- a/lib/db.php +++ b/lib/db.php @@ -495,8 +495,9 @@ class OC_DB { if (PEAR::isError($previousSchema)) { $error = $previousSchema->getMessage(); $detail = $previousSchema->getDebugInfo(); - OC_Log::write('core', 'Failed to get existing database structure for upgrading ('.$error.', '.$detail.')', OC_Log::FATAL); - return false; + $message = 'Failed to get existing database structure for updating ('.$error.', '.$detail.')'; + OC_Log::write('core', $message, OC_Log::FATAL); + throw new Exception($message); } // Make changes and save them to an in-memory file @@ -523,8 +524,9 @@ class OC_DB { if (PEAR::isError($op)) { $error = $op->getMessage(); $detail = $op->getDebugInfo(); - OC_Log::write('core', 'Failed to update database structure ('.$error.', '.$detail.')', OC_Log::FATAL); - return false; + $message = 'Failed to update database structure ('.$error.', '.$detail.')'; + OC_Log::write('core', $message, OC_Log::FATAL); + throw new Exception($message); } return true; } -- cgit v1.2.3 From 8daefd00fbed7dd06da707418b2690e0aed2ea5a Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Sat, 19 Jan 2013 19:57:17 +0100 Subject: Sanitize the exception --- core/ajax/share.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'core/ajax') diff --git a/core/ajax/share.php b/core/ajax/share.php index 72ffc52e997..077baa8ba56 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -98,7 +98,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo OCP\Util::sendMail($to_address, $to_address, $subject, $text, $from_address, $user); OCP\JSON::success(); } catch (Exception $exception) { - OCP\JSON::error(array('data' => array('message' => $exception->getMessage()))); + OCP\JSON::error(array('data' => array('message' => OC_Util::sanitizeHTML($exception->getMessage())))); } break; } -- cgit v1.2.3