]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/NoScrape.php
Preview for Videos and images / Video resolution selection
[friendica.git] / src / Module / NoScrape.php
index 53b3fc4e3ee63b812cb61af32584b3a1ea79a756..8f799aa966150dbeacaa626bc0e52bd05b575abf 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2021, the Friendica project
+ *
+ * @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/>.
+ *
+ */
 
 namespace Friendica\Module;
 
@@ -7,14 +26,13 @@ use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
-use Friendica\Model\GContact;
 use Friendica\Model\Profile;
 use Friendica\Model\User;
 
 /**
  * Endpoint for getting current user infos
  *
- * @see GContact::updateFromNoScrape() for usage
+ * @see Contact::updateFromNoScrape() for usage
  */
 class NoScrape extends BaseModule
 {
@@ -27,19 +45,22 @@ class NoScrape extends BaseModule
                        $which = $parameters['nick'];
                } elseif (local_user() && isset($parameters['profile']) && DI::args()->get(2) == 'view') {
                        // view infos about a known profile (needs a login)
-                       $which   = $a->user['nickname'];
+                       $which = $a->user['nickname'];
                } else {
                        System::jsonError(403, 'Authentication required');
-                       exit();
                }
 
                Profile::load($a, $which);
 
+               if (empty($a->profile['uid'])) {
+                       System::jsonError(404, 'Profile not found');
+               }
+
                $json_info = [
                        'addr'         => $a->profile['addr'],
                        'nick'         => $which,
                        'guid'         => $a->profile['guid'],
-                       'key'          => $a->profile['pubkey'],
+                       'key'          => $a->profile['upubkey'],
                        'homepage'     => DI::baseUrl() . "/profile/{$which}",
                        'comm'         => ($a->profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY),
                        'account-type' => $a->profile['account-type'],
@@ -50,7 +71,7 @@ class NoScrape extends BaseModule
                        $json_info["dfrn-{$dfrn}"] = DI::baseUrl() . "/dfrn_{$dfrn}/{$which}";
                }
 
-               if (!$a->profile['net-publish'] || $a->profile['hidewall']) {
+               if (!$a->profile['net-publish']) {
                        $json_info['hide'] = true;
                        System::jsonExit($json_info);
                }
@@ -66,22 +87,11 @@ class NoScrape extends BaseModule
                $json_info['tags']     = $keywords;
                $json_info['language'] = $a->profile['language'];
 
-               if (!($a->profile['hide-friends'] ?? false)) {
-                       $stmt = DBA::p(
-                               "SELECT `gcontact`.`updated`
-                               FROM `contact`
-                               INNER JOIN `gcontact`
-                               WHERE `gcontact`.`nurl` = `contact`.`nurl`
-                                 AND `self`
-                                 AND `uid` = ?
-                               LIMIT 1",
-                               intval($a->profile['uid'])
-                       );
-                       if ($gcontact = DBA::fetch($stmt)) {
-                               $json_info["updated"] = date("c", strtotime($gcontact['updated']));
-                       }
-                       DBA::close($stmt);
+               if (!empty($a->profile['last-item'])) {
+                       $json_info['updated'] = date("c", strtotime($a->profile['last-item']));
+               }
 
+               if (!($a->profile['hide-friends'] ?? false)) {
                        $json_info['contacts'] = DBA::count('contact',
                                [
                                        'uid'     => $a->profile['uid'],
@@ -112,7 +122,7 @@ class NoScrape extends BaseModule
                $json_info['last-activity'] = date('o-W', $last_active);
 
                //These are optional fields.
-               $profile_fields = ['pdesc', 'locality', 'region', 'postal-code', 'country-name'];
+               $profile_fields = ['about', 'locality', 'region', 'postal-code', 'country-name'];
                foreach ($profile_fields as $field) {
                        if (!empty($a->profile[$field])) {
                                $json_info["$field"] = $a->profile[$field];