]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Search.php
some minor fixings
[friendica.git] / src / Core / Search.php
index d000f8283c670e07a4fe3f7e35427d0a6acb513b..9f8375da12f66e539a25d1da0954a3c14b34ca1a 100644 (file)
@@ -33,26 +33,28 @@ class Search extends BaseObject
         *
         * @param string $user The user to search for
         *
-        * @return ResultList|null
+        * @return ResultList
         * @throws HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
        public static function getContactsFromProbe($user)
        {
+               $emptyResultList = new ResultList(1, 0, 1);
+
                if ((filter_var($user, FILTER_VALIDATE_EMAIL) && Network::isEmailDomainValid($user)) ||
                    (substr(Strings::normaliseLink($user), 0, 7) == "http://")) {
 
                        $user_data = Probe::uri($user);
                        if (empty($user_data)) {
-                               return null;
+                               return $emptyResultList;
                        }
 
-                       if (!(in_array($user_data["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::OSTATUS, Protocol::DIASPORA]))) {
-                               return null;
+                       if (!(in_array($user_data["network"], Protocol::FEDERATED))) {
+                               return $emptyResultList;
                        }
 
                        $contactDetails = Contact::getDetailsByURL(defaults($user_data, 'url', ''), local_user());
-                       $itemUrl = (($contactDetails["addr"] != "") ? $contactDetails["addr"] : defaults($user_data, 'url', ''));
+                       $itemUrl        = defaults($contactDetails, 'addr', defaults($user_data, 'url', ''));
 
                        $result = new ContactResult(
                                defaults($user_data, 'name', ''),
@@ -67,21 +69,21 @@ class Search extends BaseObject
                        );
 
                        return new ResultList(1, 1, 1, [$result]);
-
                } else {
-                       return null;
+                       return $emptyResultList;
                }
        }
 
        /**
         * Search in the global directory for occurrences of the search string
+        *
         * @see https://github.com/friendica/friendica-directory/blob/master/docs/Protocol.md#search
         *
         * @param string $search
         * @param int    $type specific type of searching
         * @param int    $page
         *
-        * @return ResultList|null
+        * @return ResultList
         * @throws HTTPException\InternalServerErrorException
         */
        public static function getContactsFromGlobalDirectory($search, $type = self::TYPE_ALL, $page = 1)
@@ -105,22 +107,21 @@ class Search extends BaseObject
                        $searchUrl .= '&page=' . $page;
                }
 
-               $red = 0;
-               $resultJson = Network::fetchUrl($searchUrl, false,$red, 0, 'application/json');
+               $resultJson = Network::fetchUrl($searchUrl, false, 0, 'application/json');
 
-               $results    = json_decode($resultJson, true);
+               $results = json_decode($resultJson, true);
 
                $resultList = new ResultList(
                        defaults($results, 'page', 1),
-                       defaults($results, 'count', 1),
-                       defaults($results, 'itemsperpage', 1)
+                       defaults($results, 'count', 0),
+                       defaults($results, 'itemsperpage', 30)
                );
 
                $profiles = defaults($results, 'profiles', []);
 
                foreach ($profiles as $profile) {
                        $contactDetails = Contact::getDetailsByURL(defaults($profile, 'profile_url', ''), local_user());
-                       $itemUrl = (!empty($contactDetails['addr']) ? $contactDetails['addr'] : defaults($profile, 'profile_url', ''));
+                       $itemUrl        = defaults($contactDetails, 'addr', defaults($profile, 'profile_url', ''));
 
                        $result = new ContactResult(
                                defaults($profile, 'name', ''),
@@ -143,14 +144,14 @@ class Search extends BaseObject
         * Search in the local database for occurrences of the search string
         *
         * @param string $search
+        * @param int    $type
         * @param int    $start
         * @param int    $itemPage
-        * @param int    $type
         *
-        * @return ResultList|null
+        * @return ResultList
         * @throws HTTPException\InternalServerErrorException
         */
-       public static function getContactsFromLocalDirectory($search, $start = 0, $itemPage = 80, $type = self::TYPE_ALL)
+       public static function getContactsFromLocalDirectory($search, $type = self::TYPE_ALL, $start = 0, $itemPage = 80)
        {
                $config = self::getApp()->getConfig();
 
@@ -172,8 +173,10 @@ class Search extends BaseObject
                        ($type === self::TYPE_FORUM),
                ]);
 
+               $resultList = new ResultList($start, $itemPage, $count);
+
                if (empty($count)) {
-                       return null;
+                       return $resultList;
                }
 
                $data = DBA::select('gcontact', ['nurl'], [
@@ -189,16 +192,14 @@ class Search extends BaseObject
                        ($type === self::TYPE_FORUM),
                ], [
                        'group_by' => ['nurl', 'updated'],
-                       'limit' => [$start, $itemPage],
-                       'order' => ['updated' => 'DESC']
+                       'limit'    => [$start, $itemPage],
+                       'order'    => ['updated' => 'DESC']
                ]);
 
                if (!DBA::isResult($data)) {
-                       return null;
+                       return $resultList;
                }
 
-               $resultList = new ResultList($start, $itemPage, $count);
-
                while ($row = DBA::fetch($data)) {
                        if (PortableContact::alternateOStatusUrl($row["nurl"])) {
                                continue;