Changeset 60738 in spip-zone


Ignore:
Timestamp:
Apr 28, 2012, 4:12:38 PM (9 years ago)
Author:
cedric@…
Message:

modernisation des urls de spip.net (a debug)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _galaxie_/www.spip.net/squelettes/2008/urls/trad.php

    r27079 r60738  
    6060
    6161function generer_url_trad_rubrique($lang, $id, $args) {
    62         return ($lang ? "$lang_" : '') . 'rubrique' . $id . '.html' . $args;
     62        return ($lang ? "{$lang}_" : '') . 'rubrique' . $id . '.html' . $args;
    6363}
    6464
     
    6868
    6969function generer_url_trad_breve($lang, $id, $args) {
    70         return ($lang ? "$lang_" : '') . 'breve' . $id . '.html' . $args;
     70        return ($lang ? "{$lang}_" : '') . 'breve' . $id . '.html' . $args;
    7171}
    7272
     
    9292        $q = sql_fetsel('titre', 'spip_mots',  "id_mot=$id_mot");
    9393        if (!$q) return "mot$id_mot.html$args";
    94         $url = '@'.ereg_replace('[^a-z0-9_,-]', '',
     94        $url = '@'.preg_replace(';[^a-z0-9_,-];', '',
    9595                        strtolower(translitteration($q['titre'])));
    9696        $extra = serialize(array('url'=>$url));
     
    105105}
    106106
    107 function urls_trad_dist($i, &$entite, $args='', $ancre='')
    108 {
    109         global $contexte;
    110 
     107function urls_trad_dist($i, &$entite, $args='', $ancre=''){
    111108        if (is_numeric($i))
    112109                return _generer_url_trad($entite, $i, $args, $ancre);
    113110
    114111        $url = $i;
    115         $lang = _request('sitelang'); //RewriteRule ?page=secteur&sitelang=URI
     112        $id_objet = $type = 0;
     113        $url_redirect = null;
     114        // recuperer les &debut_xx;
     115        if (is_array($args))
     116                $contexte = $args;
     117        else
     118                parse_str($args,$contexte);
     119
     120        $lang = (isset($contexte['sitelang'])?$contexte['sitelang']:null); //RewriteRule ?page=secteur&sitelang=URI
    116121        // recuperer les rubriques meres demandees par "www.spip.net/LANG"
    117122        if (preg_match(_TRAD_RUBRIQUE, $url, $regs) || $lang) {
     123                $entite = 'rubrique';
    118124                if ($regs[1]) $lang = $regs[1];
    119                 if ($lang == 'fr')
     125                if ($lang == 'fr'){
    120126                  // cas particulier du francais qui a plusieurs rubriques
    121                         $contexte['id_rubrique'] = 91; 
     127                        $contexte['id_rubrique'] = 91;
     128                }
    122129                else {
    123130                        $where =  "id_parent=0 AND lang LIKE "
     
    128135                        if (!$t)
    129136                                $t = sql_getfetsel("id_secteur", 'spip_rubriques', $where);
    130                         if ($t)
     137                        if ($t){
    131138                                $contexte['id_rubrique'] = $t;
     139                        }
    132140                        else {
    133141                                $sites_redirection = Array (
     
    142150
    143151                                if ($url = $sites_redirection[$lang]) {
    144                                         @header("Location: $url");
    145                                         exit;
     152                                        $url_redirect = $url;
    146153                                } else {
    147                                         @header("Location: http://www.spip.net/");
    148                                         exit;
     154                                        $url_redirect = "http://www.spip.net/";
    149155                                }
    150156                        }
     
    154160        // recuperer l'aide en ligne
    155161        else if (preg_match(_TRAD_AIDE, $url, $regs)) {
     162                $entite = 'rubrique';
    156163                $lang = addslashes($regs[1]);
    157164
    158165                ## redirections d'aide
    159                 if (ereg('^oc(_.*)?$', $lang)) $lang = 'oc_lnc';
    160                 if (ereg('^pt(_.*)?$', $lang)) $lang = 'pt';
     166                if (preg_match(',^oc(_.*)?$,', $lang)) $lang = 'oc_lnc';
     167                if (preg_match(',^pt(_.*)?$,', $lang)) $lang = 'pt';
    161168
    162169                $id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques',
     
    171178        // si possible dans la langue, sinon en francais
    172179        else if (preg_match(_TRAD_ARTICLE, $url, $regs)) {
     180                $entite = 'article';
    173181                $lang = $regs[2];
    174182                $id_original = $GLOBALS['articles_aide_en_ligne'][$regs[3]];
    175183                if (!$id_original) $id_original = intval($regs[4]);
    176                 $id_article = sql_getfetsel('id_article', 'spip_articles', "id_trad=$id_original AND statut='publie'", '',  "lang<>'$lang',lang<>'fr'");
     184                $id_article = sql_getfetsel('id_article', 'spip_articles', "id_trad=".intval($id_original)." AND statut='publie'", '',  "lang<>'$lang',lang<>'fr'");
    177185                if ($id_article)
    178186                        $contexte['id_article'] = $id_article;
     
    181189        // recuperer les mots-cles (balises de spip)
    182190        else if (preg_match(_TRAD_MOT, $url, $regs)) {
    183 
     191                $entite = 'mot';
    184192                $extra = serialize(array('url'=>$regs[1]));
    185193                $id_mot = sql_getfetsel('id_mot', 'spip_mots', "extra=" . sql_quote($extra));
     
    187195                        $contexte['id_mot'] = $id_mot;
    188196        }
     197
     198        return array($contexte, $entite, $url_redirect, null);
    189199}
    190200?>
Note: See TracChangeset for help on using the changeset viewer.