Index: modules/languageinterface/languageinterface.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/languageinterface/languageinterface.module,v
retrieving revision 1.14
diff -U3 -r1.14 languageinterface.module
--- modules/languageinterface/languageinterface.module	19 Feb 2009 21:55:36 -0000	1.14
+++ modules/languageinterface/languageinterface.module	29 Jun 2009 21:33:20 -0000
@@ -7,11 +7,11 @@
 require_once('li_helperfunctions.inc');
 function languageinterface_init() {
   if (variable_get('language_redirect', 0) == 1) {
-    
+
     $referrer = $_SERVER["HTTP_REFERER"];
     $lastlanguage = '';
     global $language;
-    
+
     global $base_url;
     global $user;
     $fullurl = $_SERVER['QUERY_STRING'];
@@ -21,14 +21,14 @@
     }
     else {
       $lastviewed = $_COOKIE['last_viewed_source'];
-      
+
     }
-     
+
     $internal = strpos($referrer, $base_url);
     if ($lastviewed == 'goto') {
       $internal = 20;
     }
-    
+
     if(!is_numeric($internal)) {
       // not from internal link
       $arg_1 = arg(1);
@@ -45,11 +45,11 @@
         setcookie("last_viewed_source", 'goto', time()+360000, '/');
         drupal_goto($languagepath);
       }
-      
+
     }
     if (is_numeric($internal)) {
-          
-          
+
+
     }
     if (is_numeric($internal)) {
       $_SESSION['lastlanguage'] =  array();
@@ -76,7 +76,7 @@
     'page callback' => 'drupal_get_form',
     'page arguments' => array('languageinterface_options'),
     'access arguments' => array('administer languages'),
-    'type' => MENU_NORMAL_ITEM,  
+    'type' => MENU_NORMAL_ITEM,
   );
   return $items;
 }
@@ -91,9 +91,9 @@
       $blocks[0]['info'] = t('Consistent Language Interface block');
       $blocks[0]['cache'] = BLOCK_NO_CACHE;
     return $blocks;
-    
+
     case 'view':
-      $block['subject'] = t('Language'); 
+      $block['subject'] = t('Language');
       $block['content'] = language_link_creation();
   }
   //end switch ($op)
@@ -104,27 +104,25 @@
   //We get the full url of the page.
   global $base_url;
   $fullurl = $_SERVER['QUERY_STRING'];
-  
+
   $fullurl = str_replace('q=', '', $fullurl);
-  
-  
+
   // We convert the url into an array.
   $urlarray = explode('/', $fullurl);
 
   // We check to see if there is a language string in the url and remove it if so.
   global $language;
-  
+
   if ($urlarray[0] == "") {
     array_shift($urlarray);
   }
-  
+
   if ($urlarray[0] == $language->language) {
     array_shift($urlarray);
   }
-  
-  
+
   $prefix = $lang.'/';
-  $default_language = language_default();  
+  $default_language = language_default();
   if ($lang == $default_language->language) {
     $prefix = '';
   }
@@ -147,7 +145,7 @@
       else {$destination_nid = $tnid;}
     }
     // End if ($tnid).
-    
+
     else {
       $destination_nid = $node_nid;
     }
@@ -155,32 +153,36 @@
       $destination_nid = arg(1);
       $remaining = '/'.implode("/",$urlarray);
     }
-    $path = rootpath() .$prefix .'node/'. $destination_nid . $remaining;
+    $path = $prefix .'node/'. $destination_nid . $remaining;
     // Endif (current page is node)
     }
      else {
       $remaining = implode("/", $urlarray);
-      $path = rootpath() . $prefix . $remaining ;
+      $path = $prefix . $remaining ;
     }
