]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/GContact.php
Remove unused variable in Model\Item
[friendica.git] / src / Model / GContact.php
index 398fc77588766a3ed6609d5ef91ca20aaf2c0a24..43375b9afb6692bc82d32f01ef837123aca701e1 100644 (file)
@@ -17,8 +17,7 @@ use Friendica\Network\Probe;
 use Friendica\Protocol\PortableContact;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Network;
-
-require_once 'include/dba.php';
+use Friendica\Util\Strings;
 
 /**
  * @brief This class handles GlobalContact related functions
@@ -32,6 +31,7 @@ class GContact
         * @param string $mode   Search mode (e.g. "community")
         *
         * @return array with search results
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function searchByName($search, $mode = '')
        {
@@ -92,6 +92,7 @@ class GContact
         * @param integer $cid  Contact ID
         * @param integer $zcid Global Contact ID
         * @return void
+        * @throws Exception
         */
        public static function link($gcid, $uid = 0, $cid = 0, $zcid = 0)
        {
@@ -106,16 +107,16 @@ class GContact
        /**
         * @brief Sanitize the given gcontact data
         *
-        * @param array $gcontact array with gcontact data
-        * @throw Exception
-        *
         * Generation:
         *  0: No definition
         *  1: Profiles on this server
         *  2: Contacts of profiles on this server
         *  3: Contacts of contacts of profiles on this server
         *  4: ...
+        *
+        * @param array $gcontact array with gcontact data
         * @return array $gcontact
+        * @throws Exception
         */
        public static function sanitize($gcontact)
        {
@@ -146,13 +147,13 @@ class GContact
                $alternate = PortableContact::alternateOStatusUrl($gcontact['url']);
 
                // The global contacts should contain the original picture, not the cached one
-               if (($gcontact['generation'] != 1) && stristr(normalise_link($gcontact['photo']), normalise_link(System::baseUrl()."/photo/"))) {
+               if (($gcontact['generation'] != 1) && stristr(Strings::normaliseLink($gcontact['photo']), Strings::normaliseLink(System::baseUrl()."/photo/"))) {
                        $gcontact['photo'] = "";
                }
 
                if (!isset($gcontact['network'])) {
                        $condition = ["`uid` = 0 AND `nurl` = ? AND `network` != '' AND `network` != ?",
-                               normalise_link($gcontact['url']), Protocol::STATUSNET];
+                               Strings::normaliseLink($gcontact['url']), Protocol::STATUSNET];
                        $contact = DBA::selectFirst('contact', ['network'], $condition);
                        if (DBA::isResult($contact)) {
                                $gcontact['network'] = $contact["network"];
@@ -160,7 +161,7 @@ class GContact
 
                        if (($gcontact['network'] == "") || ($gcontact['network'] == Protocol::OSTATUS)) {
                                $condition = ["`uid` = 0 AND `alias` IN (?, ?) AND `network` != '' AND `network` != ?",
-                                       $gcontact['url'], normalise_link($gcontact['url']), Protocol::STATUSNET];
+                                       $gcontact['url'], Strings::normaliseLink($gcontact['url']), Protocol::STATUSNET];
                                $contact = DBA::selectFirst('contact', ['network'], $condition);
                                if (DBA::isResult($contact)) {
                                        $gcontact['network'] = $contact["network"];
@@ -172,7 +173,7 @@ class GContact
                $gcontact['network'] = '';
 
                $fields = ['network', 'updated', 'server_url', 'url', 'addr'];
-               $gcnt = DBA::selectFirst('gcontact', $fields, ['nurl' => normalise_link($gcontact['url'])]);
+               $gcnt = DBA::selectFirst('gcontact', $fields, ['nurl' => Strings::normaliseLink($gcontact['url'])]);
                if (DBA::isResult($gcnt)) {
                        if (!isset($gcontact['network']) && ($gcnt["network"] != Protocol::STATUSNET)) {
                                $gcontact['network'] = $gcnt["network"];
@@ -180,7 +181,7 @@ class GContact
                        if ($gcontact['updated'] <= DBA::NULL_DATETIME) {
                                $gcontact['updated'] = $gcnt["updated"];
                        }
-                       if (!isset($gcontact['server_url']) && (normalise_link($gcnt["server_url"]) != normalise_link($gcnt["url"]))) {
+                       if (!isset($gcontact['server_url']) && (Strings::normaliseLink($gcnt["server_url"]) != Strings::normaliseLink($gcnt["url"]))) {
                                $gcontact['server_url'] = $gcnt["server_url"];
                        }
                        if (!isset($gcontact['addr'])) {
@@ -205,8 +206,8 @@ class GContact
 
                        if ($alternate && ($gcontact['network'] == Protocol::OSTATUS)) {
                                // Delete the old entry - if it exists
-                               if (DBA::exists('gcontact', ['nurl' => normalise_link($orig_profile)])) {
-                                       DBA::delete('gcontact', ['nurl' => normalise_link($orig_profile)]);
+                               if (DBA::exists('gcontact', ['nurl' => Strings::normaliseLink($orig_profile)])) {
+                                       DBA::delete('gcontact', ['nurl' => Strings::normaliseLink($orig_profile)]);
                                }
                        }
                }
@@ -241,6 +242,7 @@ class GContact
         * @param integer $uid id
         * @param integer $cid id
         * @return integer
+        * @throws Exception
         */
        public static function countCommonFriends($uid, $cid)
        {
@@ -268,6 +270,7 @@ class GContact
         * @param integer $uid  id
         * @param integer $zcid zcid
         * @return integer
+        * @throws Exception
         */
        public static function countCommonFriendsZcid($uid, $zcid)
        {
@@ -294,6 +297,7 @@ class GContact
         * @param integer $limit   optional, default 9999
         * @param boolean $shuffle optional, default false
         * @return object
+        * @throws Exception
         */
        public static function commonFriends($uid, $cid, $start = 0, $limit = 9999, $shuffle = false)
        {
@@ -332,6 +336,7 @@ class GContact
         * @param integer $limit   optional, default 9999
         * @param boolean $shuffle optional, default false
         * @return object
+        * @throws Exception
         */
        public static function commonFriendsZcid($uid, $zcid, $start = 0, $limit = 9999, $shuffle = false)
        {
@@ -361,6 +366,7 @@ class GContact
         * @param integer $uid user
         * @param integer $cid cid
         * @return integer
+        * @throws Exception
         */
        public static function countAllFriends($uid, $cid)
        {
@@ -386,6 +392,7 @@ class GContact
         * @param integer $start optional, default 0
         * @param integer $limit optional, default 80
         * @return array
+        * @throws Exception
         */
        public static function allFriends($uid, $cid, $start = 0, $limit = 80)
        {
@@ -409,10 +416,11 @@ class GContact
        }
 
        /**
-        * @param object  $uid   user
+        * @param int     $uid   user
         * @param integer $start optional, default 0
         * @param integer $limit optional, default 80
         * @return array
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function suggestionQuery($uid, $start = 0, $limit = 80)
        {
@@ -429,7 +437,7 @@ class GContact
                //      return $list;
                //}
 
-               $network = [Protocol::DFRN];
+               $network = [Protocol::DFRN, Protocol::ACTIVITYPUB];
 
                if (Config::get('system', 'diaspora_enabled')) {
                        $network[] = Protocol::DIASPORA;
@@ -450,7 +458,7 @@ class GContact
                        where uid = %d and not gcontact.nurl in ( select nurl from contact where uid = %d )
                        AND NOT `gcontact`.`name` IN (SELECT `name` FROM `contact` WHERE `uid` = %d)
                        AND NOT `gcontact`.`id` IN (SELECT `gcid` FROM `gcign` WHERE `uid` = %d)
-                       AND `gcontact`.`updated` >= '%s'
+                       AND `gcontact`.`updated` >= '%s' AND NOT `gcontact`.`hide`
                        AND `gcontact`.`last_contact` >= `gcontact`.`last_failure`
                        AND `gcontact`.`network` IN (%s)
                        GROUP BY `glink`.`gcid` ORDER BY `gcontact`.`updated` DESC,`total` DESC LIMIT %d, %d",
@@ -516,11 +524,10 @@ class GContact
 
        /**
         * @return void
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function updateSuggestions()
        {
-               $a = get_app();
-
                $done = [];
 
                /// @TODO Check if it is really neccessary to poll the own server
@@ -569,6 +576,7 @@ class GContact
         * @param string $url Contact url
         *
         * @return string Contact url with the wanted parts
+        * @throws Exception
         */
        public static function cleanContactUrl($url)
        {
@@ -600,6 +608,8 @@ class GContact
         *
         * @param array $contact contact array (called by reference)
         * @return void
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        public static function fixAlternateContactAddress(&$contact)
        {
@@ -621,6 +631,8 @@ class GContact
         * @param array $contact contact array
         *
         * @return bool|int Returns false if not found, integer if contact was found
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        public static function getId($contact)
        {
@@ -658,7 +670,7 @@ class GContact
 
                DBA::lock('gcontact');
                $fields = ['id', 'last_contact', 'last_failure', 'network'];
-               $gcnt = DBA::selectFirst('gcontact', $fields, ['nurl' => normalise_link($contact["url"])]);
+               $gcnt = DBA::selectFirst('gcontact', $fields, ['nurl' => Strings::normaliseLink($contact["url"])]);
                if (DBA::isResult($gcnt)) {
                        $gcontact_id = $gcnt["id"];
 
@@ -683,7 +695,7 @@ class GContact
                                DBA::escape($contact["addr"]),
                                DBA::escape($contact["network"]),
                                DBA::escape($contact["url"]),
-                               DBA::escape(normalise_link($contact["url"])),
+                               DBA::escape(Strings::normaliseLink($contact["url"])),
                                DBA::escape($contact["photo"]),
                                DBA::escape(DateTimeFormat::utcNow()),
                                DBA::escape(DateTimeFormat::utcNow()),
@@ -693,7 +705,7 @@ class GContact
                                intval($contact["generation"])
                        );
 
-                       $condition = ['nurl' => normalise_link($contact["url"])];
+                       $condition = ['nurl' => Strings::normaliseLink($contact["url"])];
                        $cnt = DBA::selectFirst('gcontact', ['id', 'network'], $condition, ['order' => ['id']]);
                        if (DBA::isResult($cnt)) {
                                $gcontact_id = $cnt["id"];
@@ -716,6 +728,8 @@ class GContact
         * @param array $contact contact array
         *
         * @return bool|int Returns false if not found, integer if contact was found
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        public static function update($contact)
        {
@@ -793,7 +807,7 @@ class GContact
                                $contact["server_url"] = $data['baseurl'];
                        }
                } else {
-                       $contact["server_url"] = normalise_link($contact["server_url"]);
+                       $contact["server_url"] = Strings::normaliseLink($contact["server_url"]);
                }
 
                if (($contact["addr"] == "") && ($contact["server_url"] != "") && ($contact["nick"] != "")) {
@@ -822,7 +836,7 @@ class GContact
                if ($update) {
                        Logger::log("Update gcontact for ".$contact["url"], Logger::DEBUG);
                        $condition = ['`nurl` = ? AND (`generation` = 0 OR `generation` >= ?)',
-                                       normalise_link($contact["url"]), $contact["generation"]];
+                                       Strings::normaliseLink($contact["url"]), $contact["generation"]];
                        $contact["updated"] = DateTimeFormat::utc($contact["updated"]);
 
                        $updated = ['photo' => $contact['photo'], 'name' => $contact['name'],
@@ -842,7 +856,7 @@ class GContact
                        // This is used for the shadow copies of public items.
                        /// @todo Check if we really should do this.
                        // The quality of the gcontact table is mostly lower than the public contact
-                       $public_contact = DBA::selectFirst('contact', ['id'], ['nurl' => normalise_link($contact["url"]), 'uid' => 0]);
+                       $public_contact = DBA::selectFirst('contact', ['id'], ['nurl' => Strings::normaliseLink($contact["url"]), 'uid' => 0]);
                        if (DBA::isResult($public_contact)) {
                                Logger::log("Update public contact ".$public_contact["id"], Logger::DEBUG);
 
@@ -863,7 +877,7 @@ class GContact
                                                'location' => $contact['location'], 'about' => $contact['about']];
 
                                // Don't update the birthday field if not set or invalid
-                               if (empty($contact['birthday']) || ($contact['birthday'] < '0001-01-01')) {
+                               if (empty($contact['birthday']) || ($contact['birthday'] <= DBA::NULL_DATE)) {
                                        unset($fields['bd']);
                                }
 
@@ -880,6 +894,8 @@ class GContact
         *
         * @param string $url profile link
         * @return void
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        public static function updateFromProbe($url)
        {
@@ -899,7 +915,9 @@ class GContact
         * @brief Update the gcontact entry for a given user id
         *
         * @param int $uid User ID
-        * @return void
+        * @return bool
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        public static function updateForUser($uid)
        {
@@ -950,7 +968,9 @@ class GContact
         * If the "Statistics" addon is enabled (See http://gstools.org/ for details) we query user data with this.
         *
         * @param string $server Server address
-        * @return void
+        * @return bool
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        public static function fetchGsUsers($server)
        {
@@ -965,8 +985,8 @@ class GContact
 
                $statistics = json_decode($curlResult->getBody());
 
-               if (!empty($statistics->config)) {
-                       if ($statistics->config->instance_with_ssl) {
+               if (!empty($statistics->config->instance_address)) {
+                       if (!empty($statistics->config->instance_with_ssl)) {
                                $server = "https://";
                        } else {
                                $server = "http://";
@@ -975,8 +995,8 @@ class GContact
                        $server .= $statistics->config->instance_address;
 
                        $hostname = $statistics->config->instance_address;
-               } elseif (!empty($statistics)) {
-                       if ($statistics->instance_with_ssl) {
+               } elseif (!empty($statistics->instance_address)) {
+                       if (!empty($statistics->instance_with_ssl)) {
                                $server = "https://";
                        } else {
                                $server = "http://";
@@ -1010,6 +1030,8 @@ class GContact
        /**
         * @brief Asking GNU Social server on a regular base for their user data
         * @return void
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        public static function discoverGsUsers()
        {
@@ -1035,6 +1057,7 @@ class GContact
 
        /**
         * @return string
+        * @throws Exception
         */
        public static function getRandomUrl()
        {