aboutsummaryrefslogtreecommitdiffstats
path: root/include/feedutils.php
diff options
context:
space:
mode:
authorzotlabs <mike@macgirvin.com>2017-05-11 17:39:26 -0700
committerzotlabs <mike@macgirvin.com>2017-05-11 17:39:26 -0700
commite501289a5544823eed3834a831770c07159664ff (patch)
tree0ea4d2508fac7d006c42fbd358375ea4601e02ab /include/feedutils.php
parent582d075c4501ede78e35ac2207741c9a849d3673 (diff)
downloadvolse-hubzilla-e501289a5544823eed3834a831770c07159664ff.tar.gz
volse-hubzilla-e501289a5544823eed3834a831770c07159664ff.tar.bz2
volse-hubzilla-e501289a5544823eed3834a831770c07159664ff.zip
consolidate and simplify the generation of activitystreams persons, add a couple more fields hoping eventually Mastodon will accept legal follow activities without choking on them. Requires an update of plugins also.
Diffstat (limited to 'include/feedutils.php')
-rw-r--r--include/feedutils.php45
1 files changed, 38 insertions, 7 deletions
diff --git a/include/feedutils.php b/include/feedutils.php
index 6bb7d103e..6c411723a 100644
--- a/include/feedutils.php
+++ b/include/feedutils.php
@@ -79,9 +79,11 @@ function get_feed_for($channel, $observer_hash, $params) {
$feed_author = '';
if(intval($params['compat']) === 1) {
- $feed_author = atom_author('author',$channel['channel_address'],$channel['channel_name'],$channel['xchan_url'],300,300,$channel['xchan_photo_mimetype'],$channel['xchan_photo_l']);
+ $feed_author = atom_render_author('author',$channel);
}
+ $owner = atom_render_author('zot:owner',$channel);
+
$atom .= replace_macros($feed_template, array(
'$version' => xmlify(Zotlabs\Lib\System::get_project_version()),
'$red' => xmlify(Zotlabs\Lib\System::get_platform_name()),
@@ -89,6 +91,7 @@ function get_feed_for($channel, $observer_hash, $params) {
'$feed_title' => xmlify($channel['channel_name']),
'$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now', ATOM_TIME)),
'$author' => $feed_author,
+ '$owner' => $owner,
'$name' => xmlify($channel['channel_name']),
'$profile_page' => xmlify($channel['xchan_url']),
'$mimephoto' => xmlify($channel['xchan_photo_mimetype']),
@@ -1272,6 +1275,37 @@ function atom_author($tag, $nick, $name, $uri, $h, $w, $type, $photo) {
return $o;
}
+
+function atom_render_author($tag,$xchan) {
+
+
+ $nick = xmlify(substr($xchan['xchan_addr'],0,strpos($xchan['xchan_addr'],'@')));
+ $id = xmlify($xchan['xchan_url']);
+ $name = xmlify($xchan['xchan_name']);
+ $photo = xmlify($xchan['xchan_photo_l']);
+ $type = xmlify($xchan['xchan_photo_mimetype']);
+ $w = $h = 300;
+
+ $o .= "<$tag>\r\n";
+ $o .= " <as:object-type>http://activitystrea.ms/schema/1.0/person</as:object-type>\r\n";
+ $o .= " <id>$id</id>\r\n";
+ $o .= " <name>$nick</name>\r\n";
+ $o .= " <uri>$id</uri>\r\n";
+ $o .= ' <link rel="alternate" type="text/html" href="' . $id . '" />' . "\r\n";
+ $o .= ' <link rel="photo" type="' . $type . '" media:width="' . $w . '" media:height="' . $h . '" href="' . $photo . '" />' . "\r\n";
+ $o .= ' <link rel="avatar" type="' . $type . '" media:width="' . $w . '" media:height="' . $h . '" href="' . $photo . '" />' . "\r\n";
+ $o .= ' <poco:preferredUsername>' . $nick . '</poco:preferredUsername>' . "\r\n";
+ $o .= ' <poco:displayName>' . $name . '</poco:displayName>' . "\r\n";
+
+ call_hooks('atom_render_author', $o);
+
+ $o .= "</$tag>\r\n";
+
+ return $o;
+
+
+}
+
/**
* @brief Create an item for the Atom feed.
*
@@ -1303,16 +1337,13 @@ function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0) {
$o = "\r\n\r\n<entry>\r\n";
if(is_array($author)) {
- $reddress = substr($author['xchan_addr'],0,strpos($author['xchan_addr'],'@'));
- $o .= atom_author('author',$reddress,$author['xchan_name'],$author['xchan_url'],80,80,$author['xchan_photo_mimetype'],$author['xchan_photo_m']);
+ $o .= atom_render_author('author',$author);
}
else {
- $reddress = substr($item['author']['xchan_addr'],0,strpos($item['author']['xchan_addr'],'@'));
- $o .= atom_author('author',$reddress,$item['author']['xchan_name'],$item['author']['xchan_url'],80,80,$item['author']['xchan_photo_mimetype'], $item['author']['xchan_photo_m']);
+ $o .= atom_render_author('author',$item['author']);
}
- $reddress = substr($item['owner']['xchan_addr'],0,strpos($item['owner']['xchan_addr'],'@'));
- $o .= atom_author('zot:owner',$reddress,$item['owner']['xchan_name'],$item['owner']['xchan_url'],80,80,$item['owner']['xchan_photo_mimetype'],$item['owner']['xchan_photo_m']);
+ $o .= atom_render_author('zot:owner',$item['owner']);
if(($item['parent'] != $item['id']) || ($item['parent_mid'] !== $item['mid']) || (($item['thr_parent'] !== '') && ($item['thr_parent'] !== $item['mid']))) {
$parent_item = (($item['thr_parent']) ? $item['thr_parent'] : $item['parent_mid']);