From 76752800c28a0ceb0d0fdf1dd61e28d9a0868302 Mon Sep 17 00:00:00 2001 From: rxu Date: Fri, 30 Aug 2024 22:07:54 +0700 Subject: [PATCH 1/2] [ticket/17386] Fix resulting permission for user-based tracing PHPBB-17386 --- phpBB/phpbb/auth/auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/auth/auth.php b/phpBB/phpbb/auth/auth.php index 208b2aff75..4a8ccb4a66 100644 --- a/phpBB/phpbb/auth/auth.php +++ b/phpBB/phpbb/auth/auth.php @@ -776,7 +776,7 @@ class auth $sql_group = ($group_id !== false) ? ((!is_array($group_id)) ? 'group_id = ' . (int) $group_id : $db->sql_in_set('group_id', array_map('intval', $group_id))) : ''; $sql_forum = ($forum_id !== false) ? ((!is_array($forum_id)) ? 'AND a.forum_id = ' . (int) $forum_id : 'AND ' . $db->sql_in_set('a.forum_id', array_map('intval', $forum_id))) : ''; - $sql_is_local = $forum_id !== false ? 'AND ao.is_local <> 0' : ''; + $sql_is_local = !empty($forum_id) ? 'AND ao.is_local <> 0' : ''; $sql_opts = ''; $hold_ary = $sql_ary = array(); From 03f315f7b7ccb7908992d207f86fe10975517acf Mon Sep 17 00:00:00 2001 From: rxu Date: Fri, 30 Aug 2024 23:06:02 +0700 Subject: [PATCH 2/2] [ticket/17386] Add test PHPBB-17386 --- tests/functional/acp_permissions_test.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/functional/acp_permissions_test.php b/tests/functional/acp_permissions_test.php index 92980dbfd7..fbcfa1ab24 100644 --- a/tests/functional/acp_permissions_test.php +++ b/tests/functional/acp_permissions_test.php @@ -149,4 +149,26 @@ class phpbb_functional_acp_permissions_test extends phpbb_functional_test_case $this->assertContainsLang('ACL_M_EDIT', $page_text); $this->assertContainsLang('ACL_M_MOVE', $page_text); } + + public function test_tracing_user_based_permissions() + { + $this->create_user('newlyregistereduser'); + + // Open user-based permissions masks page + $crawler = self::request('GET', "adm/index.php?i=acp_permissions&icat=16&mode=view_user_global&sid=" . $this->sid); + + // Select newlyregistereduser + $form = $crawler->filter('#add_user')->form(['username' => ['newlyregistereduser']]); + $crawler = self::submit($form); + + // Test 1st "Yes" permission tracing result match + $trace_link_yes = $crawler->filter('td.yes')->eq(0)->parents()->eq(0)->filter('a.trace')->link(); + $crawler_trace_yes = self::$client->click($trace_link_yes); + $this->assertEquals(1, $crawler_trace_yes->filter('tr.row2 > td.yes')->count()); + + // Test 1st "Never" permission tracing result match + $trace_link_never = $crawler->filter('td.never')->eq(0)->parents()->eq(0)->filter('a.trace')->link(); + $crawler_trace_never = self::$client->click($trace_link_never); + $this->assertEquals(1, $crawler_trace_never->filter('tr.row2 > td.never')->count()); + } }