Skip to content

Commit e028f2c

Browse files
Add all episodes page (#31)
* Add all episodes page * Fix image URL fallback * Fix syntax error from bad merge --------- Signed-off-by: Josh Brickner <15388+leftouterjoins@users.noreply.github.com>
1 parent 7e57a13 commit e028f2c

5 files changed

Lines changed: 64 additions & 0 deletions

File tree

src/Brickner/Podsumer/State.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,13 +205,23 @@ public function getFeedItems(int $feed_id): array
205205
return (false === $result) ? [] : $result;
206206
}
207207

208+
public function getAllItems(): array
209+
{
210+
$sql = 'SELECT items.name, items.feed_id, items.id, items.guid, items.audio_url, items.audio_file, COALESCE(items.image, feeds.image) AS image, items.size, items.published, items.description, items.playback_position, feeds.name AS feed_name FROM items JOIN feeds ON feeds.id = items.feed_id ORDER BY items.published DESC';
211+
212+
$result = $this->query($sql);
213+
214+
return (false === $result) ? [] : $result;
215+
}
216+
208217
public function getFeedItemsPage(int $feed_id, int $limit, int $page = 1): array
209218
{
210219
$offset = ($page - 1) * $limit;
211220
$sql = 'SELECT items.name, items.feed_id, items.id, items.guid, items.audio_url, items.audio_file, COALESCE(items.image, feeds.image) AS image, items.size, items.published, items.description, items.playback_position FROM items JOIN feeds ON feeds.id = items.feed_id WHERE items.feed_id = :id ORDER BY items.published DESC LIMIT :limit OFFSET :offset';
212221
$params = ['id' => $feed_id, 'limit' => $limit, 'offset' => $offset];
213222
$result = $this->query($sql, $params);
214223

224+
215225
return (false === $result) ? [] : $result;
216226
}
217227

templates/base.html.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
<h1 class="text-m font-black text-right">
1212
<a href="/">Feeds</a>
1313
&nbsp;|&nbsp;
14+
<a href="/episodes">Episodes</a>
15+
&nbsp;|&nbsp;
1416
<a href="/opml">OPML</a>
1517
&nbsp;|&nbsp;
1618
<?= round($db_size/1024/1024/1024, 2) ?> GB

templates/episodes.html.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<div class="container py-10">
2+
<? if (empty($items)): ?>
3+
<div class="container py-10 clear">
4+
<h1 class="text-2xl">No Episodes</h1>
5+
</div>
6+
<? else: ?>
7+
<? foreach ($items as $item): ?>
8+
<div class="w-full clear-left py-8">
9+
<a href="/item?item_id=<?= $item['id'] ?>">
10+
<img src="/image?<?= !empty($item['item_image']) ? 'item_id=' . $item['id'] : 'feed_id=' . $item['feed_id'] ?>" class="w-32 border-solid border-neutral-800 border inline float-left mr-4">
11+
</a>
12+
<a href="/item?item_id=<?= $item['id'] ?>" class="text-xl">
13+
<?= $item['name'] ?>
14+
</a>
15+
<br>
16+
<span class="text-neutral-500">
17+
<?= $item['feed_name'] ?>
18+
&nbsp;|&nbsp;
19+
<?= round($item['size'] / 1024 / 1024, 1) ?>MB
20+
&nbsp;|&nbsp;
21+
<?= date('m/d/Y', strtotime($item['published'])); ?>
22+
<? if (!empty($item['audio_file'])) { ?>
23+
&nbsp;|&nbsp;
24+
<a href="/delete_audio?item_id=<?= $item['id'] ?>">Delete Audio</a>
25+
<? } ?>
26+
</span>
27+
<br>
28+
<?= substr(strip_tags($item['description']), 0, 360); ?>
29+
</div>
30+
<? endforeach ?>
31+
<? endif ?>
32+
</div>

tests/Brickner/Podsumer/StateTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ public function testGetFeedItems()
8484
$this->assertEquals(4, count($items));
8585
}
8686

87+
public function testGetAllItems()
88+
{
89+
$this->feed = new Feed(self::TEST_FEED_URL);
90+
$this->state->addFeed($this->feed);
91+
$items = $this->state->getAllItems();
92+
$this->assertEquals(4, count($items));
93+
}
94+
8795
public function testGetFeedItemsPage()
8896
{
8997
$this->feed = new Feed(self::TEST_FEED_URL);

www/index.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ function home(array $args): void
4040
Template::render($main, 'home', $vars);
4141
}
4242

43+
#[Route('/episodes', 'GET', true)]
44+
function episodes(array $args): void
45+
{
46+
global $main;
47+
48+
$vars = [
49+
'items' => $main->getState()->getAllItems()
50+
];
51+
52+
Template::render($main, 'episodes', $vars);
53+
}
54+
4355
/**
4456
* Add new feed(s)
4557
* Path: /add

0 commit comments

Comments
 (0)