Index: units/users/users_event_handler.php =================================================================== --- units/users/users_event_handler.php (revision 15326) +++ units/users/users_event_handler.php (working copy) @@ -1734,20 +1734,36 @@ $object->SetDBField('SubscribeToMailing', $object->isSubscribed() ? 1 : 0); if ( !$this->Application->isAdmin ) { - $list = $this->Application->recallObject('lang.enabled', 'lang_List'); - /* @var $list kDBList */ + $object->SetFieldOption('FrontLanguage', 'options', $this->getEnabledLanguages()); + } + } - $list->Query(); - $list->GoFirst(); - $languages = Array (); + /** + * Returns list of enabled languages with their names + * + * @return Array + * @access protected + */ + protected function getEnabledLanguages() + { + $cache_key = 'user_languages[%LangSerial%]'; - while (!$list->EOL()) { - $languages[$list->GetID()] = $list->GetField('LocalName'); - $list->GoNext(); + $ret = $this->Application->getCache($cache_key); + + if ( $ret === false ) { + $languages = $this->Application->recallObject('lang.enabled', 'lang_List'); + /* @var $languages kDBList */ + + $ret = Array (); + + foreach ($languages as $language_info) { + $ret[$languages->GetID()] = $language_info['LocalName']; } - $object->SetFieldOption('FrontLanguage', 'options', $languages); + $this->Application->setCache($cache_key, $ret); } + + return $ret; } /**