X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FNotice.php;h=541a850f0c94bcf612db2c5f8ecdc4ddea897ddf;hb=c5ef1e661eba8a88b3bd69cc44e416b8e15a476b;hp=a813db99b3b234a8ab8a057a4a6f1084c4da689a;hpb=36d724cf03f5c0a29c9a30c2fb51d631a7f1edba;p=quix0rs-gnu-social.git diff --git a/classes/Notice.php b/classes/Notice.php index a813db99b3..541a850f0c 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -1031,9 +1031,15 @@ class Notice extends Managed_DataObject } foreach ($ni as $id => $source) { - $user = User::staticGet('id', $id); - if (empty($user) || $user->hasBlocked($profile) || - ($originalProfile && $user->hasBlocked($originalProfile))) { + try { + $user = User::staticGet('id', $id); + if (empty($user) || + $user->hasBlocked($profile) || + ($originalProfile && $user->hasBlocked($originalProfile))) { + unset($ni[$id]); + } + } catch (UserNoProfileException $e) { + // User doesn't have a profile; invalid; skip them. unset($ni[$id]); } } @@ -1487,7 +1493,7 @@ class Notice extends Managed_DataObject * @return Activity activity object representing this Notice. */ - function asActivity($cur) + function asActivity($cur=null) { $act = self::cacheGet(Cache::codeKey('notice:as-activity:'.$this->id)); @@ -1513,7 +1519,9 @@ class Notice extends Managed_DataObject if ($this->repeat_of) { $repeated = Notice::staticGet('id', $this->repeat_of); - $act->objects[] = $repeated->asActivity($cur); + if (!empty($repeated)) { + $act->objects[] = $repeated->asActivity($cur); + } } else { $act->objects[] = ActivityObject::fromNotice($this); } @@ -2452,7 +2460,11 @@ class Notice extends Managed_DataObject if ($scope & Notice::FOLLOWER_SCOPE) { - $author = $this->getProfile(); + try { + $author = $this->getProfile(); + } catch (Exception $e) { + return false; + } if (!Subscription::exists($profile, $author)) { return false; @@ -2469,10 +2481,16 @@ class Notice extends Managed_DataObject if (common_config('notice', 'hidespam')) { - $author = $this->getProfile(); + try { + $author = $this->getProfile(); + } catch(Exception $e) { + // If we can't get an author, keep it hidden. + // XXX: technically not spam, but, whatever. + return true; + } if ($author->hasRole(Profile_role::SILENCED)) { - if (empty($profile) || !$profile->hasRight(Right::REVIEWSPAM)) { + if (empty($profile) || (($profile->id !== $author->id) && (!$profile->hasRight(Right::REVIEWSPAM)))) { return true; } }