Index: trunk/core/units/general/main_event_handler.php =================================================================== diff -u -N -r3344 -r3559 --- trunk/core/units/general/main_event_handler.php (.../main_event_handler.php) (revision 3344) +++ trunk/core/units/general/main_event_handler.php (.../main_event_handler.php) (revision 3559) @@ -1,16 +1,16 @@ Conn =& $this->Application->GetADODBConnection(); } - + /** * Created url part for this module * * @param kEvent $event */ function BuildEnv(&$event) { + static $ThemesCache = array(); + static $LangCache = array(); + $prefix_special = $event->getPrefixSpecial(); $url_params = $event->getEventParam('url_params'); - + $query_vars = $this->Application->getUnitOption($event->Prefix, 'QueryString'); - + //if pass events is off and event is not implicity passed if ( !$event->getEventParam('pass_events') && !isset($url_params[$prefix_special.'_event']) ) { $url_params[$prefix_special.'_event'] = ''; // remove event from url if requested //otherwise it will use value from get_var } - + if(!$query_vars) return true; - + $processed_params = Array(); foreach($query_vars as $index => $var_name) { @@ -52,29 +55,35 @@ $processed_params[$var_name] = isset( $url_params[$var_name] ) ? $url_params[$var_name] : $this->Application->GetVar($var_name); if ( isset($url_params[$var_name]) ) unset( $url_params[$var_name] ); } - + $ret = ''; $default_language_id = $this->Application->GetDefaultLanguageId(); if( $processed_params['m_lang'] != $default_language_id ) { - $ret = $this->Conn->GetOne('SELECT PackName + if (!isset($LangCache[$processed_params['m_lang']])) { + $LangCache[$processed_params['m_lang']] = $this->Conn->GetOne('SELECT PackName FROM '.TABLE_PREFIX.'Language WHERE LanguageId = '.$processed_params['m_lang']).'/'; + } + $ret .= $LangCache[$processed_params['m_lang']]; } - + $default_theme_id = $this->Application->GetDefaultThemeId(); if( $processed_params['m_theme'] != $default_theme_id ) { - $ret .= $this->Conn->GetOne('SELECT Name - FROM '.TABLE_PREFIX.'Theme - WHERE ThemeId = '.$processed_params['m_theme']).'/'; + if (!isset($ThemesCache[$processed_params['m_theme']])) { + $ThemesCache[$processed_params['m_theme']] = $this->Conn->GetOne('SELECT Name + FROM '.TABLE_PREFIX.'Theme + WHERE ThemeId = '.$processed_params['m_theme']).'/'; + } + $ret .= $ThemesCache[$processed_params['m_theme']]; } - + if( $processed_params['m_cat_id'] > 0 ) { $ret .= $this->Application->getFilename('c', $processed_params['m_cat_id']).'/'; } - + $force_page_adding = false; if (getArrayValue($url_params, 'reset')) { @@ -85,14 +94,14 @@ $force_page_adding = true; } } - + if( $processed_params['m_cat_page'] > 1 || $force_page_adding ) { $ret = preg_replace('/(.*)\//', '\\1', $ret).'_'.$processed_params['m_cat_page'].'/'; } $ret .= $event->getEventParam('t').'/'; - + $event->setEventParam('url_params', $url_params); $event->setEventParam('env_string', strtolower($ret) ); }