owncloud/core — pull request #1079 by MTGap (2013-01-04 15:52:33+00:00)
Title: Updater progress feedback

This pull request introduces an update page and maintenance mode for temporarily disabling ownCloud during an update. It resolves https://github.com/owncloud/core/issues/903

During an update the user is redirected to the update page (instead of the long loading to the main page). The update is then started in an ajax request and update progress is returned using OC_EventSource. ownCloud is placed into maintenance mode, which prevents any other requests and shows an error page. Apps' update scripts can send back update progress as well by emitting the update hook e.g. OC_Hook::emit('update', 'success', 'Moved files to new file cache');

There are 3 available messages - success, error, and failure. Error should be emitted for something bad that happened, but the update can still continue normally. Failure should be emitted if the update can no longer be continued because something got corrupted. Success of course is for something that happened correctly.

To test, bump up the version number in lib/util.php getVersion() You'll see some messages about turning on/off maintenance mode and updating the database. For updating apps there is currently only a 'Updated $appid app' message. You can change the version numbers of apps to see these, however there's a problem with the app version compatibility because we are on 4.91 and they think they are only compatible with 4.9. Comment out line 31 of core/ajax/update.php to bypass this. Do note that version numbers will change in the database and config.php by testing this and may mess up future 'real' updates.

Next steps:
- show formatted version numbers instead of the internal 4.91.#
- more messages from app updates
- only allow admin to run the update?
- integrate with updater app?

@karlitschek @jancborchardt @MTRichards @msrex @icewind1991 @tanghus @VicDeo