diff --git a/mod/notice.php b/mod/notice.php deleted file mode 100644 index b0a6a5439..000000000 --- a/mod/notice.php +++ /dev/null @@ -1,23 +0,0 @@ - friendica items permanent-url compatibility - */ - -use Friendica\App; -use Friendica\Core\L10n; -use Friendica\Database\DBA; - -function notice_init(App $a) -{ - $id = $a->argv[1]; - $r = q("SELECT `user`.`nickname` FROM `user` LEFT JOIN `item` ON `item`.`uid` = `user`.`uid` WHERE `item`.`id` = %d", intval($id)); - if (DBA::isResult($r)) { - $nick = $r[0]['nickname']; - $a->internalRedirect('display/' . $nick . '/' . $id); - } else { - throw new \Friendica\Network\HTTPException\NotFoundException(L10n::t('Item not found.')); - } - - return; -} diff --git a/src/App/Router.php b/src/App/Router.php index 133544c81..87f4d6e87 100644 --- a/src/App/Router.php +++ b/src/App/Router.php @@ -169,6 +169,7 @@ class Router $collector->addRoute(['GET'], '/view/{id:\d+}', Module\Notifications\Notify::class); $collector->addRoute(['GET'], '/mark/all', Module\Notifications\Notify::class); }); + $this->routeCollector->addRoute(['GET'], '/notice/{id:\d+}', Module\GnuSocial\Notice::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/Model/ItemUser.php b/src/Model/ItemUser.php new file mode 100644 index 000000000..c15715033 --- /dev/null +++ b/src/Model/ItemUser.php @@ -0,0 +1,36 @@ + $id]); + if (empty($item)) { + return false; + } + + $user = DBA::selectFirst('user', $fields, ['uid' => $item['uid']]); + if (!empty($user)) { + return $user; + } else { + return false; + } + } +} diff --git a/src/Module/GnuSocial/Notice.php b/src/Module/GnuSocial/Notice.php new file mode 100644 index 000000000..ce4a5c509 --- /dev/null +++ b/src/Module/GnuSocial/Notice.php @@ -0,0 +1,34 @@ + friendica items permanent-url compatibility + */ +class Notice extends BaseModule +{ + public static function rawContent() + { + $a = self::getApp(); + + // @TODO: Replace with parameter from router + $id = ($a->argc > 1) ? $a->argv[1] : 0; + + if (empty($id)) { + throw new HTTPException\NotFoundException(L10n::t('Item not found.')); + } + + $user = ItemUser::getUserForItemId($id, ['nickname']); + + if (empty($user)) { + throw new HTTPException\NotFoundException(L10n::t('Item not found.')); + } else { + $a->internalRedirect('display/' . $user['nickname'] . '/' . $id); + } + } +}