Index: geshifilter.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/geshifilter/geshifilter.module,v
retrieving revision 1.18.2.32
diff -u -u -p -r1.18.2.32 geshifilter.module
--- geshifilter.module	31 Oct 2007 02:27:17 -0000	1.18.2.32
+++ geshifilter.module	1 Nov 2007 12:13:33 -0000
@@ -714,6 +714,8 @@ function geshifilter_admin_per_language_
 function geshifilter_admin_per_language_settings_submit($form_id, $form_values) {
   // normal system_settings_form processing
   system_settings_form_submit($form_id, $form_values);
+  // clear geshifilter_enabled_languages cache
+  cache_clear_all('geshifilter_enabled_languages', 'cache');
   // regenerate language_css
   if (variable_get('geshifilter_css_mode', GESHIFILTER_CSS_INLINE) == GESHIFILTER_CSS_CLASSES) {
     _geshifilter_generate_languages_css();
@@ -908,12 +910,19 @@ function _geshifilter_get_available_lang
 function _geshifilter_get_enabled_languages() {
   static $enabled_languages = NULL;
   if ($enabled_languages === NULL) {
-    $enabled_languages = array();
-    $languages = _geshifilter_get_available_languages();
-    foreach ($languages as $language => $fullname) {
-      if (variable_get("geshifilter_language_enabled_{$language}", TRUE)) {
-        $enabled_languages[$language] = $fullname;
+    // if not available from per request cache: try to fetch from database cache
+    $enabled_languages = unserialize(cache_get('geshifilter_enabled_languages', 'cache')->data);
+    if (!$enabled_languages) {
+      // if not available in database cache: build the array
+      $enabled_languages = array();
+      $languages = _geshifilter_get_available_languages();
+      foreach ($languages as $language => $fullname) {
+        if (variable_get("geshifilter_language_enabled_{$language}", TRUE)) {
+          $enabled_languages[$language] = $fullname;
+        }
       }
+      // save in database cache
+      cache_set('geshifilter_enabled_languages', 'cache', serialize($enabled_languages));
     }
   }
   return $enabled_languages;
