/** * Loads the configuration and works as singleton therefore called static. The call using the program cache * is 10 times faster then taking from the session. The session is still approx. 30 times faster then using the file. * The db is 10 times slower then the session. * * Performance: * * Fastest is * Program Cache: 1.5974044799805E-5 * Session Cache: 0.00016094612121582 * * First config db load: 0.00052118301391602 * Parsed and in session: 0.001554012298584 * * After install from file: 0.0040450096130371 * Parsed and in session: 0.0051419734954834 * * * Functions tests if already loaded in program cache, session cache, database and at last the file. * * Load the configuration values from the database into a session variable. * This step is done to prevent accessing the database for every configuration variable lookup. * * @author Max Milbers * @param $force boolean Forces the function to load the config from the db */ public static function loadConfig($force = FALSE, $fresh = FALSE) { if ($fresh) { self::$_jpConfig = new tsmConfig(); return self::$_jpConfig; } vmSetStartTime('loadConfig'); if (!$force) { if (!empty(self::$_jpConfig) && !empty(self::$_jpConfig->_params)) { return self::$_jpConfig; } } self::$_jpConfig = new tsmConfig(); if (!class_exists('tsmartModelConfig')) { require VMPATH_ADMIN . '/models/config.php'; } $configTable = tsmartModelConfig::checkConfigTableExists(); $app = JFactory::getApplication(); $db = JFactory::getDBO(); self::$installed = true; $install = vRequest::getInt('install', false); $redirected = vRequest::getInt('redirected', false); $link = ''; $msg = ''; if (empty($configTable)) { self::$installed = false; $jlang = JFactory::getLanguage(); $selectedLang = $jlang->getTag(); if (empty($selectedLang)) { $selectedLang = $jlang->setLanguage($selectedLang); } $q = 'SELECT `element` FROM `#__extensions` WHERE type = "language" and enabled = "1"'; $db->setQuery($q); $knownLangs = $db->loadColumn(); //vmdebug('Selected language '.$selectedLang.' $knownLangs ',$knownLangs); if ($app->isAdmin() and !$redirected and !in_array($selectedLang, $knownLangs)) { //$option = vRequest::getVar('option'); //VmConfig::$_debug=true; //vmdebug('my option',$option,$_REQUEST); //if($option!='com_languages'){ $msg = 'Install your selected language <b>' . $selectedLang . '</b> first in <a href="' . $link . '">joomla language manager</a>, just select then the component tsmart under menu "component", to proceed with the installation '; //$link = 'index.php?option=com_installer&view=languages&redirected=1'; //$app->redirect($link,$msg); //} $app->enqueueMessage($msg); } self::$installed = tsmartModelConfig::checktsmartInstalled(); /*if(!self::$installed){ if(!$redirected and !$install){ $link = 'index.php?option=com_tsmart&view=updatesmigration&redirected=1'; if($app->isSite()){ $link = JURI::root(true).'/administrator/'.$link; } else { if(empty($msg)) $msg = 'Install tsmart first, click on the menu component and select tsmart'; } } }*/ } else { $query = ' SELECT `config` FROM `#__tsmart_configs` WHERE `tsmart_config_id` = "1";'; $db->setQuery($query); self::$_jpConfig->_raw = $db->loadResult(); //vmTime('time to load config','loadConfig'); } if (empty(self::$_jpConfig->_raw)) { $_value = tsmartModelConfig::readConfigFile(); if (!$_value) { vmError('Serious error, config file could not be filled with data'); return FALSE; } $_value = join('|', $_value); self::$_jpConfig->_raw = $_value; self::$_jpConfig->setParams(self::$_jpConfig->_raw); self::$_jpConfig->storeConfig(); } else { self::$_jpConfig->setParams(self::$_jpConfig->_raw); } self::$_secret = JFactory::getConfig()->get('secret'); self::$_jpConfig->_params['sctime'] = microtime(TRUE); self::$_jpConfig->_params['vmlang'] = self::setdbLanguageTag(); vmTime('time to load config', 'loadConfig'); if ($app->isSite()) { // try plugins JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmInitialise', array()); } if (!self::$installed) { $user = JFactory::getUser(); if ($user->authorise('core.admin', 'com_tsmart') and ($install or $redirected)) { tsmConfig::$_jpConfig->set('dangeroustools', 1); } if (!empty($msg)) { $app->enqueueMessage($msg); } if (!empty($link)) { $app->redirect($link); } } return self::$_jpConfig; }
/** * Display the administrative ribbon menu. * @todo The link should be done better */ static function showAdminMenu($vmView) { if (!isset(tsmConfig::$installed)) { tsmConfig::$installed = false; } if (!tsmConfig::$installed) { return false; } $moduleId = vRequest::getInt('module_id', 0); $menuItems = AdminUIHelper::_getAdminMenu($moduleId); $app = JFactory::getApplication(); $isSite = $app->isSite(); ?> <div id="admin-ui-menu" class="admin-ui-menu"> <?php $modCount = 1; foreach ($menuItems as $item) { $html = ''; foreach ($item['items'] as $link) { $target = ''; if ($link['name'] == '-') { // it was emtpy before } else { if (strncmp($link['link'], 'http', 4) === 0) { $url = $link['link']; $target = 'target="_blank"'; } else { $url = $link['link'] === '' ? 'index.php?option=com_tsmart' : $link['link']; $url .= $link['view'] ? "&view=" . $link['view'] : ''; $url .= $link['task'] ? "&task=" . $link['task'] : ''; $url .= $isSite ? '&manage=1' : ''; // $url .= $link['extra'] ? $link['extra'] : ''; $url = vRequest::vmSpecialChars($url); } if ($vmView->manager($link['view']) || $target || $link['view'] == 'about' || $link['view'] == 'tsmart') { $html .= ' <li> <a href="' . $url . '" ' . $target . '> <span class="vmicon-wrapper"><span class="' . $link['icon_class'] . '"></span></span> <span class="menu-subtitle">' . tsmText::_($link['name']) . '</span> </a> </li>'; } } } if (!empty($html)) { ?> <h3 class="menu-title"> <span class="menu-title-wrapper"> <span class="vmicon-wrapper"><span class="<?php echo tsmText::_($item['items'][0]['icon_class']); ?> "></span></span> <span class="menu-title-content"><?php echo tsmText::_($item['title']); ?> </span> </span> </h3> <div class="menu-list"> <ul> <?php echo $html; ?> </ul> </div> <?php $modCount++; } } ?> <div class="menu-notice"></div> </div> <?php }