3 namespace wcf\system\menu\user
;
5 use wcf\data\user\menu\item\UserMenuItem
;
6 use wcf\system\cache\builder\UserMenuCacheBuilder
;
7 use wcf\system\menu\ITreeMenuItem
;
8 use wcf\system\menu\TreeMenu
;
9 use wcf\system\option\user\UserOptionHandler
;
13 * Builds the user menu.
15 * @author Alexander Ebert
16 * @copyright 2001-2019 WoltLab GmbH
17 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
18 * @package WoltLabSuite\Core\System\Menu\User
20 class UserMenu
extends TreeMenu
23 * user option handler for the `settings` category
24 * @var UserOptionHandler
26 protected $optionHandler;
31 protected function loadCache()
35 $this->menuItems
= UserMenuCacheBuilder
::getInstance()->getData();
36 $this->optionHandler
= new UserOptionHandler(false, '', 'settings');
37 $this->optionHandler
->setUser(WCF
::getUser());
43 protected function checkMenuItem(ITreeMenuItem
$item)
45 /** @var UserMenuItem $item */
47 if (!parent
::checkMenuItem($item)) {
51 // Hide links to user option categories without accessible options.
52 if (\
strpos($item->menuItem
, 'wcf.user.option.category.') === 0) {
53 $categoryName = \
str_replace('wcf.user.option.category.', '', $item->menuItem
);
54 if (!$this->optionHandler
->countCategoryOptions($categoryName)) {
59 return $item->getProcessor()->isVisible();