37ca9f820e64995a1f51ee69aa6a44c20aa0c5c0
[lhc/web/www.git] / www / ecrire / action / converser.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2017 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 /**
14 * Gestion de l'action converser qui permet changer de langue
15 *
16 * @package SPIP\Core\Langue
17 **/
18 if (!defined('_ECRIRE_INC_VERSION')) {
19 return;
20 }
21
22 include_spip('inc/cookie');
23
24 /**
25 * Point d'entrée pour changer de langue
26 *
27 * Pas de secu si espace public ou login ou installation
28 * mais alors on n'accède pas à la base, on pose seulement le cookie.
29 *
30 * @return void
31 */
32 function action_converser_dist() {
33 $update_session = false;
34 if (_request('arg') and spip_connect()) {
35 $securiser_action = charger_fonction('securiser_action', 'inc');
36 $securiser_action();
37 $update_session = true;
38 }
39
40 $lang = action_converser_changer_langue($update_session);
41 $redirect = rawurldecode(_request('redirect'));
42
43 if (!$redirect) {
44 $redirect = _DIR_RESTREINT_ABS;
45 }
46 $redirect = parametre_url($redirect, 'lang', $lang, '&');
47 redirige_par_entete($redirect, true);
48 }
49
50 /**
51 * Cette fonction prépare le travail de changement de langue
52 * en récupérant la bonne variable de langue
53 *
54 * @global array $GLOBALS ['visiteur_session']
55 * @param bool $update_session
56 * @return string
57 */
58 function action_converser_changer_langue($update_session) {
59 if ($lang = _request('var_lang')) {
60 action_converser_post($lang);
61 } elseif ($lang = _request('var_lang_ecrire')) {
62 if ($update_session) {
63 sql_updateq("spip_auteurs", array("lang" => $lang), "id_auteur = " . $GLOBALS['visiteur_session']['id_auteur']);
64 $GLOBALS['visiteur_session']['lang'] = $lang;
65 $session = charger_fonction('session', 'inc');
66 if ($spip_session = $session($GLOBALS['visiteur_session'])) {
67 spip_setcookie(
68 'spip_session',
69 $spip_session,
70 time() + 3600 * 24 * 14
71 );
72 }
73 }
74 action_converser_post($lang, 'spip_lang_ecrire');
75 }
76
77 return $lang;
78 }
79
80 /**
81 * Cette fonction effectue le travail de changement de langue
82 *
83 * @param string $lang
84 * @param bool $ecrire
85 * @return void
86 */
87 function action_converser_post($lang, $ecrire = false) {
88 if ($lang) {
89 include_spip('inc/lang');
90 if (changer_langue($lang)) {
91 spip_setcookie('spip_lang', $_COOKIE['spip_lang'] = $lang, time() + 365 * 24 * 3600);
92 if ($ecrire) {
93 spip_setcookie('spip_lang_ecrire', $_COOKIE['spip_lang_ecrire'] = $lang, time() + 365 * 24 * 3600);
94 }
95 }
96 }
97 }