Browse Source

accept new json q=syndicate-to response

closes #36
pull/41/head
Aaron Parecki 9 years ago
parent
commit
3f61541094
  1. 41
      lib/helpers.php
  2. 10
      views/new-post.php
  3. 3
      views/partials/syndication-js.php

41
lib/helpers.php

@ -175,13 +175,14 @@ function micropub_get($endpoint, $params, $access_token) {
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $endpoint); curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $access_token
'Authorization: Bearer ' . $access_token,
'Accept: application/json'
)); ));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch); $response = curl_exec($ch);
$data = array(); $data = array();
if($response) { if($response) {
parse_str($response, $data);
$data = json_decode($response, true);
} }
$error = curl_error($ch); $error = curl_error($ch);
return array( 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); $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($r['data'] && array_key_exists('syndicate-to', $r['data'])) {
if(is_array($r['data']['syndicate-to'])) { 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 { } 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 { } else {
$icon = false;
}
if(array_key_exists('uid', $t) && array_key_exists('name', $t)) {
$targets[] = array( $targets[] = array(
'target' => $t,
'favicon' => false
'target' => $t['name'],
'uid' => $t['uid'],
'favicon' => $icon
); );
} }
} }

10
views/new-post.php

@ -38,7 +38,12 @@
if($this->syndication_targets) { if($this->syndication_targets) {
echo '<ul>'; echo '<ul>';
foreach($this->syndication_targets as $syn) { foreach($this->syndication_targets as $syn) {
echo '<li><button data-syndication="'.$syn['target'].'" class="btn btn-default btn-block"><img src="'.$syn['favicon'].'" width="16" height="16"> '.$syn['target'].'</button></li>';
echo '<li>'
. '<button data-syndicate-to="'.(isset($syn['uid']) ? $syn['uid'] : $syn['target']).'" class="btn btn-default btn-block">'
. ($syn['favicon'] ? '<img src="'.$syn['favicon'].'" width="16" height="16"> ' : '')
. $syn['target']
. '</button>'
. '</li>';
} }
echo '</ul>'; echo '</ul>';
} else { } else {
@ -181,9 +186,10 @@ $(function(){
$("#btn_post").click(function(){ $("#btn_post").click(function(){
// Collect all the syndication buttons that are pressed
var syndications = []; var syndications = [];
$("#syndication-container button.btn-info").each(function(i,btn){ $("#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()); var category = csv_to_array($("#note_category").val());

3
views/partials/syndication-js.php

@ -5,8 +5,9 @@ function reload_syndications() {
$("#syndication-container").html('<ul></ul>'); $("#syndication-container").html('<ul></ul>');
for(var i in data.targets) { for(var i in data.targets) {
var target = data.targets[i].target; var target = data.targets[i].target;
var uid = data.targets[i].uid;
var favicon = data.targets[i].favicon; var favicon = data.targets[i].favicon;
$("#syndication-container ul").append('<li><button data-syndication="'+target+'" class="btn btn-default btn-block"><img src="'+favicon+'" width="16" height="16"> '+target+'</button></li>');
$("#syndication-container ul").append('<li><button data-syndicate-to="'+(uid ? uid : target)+'" class="btn btn-default btn-block">'+(favicon ? '<img src="'+favicon+'" width="16" height="16"> ':'')+target+'</button></li>');
} }
bind_syndication_buttons(); bind_syndication_buttons();
} else { } else {

Loading…
Cancel
Save