[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / index.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2010 *
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 define('_ESPACE_PRIVE', true);
14 if (!defined('_ECRIRE_INC_VERSION')) include 'inc_version.php';
15
16 // Verification anti magic_quotes_sybase, pour qui addslashes("'") = "''"
17 // On prefere la faire ici plutot que dans inc_version, c'est moins souvent et
18 // si le reglage est modifie sur un site en prod, ca fait moins mal
19 if (addslashes("'") !== "\\'") die('SPIP incompatible magic_quotes_sybase');
20
21 include_spip('inc/cookie');
22
23 //
24 // Determiner l'action demandee
25 //
26
27 $exec = (string)_request('exec');
28 $reinstall = _request('reinstall')?_request('reinstall'):($exec=='install'?'oui':NULL);
29 //
30 // Les scripts d'insallation n'authentifient pas, forcement,
31 // alors il faut blinder les variables d'URL
32 //
33 if (autoriser_sans_cookie($exec)) {
34 if (!isset($reinstall)) $reinstall = 'non';
35 set_request('transformer_xml');
36 $var_auth = true;
37 } else {
38 // Authentification, redefinissable
39 $auth = charger_fonction('auth', 'inc');
40 $var_auth = $auth();
41 if ($var_auth) {
42 echo auth_echec($var_auth);
43 exit;
44 }
45 }
46
47 // initialiser a la langue par defaut
48 include_spip('inc/lang');
49 utiliser_langue_visiteur();
50
51 if (_request('action') OR _request('var_ajax') OR _request('formulaire_action')){
52 // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires
53 include_spip('public/aiguiller');
54 if (
55 // cas des appels actions ?action=xxx
56 traiter_appels_actions()
57 OR
58 // cas des hits ajax sur les inclusions ajax
59 traiter_appels_inclusions_ajax()
60 OR
61 // cas des formulaires charger/verifier/traiter
62 traiter_formulaires_dynamiques())
63 exit; // le hit est fini !
64 }
65
66 //
67 // Gestion d'une page normale de l'espace prive
68 //
69
70 // Controle de la version, sauf si on est deja en train de s'en occuper
71 if (!$reinstall=='oui'
72 AND !_AJAX
73 AND isset($GLOBALS['meta']['version_installee'])
74 AND ($GLOBALS['spip_version_base'] != (str_replace(',','.',$GLOBALS['meta']['version_installee']))))
75 $exec = 'demande_mise_a_jour';
76
77 // Quand une action d'administration est en cours (meta "admin"),
78 // refuser les connexions non-admin ou Ajax pour laisser la base intacte.
79 // Si c'est une admin, detourner le script demande vers cette action:
80 // si l'action est vraiment en cours, inc_admin refusera cette 2e demande,
81 // sinon c'est qu'elle a ete interrompue et il faut la reprendre
82
83 elseif (isset($GLOBALS['meta']["admin"])) {
84 if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']["admin"], $l))
85 list(,$var_f,$n) = $l;
86 if (_AJAX
87 OR !(
88 isset($_COOKIE['spip_admin'])
89 OR (isset($GLOBALS['visiteur_session']) AND $GLOBALS['visiteur_session']['statut']=='0minirezo')
90 )
91 ) {
92 spip_log("Quand la meta admin vaut " .
93 $GLOBALS['meta']["admin"] .
94 " seul un admin peut se connecter et sans AJAX." .
95 " En cas de probleme, detruire cette meta.");
96 die(_T('info_travaux_texte'));
97 }
98 if ($n) {
99 list(,$var_f,$n) = $l;
100 if ($var_f != $exec) {
101 spip_log("Le script $var_f lance par $n se substitue a $exec");
102 $exec = $var_f;
103 }
104 }
105 }
106 // si nom pas plausible, prendre le script par defaut
107 elseif (!preg_match(',^[a-z_][0-9a-z_]*$,i', $exec)) {
108 $exec = "accueil";
109 set_request('exec', $exec);
110 }
111
112 // Verification des plugins
113 // (ne pas interrompre une restauration ou un upgrade)
114 elseif ($exec!='upgrade'
115 AND !$var_auth
116 AND !_DIR_RESTREINT
117 AND autoriser('configurer')
118 AND lire_fichier(_CACHE_PLUGINS_VERIF,$l)
119 AND $l = @unserialize($l)) {
120 foreach ($l as $fichier) {
121 if (!@is_readable($fichier)) {
122 spip_log("Verification plugin: echec sur $fichier !");
123 include_spip('inc/plugin');
124 verifie_include_plugins();
125 break; // sortir de la boucle, on a fait un verif
126 }
127 }
128 }
129
130 // compatibilite ascendante
131 $GLOBALS['spip_display'] = isset($GLOBALS['visiteur_session']['prefs']['display'])
132 ? $GLOBALS['visiteur_session']['prefs']['display']
133 : 0;
134 $GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? $_COOKIE['spip_ecran'] : "etroit";
135
136 // si la langue est specifiee par cookie et ne correspond pas
137 // (elle a ete changee dans une autre session, et on retombe sur un vieux cookie)
138 // on appelle directement la fonction, car un appel d'action peut conduire a une boucle infinie
139 // si le cookie n'est pas pose correctement dans l'action
140 if (!$var_auth AND isset($_COOKIE['spip_lang_ecrire'])
141 AND $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang']) {
142 include_spip('action/converser');
143 action_converser_post($GLOBALS['visiteur_session']['lang'],true);
144 }
145
146
147 // Passer la main aux outils XML a la demande (meme les redac s'ils veulent).
148 // mais seulement si on a bien ete auhentifie
149 if ($var_f = _request('transformer_xml')) {
150 set_request('var_url', $exec);
151 $exec = $var_f;
152 }
153
154 if ($var_f = tester_url_ecrire($exec)) {
155 $var_f = charger_fonction ($var_f);
156 $var_f(); // at last
157 }
158 else {
159 // Rien de connu: rerouter vers exec=404 au lieu d'echouer
160 // ce qui permet de laisser la main a un plugin
161 $var_f = charger_fonction('404');
162 $var_f($exec);
163 }
164
165 $debug = ((_request('var_mode') == 'debug') OR !empty($tableau_des_temps)) ? array(1) : array();
166 if ($debug) {
167 $var_mode_affiche = _request('var_mode_affiche');
168 $GLOBALS['debug_objets'][$var_mode_affiche][$var_mode_objet . 'tout'] = ($var_mode_affiche== 'validation' ? $page['texte'] :"");
169 echo erreur_squelette();
170 }
171 ?>