diff --git a/ecrire/inc.php3 b/ecrire/inc.php3 index fb55bd0e6c13c9c04a36ccac31420b607ce81a8d..dbbf3aa632ee614529791d1632eb8ba2a26c9ddc 100644 --- a/ecrire/inc.php3 +++ b/ecrire/inc.php3 @@ -11,6 +11,7 @@ \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) include ("inc_version.php3"); +include_ecrire('inc_cookie'); // // Determiner l'action demandee @@ -21,14 +22,13 @@ preg_match(',^[0-9a-z_]*$,i', $_GET['exec'])) $exec = $_GET['exec']; else $exec = $SCRIPT_NAME; +$var_auth =""; if (autoriser_sans_cookie($exec)) { - unset($GLOBALS['_COOKIE']); if (!isset($reinstall)) $reinstall = 'non'; } else { include_ecrire ("inc_session"); - include_ecrire('inc_cookie'); - $var_f = include_fonction('auth'); - if (!$var_f()) exit; + $var_auth = include_fonction('auth'); + if (!$var_auth()) exit; } // @@ -122,20 +122,27 @@ bgcolor='#f8f7f3' text='#000000' topmargin='0' leftmargin='0' marginwidth='0' marginheight='0' frameborder='0'" . ($spip_lang_rtl ? " dir='rtl'" : "")); - -// Choisir la langue et charger le minimum vital pour l'affichage +// charger l'affichage minimal et initialiser a la langue par defaut include_ecrire("inc_minipres"); -if ($spip_lang_ecrire = $GLOBALS['_COOKIE']['spip_lang_ecrire'] -AND $spip_lang_ecrire <> $auteur_session['lang'] -AND changer_langue($spip_lang_ecrire)) { - spip_query ("UPDATE spip_auteurs SET lang = '". - addslashes($spip_lang_ecrire) . - "' WHERE id_auteur = $connect_id_auteur"); - $auteur_session['lang'] = $spip_lang_ecrire; - ajouter_session($auteur_session, $spip_session); -} +// si la langue est specifiee par cookie alors ... +if ($spip_lang_ecrire = $GLOBALS['_COOKIE']['spip_lang_ecrire']) { + + // si pas authentifie, changer juste pour cette execution + if (!$var_auth) + changer_langue($spip_lang_ecrire); + // si authentifie, changer definitivement si ce n'est fait + else { if (($spip_lang_ecrire <> $auteur_session['lang']) + AND changer_langue($spip_lang_ecrire)) { + spip_query ("UPDATE spip_auteurs SET lang = '". + addslashes($spip_lang_ecrire) . + "' WHERE id_auteur = $connect_id_auteur"); + $auteur_session['lang'] = $spip_lang_ecrire; + ajouter_session($auteur_session, $spip_session); + } + } + } // // Controle de la version, sauf si on est deja en train de s'en occuper @@ -150,7 +157,6 @@ if (!isset($reinstall)) { } } - $var_f = include_fonction($exec); $var_f(); diff --git a/ecrire/inc_utils.php b/ecrire/inc_utils.php index e0579448a92950bce34497a5f24cb31585e3b06c..71f70dd7755c85c9d67c1b16b14f00ea5ecb7f4b 100644 --- a/ecrire/inc_utils.php +++ b/ecrire/inc_utils.php @@ -585,7 +585,7 @@ function charger_plugins($plugins) { function autoriser_sans_cookie($nom) { - static $autsanscookie = array('aide_index', 'install', 'admin_repair'); + static $autsanscookie = array('aide_index', 'install', 'admin_repair', 'spip_cookie'); $nom = preg_replace('/.php[3]?$/', '', basename($nom)); return in_array($nom, $autsanscookie); }