/** * Recache applications * * @return @e void */ public function applicationsRecache() { $apps = array(); $incomingEmails = FALSE; /* Rebuild Applications Cache */ $this->DB->build(array('select' => '*', 'from' => 'core_applications', 'order' => 'app_position ASC')); $outer = $this->DB->execute(); while ($row = $this->DB->fetch($outer)) { /* Sort out tab groups */ $row['app_tab_groups'] = IPSText::cleanPermString($row['app_tab_groups']); if ($row['app_tab_groups']) { $row['app_tab_groups'] = explode(',', $row['app_tab_groups']); } else { $row['app_tab_groups'] = array(); } $apps[$row['app_directory']] = $row; /* Search */ // By checking if it's installed here, we don't build the search key properly during a fresh install. // We should check if the app is installed at runtime instead. //if ( IPSLib::appIsInstalled( $row['app_directory'] ) ) //{ $_file = IPSLib::getAppDir($row['app_directory']) . '/extensions/search/config.php'; if (is_file($_file)) { $CONFIG = array(); require $_file; /*noLibHook*/ if (is_array($CONFIG) and count($CONFIG)) { $apps[$row['app_directory']]['search'] = $CONFIG; unset($CONFIG); } } //} /* Fetch installed extensions */ $apps[$row['app_directory']]['extensions'] = array('itemMarking' => false, 'comments' => false, 'like' => false, 'search' => false, 'incomingEmail' => false); /* Now go */ $apps[$row['app_directory']]['extensions']['comments'] = $this->_getHasExtensionComments($row['app_directory']); $apps[$row['app_directory']]['extensions']['itemMarking'] = $this->_getHasExtensionItemMarking($row['app_directory']); $apps[$row['app_directory']]['extensions']['incomingEmail'] = $this->_getHasExtensionIncomingEmail($row['app_directory']); $apps[$row['app_directory']]['extensions']['like'] = $this->_getHasExtensionLike($row['app_directory']); $apps[$row['app_directory']]['extensions']['search'] = $this->_getHasExtensionSearch($row['app_directory']); $apps[$row['app_directory']]['extensions']['groupOptions'] = $this->_getGroupExtensions($row['app_directory']); /* incomingEmails? */ if ($apps[$row['app_directory']]['extensions']['incomingEmail']) { $incomingEmails = TRUE; } /* Has custom header? */ $apps[$row['app_directory']]['hasCustomHeader'] = method_exists($this->registry->output->getTemplate($row['app_directory'] . '_global'), 'overwriteHeader') ? 1 : 0; } $this->cache->setCache('app_cache', $apps, array('array' => 1)); ipsRegistry::$applications = $apps; /* Do we have an incomingEmails extension anywhere? */ $systemvars = $this->cache->getCache('systemvars'); $systemvars['incomingEmails'] = $incomingEmails; $this->cache->setCache('systemvars', $systemvars, array('array' => 1)); /* Rebuild navigation tabs too */ $tabs = array(); foreach ($apps as $dir => $data) { # app_hide_tab is already checked in the output class #if ( ! $data['app_hide_tab'] ) #{ $tabs[] = array('app' => $dir, 'groups' => $data['app_tab_groups'], 'module' => '', 'title' => $this->lang->words[$data['app_public_title']] ? $this->lang->words[$data['app_public_title']] : $data['app_public_title']); #} if (is_file(IPSLib::getAppDir($dir) . '/extensions/coreVariables.php')) { $extraTabs = array(); require_once IPSLib::getAppDir($dir) . '/extensions/coreVariables.php'; /*noLibHook*/ if (is_array($extraTabs) && count($extraTabs)) { $this->registry->class_localization->loadLanguageFile(array('admin_' . $dir), $dir); $_extraTabs = array(); foreach ($extraTabs as $t) { $t['title'] = $this->lang->words[$t['title']]; $_extraTabs[] = $t; } $tabs = array_merge($tabs, $_extraTabs); } unset($extraTabs); } } $this->cache->setCache('navigation_tabs', $tabs, array('array' => 1)); $this->cache->rebuildCache('rss_output_cache', 'global'); }