if (Event::handle('StartJoinGroup', array($group, $this))) {
$join = Group_member::join($group->id, $this->id);
self::blow('profile:groups:%d', $this->id);
+ self::blow('group:member_ids:%d', $group->id);
+ self::blow('group:member_count:%d', $group->id);
Event::handle('EndJoinGroup', array($group, $this));
}
}
if (Event::handle('StartLeaveGroup', array($group, $this))) {
Group_member::leave($group->id, $this->id);
self::blow('profile:groups:%d', $this->id);
+ self::blow('group:member_ids:%d', $group->id);
+ self::blow('group:member_count:%d', $group->id);
Event::handle('EndLeaveGroup', array($group, $this));
}
}
function silence()
{
$this->grantRole(Profile_role::SILENCED);
+ if (common_config('notice', 'hidespam')) {
+ $this->flushVisibility();
+ }
}
function unsilence()
{
$this->revokeRole(Profile_role::SILENCED);
+ if (common_config('notice', 'hidespam')) {
+ $this->flushVisibility();
+ }
+ }
+
+ function flushVisibility()
+ {
+ // Get all notices
+ $stream = new ProfileNoticeStream($this, $this);
+ $ids = $stream->getNoticeIds(0, CachingNoticeStream::CACHE_WINDOW);
+ foreach ($ids as $id) {
+ self::blow('notice:in-scope-for:%d:null', $id);
+ }
}
/**
case Right::SILENCEUSER:
case Right::DELETEUSER:
case Right::DELETEGROUP:
+ case Right::TRAINSPAM:
+ case Right::REVIEWSPAM:
$result = $this->hasRole(Profile_role::MODERATOR);
break;
case Right::CONFIGURESITE: