diff --git a/mod/ignored.php b/mod/ignored.php deleted file mode 100644 index 6e0cf92a6..000000000 --- a/mod/ignored.php +++ /dev/null @@ -1,52 +0,0 @@ -argc > 1) { - $message_id = intval($a->argv[1]); - } - - if (empty($message_id)) { - exit(); - } - - $thread = Item::selectFirstThreadForUser(local_user(), ['uid', 'ignored'], ['iid' => $message_id]); - if (!DBA::isResult($thread)) { - exit(); - } - - // Numeric values are needed for the json output further below - $ignored = ($thread['ignored'] ? 0 : 1); - - if ($thread['uid'] != 0) { - DBA::update('thread', ['ignored' => $ignored], ['iid' => $message_id]); - } else { - DBA::update('user-item', ['ignored' => $ignored], ['iid' => $message_id, 'uid' => local_user()], true); - } - - // See if we've been passed a return path to redirect to - $return_path = $_REQUEST['return'] ?? ''; - if ($return_path) { - $rand = '_=' . time(); - if (strpos($return_path, '?')) { - $rand = "&$rand"; - } else { - $rand = "?$rand"; - } - - $a->internalRedirect($return_path . $rand); - } - - // the json doesn't really matter, it will either be 0 or 1 - - echo json_encode($ignored); - exit(); -} diff --git a/src/Module/Item/Ignored.php b/src/Module/Item/Ignored.php new file mode 100644 index 000000000..474f01dbe --- /dev/null +++ b/src/Module/Item/Ignored.php @@ -0,0 +1,70 @@ +t('Access denied.')); + } + + /** @var App\Arguments $args */ + $args = self::getClass(App\Arguments::class); + /** @var Database $dba */ + $dba = self::getClass(Database::class); + + $message_id = intval($args->get(1)); + + if (empty($message_id) || !is_int($message_id)) { + throw new HTTPException\BadRequestException(); + } + + $thread = Item::selectFirstThreadForUser(local_user(), ['uid', 'ignored'], ['iid' => $message_id]); + if (!$dba->isResult($thread)) { + throw new HTTPException\BadRequestException(); + } + + // Numeric values are needed for the json output further below + $ignored = !empty($thread['ignored']) ? 0 : 1; + + if (!empty($thread['uid']) && $thread['uid'] != 0) { + $dba->update('thread', ['ignored' => $ignored], ['iid' => $message_id]); + } else { + $dba->update('user-item', ['ignored' => $ignored], ['iid' => $message_id, 'uid' => local_user()], true); + } + + // See if we've been passed a return path to redirect to + $return_path = $_REQUEST['return'] ?? ''; + if (!empty($return_path)) { + $rand = '_=' . time(); + if (strpos($return_path, '?')) { + $rand = "&$rand"; + } else { + $rand = "?$rand"; + } + + self::getApp()->internalRedirect($return_path . $rand); + } + + // the json doesn't really matter, it will either be 0 or 1 + + echo json_encode($ignored); + exit(); + } +} diff --git a/static/routes.config.php b/static/routes.config.php index 7cc9fdaa6..32a9f12ed 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -128,11 +128,12 @@ return [ '/{group:\d+}/add/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]], '/{group:\d+}/remove/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]], ], - '/hashtag' => [Module\Hashtag::class, [R::GET]], - '/home' => [Module\Home::class, [R::GET]], - '/help[/{doc:.+}]' => [Module\Help::class, [R::GET]], - '/inbox[/{nickname}]' => [Module\Inbox::class, [R::GET, R::POST]], - '/invite' => [Module\Invite::class, [R::GET, R::POST]], + '/hashtag' => [Module\Hashtag::class, [R::GET]], + '/home' => [Module\Home::class, [R::GET]], + '/help[/{doc:.+}]' => [Module\Help::class, [R::GET]], + '/ignored/{id}' => [Module\Item\Ignored::class, [R::GET]], + '/inbox[/{nickname}]' => [Module\Inbox::class, [R::GET, R::POST]], + '/invite' => [Module\Invite::class, [R::GET, R::POST]], '/install' => [ '[/]' => [Module\Install::class, [R::GET, R::POST]],