blob: f70c0d6883c345faa76fe2fd60c004d63c507938 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<?php
use Digitigrade\HttpResponseStatus\BadRequest;
use Digitigrade\HttpResponseStatus\TemporaryRedirect;
use Digitigrade\Model\UserAccount;
use Digitigrade\Router;
use Digitigrade\Timeline\GlobalTimeline;
use Digitigrade\Timeline\HomeTimeline;
use Digitigrade\Timeline\LocalTimeline;
Router::getInstance()->mount('/feed/global', function (array $args) {
$items = (new GlobalTimeline())->getPage();
render_template('timeline', ['kind' => 'global', 'items' => $items]);
});
Router::getInstance()->mount('/feed/local', function (array $args) {
$items = (new LocalTimeline())->getPage();
render_template('timeline', ['kind' => 'local', 'items' => $items]);
});
Router::getInstance()->mount('/feed/home', function (array $args) {
$user = UserAccount::findByCurrentSession();
if ($user == null) {
throw new TemporaryRedirect('/feed/global');
}
$items = (new HomeTimeline($user))->getPage();
render_template('timeline', ['kind' => 'home', 'items' => $items]);
});
Router::getInstance()->mount('/feed/home/partial', function (array $args) {
$user = UserAccount::requireByCurrentSession();
if (!isset($_GET['since'])) {
throw new BadRequest('get parameter `since` required');
}
$when = new \DateTimeImmutable($_GET['since']);
$items = (new HomeTimeline($user))->getItemsSince($when);
foreach ($items as $item) {
$item->getReason()?->renderAsHtml();
$item->getObject()->renderAsHtml();
}
render_template('live_timeline_updater', [
'kind' => 'home',
'isUpdate' => true,
'since' => new \DateTimeImmutable()
]);
});
|