summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/helpers.php41
1 files changed, 15 insertions, 26 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
);
}
}