]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #12364 from MrPetovan/bug/warnings
authorMichael Vogel <icarus@dabo.de>
Sat, 10 Dec 2022 17:10:24 +0000 (18:10 +0100)
committerGitHub <noreply@github.com>
Sat, 10 Dec 2022 17:10:24 +0000 (18:10 +0100)
Address several warning messages

src/Model/Contact.php
src/Module/DFRN/Notify.php
src/Module/Notifications/Ping.php
src/Module/OStatus/Salmon.php
src/Navigation/Notifications/Factory/FormattedNavNotification.php
src/Protocol/Diaspora/Repository/DiasporaContact.php

index 4a10fd98eab78c321deabe7cf9b480f01a63387c..c20435278f9d8973e5ccd53be9b425cb3ae38b72 100644 (file)
@@ -1395,9 +1395,17 @@ class Contact
                }
 
                if ($data['network'] == Protocol::DIASPORA) {
-                       DI::dsprContact()->updateFromProbeArray($data);
+                       try {
+                               DI::dsprContact()->updateFromProbeArray($data);
+                       } catch (\InvalidArgumentException $e) {
+                               Logger::error($e->getMessage(), ['url' => $url, 'data' => $data]);
+                       }
                } elseif (!empty($data['networks'][Protocol::DIASPORA])) {
-                       DI::dsprContact()->updateFromProbeArray($data['networks'][Protocol::DIASPORA]);
+                       try {
+                               DI::dsprContact()->updateFromProbeArray($data['networks'][Protocol::DIASPORA]);
+                       } catch (\InvalidArgumentException $e) {
+                               Logger::error($e->getMessage(), ['url' => $url, 'data' => $data['networks'][Protocol::DIASPORA]]);
+                       }
                }
 
                self::updateFromProbeArray($contact_id, $data);
@@ -2485,15 +2493,23 @@ class Contact
                        return false;
                }
 
-               $ret = Probe::uri($contact['url'], $network, $contact['uid']);
+               $data = Probe::uri($contact['url'], $network, $contact['uid']);
 
