]> git.mxchange.org Git - friendica.git/blobdiff - mod/match.php
Use the function from the contact template instead
[friendica.git] / mod / match.php
index 451821f9f1285a0969ee3ed5841cd5483166d0cd..6a2e350bcc2a07f5615f464aa0dc0a8f991bf6ab 100644 (file)
@@ -1,23 +1,36 @@
 <?php
 /**
- * @file mod/match.php
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  */
 
 use Friendica\App;
-use Friendica\Content\Pager;
 use Friendica\Content\Widget;
-use Friendica\Core\Config;
-use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
-use Friendica\Core\System;
+use Friendica\Core\Search;
 use Friendica\Database\DBA;
+use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\Profile;
-use Friendica\Util\Network;
-use Friendica\Util\Proxy as ProxyUtils;
+use Friendica\Module\Contact as ModuleContact;
 
 /**
- * @brief Controller for /match.
+ * Controller for /match.
  *
  * It takes keywords from your profile and queries the directory server for
  * matching keywords from other profiles.
@@ -25,6 +38,9 @@ use Friendica\Util\Proxy as ProxyUtils;
  * @param App $a App
  *
  * @return string
+ * @throws ImagickException
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ * @throws Exception
  */
 function match_content(App $a)
 {
@@ -32,10 +48,10 @@ function match_content(App $a)
                return '';
        }
 
-       $a->page['aside'] .= Widget::findPeople();
-       $a->page['aside'] .= Widget::follow();
+       DI::page()['aside'] .= Widget::findPeople();
+       DI::page()['aside'] .= Widget::follow();
 
-       $_SESSION['return_path'] = $a->cmd;
+       $_SESSION['return_path'] = DI::args()->getCommand();
 
        $profile = Profile::getByUID(local_user());
 
@@ -43,7 +59,7 @@ function match_content(App $a)
                return '';
        }
        if (!$profile['pub_keywords'] && (!$profile['prv_keywords'])) {
-               notice(L10n::t('No keywords to match. Please add keywords to your default profile.') . EOL);
+               notice(DI::l10n()->t('No keywords to match. Please add keywords to your profile.'));
                return '';
        }
 
@@ -53,17 +69,17 @@ function match_content(App $a)
        $params['s'] = $tags;
        $params['n'] = 100;
 
-       if (strlen(Config::get('system', 'directory'))) {
-               $host = get_server();
+       if (strlen(DI::config()->get('system', 'directory'))) {
+               $host = Search::getGlobalDirectory();
        } else {
-               $host = System::baseUrl();
+               $host = DI::baseUrl();
        }
 
-       $msearch_json = Network::post($host . '/msearch', $params)->getBody();
+       $msearch_json = DI::httpRequest()->post($host . '/msearch', $params)->getBody();
 
        $msearch = json_decode($msearch_json);
 
-       $start = defaults($_GET, 'start', 0);
+       $start = $_GET['start'] ?? 0;
        $entries = [];
        $paginate = '';
 
@@ -72,49 +88,26 @@ function match_content(App $a)
                        $profile = $msearch->results[$i];
 
                        // Already known contact
-                       if (Contact::getIdForURL($profile->url, local_user(), true)) {
+                       if (!$profile || Contact::getIdForURL($profile->url, local_user(), false)) {
                                continue;
                        }
 
-                       // Workaround for wrong directory photo URL
-                       $profile->photo = str_replace('http:///photo/', get_server() . '/photo/', $profile->photo);
-
-                       $connlnk = System::baseUrl() . '/follow/?url=' . $profile->url;
-                       $photo_menu = [
-                               'profile' => [L10n::t("View Profile"), Contact::magicLink($profile->url)],
-                               'follow' => [L10n::t("Connect/Follow"), $connlnk]
-                       ];
-
-                       $contact_details = Contact::getDetailsByURL($profile->url, 0);
-
-                       $entry = [
-                               'url'          => Contact::magicLink($profile->url),
-                               'itemurl'      => defaults($contact_details, 'addr', $profile->url),
-                               'name'         => $profile->name,
-                               'details'      => defaults($contact_details, 'location', ''),
-                               'tags'         => defaults($contact_details, 'keywords', ''),
-                               'about'        => defaults($contact_details, 'about', ''),
-                               'account_type' => Contact::getAccountType($contact_details),
-                               'thumb'        => ProxyUtils::proxifyUrl($profile->photo, false, ProxyUtils::SIZE_THUMB),
-                               'conntxt'      => L10n::t('Connect'),
-                               'connlnk'      => $connlnk,
-                               'img_hover'    => $profile->tags,
-                               'photo_menu'   => $photo_menu,
-                               'id'           => $i,
-                       ];
-                       $entries[] = $entry;
+                       $contact = Contact::getByURLForUser($profile->url, local_user());
+                       if (!empty($contact)) {
+                               $entries[] = ModuleContact::getContactTemplateVars($contact, $i);
+                       }
                }
 
                $data = [
                        'class' => 'pager',
                        'first' => [
                                'url'   => 'match',
-                               'text'  => L10n::t('first'),
+                               'text'  => DI::l10n()->t('first'),
                                'class' => 'previous' . ($start == 0 ? 'disabled' : '')
                        ],
                        'next'  => [
                                'url'   => 'match?start=' . $i,
-                               'text'  => L10n::t('next'),
+                               'text'  => DI::l10n()->t('next'),
                                'class' =>  'next' . ($i >= $msearch->total ? ' disabled' : '')
                        ]
                ];
@@ -124,12 +117,12 @@ function match_content(App $a)
        }
 
        if (empty($entries)) {
-               info(L10n::t('No matches') . EOL);
+               info(DI::l10n()->t('No matches'));
        }
 
        $tpl = Renderer::getMarkupTemplate('viewcontact_template.tpl');
        $o = Renderer::replaceMacros($tpl, [
-               '$title'    => L10n::t('Profile Match'),
+               '$title'    => DI::l10n()->t('Profile Match'),
                '$contacts' => $entries,
                '$paginate' => $paginate
        ]);