From ea4039a5ad69b0a771191681cbc50920c6f7cb15 Mon Sep 17 00:00:00 2001 From: Aaron Parecki Date: Wed, 23 Dec 2015 11:35:19 -0800 Subject: [PATCH] show icons for webmention status --- controllers/Controller.php | 35 +++++++++++++++++++++++-- lib/Telegraph/ProfileFetcher.php | 2 +- public/assets/telegraph-icon-white.png | Bin 0 -> 4871 bytes public/index.php | 1 + views/dashboard.php | 16 +++++++---- views/layout-loggedin.php | 2 +- 6 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 public/assets/telegraph-icon-white.png diff --git a/controllers/Controller.php b/controllers/Controller.php index ba1a005..93e7361 100644 --- a/controllers/Controller.php +++ b/controllers/Controller.php @@ -44,11 +44,38 @@ class Controller { $site = ORM::for_table('sites')->where_id_is($role->site_id)->find_one(); + $query = ORM::for_table('webmentions')->where('site_id', $site->id) + ->order_by_desc('created_at') + ->limit(20) + ->find_many(); + $webmentions = []; - foreach(ORM::for_table('webmentions')->where('site_id', $site->id)->find_many() as $m) { + foreach($query as $m) { + $statuses = ORM::for_table('webmention_status')->where('webmention_id', $m->id)->order_by_desc('created_at')->find_many(); + if(count($statuses) == 0) { + $icon = 'wait'; + $status = 'pending'; + } else { + $status = $statuses[0]->status; + switch($status) { + case 'success': + case 'accepted': + $icon = 'checkmark'; + break; + case 'not_supported': + case 'error': + $icon = 'warning'; + break; + default: + $icon = ''; + } + } + $webmentions[] = [ 'webmention' => $m, - 'statuses' => ORM::for_table('webmention_status')->where('webmention_id', $m->id)->order_by_desc('created_at')->find_many() + 'statuses' => $statuses, + 'status' => $status, + 'icon' => $icon ]; } @@ -62,6 +89,10 @@ class Controller { return $response; } + public function webmention_details(Request $request, Response $response) { + + } + private function _user() { return ORM::for_table('users')->where_id_is(session('user_id'))->find_one(); } diff --git a/lib/Telegraph/ProfileFetcher.php b/lib/Telegraph/ProfileFetcher.php index d63a1ef..0449db5 100644 --- a/lib/Telegraph/ProfileFetcher.php +++ b/lib/Telegraph/ProfileFetcher.php @@ -9,7 +9,7 @@ class ProfileFetcher { $user = ORM::for_table('users')->where_id_is($id)->find_one(); echo "Looking for representative h-card for ".$user->url."\n"; $data = HTTP::get($user->url); - $parsed = Mf2\parse($data['body']); + $parsed = Mf2\parse($data['body'], $user->url); $representative = Mf2\HCard\representative($parsed, $user->url); if($representative) { echo "Found it!\n"; diff --git a/public/assets/telegraph-icon-white.png b/public/assets/telegraph-icon-white.png new file mode 100644 index 0000000000000000000000000000000000000000..10af3fc7b234896d0743c5312a6314b79141d63c GIT binary patch literal 4871 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'GET', '/api', 'Controller::api'); $router->addRoute('POST', '/webmention', 'API::webmention'); $router->addRoute('GET', '/webmention/{code}', 'API::webmention_status'); +$router->addRoute('GET', '/webmention/{code}/details', 'Controller::webmention_details'); $router->addRoute('GET', '/login', 'Auth::login'); $router->addRoute('GET', '/logout', 'Auth::logout'); diff --git a/views/dashboard.php b/views/dashboard.php index b6610ec..e630894 100644 --- a/views/dashboard.php +++ b/views/dashboard.php @@ -1,16 +1,22 @@ layout('layout-loggedin', ['title' => $title, 'accounts' => $accounts, 'user' => $user]); ?> -
+
- + + +
+ - - - + > + + +
Status Date Source & Target
created_at ?>e($mention['webmention']->source) ?>
e($mention['webmention']->target) ?>
created_at)) ?> + source=e($mention['webmention']->source) ?>
+ target=e($mention['webmention']->target) ?>
diff --git a/views/layout-loggedin.php b/views/layout-loggedin.php index 9500ab3..101551d 100644 --- a/views/layout-loggedin.php +++ b/views/layout-loggedin.php @@ -3,7 +3,7 @@