-               if ($ret['network'] == Protocol::DIASPORA) {
-                       DI::dsprContact()->updateFromProbeArray($ret);
-               } elseif (!empty($ret['networks'][Protocol::DIASPORA])) {
-                       DI::dsprContact()->updateFromProbeArray($ret['networks'][Protocol::DIASPORA]);
+               if ($data['network'] == Protocol::DIASPORA) {
+                       try {
+                               DI::dsprContact()->updateFromProbeArray($data);
+                       } catch (\InvalidArgumentException $e) {
+                               Logger::error($e->getMessage(), ['id' => $id, 'network' => $network, 'contact' => $contact, 'data' => $data]);
+                       }
+               } elseif (!empty($data['networks'][Protocol::DIASPORA])) {
+                       try {
+                               DI::dsprContact()->updateFromProbeArray($data['networks'][Protocol::DIASPORA]);
+                       } catch (\InvalidArgumentException $e) {
+                               Logger::error($e->getMessage(), ['id' => $id, 'network' => $network, 'contact' => $contact, 'data' => $data]);
+                       }
                }
 
-               return self::updateFromProbeArray($id, $ret);
+               return self::updateFromProbeArray($id, $data);
        }
 
        /**
@@ -3193,8 +3209,9 @@ class Contact
                self::clearFollowerFollowingEndpointCache($contact['uid']);
 
                $cdata = self::getPublicAndUserContactID($contact['id'], $contact['uid']);
-
-               DI::notification()->deleteForUserByVerb($contact['uid'], Activity::FOLLOW, ['actor-id' => $cdata['public']]);
+               if (!empty($cdata['public'])) {
+                       DI::notification()->deleteForUserByVerb($contact['uid'], Activity::FOLLOW, ['actor-id' => $cdata['public']]);
+               }
        }
 
        /**
index 34cf21f11df66b8d03d9d0f832d350dd45360da5..14b121e81079fce24b9e2c6673aecacb013fa222 100644 (file)
@@ -70,18 +70,8 @@ class Notify extends BaseModule
                                throw new \Friendica\Network\HTTPException\InternalServerErrorException();
                        }
                        $this->dispatchPrivate($user, $postdata);
-               } elseif (!$this->dispatchPublic($postdata)) {
-                       (new Salmon(
-                               $this->database,
-                               $this->l10n,
-                               $this->baseUrl,
-                               $this->args,
-                               $this->logger,
-                               $this->profiler,
-                               $this->response,
-                               $this->server,
-                               $this->parameters
-                       ))->rawContent($request);
+               } else {
+                       $this->dispatchPublic($postdata);
                }
        }
 
index 76cdd9f77055ce967968eda5d712fd6e07e3d651..df75c047afdd8b8c25d8f135743710db1e930786 100644 (file)
@@ -48,6 +48,7 @@ use Friendica\Navigation\Notifications\Factory;
 use Friendica\Navigation\Notifications\Repository;
 use Friendica\Navigation\Notifications\ValueObject;
 use Friendica\Navigation\SystemMessages;
+use Friendica\Network\HTTPException;
 use Friendica\Protocol\Activity;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Profiler;
@@ -229,7 +230,11 @@ class Ping extends BaseModule
 
                        // merge all notification types in one array
                        foreach ($intros as $intro) {
-                               $navNotifications[] = $this->formattedNavNotification->createFromIntro($intro);
+                               try {
+                                       $navNotifications[] = $this->formattedNavNotification->createFromIntro($intro);
+                               } catch (HTTPException\NotFoundException $e) {
+                                       $this->introductionRepo->delete($intro);
+                               }
                        }
 
                        if (count($registrations) <= 1 || $this->pconfig->get($this->session->getLocalUserId(), 'system', 'detailed_notif')) {
@@ -242,7 +247,7 @@ class Ping extends BaseModule
                                                new Uri($this->baseUrl->get(true) . '/moderation/users/pending')
                                        );
                                }
-                       } elseif (count($registrations) > 1) {
+                       } else {
                                $navNotifications[] = $this->formattedNavNotification->createFromParams(
                                        $registrations[0]['name'],
                                        $registrations[0]['url'],
index 0d393afcce99f4bd69fa5ce12e9b9f8229ab495c..f928e308d528f90a1ff4df48022aa5814938d054 100644 (file)
@@ -66,11 +66,12 @@ class Salmon extends \Friendica\BaseModule
        {
                $xml = Network::postdata();
 
-               $this->logger->debug('New Salmon', ['nickname' => $this->parameters['nickname'], 'xml' => $xml]);
-
-               // Despite having a route with a mandatory nickname parameter, this method can also be called from
-               // \Friendica\Module\DFRN\Notify->post where the same parameter is optional 🤷‍
                $nickname = $this->parameters['nickname'] ?? '';
+               if (empty($nickname)) {
+                       throw new HTTPException\BadRequestException('nickname parameter is mandatory');
+               }
+
+               $this->logger->debug('New Salmon', ['nickname' => $nickname, 'xml' => $xml]);
 
                $importer = $this->database->selectFirst('user', [], ['nickname' => $nickname, 'account_expired' => false, 'account_removed' => false]);
                if (!$this->database->isResult($importer)) {
index 2b1360eaa4f82cb9d9b33d6d40ac1545a52e4cba..9813fbf859dda00a901f10e816daf401b1d3b0ae 100644 (file)
@@ -28,7 +28,7 @@ use Friendica\Model\Contact;
 use Friendica\Navigation\Notifications\Entity;
 use Friendica\Navigation\Notifications\Exception\NoMessageException;
 use Friendica\Navigation\Notifications\ValueObject;
-use Friendica\Network\HTTPException\ServiceUnavailableException;
+use Friendica\Network\HTTPException;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Proxy;
 use Friendica\Util\Temporal;
@@ -73,7 +73,7 @@ class FormattedNavNotification extends BaseFactory
         * @param Uri       $href
         * @param bool      $seen
         * @return ValueObject\FormattedNavNotification
-        * @throws ServiceUnavailableException
+        * @throws HTTPException\ServiceUnavailableException
         */
        public function createFromParams(string $contact_name, string $contact_url, string $message, \DateTime $date, Uri $href, bool $seen = false): ValueObject\FormattedNavNotification
        {
@@ -115,9 +115,9 @@ class FormattedNavNotification extends BaseFactory
         * @param Entity\Notification $notification
         * @return ValueObject\FormattedNavNotification
         * @throws NoMessageException
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
-        * @throws \Friendica\Network\HTTPException\NotFoundException
-        * @throws \Friendica\Network\HTTPException\ServiceUnavailableException
+        * @throws HTTPException\InternalServerErrorException
+        * @throws HTTPException\NotFoundException
+        * @throws HTTPException\ServiceUnavailableException
         */
        public function createFromNotification(Entity\Notification $notification): ValueObject\FormattedNavNotification
        {
@@ -141,10 +141,20 @@ class FormattedNavNotification extends BaseFactory
                );
        }
 
+       /**
+        * @param \Friendica\Contact\Introduction\Entity\Introduction $intro
+        * @return ValueObject\FormattedNavNotification
+        * @throws HTTPException\NotFoundException when the contact record couldn't be located
+        * @throws HTTPException\ServiceUnavailableException
+        */
        public function createFromIntro(\Friendica\Contact\Introduction\Entity\Introduction $intro): ValueObject\FormattedNavNotification
        {
-               if (!isset(self::$contacts[$intro->cid])) {
-                       self::$contacts[$intro->cid] = Contact::getById($intro->cid, ['name', 'url', 'pending']);
+               if (empty(self::$contacts[$intro->cid])) {
+                       if ($contact = Contact::getById($intro->cid, ['name', 'url', 'pending'])) {
+                               self::$contacts[$intro->cid] = $contact;
+                       } else {
+                               throw new HTTPException\NotFoundException('Contact not found with id' . $intro->cid);
+                       }
                }
 
                if (self::$contacts[$intro->cid]['pending']) {
index ac8d200aa8058ff99bdf32462f3928a98b13c125..1669707b922e3bc6202ed075bc3dd509f407bfba 100644 (file)
@@ -234,6 +234,18 @@ class DiasporaContact extends BaseRepository
         */
        public function updateFromProbeArray(array $data): Entity\DiasporaContact
        {
+               if (empty($data['url'])) {
+                       throw new \InvalidArgumentException('Missing url key in Diaspora probe data array');
+               }
+
+               if (empty($data['guid'])) {
+                       throw new \InvalidArgumentException('Missing guid key in Diaspora probe data array');
+               }
+
+               if (empty($data['pubkey'])) {
+                       throw new \InvalidArgumentException('Missing pubkey key in Diaspora probe data array');
+               }
+
                $uriId = ItemURI::insert(['uri' => $data['url'], 'guid' => $data['guid']]);
 
                $contact   = Contact::getByUriId($uriId, ['id', 'created']);