public static function storeConfig() { $user = JFactory::getUser(); if ($user->authorise('core.admin', 'com_virtuemart')) { $installed = VirtueMartModelConfig::checkVirtuemartInstalled(); if ($installed) { VirtueMartModelConfig::installVMconfigTable(); $confData = array(); $confData['virtuemart_config_id'] = 1; $confData['config'] = VmConfig::$_jpConfig->toString(); $confTable = VmTable::getInstance('configs', 'Table', array()); if (!$confTable->bindChecknStore($confData)) { vmError('storeConfig was not able to store config'); } } else { self::$_virtuemart_vendor_id = 1; } } }
/** * 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) { return self::$_jpConfig = new VmConfig(); } vmSetStartTime('loadConfig'); if (!$force) { if (!empty(self::$_jpConfig) && !empty(self::$_jpConfig->_params)) { return self::$_jpConfig; } } self::$_jpConfig = new VmConfig(); if (!class_exists('VirtueMartModelConfig')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'config.php'; } $configTable = VirtueMartModelConfig::checkConfigTableExists(); $db = JFactory::getDBO(); $app = JFactory::getApplication(); $freshInstall = vRequest::getInt('install', false); if (empty($configTable) or $freshInstall) { if (!$freshInstall) { $installed = VirtueMartModelConfig::checkVirtuemartInstalled(); if (!$installed) { $jlang = JFactory::getLanguage(); $selectedLang = $jlang->getTag(); if (empty($selectedLang)) { $selectedLang = $jlang->setLanguage($selectedLang); } $msg = ''; $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 !in_array($selectedLang, $knownLangs)) { $link = 'index.php?option=com_installer&view=languages'; $msg = 'Install your selected language <b>' . $selectedLang . '</b> first in <a href="' . $link . '">joomla language manager</a>, just select then the component VirtueMart under menu "component", to proceed with the installation '; $app->enqueueMessage($msg); } //else { if ($app->isSite()) { $link = 'index.php?option=com_virtuemart'; } else { $link = 'index.php?option=com_virtuemart&view=updatesmigration&install=1'; $msg = 'Install Virtuemart first, click on the menu component and select VirtueMart'; } if ($app->isSite()) { $link = JURI::root(true) . '/administrator/' . $link; } $app->redirect($link, $msg); //} } if ($installed) { self::$_jpConfig->installVMconfig(); } } else { self::$_jpConfig->installVMconfig($freshInstall); } } $install = 'no'; if (empty(self::$_jpConfig->_raw)) { $query = ' SELECT `config` FROM `#__virtuemart_configs` WHERE `virtuemart_config_id` = "1";'; $db->setQuery($query); self::$_jpConfig->_raw = $db->loadResult(); if (empty(self::$_jpConfig->_raw)) { if (self::installVMconfig($freshInstall)) { $install = 'yes'; $db->setQuery($query); self::$_jpConfig->_raw = $db->loadResult(); self::$_jpConfig->_params = NULL; } else { $app->enqueueMessage('Error loading configuration file', 'Error loading configuration file, please contact the storeowner'); } } } $i = 0; $pair = array(); if (!empty(self::$_jpConfig->_raw)) { $config = explode('|', self::$_jpConfig->_raw); foreach ($config as $item) { $item = explode('=', $item); if (!empty($item[1])) { // if($item[0]!=='offline_message' && $item[0]!=='dateformat' ){ if ($item[0] !== 'offline_message') { try { $value = @unserialize($item[1]); if ($value === FALSE) { $app->enqueueMessage('Exception in loadConfig for unserialize ' . $item[0] . ' ' . $item[1]); $uri = JFactory::getURI(); $configlink = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=config'; $app->enqueueMessage('To avoid this message, enter your virtuemart <a href="' . $configlink . '">config</a> and just save it one time'); } else { $pair[$item[0]] = $value; } } catch (Exception $e) { vmdebug('Exception in loadConfig for unserialize ' . $e->getMessage(), $item); } } else { $pair[$item[0]] = unserialize(base64_decode($item[1])); } } else { $pair[$item[0]] = ''; } } // $pair['sctime'] = microtime(true); self::$_jpConfig->_params = $pair; self::$_jpConfig->_params['sctime'] = microtime(TRUE); //self::$_jpConfig->set('sctime',microtime(TRUE)); //self::setdbLanguageTag(); self::$_jpConfig->_params['vmlang'] = self::setdbLanguageTag(); vmTime('loadConfig db ' . $install, 'loadConfig'); // try plugins if ($app->isSite()) { if (!class_exists('VmImage')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'; } JPluginHelper::importPlugin('vmuserfield'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('plgVmInitialise', array()); } return self::$_jpConfig; } $app->enqueueMessage('Attention config is empty'); return self::$_jpConfig; }