Changeset 30122 in spip-zone


Ignore:
Timestamp:
Jul 23, 2009, 8:42:33 AM (10 years ago)
Author:
bobcatt@…
Message:
  • indentation du code avec des tabs
  • mise a jour des infos sur les auteurs dans plugin.xml
  • passage a la version 0.4
Location:
_plugins_/langue_preferee
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/langue_preferee/balise/langue_preferee_lien_efface_cookie.php

    r10400 r30122  
    2121function balise_LANGUE_PREFEREE_LIEN_EFFACE_COOKIE_dyn($texte = '')
    2222{
    23     if ($texte == '') {
    24         $texte = _T('languepreferee:efface_cookie');
    25     }
    26     include_spip('inc/meta');
    27     $lien = '';
    28     if (isset($_COOKIE['spip_langue_preferee']) && $_COOKIE['spip_langue_preferee'] != '') {
    29         if (isset($_GET['var_langue_preferee_efface_cookie'])) {
    30             include_spip('inc/cookie');
    31             spip_setcookie('spip_langue_preferee', '', time() - 3600*24*10, chemin_cookie());
    32         } else {
    33             $url = preg_replace("/([?&])var_langue_preferee_efface_cookie=[^&]+(&)?/", "$1", self());
    34             $url .= (strpos($url, '?') > 0 ? '&' : '?').'var_langue_preferee_efface_cookie=oui';
    35             $lien = '<a href="'.$url.'">'.$texte.'</a>';
    36         }
    37     }
    38     return $lien;
     23        if ($texte == '') {
     24                $texte = _T('languepreferee:efface_cookie');
     25        }
     26
     27        include_spip('inc/meta');
     28        $lien = '';
     29        if (isset($_COOKIE['spip_langue_preferee']) && $_COOKIE['spip_langue_preferee'] != '') {
     30                if (isset($_GET['var_langue_preferee_efface_cookie'])) {
     31                        include_spip('inc/cookie');
     32                        spip_setcookie('spip_langue_preferee', '', time() - 3600*24*10, chemin_cookie());
     33                } else {
     34                        $url = preg_replace("/([?&])var_langue_preferee_efface_cookie=[^&]+(&)?/", "$1", self());
     35                        $url .= (strpos($url, '?') > 0 ? '&amp;' : '?').'var_langue_preferee_efface_cookie=oui';
     36                        $lien = '<a href="'.$url.'">'.$texte.'</a>';
     37                }
     38        }
     39        return $lien;
    3940}
    4041?>
  • _plugins_/langue_preferee/balise/langue_preferee_secteur_redirection.php

    r30121 r30122  
    3636function balise_LANGUE_PREFEREE_SECTEUR_REDIRECTION_dyn($liste_rub_exclues="")
    3737{
    38     include_spip('inc/meta');
     38        include_spip('inc/meta');
    3939
    40     // Recuperation des langues des secteurs
    41     $langues_secteurs = array();
    42     include_spip('base/abstract_sql');
    43     $query = 'SELECT DISTINCT(lang) FROM spip_rubriques WHERE id_parent=0 GROUP BY lang';
    44     if ($res = sql_query($query)) { // was spip_query($query)) {
    45         while($row = sql_fetch($res)) { // was spip_fetch_array
    46                 $langues_secteurs[] = $row['lang'];
    47         }
    48     }
     40        // Recuperation des langues des secteurs
     41        $langues_secteurs = array();
     42        include_spip('base/abstract_sql');
     43        $query = 'SELECT DISTINCT(lang) FROM spip_rubriques WHERE id_parent=0 GROUP BY lang';
     44        if ($res = sql_query($query)) { // was spip_query($query)) {
     45                while($row = sql_fetch($res)) { // was spip_fetch_array
     46                        $langues_secteurs[] = $row['lang'];
     47                }
     48        }
    4949
    50     // Detection de la langue preferee
    51     if (isset($_GET['lang']) && in_array($_GET['lang'], $langues_secteurs)) {
    52         // Soit passee dans l'url, auquel cas c'est un choix qu'on conserve pour la suite
    53         $langue_preferee = $_GET['lang'];
    54         include_spip('inc/cookie');
    55         // On pose un cookie d'un an de duree de vie
    56         spip_setcookie('spip_langue_preferee', $langue_preferee, time() + 3660*24*365, chemin_cookie());
    57     } elseif (isset($_COOKIE['spip_langue_preferee']) && in_array($_COOKIE['spip_langue_preferee'], $langues_secteurs)) {
    58         // Soit deja enregistree dans un cookie
    59         $langue_preferee = $_COOKIE['spip_langue_preferee'];
    60     } else {
    61         // Soit indeterminee
    62         $langues_navigateur = getenv('HTTP_ACCEPT_LANGUAGE');
    63         // On supprime les taux de pertinence des langues acceptees
    64         $langues_navigateur = preg_replace("/;q=[.0-9]+(,)?/", "$1", $langues_navigateur);
    65         $langues_navigateur = explode(',', $langues_navigateur);
    66         // Quelles sont les langues acceptees disponibles dans les secteurs
    67         $langues_possibles = array_intersect($langues_navigateur, $langues_secteurs);
    68         if (count($langues_possibles)) {
    69             list(, $langue_preferee) = each($langues_possibles);
    70         } else {
    71             // fr-ca -> fr
    72             $langues_navigateur_reduites = array();
    73             foreach($langues_navigateur as $langue) {
    74                 $langue_reduite = substr($langue, 0, 2);
    75                 if (!in_array($langue_reduite, $langues_navigateur_reduites)) {
    76                         $langues_navigateur_reduites[] = $langue_reduite;
    77                 }
    78             }
    79             // Quelles sont les langues acceptees reduites disponibles dans les secteurs
    80             $langues_reduites_possibles = array_intersect($langues_navigateur_reduites, $langues_secteurs);
    81             if (count($langues_reduites_possibles)) {
    82                 list(, $langue_preferee) = each($langues_reduites_possibles);
    83             } elseif (in_array(lire_meta('langue_site'), $langues_secteurs)) {
    84                 // Quelle est alors la langue par defaut du site
    85                 $langue_preferee = lire_meta('langue_site');
    86             } else {
    87                 // Tant pis, on prend le premier secteur qui vient...
    88                 list(, $langue_preferee) = each($langues_secteurs);
    89             }
    90         }
    91     }
     50        // Detection de la langue preferee
     51        if (isset($_GET['lang']) && in_array($_GET['lang'], $langues_secteurs)) {
     52                // Soit passee dans l'url, auquel cas c'est un choix qu'on conserve pour la suite
     53                $langue_preferee = $_GET['lang'];
     54                include_spip('inc/cookie');
     55                // On pose un cookie d'un an de duree de vie
     56                spip_setcookie('spip_langue_preferee', $langue_preferee, time() + 3660*24*365, chemin_cookie());
     57        } elseif (isset($_COOKIE['spip_langue_preferee']) && in_array($_COOKIE['spip_langue_preferee'], $langues_secteurs)) {
     58                // Soit deja enregistree dans un cookie
     59                $langue_preferee = $_COOKIE['spip_langue_preferee'];
     60        } else {
     61                // Soit indeterminee
     62                $langues_navigateur = getenv('HTTP_ACCEPT_LANGUAGE');
     63                // On supprime les taux de pertinence des langues acceptees
     64                $langues_navigateur = preg_replace("/;q=[.0-9]+(,)?/", "$1", $langues_navigateur);
     65                $langues_navigateur = explode(',', $langues_navigateur);
     66                // Quelles sont les langues acceptees disponibles dans les secteurs
     67                $langues_possibles = array_intersect($langues_navigateur, $langues_secteurs);
     68                if (count($langues_possibles)) {
     69                        list(, $langue_preferee) = each($langues_possibles);
     70                } else {
     71                        // fr-ca -> fr
     72                        $langues_navigateur_reduites = array();
     73                        foreach($langues_navigateur as $langue) {
     74                                $langue_reduite = substr($langue, 0, 2);
     75                                if (!in_array($langue_reduite, $langues_navigateur_reduites)) {
     76                                        $langues_navigateur_reduites[] = $langue_reduite;
     77                                }
     78                        }
     79                        // Quelles sont les langues acceptees reduites disponibles dans les secteurs
     80                        $langues_reduites_possibles = array_intersect($langues_navigateur_reduites, $langues_secteurs);
     81                        if (count($langues_reduites_possibles)) {
     82                                list(, $langue_preferee) = each($langues_reduites_possibles);
     83                        } elseif (in_array(lire_meta('langue_site'), $langues_secteurs)) {
     84                                // Quelle est alors la langue par defaut du site
     85                                $langue_preferee = lire_meta('langue_site');
     86                        } else {
     87                                // Tant pis, on prend le premier secteur qui vient...
     88                                list(, $langue_preferee) = each($langues_secteurs);
     89                        }
     90                }
     91        }
    9292
    93     // On recupere l'id du premier secteur trouve correspondant a la langue preferee (tant pis s'il y en a plusieurs)
    94     if (!empty($liste_rub_exclues)) {
    95        $query='SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 AND lang='._q($langue_preferee).' AND id_rubrique NOT IN ('.$liste_rub_exclues.') LIMIT 0,1';
    96     }
    97     else {
    98        $query = 'SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 AND lang='._q($langue_preferee).' LIMIT 0,1';
    99     }
    100     $res = sql_query($query) ; // was spip_query($query);
    101     if ($row = sql_fetch($res)) { // was spip_fetch_array
    102         $id_rubrique = $row['id_rubrique'];
    103         if ( $GLOBALS['spip_version_code']<1.93) { // spip 1.9.x
    104                 if (!function_exists('generer_url_rubrique')) { include_spip('urls/'.$GLOBALS['type_urls']); }
    105                 $url_rubrique = generer_url_rubrique($id_rubrique);
    106         } else { // spip 2.x
    107                 if (!function_exists('generer_url_entite')) { include_spip('inc/utils'); }
    108                 $url_rubrique = generer_url_entite($id_rubrique,'rubrique');
     93        // On recupere l'id du premier secteur trouve correspondant a la langue preferee (tant pis s'il y en a plusieurs)
     94        if (!empty($liste_rub_exclues)) {
     95                $query='SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 AND lang='._q($langue_preferee).' AND id_rubrique NOT IN ('.$liste_rub_exclues.') LIMIT 0,1';
     96        } else {
     97                $query = 'SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 AND lang='._q($langue_preferee).' LIMIT 0,1';
    10998        }
    110         spip_log('Redirection vers '.$url_rubrique);
    111         header('Location: '.$url_rubrique);
    112         exit;
    113     }
     99        $res = sql_query($query) ; // was spip_query($query);
     100        if ($row = sql_fetch($res)) { // was spip_fetch_array
     101                $id_rubrique = $row['id_rubrique'];
     102                if ( $GLOBALS['spip_version_code']<1.93) { // spip 1.9.x
     103                        if (!function_exists('generer_url_rubrique')) { include_spip('urls/'.$GLOBALS['type_urls']); }
     104                        $url_rubrique = generer_url_rubrique($id_rubrique);
     105                } else { // spip 2.x
     106                        if (!function_exists('generer_url_entite')) { include_spip('inc/utils'); }
     107                        $url_rubrique = generer_url_entite($id_rubrique,'rubrique');
     108                }
     109                spip_log('Redirection vers '.$url_rubrique);
     110                header('Location: '.$url_rubrique);
     111                exit;
     112        }
    114113}
    115114?>
  • _plugins_/langue_preferee/plugin.xml

    r25251 r30122  
    11<plugin>
    22        <nom>Langue pr&eacute;f&eacute;r&eacute;e par l'internaute</nom>
    3         <auteur>Nicolas Hoizey &#169; 2007 - Licence GNU/GPL</auteur>
    4         <version>0.3</version>
     3        <auteur>Nicolas Hoizey &#169; 2007 <br/>chryjs &#169; 2007<br/>BobCaTT &#169; 2009<br/>Licence GNU/GPL</auteur>
     4        <version>0.4</version>
    55        <etat>test</etat>
    66        <description>
    77<multi>
    88[fr]
    9 Ce plugin (pour SPIP 1.9.2+) permet d'identifier les langues pr&eacute;f&eacute;r&eacute;es configur&eacute;es par l'internaute dans son navigateur et de lui proposer automatiquement la langue la plus pertinente dans un site multilingue ayant un secteur par langue.
     9Ce plugin (pour SPIP 1.9.2+ et 2.0.0+) permet d'identifier les langues pr&eacute;f&eacute;r&eacute;es configur&eacute;es par l'internaute dans son navigateur et de lui proposer automatiquement la langue la plus pertinente dans un site multilingue ayant un secteur par langue.
    1010Ce m&eacute;canisme suppose qu'il n'y a pas de page sommaire particuli&egrave;re, les pages d'accueil localis&eacute;es &eacute;tant des pages de secteurs.
    1111
     
    2020<code>#LANGUE_PREFEREE_LIEN_EFFACE_COOKIE{mon message personnalise}</code> permet de remplacer le message propos&eacute; par d&eacute;faut.
    2121[en]
    22 This plugin (for SPIP 1.9.2+) checks the visitor browser prefered languages and redirects automagically to this language within a multi language website having one section per language.
     22This plugin (for SPIP 1.9.2+ and 2.0.0+) checks the visitor browser prefered languages and redirects automagically to this language within a multi language website having one section per language.
    2323It requiers not to have a specific sommaire page, the home pages will be localized to each sectors.
    2424
Note: See TracChangeset for help on using the changeset viewer.