Commit 36d40866 authored by Zot's avatar Zot Committed by Mario
Browse files

ostatus feeds: extract photo information from posts and convert to enclosures...

ostatus feeds: extract photo information from posts and convert to enclosures as otherwise OStatus servers will strip them from the HTML in the feed and refuse to render them
parent 01b541d8
......@@ -136,7 +136,7 @@ function get_feed_for($channel, $observer_hash, $params) {
continue;
/** @BUG $owner is undefined in this call */
$atom .= atom_entry($item, $type, null, $owner, true);
$atom .= atom_entry($item, $type, null, $owner, true, '', $params['compat']);
}
}
......@@ -1306,6 +1306,28 @@ function atom_render_author($tag,$xchan) {
}
function compat_photos_list($s) {
$ret = [];
$found = preg_match_all('/\[[zi]mg(.*?)\](.*?)\[/ism',$s,$matches,PREG_SET_ORDER);
if($found) {
foreach($matches as $match) {
$ret[] = [
'href' => $match[2],
'length' => 0,
'type' => guess_image_type($match[2])
];
}
}
return $ret;
}
/**
* @brief Create an item for the Atom feed.
*
......@@ -1319,7 +1341,8 @@ function atom_render_author($tag,$xchan) {
* @param number $cid default 0
* @return void|string
*/
function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0) {
function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0, $compat = false) {
if(! $item['parent'])
return;
......@@ -1334,6 +1357,13 @@ function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0) {
else
$body = $item['body'];
if($compat) {
$compat_photos = compat_photos_list($body);
}
else {
$compat_photos = null;
}
$o = "\r\n\r\n<entry>\r\n";
if(is_array($author)) {
......@@ -1403,10 +1433,19 @@ function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0) {
. (($enc['href']) ? 'href="' . $enc['href'] . '" ' : '')
. (($enc['length']) ? 'length="' . $enc['length'] . '" ' : '')
. (($enc['type']) ? 'type="' . $enc['type'] . '" ' : '')
. ' />';
. ' />' . "\r\n";
}
}
}
if($compat_photos) {
foreach($compat_photos as $enc) {
$o .= '<link rel="enclosure" '
. (($enc['href']) ? 'href="' . $enc['href'] . '" ' : '')
. (($enc['length']) ? 'length="' . $enc['length'] . '" ' : '')
. (($enc['type']) ? 'type="' . $enc['type'] . '" ' : '')
. ' />' . "\r\n";
}
}
if($item['term']) {
foreach($item['term'] as $term) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment