]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/PortableContact.php
Extract title determination from OStatus::entryHeader logic
[friendica.git] / src / Protocol / PortableContact.php
index 374eb02ae07bbc75bb5760c291a99c95ff3929d4..4b8b6fff63f1446bb12cd818e9c53b07dddbc4bd 100644 (file)
@@ -26,8 +26,6 @@ use Friendica\Util\Network;
 use Friendica\Util\Strings;
 use Friendica\Util\XML;
 
-require_once 'include/dba.php';
-
 class PortableContact
 {
        /**
@@ -46,7 +44,7 @@ class PortableContact
         * Once the global contact is stored add (if necessary) the contact linkage which associates
         * the given uid, cid to the global contact entry. There can be many uid/cid combinations
         * pointing to the same global contact id.
-        *
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function loadWorker($cid, $uid = 0, $zcid = 0, $url = null)
        {
@@ -61,12 +59,10 @@ class PortableContact
         * @param integer $uid  User ID
         * @param integer $zcid Global Contact ID
         * @param integer $url  POCO address that should be polled
-        *
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function load($cid, $uid, $zcid, $url)
        {
-               $a = get_app();
-
                if ($cid) {
                        if (!$url || !$uid) {
                                $contact = DBA::selectFirst('contact', ['poco', 'uid'], ['id' => $cid]);
@@ -232,7 +228,6 @@ class PortableContact
                        $friendica = preg_replace("=(https?://)(.*)/profile/(.*)=ism", "$1$2", $profile);
                        if ($friendica != $profile) {
                                $server_url = $friendica;
-                               $network = Protocol::DFRN;
                        }
                }
 
@@ -240,7 +235,6 @@ class PortableContact
                        $diaspora = preg_replace("=(https?://)(.*)/u/(.*)=ism", "$1$2", $profile);
                        if ($diaspora != $profile) {
                                $server_url = $diaspora;
-                               $network = Protocol::DIASPORA;
                        }
                }
 
@@ -248,7 +242,6 @@ class PortableContact
                        $red = preg_replace("=(https?://)(.*)/channel/(.*)=ism", "$1$2", $profile);
                        if ($red != $profile) {
                                $server_url = $red;
-                               $network = Protocol::DIASPORA;
                        }
                }
 
@@ -257,7 +250,6 @@ class PortableContact
                        $mastodon = preg_replace("=(https?://)(.*)/users/(.*)=ism", "$1$2", $profile);
                        if ($mastodon != $profile) {
                                $server_url = $mastodon;
-                               $network = Protocol::OSTATUS;
                        }
                }
 
@@ -266,7 +258,6 @@ class PortableContact
                        $ostatus = preg_replace("=(https?://)(.*)/user/(.*)=ism", "$1$2", $profile);
                        if ($ostatus != $profile) {
                                $server_url = $ostatus;
-                               $network = Protocol::OSTATUS;
                        }
                }
 
@@ -275,7 +266,6 @@ class PortableContact
                        $base = preg_replace("=(https?://)(.*?)/(.*)=ism", "$1$2", $profile);
                        if ($base != $profile) {
                                $server_url = $base;
-                               $network = Protocol::PHANTOM;
                        }
                }
 
@@ -336,7 +326,7 @@ class PortableContact
                        $server_url = Strings::normaliseLink(self::detectServer($profile));
                }
 
-               if (!in_array($gcontacts[0]["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::FEED, Protocol::OSTATUS, ""])) {
+               if (!in_array($gcontacts[0]["network"], [Protocol::DFRN, Protocol::DIASPORA, Protocol::FEED, Protocol::OSTATUS, ""])) {
                        Logger::log("Profile ".$profile.": Network type ".$gcontacts[0]["network"]." can't be checked", Logger::DEBUG);
                        return false;
                }
@@ -611,8 +601,6 @@ class PortableContact
         */
        private static function detectPocoData(array $data)
        {
-               $server = false;
-
                if (!isset($data['entry'])) {
                        return false;
                }
@@ -645,6 +633,7 @@ class PortableContact
         *
         * @param string $server_url address of the server
         * @return array Server data
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private static function fetchNodeinfo($server_url)
        {
@@ -698,6 +687,7 @@ class PortableContact
         *
         * @param string $nodeinfo_url address of the nodeinfo path
         * @return array Server data
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private static function parseNodeinfo1($nodeinfo_url)
        {
@@ -734,7 +724,7 @@ class PortableContact
                        }
                }
 
-               if (is_array($nodeinfo['metadata']) && isset($nodeinfo['metadata']['nodeName'])) {
+               if (isset($nodeinfo['metadata']['nodeName'])) {
                        $server['site_name'] = $nodeinfo['metadata']['nodeName'];
                }
 
@@ -782,6 +772,7 @@ class PortableContact
         *
         * @param string $nodeinfo_url address of the nodeinfo path
         * @return array Server data
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private static function parseNodeinfo2($nodeinfo_url)
        {
@@ -817,7 +808,7 @@ class PortableContact
                        }
                }
 
-               if (is_array($nodeinfo['metadata']) && isset($nodeinfo['metadata']['nodeName'])) {
+               if (isset($nodeinfo['metadata']['nodeName'])) {
                        $server['site_name'] = $nodeinfo['metadata']['nodeName'];
                }
 
@@ -1375,15 +1366,15 @@ class PortableContact
                                                $site_name = $data['site_name'];
                                        }
 
-                                       $info = $data['info'];
+                                       $info = defaults($data, 'info', '');
                                        $register_policy = defaults($data, 'register_policy', REGISTER_CLOSED);
                                        if (in_array($register_policy, ['REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN'])) {
-                                               $register_policy = constant($data['register_policy']);
+                                               $register_policy = constant($register_policy);
                                        } else {
                                                Logger::log("Register policy '$register_policy' from $server_url is invalid.");
                                                $register_policy = REGISTER_CLOSED; // set a default value
                                        }
-                                       $platform = $data['platform'];
+                                       $platform = defaults($data, 'platform', '');
                                }
                        }
                }
@@ -1446,6 +1437,7 @@ class PortableContact
         * @brief Fetch relay data from a given server url
         *
         * @param string $server_url address of the server
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private static function discoverRelay($server_url)
        {
@@ -1520,6 +1512,7 @@ class PortableContact
        /**
         * @brief Returns a list of all known servers
         * @return array List of server urls
+        * @throws Exception
         */
        public static function serverlist()
        {
@@ -1544,6 +1537,7 @@ class PortableContact
         * @brief Fetch server list from remote servers and adds them when they are new.
         *
         * @param string $poco URL to the POCO endpoint
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private static function fetchServerlist($poco)
        {
@@ -1778,7 +1772,7 @@ class PortableContact
                                $curlResult = Network::curl($url);
 
                                if ($curlResult->isSuccess()) {
-                                       $data = json_decode($curlResult["body"], true);
+                                       $data = json_decode($curlResult->getBody(), true);
 
                                        if (!empty($data)) {
                                                self::discoverServer($data, 3);