]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #9106 from annando/notice
authorTobias Diekershoff <tobias.diekershoff@gmx.net>
Mon, 31 Aug 2020 17:09:14 +0000 (19:09 +0200)
committerGitHub <noreply@github.com>
Mon, 31 Aug 2020 17:09:14 +0000 (19:09 +0200)
Avoid a notice - restructured validation check

src/Module/Objects.php

index e0326548695ca5bf11ecdc575d7a7dfdf2a79d90..4262e4e0054696b1431757bba83861312df4266e 100644 (file)
@@ -50,26 +50,29 @@ class Objects extends BaseModule
                $item = Item::selectFirst(['id', 'uid', 'origin', 'author-link', 'changed', 'private', 'psid'],
                        ['guid' => $parameters['guid']], ['order' => ['origin' => true]]);
 
-               $validated = false;
-               $requester = HTTPSignature::getSigner('', $_SERVER);
-               if (!empty($requester) && $item['origin']) {
-                       $requester_id = Contact::getIdForURL($requester, $item['uid']);
-                       if (!empty($requester_id)) {
-                               $permissionSets = DI::permissionSet()->selectByContactId($requester_id, $item['uid']);
-                               if (!empty($permissionSets)) {
-                                       $psid = array_merge($permissionSets->column('id'),
-                                               [DI::permissionSet()->getIdFromACL($item['uid'], '', '', '', '')]);
-                                       $validated = in_array($item['psid'], $psid);
-                               }
-                       }
+               if (!DBA::isResult($item)) {
+                       throw new HTTPException\NotFoundException();
                }
 
-               if (!$validated && !in_array($item['private'], [Item::PUBLIC, Item::UNLISTED])) {
-                       unset($item);
+               $validated = in_array($item['private'], [Item::PUBLIC, Item::UNLISTED]);
+
+               if (!$validated) {
+                       $requester = HTTPSignature::getSigner('', $_SERVER);
+                       if (!empty($requester) && $item['origin']) {
+                               $requester_id = Contact::getIdForURL($requester, $item['uid']);
+                               if (!empty($requester_id)) {
+                                       $permissionSets = DI::permissionSet()->selectByContactId($requester_id, $item['uid']);
+                                       if (!empty($permissionSets)) {
+                                               $psid = array_merge($permissionSets->column('id'),
+                                                       [DI::permissionSet()->getIdFromACL($item['uid'], '', '', '', '')]);
+                                               $validated = in_array($item['psid'], $psid);
+                                       }
+                               }
+                       }
                }
 
                // Valid items are original post or posted from this node (including in the case of a forum)
-               if (!DBA::isResult($item) || !$item['origin'] && (parse_url($item['author-link'], PHP_URL_HOST) != parse_url(DI::baseUrl()->get(), PHP_URL_HOST))) {
+               if (!$validated || !$item['origin'] && (parse_url($item['author-link'], PHP_URL_HOST) != parse_url(DI::baseUrl()->get(), PHP_URL_HOST))) {
                        throw new HTTPException\NotFoundException();
                }