From 6cd86cac251c0be4555fb82382a2bf0a164b8ab3 Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Mon, 20 Sep 2021 16:17:13 +0100 Subject: [PATCH] [COMPONENT][Tag] Add tag stream, with paging --- components/Tag/Controller/Tag.php | 26 ++++++++++++++++++- components/Tag/templates/tag_stream.html.twig | 7 +++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 components/Tag/templates/tag_stream.html.twig diff --git a/components/Tag/Controller/Tag.php b/components/Tag/Controller/Tag.php index 328d43648e..4251788c20 100644 --- a/components/Tag/Controller/Tag.php +++ b/components/Tag/Controller/Tag.php @@ -2,12 +2,36 @@ namespace Component\Tag\Controller; +use App\Core\Cache; use App\Core\Controller; +use App\Core\DB\DB; +use App\Util\Common; +use Component\Tag\Tag as CompTag; class Tag extends Controller { public function tag(string $tag) { - dd($tag); + // TODO scope + $per_page = Common::config('streams', 'notes_per_page'); + $page = $this->int('page') ?: 1; + $tag = CompTag::canonicalTag($tag); + $notes = array_reverse( // TODO meme + Cache::getList( + "tag-{$tag}", + fn () => DB::dql( + 'select n from note n join note_tag nt with nt.note_id = n.id ' . + 'where nt.canonical = :tag order by nt.created ASC, n.id ASC', + ['tag' => $tag]), + offset: $per_page * ($page - 1), + limit: $per_page - 1 + ) + ); + + return [ + '_template' => 'tag_stream.html.twig', + 'notes' => $notes, + 'page' => $page, + ]; } } diff --git a/components/Tag/templates/tag_stream.html.twig b/components/Tag/templates/tag_stream.html.twig new file mode 100644 index 0000000000..f990f71208 --- /dev/null +++ b/components/Tag/templates/tag_stream.html.twig @@ -0,0 +1,7 @@ +{% for note in notes %} +
+ {{ note.getRendered() | raw }} +
+{% endfor %} + +{{ "Page: " ~ page }}