Move mod/like to src/Module/Like
authorPhilipp Holzer <admin@philipp.info>
Sat, 4 May 2019 19:20:39 +0000 (21:20 +0200)
committerPhilipp Holzer <admin@philipp.info>
Sat, 4 May 2019 19:20:39 +0000 (21:20 +0200)
mod/like.php [deleted file]
src/App/Router.php
src/Module/Like.php [new file with mode: 0644]

diff --git a/mod/like.php b/mod/like.php
deleted file mode 100644 (file)
index 7fc7b2b..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-use Friendica\App;
-use Friendica\Model\Item;
-use Friendica\Util\Strings;
-
-function like_content(App $a) {
-       if (!local_user() && !remote_user()) {
-               return false;
-       }
-
-
-       $verb = Strings::escapeTags(trim($_GET['verb']));
-
-       if (!$verb) {
-               $verb = 'like';
-       }
-
-       $item_id = (($a->argc > 1) ? Strings::escapeTags(trim($a->argv[1])) : 0);
-
-       $r = Item::performLike($item_id, $verb);
-       if (!$r) {
-               return;
-       }
-
-       // See if we've been passed a return path to redirect to
-       $return_path = defaults($_REQUEST, 'return', '');
-
-       like_content_return($a, $return_path);
-       exit();
-}
-
-
-// Decide how to return. If we were called with a 'return' argument,
-// then redirect back to the calling page. If not, just quietly end
-
-function like_content_return(App $a, $return_path) {
-       if ($return_path) {
-               $rand = '_=' . time();
-               if (strpos($return_path, '?')) {
-                       $rand = "&$rand";
-               } else {
-                       $rand = "?$rand";
-               }
-
-               $a->internalRedirect($return_path . $rand);
-       }
-}
index d35977d..fcd1b0c 100644 (file)
@@ -131,6 +131,7 @@ class Router
                        $collector->addRoute(['GET'],         '/testrewrite',                Module\Install::class);
                });
                $this->routeCollector->addRoute(['GET', 'POST'], '/itemsource[/{guid}]', Module\Itemsource::class);
+               $this->routeCollector->addRoute(['GET'],         '/like/{item:\d+}',     Module\Like::class);
                $this->routeCollector->addRoute(['GET', 'POST'], '/localtime',           Module\Localtime::class);
                $this->routeCollector->addRoute(['GET', 'POST'], '/login',               Module\Login::class);
                $this->routeCollector->addRoute(['GET', 'POST'], '/logout',              Module\Logout::class);
diff --git a/src/Module/Like.php b/src/Module/Like.php
new file mode 100644 (file)
index 0000000..f57cbad
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+namespace Friendica\Module;
+
+use Friendica\BaseModule;
+use Friendica\Model\Item;
+use Friendica\Network\HTTPException;
+use Friendica\Util\Strings;
+
+/**
+ * Performs a like and optionally redirects to a return path
+ */
+class Like extends BaseModule
+{
+       public static function rawContent()
+       {
+               if (!local_user() && !remote_user()) {
+                       throw new HTTPException\ForbiddenException();
+               }
+
+               $verb = Strings::escapeTags(trim($_GET['verb']));
+
+               if (!$verb) {
+                       $verb = 'like';
+               }
+
+               $app = self::getApp();
+
+               // @TODO: Replace with parameter from router
+               $itemId = (($app->argc > 1) ? Strings::escapeTags(trim($app->argv[1])) : 0);
+
+               if (!Item::performLike($itemId, $verb)) {
+                       throw new HTTPException\BadRequestException();
+               }
+
+               // Decide how to return. If we were called with a 'return' argument,
+               // then redirect back to the calling page. If not, just quietly end
+               $returnPath = defaults($_REQUEST, 'return', '');
+
+               if (!empty($returnPath)) {
+                       $rand = '_=' . time();
+                       if (strpos($returnPath, '?')) {
+                               $rand = "&$rand";
+                       } else {
+                               $rand = "?$rand";
+                       }
+
+                       $app->internalRedirect($returnPath . $rand);
+               }
+       }
+}