Skip to content

Commit

Permalink
Merge pull request phpbb#2109 from nickvergessen/ticket/11581
Browse files Browse the repository at this point in the history
[ticket/11581] Hide categories on level 0 when they have no visible children
  • Loading branch information
EXreaction committed Mar 14, 2014
2 parents 12b8460 + 6361d38 commit 36837e1
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 3 deletions.
25 changes: 25 additions & 0 deletions phpBB/includes/functions_module.php
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,17 @@ function list_modules($p_class)

// 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']))
{
Expand Down Expand Up @@ -161,6 +170,22 @@ function list_modules($p_class)
$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)
Expand Down
48 changes: 48 additions & 0 deletions tests/functional/ucp_pm_test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php
/**
*
* @package testing
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

/**
* @group functional
*/
class phpbb_functional_ucp_pm_test extends phpbb_functional_test_case
{
public function setUp()
{
parent::setUp();
$this->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());
$this->set_allow_pm(1);
}

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());
}
}
18 changes: 15 additions & 3 deletions tests/test_framework/phpbb_functional_test_case.php
Original file line number Diff line number Diff line change
Expand Up @@ -726,15 +726,27 @@ protected function lang()
/**
* 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
*
Expand Down

0 comments on commit 36837e1

Please sign in to comment.