From: Roland Haeder Date: Fri, 27 Mar 2015 22:37:54 +0000 (+0100) Subject: Introduced isCurrentProfileInScope() which shall check if current profile is X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=931753229328d0ebdf80b76b898a736c06dc70a4;p=quix0rs-gnu-social.git Introduced isCurrentProfileInScope() which shall check if current profile is allowed (in scope of) to see the tag. Signed-off-by: Roland Haeder --- diff --git a/actions/publictagcloud.php b/actions/publictagcloud.php index ddbee05388..8daf18d504 100644 --- a/actions/publictagcloud.php +++ b/actions/publictagcloud.php @@ -136,33 +136,10 @@ class PublictagcloudAction extends Action $sum = 0; while ($tags->fetch()) { // Check scope: - - // 1) Get notice object and set id - $notice = new Notice(); - $notice->id = $tags->notice_id; - $notice->scope = $tags->scope; - /* NOISY-DEBUG: */ common_debug('[' . __METHOD__ . ':' . __LINE__ . '] tags->tag=' . $tags->tag . ',notice->id=' . $notice->id . ',notice->scope=' . $notice->scope); - - // Is it private scope? - if ($notice->isPrivateScope()) { - // 2) Get current profile - $profile = Profile::current(); - - // Is the profile not set? - if (!$profile instanceof Profile) { - // Public viewer shall not see a tag from a private dent (privacy leak) - /* NOISY-DEBUG: */ common_debug('[' . __METHOD__ . ':' . __LINE__ . '] Not logged in, skipping ...'); - continue; - } elseif (!$notice->inScope($profile)) { - // Current profile is not in scope (not allowed to see) of notice - /* NOISY-DEBUG: */ common_debug('[' . __METHOD__ . ':' . __LINE__ . '] profile->id=' . $profile->id . ' is not allowed to see this tag, skipping ...'); - continue; - } + if ($tags->isCurrentProfileInScope()) { + $tw[$tags->tag] = $tags->weight; + $sum += $tags->weight; } - - /* NOISY-DEBUG: */ common_debug('[' . __METHOD__ . ':' . __LINE__ . '] tags->tag=' . $tags->tag . ',tags->weight=' . $tags->weight . ' - Added!'); - $tw[$tags->tag] = $tags->weight; - $sum += $tags->weight; } ksort($tw); diff --git a/classes/Notice_tag.php b/classes/Notice_tag.php index 3d7658a1ac..5567b06093 100644 --- a/classes/Notice_tag.php +++ b/classes/Notice_tag.php @@ -82,4 +82,41 @@ class Notice_tag extends Managed_DataObject return $url; } + + /** + * Checks whether the current profile is allowed (in scope) to see this tag. + * + * @return $inScope Whether the current profile is allowed to see this tag + */ + public function isCurrentProfileInScope () { + // Check scope, default is allowed + $inScope = TRUE; + + // 1) Get notice object and set id + $notice = new Notice(); + $notice->id = $this->notice_id; + $notice->scope = $this->scope; + /* NOISY-DEBUG: */ common_debug('[' . __METHOD__ . ':' . __LINE__ . '] this->tag=' . $this->tag . ',notice->id=' . $notice->id . ',notice->scope=' . $notice->scope); + + // Is it private scope? + if ($notice->isPrivateScope()) { + // 2) Get current profile + $profile = Profile::current(); + + // Is the profile not set? + if (!$profile instanceof Profile) { + // Public viewer shall not see a tag from a private dent (privacy leak) + /* NOISY-DEBUG: */ common_debug('[' . __METHOD__ . ':' . __LINE__ . '] Not logged in, skipping ...'); + $inScope = FALSE; + } elseif (!$notice->inScope($profile)) { + // Current profile is not in scope (not allowed to see) of notice + /* NOISY-DEBUG: */ common_debug('[' . __METHOD__ . ':' . __LINE__ . '] profile->id=' . $profile->id . ' is not allowed to see this tag, skipping ...'); + $inScope = FALSE; + } + } + + // Return result + /* NOISY-DEBUG: */ common_debug('[' . __METHOD__ . ':' . __LINE__ . '] this->tag=' . $this->tag . ',this->weight=' . $this->weight . ',inScope=' . intval($inScope) . ' - EXIT!'); + return $inScope; + } } diff --git a/lib/tagcloudsection.php b/lib/tagcloudsection.php index 24a3bd98af..ccdf89f0b4 100644 --- a/lib/tagcloudsection.php +++ b/lib/tagcloudsection.php @@ -63,8 +63,10 @@ class TagCloudSection extends Section $sum = 0; while ($tags->fetch() && ++$cnt <= TAGS_PER_SECTION) { - $tw[$tags->tag] = $tags->weight; - $sum += $tags->weight; + if ($tags->isCurrentProfileInScope()) { + $tw[$tags->tag] = $tags->weight; + $sum += $tags->weight; + } } if ($cnt == 0) {