summaryrefslogtreecommitdiffstats
path: root/apps/updatenotification
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2018-01-11 11:58:43 +0100
committerJoas Schilling <coding@schilljs.com>2018-01-15 09:55:03 +0100
commit088505058a971a736eca8c267ea9a1d45794de32 (patch)
treedb9169e629816d4a00d773ae241640d8903d6228 /apps/updatenotification
parent50e1cee5c7a8e9354e2bafac22a60b0e369a720f (diff)
downloadnextcloud-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.php53
-rw-r--r--apps/updatenotification/lib/AppInfo/Application.php51
-rw-r--r--apps/updatenotification/lib/UpdateChecker.php2
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'],