]> git.mxchange.org Git - friendica.git/commitdiff
Issue 2999: Better Mastodon handling
authorMichael <heluecht@pirati.ca>
Mon, 12 Dec 2016 06:46:02 +0000 (06:46 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 12 Dec 2016 06:46:02 +0000 (06:46 +0000)
include/items.php
include/socgraph.php

index 0445c4490cb97f1f6ff446837f25dd4724c05107..c2c4c10293edc3a8d2cdeeca304df1819fe74469 100644 (file)
@@ -280,6 +280,10 @@ function add_page_info_to_body($body, $texturl = false, $no_photos = false) {
 
        $URLSearchString = "^\[\]";
 
+       // Fix for Mastodon where the mentions are in a different format
+       $body = preg_replace("/\[url\=([$URLSearchString]*)\]([#!@])(.*?)\[\/url\]/ism",
+                               '$2[url=$1]$3[/url]', $body);
+
        // Adding these spaces is a quick hack due to my problems with regular expressions :)
        preg_match("/[^!#@]\[url\]([$URLSearchString]*)\[\/url\]/ism", " ".$body, $matches);
 
index 421a68cc9ef9212aad785505f179c2814cec5dab..f1388435380b0bbc48a6f8eaa139303c03be36ac 100644 (file)
@@ -391,6 +391,15 @@ function poco_detect_server($profile) {
                }
        }
 
+       // Mastodon
+       if ($server_url == "") {
+               $red = preg_replace("=(https?://)(.*)/users/(.*)=ism", "$1$2", $profile);
+               if ($red != $profile) {
+                       $server_url = $red;
+                       $network = NETWORK_OSTATUS;
+               }
+       }
+
        return $server_url;
 }
 
@@ -723,7 +732,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
        if (!$serverret["success"] OR ($serverret["body"] == "") OR (@sizeof($xmlobj) == 0) OR !is_object($xmlobj)) {
                $server_url = str_replace("https://", "http://", $server_url);
                $serverret = z_fetch_url($server_url."/.well-known/host-meta");
-
                $xmlobj = @simplexml_load_string($serverret["body"],'SimpleXMLElement',0, "http://docs.oasis-open.org/ns/xri/xrd-1.0");
        }
 
@@ -755,6 +763,13 @@ function poco_check_server($server_url, $network = "", $force = false) {
                                                $versionparts = explode("-", $version);
                                                $version = $versionparts[0];
                                        }
+
+                                       if(stristr($line,'Server: Mastodon')) {
+                                               $platform = "Mastodon";
+                                               $network = NETWORK_OSTATUS;
+                                               // Mastodon doesn't reveal version numbers
+                                               $version = "";
+                                       }
                                }
                }
        }