diff options
author | Nathan Guse <nathaniel.guse@gmail.com> | 2014-03-13 19:31:22 -0500 |
---|---|---|
committer | Nathan Guse <nathaniel.guse@gmail.com> | 2014-03-13 19:31:22 -0500 |
commit | 36837e1975cafdb171f8512981caaefccd84c76c (patch) | |
tree | bfe8b18065d1aeee36675e6db9e7ca36c0aef326 /phpBB/includes/functions_module.php | |
parent | 12b8460089d3afcc0348883ba846ce99404ebe77 (diff) | |
parent | 6361d382b30f96758020d226d12b19e4f649b643 (diff) | |
download | forums-36837e1975cafdb171f8512981caaefccd84c76c.tar forums-36837e1975cafdb171f8512981caaefccd84c76c.tar.gz forums-36837e1975cafdb171f8512981caaefccd84c76c.tar.bz2 forums-36837e1975cafdb171f8512981caaefccd84c76c.tar.xz forums-36837e1975cafdb171f8512981caaefccd84c76c.zip |
Merge pull request #2109 from nickvergessen/ticket/11581
[ticket/11581] Hide categories on level 0 when they have no visible children
Diffstat (limited to 'phpBB/includes/functions_module.php')
-rw-r--r-- | phpBB/includes/functions_module.php | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/phpBB/includes/functions_module.php b/phpBB/includes/functions_module.php index dca010518b..e043883145 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) |