Index: trunk/core/kernel/application.php =================================================================== diff -u -r3210 -r3212 --- trunk/core/kernel/application.php (.../application.php) (revision 3210) +++ trunk/core/kernel/application.php (.../application.php) (revision 3212) @@ -55,6 +55,13 @@ var $Factory; /** + * All ConfigurationValues table content (hash) here + * + * @var Array + */ + var $ConfigHash = Array(); + + /** * Reference to debugger * * @var Debugger @@ -180,6 +187,7 @@ $this->DB->debugMode = $this->isDebugMode(); $this->ModuleInfo = $this->DB->Query('SELECT * FROM '.TABLE_PREFIX.'Modules ORDER BY LoadOrder', 'Name'); + $this->ConfigHash = $this->DB->GetCol('SELECT VariableValue, VariableName FROM '.TABLE_PREFIX.'ConfigurationValues', 'VariableName'); $rewrite_on = $this->ConfigValue('UseModRewrite'); $admin_on = getArrayValue($_REQUEST, 'admin') || $this->IsAdmin(); @@ -249,9 +257,7 @@ if ( !$language_id || !in_array($language_id, $language_ids) ) { - $def_lang = $this->GetDefaultLanguageId(); - $this->SetVar('m_lang', $def_lang); - $this->StoreVar('m_lang', $def_lang); + $this->SetVar('m_lang', $this->GetDefaultLanguageId() ); } } @@ -333,9 +339,11 @@ */ function RegisterDefaultClasses() { - $this->registerClass('kArray',KERNEL_PATH.'/utility/params.php'); - $this->registerClass('Params',KERNEL_PATH.'/utility/params.php'); + $this->registerClass('kArray', KERNEL_PATH.'/utility/params.php'); + $this->registerClass('Params', KERNEL_PATH.'/utility/params.php'); + $this->registerClass('Params', KERNEL_PATH.'/utility/params.php', 'kFilenamesCache'); + $this->registerClass('HTTPQuery', KERNEL_PATH.'/utility/http_query.php', 'HTTPQuery', Array('Params') ); $this->registerClass('Session', KERNEL_PATH.'/session/session.php'); @@ -363,9 +371,9 @@ $event_manager =& $this->recallObject('EventManager'); $event_manager->registerBuildEvent('kTempTablesHandler', 'OnTempHandlerBuild'); - $this->registerClass('TemplatesCache',KERNEL_PATH.'/parser/template.php'); - $this->registerClass('Template',KERNEL_PATH.'/parser/template.php'); - $this->registerClass('TemplateParser',KERNEL_PATH.'/parser/template_parser.php'); + $this->registerClass('TemplatesCache', KERNEL_PATH.'/parser/template.php'); + $this->registerClass('Template', KERNEL_PATH.'/parser/template.php'); + $this->registerClass('TemplateParser', KERNEL_PATH.'/parser/template_parser.php'); $this->registerClass('MainProcessor', KERNEL_PATH.'/processors/main_processor.php','m_TagProcessor'); @@ -376,17 +384,42 @@ $this->registerClass('kDBTagProcessor', KERNEL_PATH.'/db/db_tag_processor.php'); $this->registerClass('kTagProcessor', KERNEL_PATH.'/processors/tag_processor.php'); - $this->registerClass('kEmailMessage',KERNEL_PATH.'/utility/email.php'); - $this->registerClass('kSmtpClient',KERNEL_PATH.'/utility/smtp_client.php'); + $this->registerClass('kEmailMessage', KERNEL_PATH.'/utility/email.php'); + $this->registerClass('kSmtpClient', KERNEL_PATH.'/utility/smtp_client.php'); if (file_exists(MODULES_PATH.'/in-commerce/units/currencies/currency_rates.php')) { - $this->registerClass('kCurrencyRates',MODULES_PATH.'/in-commerce/units/currencies/currency_rates.php'); + $this->registerClass('kCurrencyRates', MODULES_PATH.'/in-commerce/units/currencies/currency_rates.php'); } $this->registerClass('FCKeditor', FULL_PATH.'/admin/editor/cmseditor/fckeditor.php'); // need this? } /** + * Returns item's filename that corresponds id passed. If possible, then get it from cache + * + * @param string $prefix + * @param int $id + * @return string + */ + function getFilename($prefix, $id) + { + $field = ($prefix == 'c') ? 'NamedParentPath' : 'Filename'; + $filenames_cache =& $this->recallObject('kFilenamesCache'); + $filename = $filenames_cache->Get($prefix.'_'.$id); + if($filename === false) + { + $table = $this->getUnitOption($prefix, 'TableName'); + $id_field = $this->getUnitOption($prefix, 'IDField'); + $sql = 'SELECT '.$field.' + FROM '.$table.' + WHERE '.$id_field.' = '.$this->DB->qstr($id); + $filename = $this->DB->GetOne($sql); + $filenames_cache->Set($prefix.'_'.$id, $filename); + } + return $filename; + } + + /** * Defines default constants if it's not defined before - in config.php * * @access private @@ -830,10 +863,10 @@ function BuildEnv_NEW($t, $params, $pass = 'all', $pass_events = false) { - $session =& $this->recallObject('Session'); +// $session =& $this->recallObject('Session'); $force_admin = getArrayValue($params,'admin') || $this->GetVar('admin'); - if($force_admin) $sid = $this->GetSID(); +// if($force_admin) $sid = $this->GetSID(); $ret = ''; $env = ''; @@ -1102,7 +1135,8 @@ */ function ConfigValue($name) { - return $this->DB->GetOne('SELECT VariableValue FROM '.TABLE_PREFIX.'ConfigurationValues WHERE VariableName = '.$this->DB->qstr($name) ); + return getArrayValue($this->ConfigHash, $name); +// return $this->DB->GetOne('SELECT VariableValue FROM '.TABLE_PREFIX.'ConfigurationValues WHERE VariableName = '.$this->DB->qstr($name) ); } /**