From e90876cd86895a64c8a0d8fec2e2caddc3ac5613 Mon Sep 17 00:00:00 2001
From: Philipp Holzer <admin@philipp.info>
Date: Sun, 5 May 2019 19:39:02 +0200
Subject: [PATCH] Move mod/smilies to src/Module/Smilies

---
 mod/smilies.php            | 32 -------------------------------
 src/App/Router.php         |  1 +
 src/Module/Smilies.php     | 39 ++++++++++++++++++++++++++++++++++++++
 view/templates/smilies.tpl | 10 ++++++++++
 4 files changed, 50 insertions(+), 32 deletions(-)
 delete mode 100644 mod/smilies.php
 create mode 100644 src/Module/Smilies.php
 create mode 100644 view/templates/smilies.tpl

diff --git a/mod/smilies.php b/mod/smilies.php
deleted file mode 100644
index bbb7de2e2e..0000000000
--- a/mod/smilies.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * @file mod/smilies.php
- */
-use Friendica\App;
-use Friendica\Content\Smilies;
-use Friendica\Core\System;
-
-/**
- * @param App $a App
- * @return string
- * @throws \Friendica\Network\HTTPException\InternalServerErrorException
- */
-function smilies_content(App $a)
-{
-	$smilies = Smilies::getList();
-	if (!empty($a->argv[1]) && ($a->argv[1] === "json")) {
-		$results = [];
-		for ($i = 0; $i < count($smilies['texts']); $i++) {
-			$results[] = ['text' => $smilies['texts'][$i], 'icon' => $smilies['icons'][$i]];
-		}
-		System::jsonExit($results);
-	} else {
-		$s = '<div class="smiley-sample">';
-		for ($x = 0; $x < count($smilies['texts']); $x ++) {
-			$s .= '<dl><dt>' . $smilies['texts'][$x] . '</dt><dd>' . $smilies['icons'][$x] . '</dd></dl>';
-		}
-		$s .= '</div>';
-
-		return $s;
-	}
-}
diff --git a/src/App/Router.php b/src/App/Router.php
index 1dffb6b406..30375667a3 100644
--- a/src/App/Router.php
+++ b/src/App/Router.php
@@ -165,6 +165,7 @@ class Router
 		});
 		$this->routeCollector->addRoute(['GET', 'POST'], '/register',            Module\Register::class);
 		$this->routeCollector->addRoute(['GET'],         '/rsd.xml',             Module\ReallySimpleDiscovery::class);
+		$this->routeCollector->addRoute(['GET'],         '/smilies[/json]',      Module\Smilies::class);
 		$this->routeCollector->addRoute(['GET'],         '/statistics.json',     Module\Statistics::class);
 		$this->routeCollector->addRoute(['GET'],         '/tos',                 Module\Tos::class);
 		$this->routeCollector->addRoute(['GET'],         '/webfinger',           Module\WebFinger::class);
diff --git a/src/Module/Smilies.php b/src/Module/Smilies.php
new file mode 100644
index 0000000000..df4b4e1cd0
--- /dev/null
+++ b/src/Module/Smilies.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Friendica\Module;
+
+use Friendica\BaseModule;
+use Friendica\Core\Renderer;
+use Friendica\Core\System;
+
+/**
+ * Prints the possible Smilies of this node
+ */
+class Smilies extends BaseModule
+{
+	public static function content()
+	{
+		$smilies = \Friendica\Content\Smilies::getList();
+		$count = count(defaults($smilies, 'texts', []));
+
+		$tpl = Renderer::getMarkupTemplate('smilies.tpl');
+		return Renderer::replaceMacros($tpl, [
+			'$count'   => $count,
+			'$smilies' => $smilies,
+		]);
+	}
+
+	public static function rawContent()
+	{
+		$app = self::getApp();
+		$smilies = \Friendica\Content\Smilies::getList();
+
+		if (!empty($app->argv[1]) && ($app->argv[1] === "json")) {
+			$results = [];
+			for ($i = 0; $i < count($smilies['texts']); $i++) {
+				$results[] = ['text' => $smilies['texts'][$i], 'icon' => $smilies['icons'][$i]];
+			}
+			System::jsonExit($results);
+		}
+	}
+}
diff --git a/view/templates/smilies.tpl b/view/templates/smilies.tpl
new file mode 100644
index 0000000000..6f9fda83b4
--- /dev/null
+++ b/view/templates/smilies.tpl
@@ -0,0 +1,10 @@
+<div id="smilies" class="generic-page-wrapper">
+	<div class="smiley-sample">
+		{{for $i=0 to $count}}
+		<dl>
+			<dt>{{$smilies.texts[$i] nofilter}}</dt>
+			<dd>{{$smilies.icons[$i] nofilter}}</dd>
+		</dl>
+		{{/for}}
+	</div>
+</div>