Move mod/notify to src/Module/Notify
authorPhilipp Holzer <admin+github@philipp.info>
Sat, 18 May 2019 16:59:41 +0000 (18:59 +0200)
committerPhilipp Holzer <admin+github@philipp.info>
Sat, 18 May 2019 16:59:41 +0000 (18:59 +0200)
src/App/Router.php
src/Module/Notifications/Notify.php [new file with mode: 0644]

index cd59c3d..423452e 100644 (file)
@@ -164,6 +164,11 @@ class Router
                $this->routeCollector->addRoute(['GET'],         '/modexp/{nick}',       Module\PublicRSAKey::class);
                $this->routeCollector->addRoute(['GET'],         '/nodeinfo/1.0',        Module\NodeInfo::class);
                $this->routeCollector->addRoute(['GET'],         '/nogroup',             Module\Group::class);
+               $this->routeCollector->addGroup('/notify', function (RouteCollector $collector) {
+                       $collector->addRoute(['GET'], '[/]',                                 Module\Notifications\Notify::class);
+                       $collector->addRoute(['GET'], '/view/{id:\d+}',                      Module\Notifications\Notify::class);
+                       $collector->addRoute(['GET'], '/mark/all',                           Module\Notifications\Notify::class);
+               });
                $this->routeCollector->addRoute(['GET'],         '/objects/{guid}',      Module\Objects::class);
                $this->routeCollector->addGroup('/oembed', function (RouteCollector $collector) {
                        $collector->addRoute(['GET'], '/b2h',                                Module\Oembed::class);
diff --git a/src/Module/Notifications/Notify.php b/src/Module/Notifications/Notify.php
new file mode 100644 (file)
index 0000000..d2c450d
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+namespace Friendica\Module\Notifications;
+
+use Friendica\BaseModule;
+use Friendica\Core\NotificationsManager;
+use Friendica\Core\System;
+use Friendica\Network\HTTPException;
+
+/**
+ * Interacting with the /notify command
+ */
+class Notify extends BaseModule
+{
+       /**
+        * @throws HTTPException\InternalServerErrorException
+        * @throws HTTPException\UnauthorizedException
+        */
+       public static function rawContent()
+       {
+               if (!local_user()) {
+                       throw new HTTPException\UnauthorizedException(L10n::t('Permission denied.'));
+               }
+
+               $a = self::getApp();
+
+               // @TODO: Replace with parameter from router
+               if ($a->argc > 2 && $a->argv[1] === 'view' && intval($a->argv[2])) {
+                       $notificationsManager = new NotificationsManager();
+                       // @TODO: Replace with parameter from router
+                       $note = $notificationsManager->getByID($a->argv[2]);
+                       if (!empty($note)) {
+                               $notificationsManager->setSeen($note);
+                               if (!empty($note['link'])) {
+                                       System::externalRedirect($note['link']);
+                               }
+                       }
+
+                       $a->internalRedirect();
+               }
+
+               // @TODO: Replace with parameter from router
+               if ($a->argc > 2 && $a->argv[1] === 'mark' && $a->argv[2] === 'all') {
+                       $notificationsManager = new NotificationsManager();
+                       $success              = $notificationsManager->setAllSeen();
+
+                       header('Content-type: application/json; charset=utf-8');
+                       echo json_encode([
+                               'result' => ($success) ? 'success' : 'fail',
+                       ]);
+                       exit();
+               }
+       }
+
+       /**
+        * Redirect to the notifications main page
+        *
+        * @return string|void
+        * @throws HTTPException\InternalServerErrorException
+        */
+       public static function content()
+       {
+               $a = self::getApp();
+
+               // @TODO: Replace with parameter from router
+               if (($a->argc > 0) && ($a->argv[0] == 'notify')) {
+                       $a->internalRedirect('notifications/system');
+               }
+       }
+}