Ignore:
Timestamp:
Jun 30, 2009, 11:24:55 PM (15 years ago)
Author:
vdigital
Message:

merge r3477 from branch 2.0 to trunk
Bug 964 fixed and more

+ ?&lang=en_UK" => ?lang=en_UK"
+ =&lang=en_UK" => &lang=en_UK"
+ Works for any combinations of
$confquestion_mark_in_urls
$confphp_extension_in_urls
=> BUT force a return to home in some cases.
+ Full technical code review

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/language_switch/language_switch.inc.php

    r3376 r3479  
    6161    $available_lang = get_languages();
    6262    if ( isset($conf['no_flag_languages']) )
    63       $available_lang = array_diff_key($available_lang, array_flip($conf['no_flag_languages']));
    64     $url_starting = $_SERVER['REQUEST_URI'];
    65     if ( isset( $_GET['lang']) ) {
    66       $pos = stripos  ( $url_starting  , '&lang=' );
    67       if (is_numeric($pos) and $pos > 0) $url_starting = substr($url_starting, 0, $pos);
    68     }
    69     $pos = stripos($url_starting, script_basename());
    70     if (is_numeric($pos)) $url_starting = substr($url_starting, $pos);
     63      $available_lang =
     64        array_diff_key($available_lang, array_flip($conf['no_flag_languages']));
     65    $url_starting = get_query_string_diff(array('lang'));
    7166    foreach ( $available_lang as $code => $displayname ) {
    7267      $qlc = array (
    73         'url' => add_url_params( $url_starting, array('lang'=> $code) ),
     68        'url' => str_replace(array('=&','?&'),array('&','?'),
     69                 add_url_params( $url_starting, array('lang'=> $code) )),
    7470        'alt' => ucwords( $displayname ),
    75         'img' => 'plugins/language_switch/icons/' . $code . '.jpg',
     71        'img' => get_root_url().'plugins/language_switch/icons/' . $code . '.jpg',
    7672        );
    77       if ( $code !== $user['language'] and file_exists(PHPWG_ROOT_PATH.$qlc['img']) )
     73      if ( $code !== $user['language'] and
     74          file_exists(dirname(__FILE__) . '/icons/' . $code . '.jpg') )
    7875        $lsw['flags'][$code] = $qlc ;
    7976      else $lsw['Active'] = $qlc;
     
    8885    $template->clear_assign('lang_switch');
    8986    $template->concat( 'PLUGIN_INDEX_ACTIONS', $flags);
    90     // TODO : Try to cache $flags and $user['language'] in $_SESSION for performance
    9187  }
    9288}
Note: See TracChangeset for help on using the changeset viewer.