Index: trunk/core/units/general/main_event_handler.php =================================================================== diff -u -N -r4133 -r4135 --- trunk/core/units/general/main_event_handler.php (.../main_event_handler.php) (revision 4133) +++ trunk/core/units/general/main_event_handler.php (.../main_event_handler.php) (revision 4135) @@ -30,9 +30,6 @@ */ function BuildEnv(&$event) { - static $ThemesCache = array(); - static $LangCache = array(); - $prefix_special = $event->getPrefixSpecial(); $url_params = $event->getEventParam('url_params'); @@ -60,27 +57,33 @@ $default_language_id = $this->Application->GetDefaultLanguageId(); if( $processed_params['m_lang'] != $default_language_id ) { - 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']).'/'; + $language_name = $this->Application->getCache('language_names', $processed_params['m_lang']); + if ($language_name === false) { + $sql = 'SELECT PackName + FROM '.TABLE_PREFIX.'Language + WHERE LanguageId = '.$processed_params['m_lang']; + $language_name = $this->Conn->GetOne($sql); + $this->Application->setCache('language_names', $processed_params['m_lang'], $language_name); } - $ret .= $LangCache[$processed_params['m_lang']]; + $ret .= $language_name.'/'; } $default_theme_id = $this->Application->GetDefaultThemeId(); if( $processed_params['m_theme'] != $default_theme_id ) { - 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']).'/'; + $theme_name = $this->Application->getCache('theme_names', $processed_params['m_theme']); + if ($theme_name === false) { + $sql = 'SELECT Name + FROM '.TABLE_PREFIX.'Theme + WHERE ThemeId = '.$processed_params['m_theme']; + $theme_name = $this->Conn->GetOne($sql); + $this->Application->setCache('theme_names', $processed_params['m_theme'], $theme_name); + } - $ret .= $ThemesCache[$processed_params['m_theme']]; + $ret .= $theme_name.'/'; } - if( $processed_params['m_cat_id'] > 0 ) - { + if ($processed_params['m_cat_id'] > 0) { $ret .= $this->Application->getFilename('c', $processed_params['m_cat_id']).'/'; } @@ -100,7 +103,17 @@ $ret = preg_replace('/(.*)\//', '\\1', $ret).'_'.$processed_params['m_cat_page'].'/'; } - $ret .= $url_params['t'].'/'; + $template = getArrayValue($url_params, 't'); + $category_template = $processed_params['m_cat_id'] ? $this->Application->getCache('category_templates', $processed_params['m_cat_id']) : ''; + + // remove template from url if it is category index cached template + if ($template == $category_template) { + $template = ''; + } + + if ($template) { + $ret .= $template.'/'; + } unset($url_params['t']); $event->setEventParam('url_params', $url_params);