From 3f61541094fb0c6836a6b3afaea58d7bead9ade9 Mon Sep 17 00:00:00 2001 From: Aaron Parecki Date: Thu, 21 Apr 2016 19:34:22 -0700 Subject: [PATCH] accept new json q=syndicate-to response closes #36 --- lib/helpers.php | 41 +++++++++++-------------------- views/new-post.php | 10 ++++++-- views/partials/syndication-js.php | 3 ++- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/lib/helpers.php b/lib/helpers.php index a860dc0..f0c226b 100644 --- a/lib/helpers.php +++ b/lib/helpers.php @@ -175,13 +175,14 @@ function micropub_get($endpoint, $params, $access_token) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $endpoint); curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Authorization: Bearer ' . $access_token + 'Authorization: Bearer ' . $access_token, + 'Accept: application/json' )); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = array(); if($response) { - parse_str($response, $data); + $data = json_decode($response, true); } $error = curl_error($ch); return array( @@ -198,35 +199,23 @@ function get_syndication_targets(&$user) { $r = micropub_get($user->micropub_endpoint, array('q'=>'syndicate-to'), $user->micropub_access_token); if($r['data'] && array_key_exists('syndicate-to', $r['data'])) { if(is_array($r['data']['syndicate-to'])) { - $targetURLs = $r['data']['syndicate-to']; - } elseif(is_string($r['data']['syndicate-to'])) { - // support comma separated as a fallback - $targetURLs = preg_split('/, ?/', $r['data']['syndicate-to']); + $data = $r['data']['syndicate-to']; } else { - $targetURLs = array(); + $data = array(); } - foreach($targetURLs as $t) { - // If the syndication target doesn't have a scheme, add http - if(!preg_match('/^http/', $t)) - $t2 = 'http://' . $t; - else - $t2 = $t; - - // Parse the target expecting it to be a URL - $url = parse_url($t2); - - // If there's a host, and the host contains a . then we can assume there's a favicon - // parse_url will parse strings like http://twitter into an array with a host of twitter, which is not resolvable - if($url && array_key_exists('host', $url) && strpos($url['host'], '.') !== false) { - $targets[] = array( - 'target' => $t, - 'favicon' => 'http://' . $url['host'] . '/favicon.ico' - ); + foreach($data as $t) { + if(array_key_exists('service', $t) && array_key_exists('photo', $t['service'])) { + $icon = $t['service']['photo']; } else { + $icon = false; + } + + if(array_key_exists('uid', $t) && array_key_exists('name', $t)) { $targets[] = array( - 'target' => $t, - 'favicon' => false + 'target' => $t['name'], + 'uid' => $t['uid'], + 'favicon' => $icon ); } } diff --git a/views/new-post.php b/views/new-post.php index be5dafb..2c8c9f9 100644 --- a/views/new-post.php +++ b/views/new-post.php @@ -38,7 +38,12 @@ if($this->syndication_targets) { echo ''; } else { @@ -181,9 +186,10 @@ $(function(){ $("#btn_post").click(function(){ + // Collect all the syndication buttons that are pressed var syndications = []; $("#syndication-container button.btn-info").each(function(i,btn){ - syndications.push($(btn).data('syndication')); + syndications.push($(btn).data('syndicate-to')); }); var category = csv_to_array($("#note_category").val()); diff --git a/views/partials/syndication-js.php b/views/partials/syndication-js.php index bd657f3..088cb43 100644 --- a/views/partials/syndication-js.php +++ b/views/partials/syndication-js.php @@ -5,8 +5,9 @@ function reload_syndications() { $("#syndication-container").html(''); for(var i in data.targets) { var target = data.targets[i].target; + var uid = data.targets[i].uid; var favicon = data.targets[i].favicon; - $("#syndication-container ul").append('
  • '); + $("#syndication-container ul").append('
  • '); } bind_syndication_buttons(); } else {