From c4d526342239b138182fcebcce4fd82b4086e77e Mon Sep 17 00:00:00 2001 From: Marcin Kurczewski Date: Sun, 27 Oct 2013 20:48:40 +0100 Subject: [PATCH] Next/prev post navigation respects safety settings Before change this setting was either ignored or errors were shown if users was unable to view given post. --- src/Controllers/PostController.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Controllers/PostController.php b/src/Controllers/PostController.php index 29c80a90..b1e093f3 100644 --- a/src/Controllers/PostController.php +++ b/src/Controllers/PostController.php @@ -119,7 +119,7 @@ class PostController return PrivilegesHelper::confirm(Privilege::ListPosts, PostSafety::toString($safety)) and $this->context->user->hasEnabledSafety($safety); }); - $dbQuery->where('safety IN (' . R::genSlots($allowedSafety) . ')'); + $dbQuery->where('safety')->in('(' . R::genSlots($allowedSafety) . ')'); foreach ($allowedSafety as $s) $dbQuery->put($s); @@ -586,6 +586,14 @@ class PostController ->from('post') ->where($next ? 'id > ?' : 'id < ?') ->put($id); + $allowedSafety = array_filter(PostSafety::getAll(), function($safety) + { + return PrivilegesHelper::confirm(Privilege::ListPosts, PostSafety::toString($safety)) and + $this->context->user->hasEnabledSafety($safety); + }); + $dbQuery->and('safety')->in('(' . R::genSlots($allowedSafety) . ')'); + foreach ($allowedSafety as $s) + $dbQuery->put($s); if (!PrivilegesHelper::confirm(Privilege::ListPosts, 'hidden')) $dbQuery->andNot('hidden'); $dbQuery->orderBy($next ? 'id asc' : 'id desc') @@ -611,7 +619,7 @@ class PostController $dbQuery->from('tag'); $dbQuery->innerJoin('post_tag'); $dbQuery->on('tag.id = post_tag.tag_id'); - $dbQuery->where('tag.id IN (' . R::genSlots($post->sharedTag) . ')'); + $dbQuery->where('tag.id')->in('(' . R::genSlots($post->sharedTag) . ')'); foreach ($post->sharedTag as $tag) $dbQuery->put($tag->id); $dbQuery->groupBy('tag.id');