コード例 #1
0
 /**
  * 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');
 }