From 56bd395b8ad45adeb355924dbe3756ae82c66223 Mon Sep 17 00:00:00 2001
From: Philipp Holzer <admin+github@philipp.info>
Date: Sat, 18 May 2019 18:59:41 +0200
Subject: [PATCH] Move mod/notify to src/Module/Notify

---
 src/App/Router.php                  |  5 +++
 src/Module/Notifications/Notify.php | 70 +++++++++++++++++++++++++++++
 2 files changed, 75 insertions(+)
 create mode 100644 src/Module/Notifications/Notify.php

diff --git a/src/App/Router.php b/src/App/Router.php
index cd59c3dd90..423452e244 100644
--- a/src/App/Router.php
+++ b/src/App/Router.php
@@ -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
index 0000000000..d2c450dd9e
--- /dev/null
+++ b/src/Module/Notifications/Notify.php
@@ -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');
+		}
+	}
+}