+    if (variable_get('clean_url', 0) == 0) {
+      $path = '?q='. $path;
+    }
+    $path = rootpath() . $path;
   return $path;
 }
 function language_link_creation() {
-  
+
   $customdimensions = variable_get('custom_flag_dimensions', '16x12');
   $customdimensions = explode('x', $customdimensions);
-  $flagwidth        = $customdimensions[0]; 
+  $flagwidth        = $customdimensions[0];
   $flagheight       = $customdimensions[1];
   $defaultflagpath  = drupal_get_path('module', 'languageinterface') .'/flags/*.png' ;
   $flagpath         = variable_get('custom_flag_path', $defaultflagpath);
   $textoptions      = variable_get('languageinterface_text', 'post');
-  
-  
+
+
   $languages = get_enabled_languages();
   $languagetext = variable_get('tl', '');
   $tbl = variable_get('tbl', '');
   $tal = variable_get('tal', '');
   foreach ($languages as $lang) {
-    
+
     $path = languagepath($lang);
     if ($lang == currentlanguage()) {
       $activeclass = TRUE;
@@ -188,19 +190,19 @@
     else {
       $activeclass = FALSE;
     }
-    
+
     $src = rootpath() . str_replace('*', $lang, $flagpath);
     $text = '';
-    
+
     $defaulttext = db_result(db_query('SELECT native FROM {languages} WHERE language = "%s"', $lang));
-   
+
     if (!empty($languagetext[$lang])) {
       $ltext = $languagetext[$lang];
     }
     else {
       $ltext = $defaulttext;
     }
-    
+
     if (!empty($tbl[$lang]) && empty($tal[$lang])) {
       $text = $tbl[$lang] .' '. $ltext;
     }
@@ -213,7 +215,7 @@
      if (empty($tal[$lang]) && empty($tbl[$lang])) {
       $text = $ltext;
     }
-   
+
     $links[$lang]['text']       = $text;
     $links[$lang]['src']        = $src;
     $links[$lang]['flagheight'] = $flagheight;
@@ -222,8 +224,8 @@
     $links[$lang]['path']       = $path;
     $links[$lang]['active']     = $activeclass;
     $links[$lang]['language']   = $lang;
-    
-      
+
+
   }
   //End foreach.
   return theme('languageswitcher', $links);
@@ -266,21 +268,21 @@
       case 'pre':
       $display = $text.' '.$flag;
       break;
-        
+
       case 'post';
       $display = $flag.' '.$text;
-      break;  
-        
+      break;
+
       case 'no_text';
       $display = $flag;
-      break;    
-        
+      break;
+
       case 'no_image';
       $display = $text;
-      break;    
+      break;
     }
     // end switch
-     
+
     // Here we are creating a link manually due to the fact that the l() function is language unaware.
     // When the l() issue is fixed in core this line will be changed to l($display, $link['path'])
     //In the meantime to secure against xss attacks we run the links through filter_xss().
@@ -294,7 +296,7 @@
 function languageinterface_options() {
   $customdimensions = variable_get('custom_flag_dimensions', '16x12');
   $customdimensions = explode('x', $customdimensions);
-  $flagwidth = $customdimensions[0]; 
+  $flagwidth = $customdimensions[0];
   $flagheight = $customdimensions[1];
   $langsettings = variable_get('language_negotiation', '0');
   if ($langsettings == '0' || $langsettings == '3') {
@@ -307,8 +309,8 @@
     '#default_value' => variable_get('languageinterface_text', 'post'),
     '#description' => t('Choose how you want the language text and flags to display.'),
   );
-  
-  
+
+
   $form['language_order'] = array(
     '#type' => 'fieldset',
     '#title' => t('Language weights'),
@@ -345,7 +347,7 @@
     $form['language_order']['lang_weight'][$lang] = array(
       '#type' => 'weight',
       '#title' => $text,
-      '#delta' => 10, 
+      '#delta' => 10,
       '#default_value' => $currentweight,
     );
   $form['language_text']['text'][$lang] = array(
@@ -370,9 +372,9 @@
       '#description' => t('Text after language. Example: to show "English version" Rather than just "English" enter "version"'),
     );
   }
-    
+
    // end foreach
-  
+
   $form['custom_flag_path'] = array(
     '#type' => 'textfield',
     '#title' => t('Custom path to flag icons'),
@@ -421,19 +423,19 @@
 function languageinterface_options_submit($form, &$form_state) {
   if ($form_state['values']['reset_all'] == 0) {
     variable_set('language_redirect', $form_state['values']['redirect']);
-    
-    
+
+
     $enabledlanguages = get_enabled_languages();
     foreach($enabledlanguages as $lang) {
       $pretext[$lang]  = $form_state['values']['language_text']['pretext'][$lang];
       $text[$lang] = $form_state['values']['language_text']['text'][$lang];
       $posttext[$lang] = $form_state['values']['language_text']['posttext'][$lang];
-      
-      
+
+
       $weight = $form_state['values']['language_order']['lang_weight'][$lang];
       db_query('UPDATE {languages} SET weight = %d WHERE language = "%s"', $weight, $lang);
     }
-   
+
     if (!empty($pretext)) {
       variable_set('tbl', $pretext);
     }
@@ -456,7 +458,7 @@
       $dimensions = check_plain($form_state['values']['custom_dimensions']['flagwidth']) .'x'. check_plain($form_state['values']['custom_dimensions']['flagheight']) ;
       variable_set('custom_flag_dimensions', $dimensions);
     }
-   
+
     variable_set('languageinterface_text',$form_state['values']['flag_text_config']);
     variable_set('custom_flag_path', check_plain($form_state['values']['custom_flag_path']));
   }
@@ -469,4 +471,4 @@
     variable_del('tl');
   }
   drupal_set_message(t('Your configuration settings have been saved'), $type = 'status', $repeat = FALSE);
-}
\ No newline at end of file
+}
