Make blocks work for non-subscription deliveries

This commit is contained in:
Evan Prodromou 2012-03-23 12:55:39 -04:00
parent 88f3e690c3
commit 76e6bee6aa
1 changed files with 17 additions and 19 deletions

View File

@ -1008,10 +1008,7 @@ class Notice extends Managed_DataObject
$users = $ptag->getUserSubscribers(); $users = $ptag->getUserSubscribers();
foreach ($users as $id) { foreach ($users as $id) {
if (!array_key_exists($id, $ni)) { if (!array_key_exists($id, $ni)) {
$user = User::staticGet('id', $id); $ni[$id] = NOTICE_INBOX_SOURCE_PROFILE_TAG;
if (!$user->hasBlocked($profile)) {
$ni[$id] = NOTICE_INBOX_SOURCE_PROFILE_TAG;
}
} }
} }
} }
@ -1020,23 +1017,24 @@ class Notice extends Managed_DataObject
if (!array_key_exists($recipient, $ni)) { if (!array_key_exists($recipient, $ni)) {
$ni[$recipient] = NOTICE_INBOX_SOURCE_REPLY; $ni[$recipient] = NOTICE_INBOX_SOURCE_REPLY;
} }
}
// Exclude any deleted, non-local, or blocking recipients. // Exclude any deleted, non-local, or blocking recipients.
$profile = $this->getProfile(); $profile = $this->getProfile();
$originalProfile = null; $originalProfile = null;
if ($this->repeat_of) { if ($this->repeat_of) {
// Check blocks against the original notice's poster as well. // Check blocks against the original notice's poster as well.
$original = Notice::staticGet('id', $this->repeat_of); $original = Notice::staticGet('id', $this->repeat_of);
if ($original) { if ($original) {
$originalProfile = $original->getProfile(); $originalProfile = $original->getProfile();
}
} }
foreach ($ni as $id => $source) { }
$user = User::staticGet('id', $id);
if (empty($user) || $user->hasBlocked($profile) || foreach ($ni as $id => $source) {
($originalProfile && $user->hasBlocked($originalProfile))) { $user = User::staticGet('id', $id);
unset($ni[$id]); if (empty($user) || $user->hasBlocked($profile) ||
} ($originalProfile && $user->hasBlocked($originalProfile))) {
unset($ni[$id]);
} }
} }