From ce4926d000d1b89d1c84a1f61d0a720092149f55 Mon Sep 17 00:00:00 2001 From: Dhruv Date: Sat, 6 Jul 2013 15:07:46 +0530 Subject: [PATCH 1/5] [ticket/11581] Add test to check UCP_PM is enabled/disabled correctly PHPBB3-11581 --- tests/functional/ucp_pm_test.php | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tests/functional/ucp_pm_test.php diff --git a/tests/functional/ucp_pm_test.php b/tests/functional/ucp_pm_test.php new file mode 100644 index 0000000000..cba9e1690f --- /dev/null +++ b/tests/functional/ucp_pm_test.php @@ -0,0 +1,47 @@ +login(); + $this->admin_login(); + } + + public function test_pm_enabled() + { + $crawler = self::request('GET', 'ucp.php'); + $this->assertContainsLang('PRIVATE_MESSAGES', $crawler->filter('html')->text()); + } + + public function test_pm_disabled() + { + $this->set_allow_pm(0); + $crawler = self::request('GET', 'ucp.php'); + $this->assertNotContainsLang('PRIVATE_MESSAGES', $crawler->filter('html')->text()); + } + + protected function set_allow_pm($enable_pm) + { + $crawler = self::request('GET', 'adm/index.php?sid=' . $this->sid . '&i=acp_board&mode=message'); + + $form = $crawler->selectButton('Submit')->form(); + $values = $form->getValues(); + + $values["config[allow_privmsg]"] = $enable_pm; + $form->setValues($values); + $crawler = self::submit($form); + $this->assertGreaterThan(0, $crawler->filter('.successbox')->count()); + } +} From 8b936fc8eb7d119b0e1d4f850ec347a07170b0c6 Mon Sep 17 00:00:00 2001 From: Dhruv Date: Sat, 6 Jul 2013 15:08:53 +0530 Subject: [PATCH 2/5] [ticket/11581] Enabled private messages after tests PHPBB3-11581 --- tests/functional/ucp_pm_test.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/functional/ucp_pm_test.php b/tests/functional/ucp_pm_test.php index cba9e1690f..41254969ed 100644 --- a/tests/functional/ucp_pm_test.php +++ b/tests/functional/ucp_pm_test.php @@ -30,6 +30,7 @@ class phpbb_functional_ucp_pm_test extends phpbb_functional_test_case $this->set_allow_pm(0); $crawler = self::request('GET', 'ucp.php'); $this->assertNotContainsLang('PRIVATE_MESSAGES', $crawler->filter('html')->text()); + $this->set_allow_pm(1); } protected function set_allow_pm($enable_pm) From cf468bcc09ac8c4893abf9695aa0a4dcd9bef105 Mon Sep 17 00:00:00 2001 From: Dhruv Date: Sat, 6 Jul 2013 15:14:02 +0530 Subject: [PATCH 3/5] [ticket/11581] Fix year in copyright header PHPBB3-11581 --- tests/functional/ucp_pm_test.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/ucp_pm_test.php b/tests/functional/ucp_pm_test.php index 41254969ed..09521cc9f4 100644 --- a/tests/functional/ucp_pm_test.php +++ b/tests/functional/ucp_pm_test.php @@ -2,7 +2,7 @@ /** * * @package testing -* @copyright (c) 2012 phpBB Group +* @copyright (c) 2013 phpBB Group * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 * */ From eb1dd47e394702460e182d82990b828aa629fc1b Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 11 Mar 2014 10:38:53 +0100 Subject: [PATCH 4/5] [ticket/11581] Hide categories when they have no visible children PHPBB3-11581 --- phpBB/includes/functions_module.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/phpBB/includes/functions_module.php b/phpBB/includes/functions_module.php index 28af7994c8..4d0f7205b4 100644 --- a/phpBB/includes/functions_module.php +++ b/phpBB/includes/functions_module.php @@ -125,8 +125,17 @@ class p_master // Clean up module cache array to only let survive modules the user can access $right_id = false; + + $hide_categories = array(); foreach ($this->module_cache['modules'] as $key => $row) { + // When the module has no mode (category) we check whether it has visible children + // before listing it as well. + if (!$row['module_mode']) + { + $hide_categories[(int) $row['module_id']] = $key; + } + // Not allowed to view module? if (!$this->module_auth_self($row['module_auth'])) { @@ -161,6 +170,22 @@ class p_master $right_id = $row['right_id']; continue; } + + if ($row['module_mode']) + { + // The parent category has a visible child + // So remove it and all its parents from the hide array + unset($hide_categories[(int) $row['parent_id']]); + foreach ($this->module_cache['parents'][$row['module_id']] as $module_id => $row_id) + { + unset($hide_categories[$module_id]); + } + } + } + + foreach ($hide_categories as $module_id => $row_id) + { + unset($this->module_cache['modules'][$row_id]); } // Re-index (this is needed, else we are not able to array_slice later) From 6361d382b30f96758020d226d12b19e4f649b643 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 11 Mar 2014 11:09:39 +0100 Subject: [PATCH 5/5] [ticket/11581] Add assertNotContainsLang() for functional test cases PHPBB3-11581 --- .../phpbb_functional_test_case.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index e40efdec03..3b4da690b4 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -716,15 +716,27 @@ class phpbb_functional_test_case extends phpbb_test_case /** * assertContains for language strings * - * @param string $needle Search string - * @param string $haystack Search this - * @param string $message Optional failure message + * @param string $needle Search string + * @param string $haystack Search this + * @param string $message Optional failure message */ public function assertContainsLang($needle, $haystack, $message = null) { $this->assertContains(html_entity_decode($this->lang($needle), ENT_QUOTES), $haystack, $message); } + /** + * assertNotContains for language strings + * + * @param string $needle Search string + * @param string $haystack Search this + * @param string $message Optional failure message + */ + public function assertNotContainsLang($needle, $haystack, $message = null) + { + $this->assertNotContains(html_entity_decode($this->lang($needle), ENT_QUOTES), $haystack, $message); + } + /* * Perform some basic assertions for the page *