X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fprofilenoticestream.php;h=bfe49efea579b64644bffff44c4fce19399d5357;hb=0a4eeb89dab241779147c8c02a8f5f0f83533309;hp=38b16859f7f8b1e89ea977e8d8c5dc799cc7ca43;hpb=9accd953e4f20ff1c51e1bfc81d6bdd75acf09d5;p=quix0rs-gnu-social.git diff --git a/lib/profilenoticestream.php b/lib/profilenoticestream.php index 38b16859f7..bfe49efea5 100644 --- a/lib/profilenoticestream.php +++ b/lib/profilenoticestream.php @@ -28,11 +28,7 @@ * @link http://status.net/ */ -if (!defined('STATUSNET')) { - // This check helps protect against security problems; - // your code file can't be executed directly from the web. - exit(1); -} +if (!defined('GNUSOCIAL')) { exit(1); } /** * Stream of notices by a profile @@ -47,19 +43,14 @@ if (!defined('STATUSNET')) { class ProfileNoticeStream extends ScopingNoticeStream { - var $streamProfile; - var $userProfile; + protected $target; - function __construct($profile, $userProfile = -1) + function __construct(Profile $target, Profile $scoped=null) { - if (is_int($userProfile) && $userProfile == -1) { - $userProfile = Profile::current(); - } - $this->streamProfile = $profile; - $this->userProfile = $userProfile; - parent::__construct(new CachingNoticeStream(new RawProfileNoticeStream($profile), - 'profile:notice_ids:' . $profile->id), - $userProfile); + $this->target = $target; + parent::__construct(new CachingNoticeStream(new RawProfileNoticeStream($target), + 'profile:notice_ids:' . $target->getID()), + $scoped); } function getNoticeIds($offset, $limit, $since_id=null, $max_id=null) @@ -74,7 +65,7 @@ class ProfileNoticeStream extends ScopingNoticeStream function getNotices($offset, $limit, $since_id=null, $max_id=null) { if ($this->impossibleStream()) { - throw new PrivateStreamException($this->streamProfile, $this->userProfile); + throw new PrivateStreamException($this->target, $this->scoped); } else { return parent::getNotices($offset, $limit, $since_id, $max_id); } @@ -82,7 +73,7 @@ class ProfileNoticeStream extends ScopingNoticeStream function impossibleStream() { - if (!$this->streamProfile->readableBy($this->userProfile)) { + if (!$this->target->readableBy($this->scoped)) { // cannot read because it's a private stream and either noone's logged in or they are not subscribers return true; } @@ -90,8 +81,13 @@ class ProfileNoticeStream extends ScopingNoticeStream // If it's a spammy stream, and no user or not a moderator if (common_config('notice', 'hidespam')) { - if ($this->streamProfile->hasRole(Profile_role::SILENCED) && - (empty($this->userProfile) || (($this->userProfile->id !== $this->streamProfile->id) && !$this->userProfile->hasRight(Right::REVIEWSPAM)))) { + // if this is a silenced user + if ($this->target->hasRole(Profile_role::SILENCED) + // and we are either not logged in + && (!$this->scoped instanceof Profile + // or if we are, we are not logged in as the target, and we don't have right to review spam + || (!$this->scoped->sameAs($this->target) && !$this->scoped->hasRight(Right::REVIEWSPAM)) + )) { return true; } } @@ -113,19 +109,20 @@ class ProfileNoticeStream extends ScopingNoticeStream class RawProfileNoticeStream extends NoticeStream { - protected $profile; + protected $target; + protected $selectVerbs = array(); // select all verbs - function __construct($profile) + function __construct(Profile $target) { parent::__construct(); - $this->profile = $profile; + $this->target = $target; } function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); - $notice->profile_id = $this->profile->id; + $notice->profile_id = $this->target->getID(); $notice->selectAdd(); $notice->selectAdd('id'); @@ -133,12 +130,7 @@ class RawProfileNoticeStream extends NoticeStream Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); - if (!empty($this->selectVerbs)) { - $notice->whereAddIn('verb', $this->selectVerbs, $notice->columnType('verb')); - } - if (!empty($this->unselectVerbs)) { - $notice->whereAddIn('!verb', $this->unselectVerbs, $notice->columnType('verb')); - } + self::filterVerbs($notice, $this->selectVerbs); $notice->orderBy('created DESC, id DESC');