diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 93e745456a..51d162ae22 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -2757,12 +2757,14 @@ class Contact return null; } - public static function removeFollower($importer, $contact) + public static function removeFollower(array $contact) { - if (($contact['rel'] == self::FRIEND) || ($contact['rel'] == self::SHARING)) { + if (!empty($contact['rel']) && (($contact['rel'] == self::FRIEND) || ($contact['rel'] == self::SHARING))) { DBA::update('contact', ['rel' => self::SHARING], ['id' => $contact['id']]); - } else { + } elseif (!empty($contact['id'])) { self::remove($contact['id']); + } else { + DI::logger()->info('Couldn\'t remove follower because of invalid contact array', ['contact' => $contact]); } } diff --git a/src/Model/Item.php b/src/Model/Item.php index 8327252abc..992c8d4710 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2292,9 +2292,9 @@ class Item continue; } elseif (!$expire_starred && intval($item['starred'])) { continue; - } elseif (!$expire_notes && ($item['post-type'] == self::PT_PERSONAL_NOTE)) { + } elseif (!$expire_notes && (($item['post-type'] ?? null) == self::PT_PERSONAL_NOTE)) { continue; - } elseif (!$expire_items && ($item['post-type'] != self::PT_PERSONAL_NOTE)) { + } elseif (!$expire_items && (($item['post-type'] ?? null) != self::PT_PERSONAL_NOTE)) { continue; } diff --git a/src/Module/Contact.php b/src/Module/Contact.php index ceb2b6757c..0260e90f1f 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -293,7 +293,7 @@ class Contact extends BaseModule $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => [0, local_user()], 'deleted' => false]); // Don't display contacts that are about to be deleted - if ($contact['network'] == Protocol::PHANTOM) { + if (DBA::isResult($contact) && !empty($contact['network']) && $contact['network'] == Protocol::PHANTOM) { $contact = false; } } diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 47a5300352..1fe527f407 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -1102,7 +1102,7 @@ class Processor return; } - Contact::removeFollower($owner, $contact); + Contact::removeFollower($contact); Logger::info('Undo following request', ['contact' => $cid, 'user' => $uid]); } diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 4ccd259f21..6797608e61 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1584,7 +1584,7 @@ class DFRN } if ($activity->match($item["verb"], Activity::UNFOLLOW)) { Logger::log("Lost follower"); - Contact::removeFollower($importer, $contact, $item); + Contact::removeFollower($contact); return false; } if ($activity->match($item["verb"], Activity::REQ_FRIEND)) { diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 48d7a3371c..8ab89d950f 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -2211,7 +2211,7 @@ class Diaspora return true; } else { Logger::log("Author ".$author." doesn't want to follow us anymore.", Logger::DEBUG); - Contact::removeFollower($importer, $contact); + Contact::removeFollower($contact); return true; } } diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 2404db2df9..4f16f40f11 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -471,7 +471,7 @@ class OStatus if ($item["verb"] == Activity::O_UNFOLLOW) { $dummy = null; - Contact::removeFollower($importer, $contact, $item, $dummy); + Contact::removeFollower($contact); continue; }