]> git.mxchange.org Git - friendica.git/blobdiff - src/Security/Security.php
Changed according feedback:
[friendica.git] / src / Security / Security.php
index c4f8f4a5b4f97c47aa5ce7af6e32701bfa526d1c..5fda54d46ca3ee415323a044368ca12a1c1d38a6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -49,7 +49,7 @@ class Security
                        return true;
                }
 
-               if (!empty(Session::getRemoteContactID($owner))) {
+               if (!empty($cid = Session::getRemoteContactID($owner))) {
                        // use remembered decision and avoid a DB lookup for each and every display item
                        // DO NOT use this function if there are going to be multiple owners
                        // We have a contact-id for an authenticated remote user, this block determines if the contact
@@ -60,22 +60,19 @@ class Security
                        } elseif ($verified === 1) {
                                return false;
                        } else {
-                               $cid = Session::getRemoteContactID($owner);
-                               if (!$cid) {
+                               $user = User::getById($owner);
+                               if (!$user || $user['blockwall']) {
+                                       $verified = 1;
                                        return false;
                                }
 
-                               $r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` INNER JOIN `user` on `user`.`uid` = `contact`.`uid`
-                                       WHERE `contact`.`uid` = %d AND `contact`.`id` = %d AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                                       AND `user`.`blockwall` = 0 AND `readonly` = 0  AND (`contact`.`rel` IN (%d , %d) OR `user`.`page-flags` = %d) LIMIT 1",
-                                       intval($owner),
-                                       intval($cid),
-                                       intval(Contact::SHARING),
-                                       intval(Contact::FRIEND),
-                                       intval(User::PAGE_FLAGS_COMMUNITY)
-                               );
-
-                               if (DBA::isResult($r)) {
+                               $contact = Contact::getById($cid);
+                               if ($contact || $contact['blocked'] || $contact['readonly'] || $contact['pending']) {
+                                       $verified = 1;
+                                       return false;
+                               }
+                               
+                               if (in_array($contact['rel'], [Contact::SHARING, Contact::FRIEND]) || ($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) {
                                        $verified = 2;
                                        return true;
                                } else {