-
- /*
- * Build the page
- */
-
- $tpl = get_markup_template('nav.tpl');
-
- $a->page['nav'] .= replace_macros($tpl,
- [
- '$baseurl' => System::baseUrl(),
- '$sitelocation' => $nav_info['sitelocation'],
- '$nav' => $nav_info['nav'],
- '$banner' => $nav_info['banner'],
- '$emptynotifications' => t('Nothing new here'),
- '$userinfo' => $nav_info['userinfo'],
- '$sel' => $a->nav_sel,
- '$apps' => $a->apps,
- '$clear_notifs' => t('Clear notifications'),
- '$search_hint' => t('@name, !forum, #tags, content')
- ]
- );
-
- call_hooks('page_header', $a->page['nav']);
+
+ $tpl = Renderer::getMarkupTemplate('nav.tpl');
+
+ $nav .= Renderer::replaceMacros($tpl, [
+ '$baseurl' => System::baseUrl(),
+ '$sitelocation' => $nav_info['sitelocation'],
+ '$nav' => $nav_info['nav'],
+ '$banner' => $nav_info['banner'],
+ '$emptynotifications' => L10n::t('Nothing new here'),
+ '$userinfo' => $nav_info['userinfo'],
+ '$sel' => self::$selected,
+ '$apps' => self::getAppMenu(),
+ '$clear_notifs' => L10n::t('Clear notifications'),
+ '$search_hint' => L10n::t('@name, !forum, #tags, content')
+ ]);
+
+ Hook::callAll('page_header', $nav);
+
+ return $nav;
+ }
+
+ /**
+ * Returns the addon app menu
+ *
+ * @return array
+ */
+ public static function getAppMenu()
+ {
+ if (is_null(self::$app_menu)) {
+ self::populateAppMenu();
+ }
+
+ return self::$app_menu;
+ }
+
+ /**
+ * Fills the apps static variable with apps that require a menu
+ */
+ private static function populateAppMenu()
+ {
+ self::$app_menu = [];
+
+ //Don't populate apps_menu if apps are private
+ $privateapps = Config::get('config', 'private_addons', false);
+ if (local_user() || !$privateapps) {
+ $arr = ['app_menu' => self::$app_menu];
+
+ Hook::callAll('app_menu', $arr);
+
+ self::$app_menu = $arr['app_menu'];
+ }