Merge pull request #3281 from annando/issue-3206-2957
Mastodon: plink for reshares, missing hostnames for avatars
This commit is contained in:
commit
2952e2b3e4
1 changed files with 39 additions and 3 deletions
|
@ -27,6 +27,38 @@ class ostatus {
|
||||||
const OSTATUS_DEFAULT_POLL_TIMEFRAME = 1440; // given in minutes
|
const OSTATUS_DEFAULT_POLL_TIMEFRAME = 1440; // given in minutes
|
||||||
const OSTATUS_DEFAULT_POLL_TIMEFRAME_MENTIONS = 14400; // given in minutes
|
const OSTATUS_DEFAULT_POLL_TIMEFRAME_MENTIONS = 14400; // given in minutes
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Mix two paths together to possibly fix missing parts
|
||||||
|
*
|
||||||
|
* @param string $avatar Path to the avatar
|
||||||
|
* @param string $base Another path that is hopefully complete
|
||||||
|
*
|
||||||
|
* @return string fixed avatar path
|
||||||
|
*/
|
||||||
|
private static function fix_avatar($avatar, $base) {
|
||||||
|
$base_parts = parse_url($base);
|
||||||
|
|
||||||
|
// Remove all parts that could create a problem
|
||||||
|
unset($base_parts['path']);
|
||||||
|
unset($base_parts['query']);
|
||||||
|
unset($base_parts['fragment']);
|
||||||
|
|
||||||
|
$avatar_parts = parse_url($avatar);
|
||||||
|
|
||||||
|
// Now we mix them
|
||||||
|
$parts = array_merge($base_parts, $avatar_parts);
|
||||||
|
|
||||||
|
// And put them together again
|
||||||
|
$scheme = isset($parts['scheme']) ? $parts['scheme'] . '://' : '';
|
||||||
|
$host = isset($parts['host']) ? $parts['host'] : '';
|
||||||
|
$port = isset($parts['port']) ? ':' . $parts['port'] : '';
|
||||||
|
$path = isset($parts['path']) ? $parts['path'] : '';
|
||||||
|
$query = isset($parts['query']) ? '?' . $parts['query'] : '';
|
||||||
|
$fragment = isset($parts['fragment']) ? '#' . $parts['fragment'] : '';
|
||||||
|
|
||||||
|
return $scheme.$host.$port.$path.$query.$fragment;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Fetches author data
|
* @brief Fetches author data
|
||||||
*
|
*
|
||||||
|
@ -77,7 +109,7 @@ class ostatus {
|
||||||
}
|
}
|
||||||
if (count($avatarlist) > 0) {
|
if (count($avatarlist) > 0) {
|
||||||
krsort($avatarlist);
|
krsort($avatarlist);
|
||||||
$author["author-avatar"] = current($avatarlist);
|
$author["author-avatar"] = self::fix_avatar(current($avatarlist), $author["author-link"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$displayname = $xpath->evaluate('atom:author/poco:displayName/text()', $context)->item(0)->nodeValue;
|
$displayname = $xpath->evaluate('atom:author/poco:displayName/text()', $context)->item(0)->nodeValue;
|
||||||
|
@ -499,13 +531,17 @@ class ostatus {
|
||||||
|
|
||||||
$item["author-name"] = $orig_author["author-name"];
|
$item["author-name"] = $orig_author["author-name"];
|
||||||
$item["author-link"] = $orig_author["author-link"];
|
$item["author-link"] = $orig_author["author-link"];
|
||||||
$item["author-avatar"] = $orig_author["author-avatar"];
|
$item["author-avatar"] = self::fix_avatar($orig_author["author-avatar"], $orig_author["author-link"]);
|
||||||
|
|
||||||
$item["body"] = add_page_info_to_body(html2bbcode($orig_body));
|
$item["body"] = add_page_info_to_body(html2bbcode($orig_body));
|
||||||
$item["created"] = $orig_created;
|
$item["created"] = $orig_created;
|
||||||
$item["edited"] = $orig_edited;
|
$item["edited"] = $orig_edited;
|
||||||
|
|
||||||
$item["uri"] = $orig_uri;
|
$item["uri"] = $orig_uri;
|
||||||
$item["plink"] = $orig_link;
|
|
||||||
|
if (!isset($item["plink"])) {
|
||||||
|
$item["plink"] = $orig_link;
|
||||||
|
}
|
||||||
|
|
||||||
$item["verb"] = $xpath->query('activity:verb/text()', $activityobjects)->item(0)->nodeValue;
|
$item["verb"] = $xpath->query('activity:verb/text()', $activityobjects)->item(0)->nodeValue;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue