diff options
author | Joas Schilling <coding@schilljs.com> | 2018-01-11 11:58:43 +0100 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2018-01-15 09:55:03 +0100 |
commit | 088505058a971a736eca8c267ea9a1d45794de32 (patch) | |
tree | db9169e629816d4a00d773ae241640d8903d6228 /apps/updatenotification | |
parent | 50e1cee5c7a8e9354e2bafac22a60b0e369a720f (diff) | |
download | nextcloud-server-088505058a971a736eca8c267ea9a1d45794de32.tar.gz nextcloud-server-088505058a971a736eca8c267ea9a1d45794de32.zip |
Refactor all the logic from app.php to Application class
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'apps/updatenotification')
-rw-r--r-- | apps/updatenotification/appinfo/app.php | 53 | ||||
-rw-r--r-- | apps/updatenotification/lib/AppInfo/Application.php | 51 | ||||
-rw-r--r-- | apps/updatenotification/lib/UpdateChecker.php | 2 |
3 files changed, 63 insertions, 43 deletions
diff --git a/apps/updatenotification/appinfo/app.php b/apps/updatenotification/appinfo/app.php index 664b5bc5a2b..5002fd7c837 100644 --- a/apps/updatenotification/appinfo/app.php +++ b/apps/updatenotification/appinfo/app.php @@ -1,56 +1,25 @@ <?php /** - * @copyright Copyright (c) 2016, ownCloud, Inc. + * @copyright Copyright (c) 2018, Joas Schilling <coding@schilljs.com> * * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * - * @license AGPL-3.0 + * @license GNU AGPL version 3 or any later version * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -if(\OC::$server->getConfig()->getSystemValue('updatechecker', true) === true) { - $updater = new \OC\Updater\VersionCheck( - \OC::$server->getHTTPClientService(), - \OC::$server->getConfig() - ); - $updateChecker = new \OCA\UpdateNotification\UpdateChecker( - $updater - ); - - $userObject = \OC::$server->getUserSession()->getUser(); - if($userObject !== null) { - if(\OC::$server->getGroupManager()->isAdmin($userObject->getUID()) && - !\OC::$server->getAppManager()->isEnabledForUser('notifications')) { - if($updateChecker->getUpdateState() !== []) { - \OCP\Util::addScript('updatenotification', 'notification'); - OC_Hook::connect('\OCP\Config', 'js', $updateChecker, 'getJavaScript'); - } - } - } - - $manager = \OC::$server->getNotificationManager(); - $manager->registerNotifier(function() { - return \OC::$server->query(\OCA\UpdateNotification\Notification\Notifier::class); - }, function() { - $l = \OC::$server->getL10N('updatenotification'); - return [ - 'id' => 'updatenotification', - 'name' => $l->t('Update notifications'), - ]; - }); -} +$app = new \OCA\UpdateNotification\AppInfo\Application(); +$app->register(); diff --git a/apps/updatenotification/lib/AppInfo/Application.php b/apps/updatenotification/lib/AppInfo/Application.php index 49b046c6fef..ef6f79e4eb5 100644 --- a/apps/updatenotification/lib/AppInfo/Application.php +++ b/apps/updatenotification/lib/AppInfo/Application.php @@ -23,10 +23,61 @@ namespace OCA\UpdateNotification\AppInfo; +use OCA\UpdateNotification\Notification\Notifier; +use OCA\UpdateNotification\UpdateChecker; use OCP\AppFramework\App; +use OCP\AppFramework\QueryException; +use OCP\IUser; +use OCP\Util; class Application extends App { public function __construct() { parent::__construct('updatenotification', []); } + + public function register() { + $server = $this->getContainer()->getServer(); + + if ($server->getConfig()->getSystemValue('updatechecker', true) !== true) { + // Updater check is disabled + return; + } + + $user = $server->getUserSession()->getUser(); + if (!$user instanceof IUser) { + // Nothing to do for guests + return; + } + + if ($server->getAppManager()->isEnabledForUser('notifications')) { + // Notifications app is available, so we register. + // Since notifications also work for non-admins we don't check this here. + $this->registerNotifier(); + } else if ($server->getGroupManager()->isAdmin($user->getUID())) { + try { + $updateChecker = $this->getContainer()->query(UpdateChecker::class); + } catch (QueryException $e) { + $server->getLogger()->logException($e); + return; + } + + if ($updateChecker->getUpdateState() !== []) { + Util::addScript('updatenotification', 'notification'); + \OC_Hook::connect('\OCP\Config', 'js', $updateChecker, 'populateJavaScriptVariables'); + } + } + } + + public function registerNotifier() { + $notificationsManager = $this->getContainer()->getServer()->getNotificationManager(); + $notificationsManager->registerNotifier(function() { + return $this->getContainer()->query(Notifier::class); + }, function() { + $l = $this->getContainer()->getServer()->getL10N('updatenotification'); + return [ + 'id' => 'updatenotification', + 'name' => $l->t('Update notifications'), + ]; + }); + } } diff --git a/apps/updatenotification/lib/UpdateChecker.php b/apps/updatenotification/lib/UpdateChecker.php index ad76de56953..cabdfe8b9ff 100644 --- a/apps/updatenotification/lib/UpdateChecker.php +++ b/apps/updatenotification/lib/UpdateChecker.php @@ -64,7 +64,7 @@ class UpdateChecker { /** * @param array $data */ - public function getJavaScript(array $data) { + public function populateJavaScriptVariables(array $data) { $data['array']['oc_updateState'] = json_encode([ 'updateAvailable' => true, 'updateVersion' => $this->getUpdateState()['updateVersion'], |