Completed
Push — master ( 00d89c...39a0b7 )
by cam
01:17
created
ecrire/lang/public_de.php 1 patch
Indentation   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -4,123 +4,123 @@
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'accueil_site' => 'Startseite',
14
-	'article' => 'Artikel',
15
-	'articles' => 'Artikel',
16
-	'articles_auteur' => 'Artikel dieses Autors',
17
-	'articles_populaires' => 'Die beliebtesten Artikel',
18
-	'articles_rubrique' => 'Artikel dieser Rubrik',
19
-	'aucun_article' => 'Unter dieser Adresse gibt es keinen Artikel.',
20
-	'aucun_auteur' => 'Unter dieser Adresse gibt es keinen Autor.',
21
-	'aucun_site' => 'Unter dieser Adresse gibt es keien Website.',
22
-	'aucune_breve' => 'Unter dieser Adresse gibt es keine Meldung.',
23
-	'aucune_rubrique' => 'Unter dieser Adresse gibt es keine Rubrik.',
24
-	'auteur' => 'Autor',
25
-	'autres' => 'Andere',
26
-	'autres_breves' => 'Weitere Meldungen.',
27
-	'autres_groupes_mots_clefs' => 'Weitere Schlagwortgruppen',
28
-	'autres_sites' => 'Weitere Websites',
29
-
30
-	// B
31
-	'bonjour' => 'Hallo',
32
-
33
-	// C
34
-	'commenter_site' => 'Website kommentieren',
35
-	'contact' => 'Kontakt',
36
-	'copie_document_impossible' => 'Dokument kann nicht kopiert werden',
37
-
38
-	// D
39
-	'date' => 'Datum',
40
-	'dernier_ajout' => 'Neuester Eintrag',
41
-	'dernieres_breves' => 'Neue Meldungen',
42
-	'derniers_articles' => 'Neueste Artikel',
43
-	'derniers_commentaires' => 'Neueste Kommentare',
44
-	'derniers_messages_forum' => 'Neue Forumsbeiträge',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'Im Textmodus bearbeiten ',
48
-	'en_reponse' => 'Antwort auf:',
49
-	'en_resume' => 'Als Zusammenfassung',
50
-	'envoyer_message' => 'Nachricht senden',
51
-	'espace_prive' => 'Redaktion',
52
-
53
-	// F
54
-	'formats_acceptes' => 'Akzeptierte Formate: @formats@.',
55
-
56
-	// H
57
-	'hierarchie_site' => 'Baumstruktur der Website',
58
-
59
-	// J
60
-	'jours' => 'Tage',
61
-
62
-	// L
63
-	'lien_connecter' => 'Login',
64
-
65
-	// M
66
-	'meme_auteur' => 'Vom gleichen Autor',
67
-	'meme_rubrique' => 'In der gleichen Rubrik',
68
-	'memes_auteurs' => 'Von den gleichen Autoren',
69
-	'message' => 'Nachricht',
70
-	'messages_forum' => 'Nachrichten',
71
-	'messages_recents' => 'Neue Forumsbeiträge',
72
-	'mots_clef' => 'Schlagwort',
73
-	'mots_clefs' => 'Schlagworte',
74
-	'mots_clefs_meme_groupe' => 'Schlagworte der gleichen Kategorie',
75
-
76
-	// N
77
-	'navigation' => 'Navigation',
78
-	'nom' => 'Name',
79
-	'nouveautes' => 'Neuigkeiten',
80
-	'nouveautes_web' => 'Neues im WWW',
81
-	'nouveaux_articles' => 'Neue Artikel',
82
-	'nouvelles_breves' => 'Neue Meldungen',
83
-
84
-	// P
85
-	'page_precedente' => 'vorige Seite',
86
-	'page_suivante' => 'nächste Seite',
87
-	'par_auteur' => 'von ',
88
-	'participer_site' => 'Sie können bei dieser Website mitmachen, wenn Sie sich anmelden. Sie erhalten sofort eine E-Mail mit den Zugangsdaten zum Redaktionssystem.',
89
-	'plan_site' => 'Sitemap',
90
-	'popularite' => 'Beliebtheit',
91
-	'poster_message' => 'Nachricht senden',
92
-	'proposer_site' => 'Sie können in dieser Rubrik eine Seite vorschlagen :',
93
-
94
-	// R
95
-	'repondre_article' => 'auf diesen Artikel antworten',
96
-	'repondre_breve' => 'auf diese Meldung antworten',
97
-	'resultats_recherche' => 'Suchergebnis(se)',
98
-	'retour_debut_forums' => 'Zurück zum Beginn des Forums',
99
-	'rss_abonnement' => 'Kopieren Sie die folgende URL in Ihren Feedreader:',
100
-	'rss_abonnement_titre' => 'Abonnieren',
101
-	'rss_abonnement_titre_page' => 'Abonnieren von',
102
-	'rss_explication' => 'Ein RSS-Feed sammelt Informationen über die Aktualisierungen einer Website. Er liefert den Inhalt von Einträgen oder Kommentaren oder einen Auszug daraus sowie einen Link zu den Vollversionen und einige andere Informationen. Der Feed ist dazu gedacht, von einem RSS-Aggregator (Feedreader) gelesen zu werden',
103
-	'rss_explication_titre' => 'Was ist ein RSS-Feed ?',
104
-	'rubrique' => 'Rubrik',
105
-	'rubriques' => 'Rubriken',
106
-
107
-	// S
108
-	'signatures_petition' => 'Unterschrift',
109
-	'site_realise_avec_spip' => 'Realisiert mit SPIP',
110
-	'sites_web' => 'Websites',
111
-	'sous_rubriques' => 'Unterrubriken',
112
-	'spam' => 'SPAM',
113
-	'suite' => 'weiter',
114
-	'sur_web' => 'Im WWW',
115
-	'syndiquer_rubrique' => 'Diese Rubrik per RSS einbinden',
116
-	'syndiquer_site' => 'Die ganze Website mit RSS einbinden',
117
-
118
-	// T
119
-	'texte_lettre_information' => 'Dies ist der Newsletter der Website ',
120
-	'texte_lettre_information_2' => 'Diese Mail informiert über die Neuerscheinungen der letzten',
121
-
122
-	// V
123
-	'ver_imprimer' => 'Druckversion',
124
-	'voir_en_ligne' => 'Online ansehen',
125
-	'voir_squelette' => 'Layoutvorlage dieser Seite ansehen'
12
+    // A
13
+    'accueil_site' => 'Startseite',
14
+    'article' => 'Artikel',
15
+    'articles' => 'Artikel',
16
+    'articles_auteur' => 'Artikel dieses Autors',
17
+    'articles_populaires' => 'Die beliebtesten Artikel',
18
+    'articles_rubrique' => 'Artikel dieser Rubrik',
19
+    'aucun_article' => 'Unter dieser Adresse gibt es keinen Artikel.',
20
+    'aucun_auteur' => 'Unter dieser Adresse gibt es keinen Autor.',
21
+    'aucun_site' => 'Unter dieser Adresse gibt es keien Website.',
22
+    'aucune_breve' => 'Unter dieser Adresse gibt es keine Meldung.',
23
+    'aucune_rubrique' => 'Unter dieser Adresse gibt es keine Rubrik.',
24
+    'auteur' => 'Autor',
25
+    'autres' => 'Andere',
26
+    'autres_breves' => 'Weitere Meldungen.',
27
+    'autres_groupes_mots_clefs' => 'Weitere Schlagwortgruppen',
28
+    'autres_sites' => 'Weitere Websites',
29
+
30
+    // B
31
+    'bonjour' => 'Hallo',
32
+
33
+    // C
34
+    'commenter_site' => 'Website kommentieren',
35
+    'contact' => 'Kontakt',
36
+    'copie_document_impossible' => 'Dokument kann nicht kopiert werden',
37
+
38
+    // D
39
+    'date' => 'Datum',
40
+    'dernier_ajout' => 'Neuester Eintrag',
41
+    'dernieres_breves' => 'Neue Meldungen',
42
+    'derniers_articles' => 'Neueste Artikel',
43
+    'derniers_commentaires' => 'Neueste Kommentare',
44
+    'derniers_messages_forum' => 'Neue Forumsbeiträge',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'Im Textmodus bearbeiten ',
48
+    'en_reponse' => 'Antwort auf:',
49
+    'en_resume' => 'Als Zusammenfassung',
50
+    'envoyer_message' => 'Nachricht senden',
51
+    'espace_prive' => 'Redaktion',
52
+
53
+    // F
54
+    'formats_acceptes' => 'Akzeptierte Formate: @formats@.',
55
+
56
+    // H
57
+    'hierarchie_site' => 'Baumstruktur der Website',
58
+
59
+    // J
60
+    'jours' => 'Tage',
61
+
62
+    // L
63
+    'lien_connecter' => 'Login',
64
+
65
+    // M
66
+    'meme_auteur' => 'Vom gleichen Autor',
67
+    'meme_rubrique' => 'In der gleichen Rubrik',
68
+    'memes_auteurs' => 'Von den gleichen Autoren',
69
+    'message' => 'Nachricht',
70
+    'messages_forum' => 'Nachrichten',
71
+    'messages_recents' => 'Neue Forumsbeiträge',
72
+    'mots_clef' => 'Schlagwort',
73
+    'mots_clefs' => 'Schlagworte',
74
+    'mots_clefs_meme_groupe' => 'Schlagworte der gleichen Kategorie',
75
+
76
+    // N
77
+    'navigation' => 'Navigation',
78
+    'nom' => 'Name',
79
+    'nouveautes' => 'Neuigkeiten',
80
+    'nouveautes_web' => 'Neues im WWW',
81
+    'nouveaux_articles' => 'Neue Artikel',
82
+    'nouvelles_breves' => 'Neue Meldungen',
83
+
84
+    // P
85
+    'page_precedente' => 'vorige Seite',
86
+    'page_suivante' => 'nächste Seite',
87
+    'par_auteur' => 'von ',
88
+    'participer_site' => 'Sie können bei dieser Website mitmachen, wenn Sie sich anmelden. Sie erhalten sofort eine E-Mail mit den Zugangsdaten zum Redaktionssystem.',
89
+    'plan_site' => 'Sitemap',
90
+    'popularite' => 'Beliebtheit',
91
+    'poster_message' => 'Nachricht senden',
92
+    'proposer_site' => 'Sie können in dieser Rubrik eine Seite vorschlagen :',
93
+
94
+    // R
95
+    'repondre_article' => 'auf diesen Artikel antworten',
96
+    'repondre_breve' => 'auf diese Meldung antworten',
97
+    'resultats_recherche' => 'Suchergebnis(se)',
98
+    'retour_debut_forums' => 'Zurück zum Beginn des Forums',
99
+    'rss_abonnement' => 'Kopieren Sie die folgende URL in Ihren Feedreader:',
100
+    'rss_abonnement_titre' => 'Abonnieren',
101
+    'rss_abonnement_titre_page' => 'Abonnieren von',
102
+    'rss_explication' => 'Ein RSS-Feed sammelt Informationen über die Aktualisierungen einer Website. Er liefert den Inhalt von Einträgen oder Kommentaren oder einen Auszug daraus sowie einen Link zu den Vollversionen und einige andere Informationen. Der Feed ist dazu gedacht, von einem RSS-Aggregator (Feedreader) gelesen zu werden',
103
+    'rss_explication_titre' => 'Was ist ein RSS-Feed ?',
104
+    'rubrique' => 'Rubrik',
105
+    'rubriques' => 'Rubriken',
106
+
107
+    // S
108
+    'signatures_petition' => 'Unterschrift',
109
+    'site_realise_avec_spip' => 'Realisiert mit SPIP',
110
+    'sites_web' => 'Websites',
111
+    'sous_rubriques' => 'Unterrubriken',
112
+    'spam' => 'SPAM',
113
+    'suite' => 'weiter',
114
+    'sur_web' => 'Im WWW',
115
+    'syndiquer_rubrique' => 'Diese Rubrik per RSS einbinden',
116
+    'syndiquer_site' => 'Die ganze Website mit RSS einbinden',
117
+
118
+    // T
119
+    'texte_lettre_information' => 'Dies ist der Newsletter der Website ',
120
+    'texte_lettre_information_2' => 'Diese Mail informiert über die Neuerscheinungen der letzten',
121
+
122
+    // V
123
+    'ver_imprimer' => 'Druckversion',
124
+    'voir_en_ligne' => 'Online ansehen',
125
+    'voir_squelette' => 'Layoutvorlage dieser Seite ansehen'
126 126
 );
Please login to merge, or discard this patch.
ecrire/inc/traduire.php 2 patches
Indentation   +206 added lines, -206 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -38,20 +38,20 @@  discard block
 block discarded – undo
38 38
  *     Liste des fichiers de langue trouvés, dans l'ordre des chemins
39 39
  */
40 40
 function find_langs_in_path($file, $dirname = 'lang') {
41
-	static $dirs = [];
42
-	$liste = [];
43
-	foreach (creer_chemin() as $dir) {
44
-		if (!isset($dirs[$a = $dir . $dirname])) {
45
-			$dirs[$a] = (is_dir($a) || !$a);
46
-		}
47
-		if ($dirs[$a]) {
48
-			if (is_readable($a .= $file)) {
49
-				$liste[] = $a;
50
-			}
51
-		}
52
-	}
41
+    static $dirs = [];
42
+    $liste = [];
43
+    foreach (creer_chemin() as $dir) {
44
+        if (!isset($dirs[$a = $dir . $dirname])) {
45
+            $dirs[$a] = (is_dir($a) || !$a);
46
+        }
47
+        if ($dirs[$a]) {
48
+            if (is_readable($a .= $file)) {
49
+                $liste[] = $a;
50
+            }
51
+        }
52
+    }
53 53
 
54
-	return array_reverse($liste);
54
+    return array_reverse($liste);
55 55
 }
56 56
 
57 57
 /**
@@ -66,23 +66,23 @@  discard block
 block discarded – undo
66 66
  *     Liste des fichiers touvés pour ce module et cette langue.
67 67
  **/
68 68
 function chercher_module_lang($module, $lang = '') {
69
-	if ($lang) {
70
-		$lang = '_' . $lang;
71
-	}
69
+    if ($lang) {
70
+        $lang = '_' . $lang;
71
+    }
72 72
 
73
-	// 1) dans un repertoire nomme lang/ se trouvant sur le chemin
74
-	if (
75
-		$f = ($module == 'local'
76
-		? find_in_path($module . $lang . '.php', 'lang/')
77
-		: find_langs_in_path($module . $lang . '.php', 'lang/'))
78
-	) {
79
-		return is_array($f) ? $f : [$f];
80
-	}
73
+    // 1) dans un repertoire nomme lang/ se trouvant sur le chemin
74
+    if (
75
+        $f = ($module == 'local'
76
+        ? find_in_path($module . $lang . '.php', 'lang/')
77
+        : find_langs_in_path($module . $lang . '.php', 'lang/'))
78
+    ) {
79
+        return is_array($f) ? $f : [$f];
80
+    }
81 81
 
82
-	// 2) directement dans le chemin (old style, uniquement pour local)
83
-	return (($module == 'local') or strpos($module, '/'))
84
-		? (($f = find_in_path($module . $lang . '.php')) ? [$f] : false)
85
-		: false;
82
+    // 2) directement dans le chemin (old style, uniquement pour local)
83
+    return (($module == 'local') or strpos($module, '/'))
84
+        ? (($f = find_in_path($module . $lang . '.php')) ? [$f] : false)
85
+        : false;
86 86
 }
87 87
 
88 88
 /**
@@ -104,33 +104,33 @@  discard block
 block discarded – undo
104 104
  * @return void
105 105
  **/
106 106
 function charger_langue($lang, $module = 'spip') {
107
-	static $langs = [];
108
-	$var = 'i18n_' . $module . '_' . $lang;
109
-	if (!isset($langs[$lang])) {
110
-		$langs[$lang] = [];
111
-		if ($lang) {
112
-			$langs[$lang][] = $lang;
113
-			if (strpos($lang, '_') !== false) {
114
-				$l = explode('_', $lang);
115
-				$langs[$lang][] = reset($l);
116
-			}
117
-		}
118
-		$langs[$lang][] = $GLOBALS['meta']['langue_site'];
119
-		$langs[$lang][] = _LANGUE_PAR_DEFAUT;
120
-	}
121
-	foreach ($langs[$lang] as $l) {
122
-		if ($fichiers_lang = chercher_module_lang($module, $l)) {
123
-			$GLOBALS['idx_lang'] = 'i18n_' . $module . '_' . $l;
124
-			$GLOBALS[$GLOBALS['idx_lang']] = lire_fichier_langue(array_shift($fichiers_lang));
125
-			surcharger_langue($fichiers_lang);
126
-			if ($l !== $lang) {
127
-				$GLOBALS[$var] = &$GLOBALS['i18n_' . $module . '_' . $l];
128
-			}
129
-			$GLOBALS['lang_' . $var] = $l;
130
-			#spip_log("module de langue : ${module}_$l.php", 'traduire');
131
-			break;
132
-		}
133
-	}
107
+    static $langs = [];
108
+    $var = 'i18n_' . $module . '_' . $lang;
109
+    if (!isset($langs[$lang])) {
110
+        $langs[$lang] = [];
111
+        if ($lang) {
112
+            $langs[$lang][] = $lang;
113
+            if (strpos($lang, '_') !== false) {
114
+                $l = explode('_', $lang);
115
+                $langs[$lang][] = reset($l);
116
+            }
117
+        }
118
+        $langs[$lang][] = $GLOBALS['meta']['langue_site'];
119
+        $langs[$lang][] = _LANGUE_PAR_DEFAUT;
120
+    }
121
+    foreach ($langs[$lang] as $l) {
122
+        if ($fichiers_lang = chercher_module_lang($module, $l)) {
123
+            $GLOBALS['idx_lang'] = 'i18n_' . $module . '_' . $l;
124
+            $GLOBALS[$GLOBALS['idx_lang']] = lire_fichier_langue(array_shift($fichiers_lang));
125
+            surcharger_langue($fichiers_lang);
126
+            if ($l !== $lang) {
127
+                $GLOBALS[$var] = &$GLOBALS['i18n_' . $module . '_' . $l];
128
+            }
129
+            $GLOBALS['lang_' . $var] = $l;
130
+            #spip_log("module de langue : ${module}_$l.php", 'traduire');
131
+            break;
132
+        }
133
+    }
134 134
 }
135 135
 
136 136
 /**
@@ -143,21 +143,21 @@  discard block
 block discarded – undo
143 143
  * @return array<string, string>
144 144
  */
145 145
 function lire_fichier_langue(string $fichier): array {
146
-	$idx_lang_before = $GLOBALS['idx_lang'] ?? null;
147
-	$idx_lang_tmp = ($GLOBALS['idx_lang'] ?? 'lang') . '@temporaire';
148
-	$GLOBALS['idx_lang'] = $idx_lang_tmp;
149
-	$idx_lang = include $fichier;
150
-	$GLOBALS['idx_lang'] = $idx_lang_before;
151
-	if (!is_array($idx_lang)) {
152
-		if (isset($GLOBALS[$idx_lang_tmp]) and is_array($GLOBALS[$idx_lang_tmp])) {
153
-			$idx_lang = $GLOBALS[$idx_lang_tmp];
154
-		} else {
155
-			$idx_lang = [];
156
-			spip_log(sprintf('Fichier de langue incorrect : %s', $fichier), _LOG_ERREUR);
157
-		}
158
-		unset($GLOBALS[$idx_lang_tmp]);
159
-	}
160
-	return $idx_lang;
146
+    $idx_lang_before = $GLOBALS['idx_lang'] ?? null;
147
+    $idx_lang_tmp = ($GLOBALS['idx_lang'] ?? 'lang') . '@temporaire';
148
+    $GLOBALS['idx_lang'] = $idx_lang_tmp;
149
+    $idx_lang = include $fichier;
150
+    $GLOBALS['idx_lang'] = $idx_lang_before;
151
+    if (!is_array($idx_lang)) {
152
+        if (isset($GLOBALS[$idx_lang_tmp]) and is_array($GLOBALS[$idx_lang_tmp])) {
153
+            $idx_lang = $GLOBALS[$idx_lang_tmp];
154
+        } else {
155
+            $idx_lang = [];
156
+            spip_log(sprintf('Fichier de langue incorrect : %s', $fichier), _LOG_ERREUR);
157
+        }
158
+        unset($GLOBALS[$idx_lang_tmp]);
159
+    }
160
+    return $idx_lang;
161 161
 }
162 162
 
163 163
 /**
@@ -177,46 +177,46 @@  discard block
 block discarded – undo
177 177
  *    Liste des chemins de fichiers de langue à surcharger.
178 178
  **/
179 179
 function surcharger_langue($fichiers) {
180
-	static $surcharges = [];
181
-	if (!isset($GLOBALS['idx_lang'])) {
182
-		return;
183
-	}
180
+    static $surcharges = [];
181
+    if (!isset($GLOBALS['idx_lang'])) {
182
+        return;
183
+    }
184 184
 
185
-	if (!is_array($fichiers)) {
186
-		$fichiers = [$fichiers];
187
-	}
188
-	if (!count($fichiers)) {
189
-		return;
190
-	}
191
-	foreach ($fichiers as $fichier) {
192
-		if (!isset($surcharges[$fichier])) {
193
-			$surcharges[$fichier] = lire_fichier_langue($fichier);
194
-		}
195
-		if (is_array($surcharges[$fichier])) {
196
-			$GLOBALS[$GLOBALS['idx_lang']] ??= [];
197
-			$GLOBALS[$GLOBALS['idx_lang']] = array_merge(
198
-				$GLOBALS[$GLOBALS['idx_lang']],
199
-				$surcharges[$fichier]
200
-			);
201
-		}
202
-	}
185
+    if (!is_array($fichiers)) {
186
+        $fichiers = [$fichiers];
187
+    }
188
+    if (!count($fichiers)) {
189
+        return;
190
+    }
191
+    foreach ($fichiers as $fichier) {
192
+        if (!isset($surcharges[$fichier])) {
193
+            $surcharges[$fichier] = lire_fichier_langue($fichier);
194
+        }
195
+        if (is_array($surcharges[$fichier])) {
196
+            $GLOBALS[$GLOBALS['idx_lang']] ??= [];
197
+            $GLOBALS[$GLOBALS['idx_lang']] = array_merge(
198
+                $GLOBALS[$GLOBALS['idx_lang']],
199
+                $surcharges[$fichier]
200
+            );
201
+        }
202
+    }
203 203
 }
204 204
 
205 205
 
206 206
 
207 207
 class SPIP_Traductions_Description {
208
-	/** @var string code de langue (hors module) */
209
-	public $code;
210
-	/** @var string nom du module de langue */
211
-	public $module;
212
-	/** @var string langue de la traduction */
213
-	public $langue;
214
-	/** @var string traduction */
215
-	public $texte;
216
-	/** @var string var mode particulier appliqué ? */
217
-	public $mode;
218
-	/** @var bool Corrections des textes appliqué ? */
219
-	public $corrections = false;
208
+    /** @var string code de langue (hors module) */
209
+    public $code;
210
+    /** @var string nom du module de langue */
211
+    public $module;
212
+    /** @var string langue de la traduction */
213
+    public $langue;
214
+    /** @var string traduction */
215
+    public $texte;
216
+    /** @var string var mode particulier appliqué ? */
217
+    public $mode;
218
+    /** @var bool Corrections des textes appliqué ? */
219
+    public $corrections = false;
220 220
 }
221 221
 
222 222
 
@@ -258,99 +258,99 @@  discard block
 block discarded – undo
258 258
  *     - SPIP_Traductions_Description : traduction et description (texte, module, langue)
259 259
  **/
260 260
 function inc_traduire_dist($ori, $lang, $raw = false) {
261
-	static $deja_vu = [];
262
-	static $local = [];
261
+    static $deja_vu = [];
262
+    static $local = [];
263 263
 
264
-	if (isset($deja_vu[$lang][$ori]) and (_request('var_mode') != 'traduction')) {
265
-		return $raw ? $deja_vu[$lang][$ori] : $deja_vu[$lang][$ori]->texte;
266
-	}
264
+    if (isset($deja_vu[$lang][$ori]) and (_request('var_mode') != 'traduction')) {
265
+        return $raw ? $deja_vu[$lang][$ori] : $deja_vu[$lang][$ori]->texte;
266
+    }
267 267
 
268
-	// modules demandes explicitement <xxx|yyy|zzz:code> cf MODULES_IDIOMES
269
-	if (strpos($ori, ':')) {
270
-		[$modules, $code] = explode(':', $ori, 2);
271
-		$modules = explode('|', $modules);
272
-		$ori_complet = $ori;
273
-	} else {
274
-		$modules = ['spip', 'ecrire'];
275
-		$code = $ori;
276
-		$ori_complet = implode('|', $modules) . ':' . $ori;
277
-	}
268
+    // modules demandes explicitement <xxx|yyy|zzz:code> cf MODULES_IDIOMES
269
+    if (strpos($ori, ':')) {
270
+        [$modules, $code] = explode(':', $ori, 2);
271
+        $modules = explode('|', $modules);
272
+        $ori_complet = $ori;
273
+    } else {
274
+        $modules = ['spip', 'ecrire'];
275
+        $code = $ori;
276
+        $ori_complet = implode('|', $modules) . ':' . $ori;
277
+    }
278 278
 
279
-	$desc = new SPIP_Traductions_Description();
279
+    $desc = new SPIP_Traductions_Description();
280 280
 
281
-	// parcourir tous les modules jusqu'a ce qu'on trouve
282
-	foreach ($modules as $module) {
283
-		$var = 'i18n_' . $module . '_' . $lang;
281
+    // parcourir tous les modules jusqu'a ce qu'on trouve
282
+    foreach ($modules as $module) {
283
+        $var = 'i18n_' . $module . '_' . $lang;
284 284
 
285
-		if (empty($GLOBALS[$var])) {
286
-			charger_langue($lang, $module);
287
-			// surcharges persos -- on cherche
288
-			// (lang/)local_xx.php et/ou (lang/)local.php ...
289
-			if (!isset($local['local_' . $lang])) {
290
-				// redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer)
291
-				$GLOBALS['idx_lang'] = $var;
292
-				// ... (lang/)local_xx.php
293
-				$local['local_' . $lang] = chercher_module_lang('local', $lang);
294
-			}
295
-			if ($local['local_' . $lang]) {
296
-				surcharger_langue($local['local_' . $lang]);
297
-			}
298
-			// ... puis (lang/)local.php
299
-			if (!isset($local['local'])) {
300
-				$local['local'] = chercher_module_lang('local');
301
-			}
302
-			if ($local['local']) {
303
-				surcharger_langue($local['local']);
304
-			}
305
-		}
285
+        if (empty($GLOBALS[$var])) {
286
+            charger_langue($lang, $module);
287
+            // surcharges persos -- on cherche
288
+            // (lang/)local_xx.php et/ou (lang/)local.php ...
289
+            if (!isset($local['local_' . $lang])) {
290
+                // redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer)
291
+                $GLOBALS['idx_lang'] = $var;
292
+                // ... (lang/)local_xx.php
293
+                $local['local_' . $lang] = chercher_module_lang('local', $lang);
294
+            }
295
+            if ($local['local_' . $lang]) {
296
+                surcharger_langue($local['local_' . $lang]);
297
+            }
298
+            // ... puis (lang/)local.php
299
+            if (!isset($local['local'])) {
300
+                $local['local'] = chercher_module_lang('local');
301
+            }
302
+            if ($local['local']) {
303
+                surcharger_langue($local['local']);
304
+            }
305
+        }
306 306
 
307
-		if (isset($GLOBALS[$var][$code])) {
308
-			$desc->code = $code;
309
-			$desc->module = $module;
310
-			$desc->langue = $GLOBALS['lang_' . $var] ?? $lang;
311
-			$desc->texte = $GLOBALS[$var][$code];
312
-			break;
313
-		}
314
-	}
307
+        if (isset($GLOBALS[$var][$code])) {
308
+            $desc->code = $code;
309
+            $desc->module = $module;
310
+            $desc->langue = $GLOBALS['lang_' . $var] ?? $lang;
311
+            $desc->texte = $GLOBALS[$var][$code];
312
+            break;
313
+        }
314
+    }
315 315
 
316
-	if (!$desc->corrections) {
317
-		$desc->corrections = true;
318
-		// Retour aux sources si la chaine est absente dans la langue cible ;
319
-		// on essaie d'abord la langue du site, puis a defaut la langue fr
320
-		if (
321
-			($desc->texte === null || !strlen($desc->texte))
322
-			and $lang !== _LANGUE_PAR_DEFAUT
323
-		) {
324
-			if ($lang !== $GLOBALS['meta']['langue_site']) {
325
-				$desc = inc_traduire_dist($ori, $GLOBALS['meta']['langue_site'], true);
326
-			} else {
327
-				$desc = inc_traduire_dist($ori, _LANGUE_PAR_DEFAUT, true);
328
-			}
329
-		}
316
+    if (!$desc->corrections) {
317
+        $desc->corrections = true;
318
+        // Retour aux sources si la chaine est absente dans la langue cible ;
319
+        // on essaie d'abord la langue du site, puis a defaut la langue fr
320
+        if (
321
+            ($desc->texte === null || !strlen($desc->texte))
322
+            and $lang !== _LANGUE_PAR_DEFAUT
323
+        ) {
324
+            if ($lang !== $GLOBALS['meta']['langue_site']) {
325
+                $desc = inc_traduire_dist($ori, $GLOBALS['meta']['langue_site'], true);
326
+            } else {
327
+                $desc = inc_traduire_dist($ori, _LANGUE_PAR_DEFAUT, true);
328
+            }
329
+        }
330 330
 
331
-		// Supprimer la mention <NEW> ou <MODIF>
332
-		if ($desc->texte && substr($desc->texte, 0, 1) === '<') {
333
-			$desc->texte = str_replace(['<NEW>', '<MODIF>'], [], $desc->texte);
334
-		}
331
+        // Supprimer la mention <NEW> ou <MODIF>
332
+        if ($desc->texte && substr($desc->texte, 0, 1) === '<') {
333
+            $desc->texte = str_replace(['<NEW>', '<MODIF>'], [], $desc->texte);
334
+        }
335 335
 
336
-		// Si on n'est pas en utf-8, la chaine peut l'etre...
337
-		// le cas echeant on la convertit en entites html &#xxx;
338
-		if (
339
-			(!isset($GLOBALS['meta']['charset']) or $GLOBALS['meta']['charset'] !== 'utf-8')
340
-			and preg_match(',[\x7f-\xff],S', $desc->texte)
341
-		) {
342
-			include_spip('inc/charsets');
343
-			$desc->texte = charset2unicode($desc->texte, 'utf-8');
344
-		}
345
-	}
336
+        // Si on n'est pas en utf-8, la chaine peut l'etre...
337
+        // le cas echeant on la convertit en entites html &#xxx;
338
+        if (
339
+            (!isset($GLOBALS['meta']['charset']) or $GLOBALS['meta']['charset'] !== 'utf-8')
340
+            and preg_match(',[\x7f-\xff],S', $desc->texte)
341
+        ) {
342
+            include_spip('inc/charsets');
343
+            $desc->texte = charset2unicode($desc->texte, 'utf-8');
344
+        }
345
+    }
346 346
 
347
-	if (_request('var_mode') == 'traduction') {
348
-		$desc = definir_details_traduction($desc, $ori_complet);
349
-	} else {
350
-		$deja_vu[$lang][$ori] = $desc;
351
-	}
347
+    if (_request('var_mode') == 'traduction') {
348
+        $desc = definir_details_traduction($desc, $ori_complet);
349
+    } else {
350
+        $deja_vu[$lang][$ori] = $desc;
351
+    }
352 352
 
353
-	return $raw ? $desc : $desc->texte;
353
+    return $raw ? $desc : $desc->texte;
354 354
 }
355 355
 
356 356
 /**
@@ -362,23 +362,23 @@  discard block
 block discarded – undo
362 362
  * @return SPIP_Traductions_Description
363 363
  */
364 364
 function definir_details_traduction($desc, $modules) {
365
-	if (!$desc->mode and $desc->texte) {
366
-		// ne pas modifier 2 fois l'affichage
367
-		$desc->mode = 'traduction';
368
-		$classe = 'debug-traduction' . ($desc->module == 'ecrire' ? '-prive' : '');
369
-		$desc->texte = '<span '
370
-			. 'lang=' . $desc->langue
371
-			. ' class=' . $classe
372
-			. ' data-module=' . $desc->module
373
-			. ' data-code=' . $desc->code
374
-			. ' title=' . $modules . '(' . $desc->langue . ')>'
375
-			. $desc->texte
376
-			. '</span>';
377
-		$desc->texte = str_replace(
378
-			["$desc->module:", "$desc->module|"],
379
-			["*$desc->module*:", "*$desc->module*|"],
380
-			$desc->texte
381
-		);
382
-	}
383
-	return $desc;
365
+    if (!$desc->mode and $desc->texte) {
366
+        // ne pas modifier 2 fois l'affichage
367
+        $desc->mode = 'traduction';
368
+        $classe = 'debug-traduction' . ($desc->module == 'ecrire' ? '-prive' : '');
369
+        $desc->texte = '<span '
370
+            . 'lang=' . $desc->langue
371
+            . ' class=' . $classe
372
+            . ' data-module=' . $desc->module
373
+            . ' data-code=' . $desc->code
374
+            . ' title=' . $modules . '(' . $desc->langue . ')>'
375
+            . $desc->texte
376
+            . '</span>';
377
+        $desc->texte = str_replace(
378
+            ["$desc->module:", "$desc->module|"],
379
+            ["*$desc->module*:", "*$desc->module*|"],
380
+            $desc->texte
381
+        );
382
+    }
383
+    return $desc;
384 384
 }
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
 	static $dirs = [];
42 42
 	$liste = [];
43 43
 	foreach (creer_chemin() as $dir) {
44
-		if (!isset($dirs[$a = $dir . $dirname])) {
44
+		if (!isset($dirs[$a = $dir.$dirname])) {
45 45
 			$dirs[$a] = (is_dir($a) || !$a);
46 46
 		}
47 47
 		if ($dirs[$a]) {
@@ -67,21 +67,21 @@  discard block
 block discarded – undo
67 67
  **/
68 68
 function chercher_module_lang($module, $lang = '') {
69 69
 	if ($lang) {
70
-		$lang = '_' . $lang;
70
+		$lang = '_'.$lang;
71 71
 	}
72 72
 
73 73
 	// 1) dans un repertoire nomme lang/ se trouvant sur le chemin
74 74
 	if (
75 75
 		$f = ($module == 'local'
76
-		? find_in_path($module . $lang . '.php', 'lang/')
77
-		: find_langs_in_path($module . $lang . '.php', 'lang/'))
76
+		? find_in_path($module.$lang.'.php', 'lang/')
77
+		: find_langs_in_path($module.$lang.'.php', 'lang/'))
78 78
 	) {
79 79
 		return is_array($f) ? $f : [$f];
80 80
 	}
81 81
 
82 82
 	// 2) directement dans le chemin (old style, uniquement pour local)
83 83
 	return (($module == 'local') or strpos($module, '/'))
84
-		? (($f = find_in_path($module . $lang . '.php')) ? [$f] : false)
84
+		? (($f = find_in_path($module.$lang.'.php')) ? [$f] : false)
85 85
 		: false;
86 86
 }
87 87
 
@@ -105,7 +105,7 @@  discard block
 block discarded – undo
105 105
  **/
106 106
 function charger_langue($lang, $module = 'spip') {
107 107
 	static $langs = [];
108
-	$var = 'i18n_' . $module . '_' . $lang;
108
+	$var = 'i18n_'.$module.'_'.$lang;
109 109
 	if (!isset($langs[$lang])) {
110 110
 		$langs[$lang] = [];
111 111
 		if ($lang) {
@@ -120,13 +120,13 @@  discard block
 block discarded – undo
120 120
 	}
121 121
 	foreach ($langs[$lang] as $l) {
122 122
 		if ($fichiers_lang = chercher_module_lang($module, $l)) {
123
-			$GLOBALS['idx_lang'] = 'i18n_' . $module . '_' . $l;
123
+			$GLOBALS['idx_lang'] = 'i18n_'.$module.'_'.$l;
124 124
 			$GLOBALS[$GLOBALS['idx_lang']] = lire_fichier_langue(array_shift($fichiers_lang));
125 125
 			surcharger_langue($fichiers_lang);
126 126
 			if ($l !== $lang) {
127
-				$GLOBALS[$var] = &$GLOBALS['i18n_' . $module . '_' . $l];
127
+				$GLOBALS[$var] = &$GLOBALS['i18n_'.$module.'_'.$l];
128 128
 			}
129
-			$GLOBALS['lang_' . $var] = $l;
129
+			$GLOBALS['lang_'.$var] = $l;
130 130
 			#spip_log("module de langue : ${module}_$l.php", 'traduire');
131 131
 			break;
132 132
 		}
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
  */
145 145
 function lire_fichier_langue(string $fichier): array {
146 146
 	$idx_lang_before = $GLOBALS['idx_lang'] ?? null;
147
-	$idx_lang_tmp = ($GLOBALS['idx_lang'] ?? 'lang') . '@temporaire';
147
+	$idx_lang_tmp = ($GLOBALS['idx_lang'] ?? 'lang').'@temporaire';
148 148
 	$GLOBALS['idx_lang'] = $idx_lang_tmp;
149 149
 	$idx_lang = include $fichier;
150 150
 	$GLOBALS['idx_lang'] = $idx_lang_before;
@@ -273,27 +273,27 @@  discard block
 block discarded – undo
273 273
 	} else {
274 274
 		$modules = ['spip', 'ecrire'];
275 275
 		$code = $ori;
276
-		$ori_complet = implode('|', $modules) . ':' . $ori;
276
+		$ori_complet = implode('|', $modules).':'.$ori;
277 277
 	}
278 278
 
279 279
 	$desc = new SPIP_Traductions_Description();
280 280
 
281 281
 	// parcourir tous les modules jusqu'a ce qu'on trouve
282 282
 	foreach ($modules as $module) {
283
-		$var = 'i18n_' . $module . '_' . $lang;
283
+		$var = 'i18n_'.$module.'_'.$lang;
284 284
 
285 285
 		if (empty($GLOBALS[$var])) {
286 286
 			charger_langue($lang, $module);
287 287
 			// surcharges persos -- on cherche
288 288
 			// (lang/)local_xx.php et/ou (lang/)local.php ...
289
-			if (!isset($local['local_' . $lang])) {
289
+			if (!isset($local['local_'.$lang])) {
290 290
 				// redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer)
291 291
 				$GLOBALS['idx_lang'] = $var;
292 292
 				// ... (lang/)local_xx.php
293
-				$local['local_' . $lang] = chercher_module_lang('local', $lang);
293
+				$local['local_'.$lang] = chercher_module_lang('local', $lang);
294 294
 			}
295
-			if ($local['local_' . $lang]) {
296
-				surcharger_langue($local['local_' . $lang]);
295
+			if ($local['local_'.$lang]) {
296
+				surcharger_langue($local['local_'.$lang]);
297 297
 			}
298 298
 			// ... puis (lang/)local.php
299 299
 			if (!isset($local['local'])) {
@@ -307,7 +307,7 @@  discard block
 block discarded – undo
307 307
 		if (isset($GLOBALS[$var][$code])) {
308 308
 			$desc->code = $code;
309 309
 			$desc->module = $module;
310
-			$desc->langue = $GLOBALS['lang_' . $var] ?? $lang;
310
+			$desc->langue = $GLOBALS['lang_'.$var] ?? $lang;
311 311
 			$desc->texte = $GLOBALS[$var][$code];
312 312
 			break;
313 313
 		}
@@ -365,13 +365,13 @@  discard block
 block discarded – undo
365 365
 	if (!$desc->mode and $desc->texte) {
366 366
 		// ne pas modifier 2 fois l'affichage
367 367
 		$desc->mode = 'traduction';
368
-		$classe = 'debug-traduction' . ($desc->module == 'ecrire' ? '-prive' : '');
368
+		$classe = 'debug-traduction'.($desc->module == 'ecrire' ? '-prive' : '');
369 369
 		$desc->texte = '<span '
370
-			. 'lang=' . $desc->langue
371
-			. ' class=' . $classe
372
-			. ' data-module=' . $desc->module
373
-			. ' data-code=' . $desc->code
374
-			. ' title=' . $modules . '(' . $desc->langue . ')>'
370
+			. 'lang='.$desc->langue
371
+			. ' class='.$classe
372
+			. ' data-module='.$desc->module
373
+			. ' data-code='.$desc->code
374
+			. ' title='.$modules.'('.$desc->langue.')>'
375 375
 			. $desc->texte
376 376
 			. '</span>';
377 377
 		$desc->texte = str_replace(
Please login to merge, or discard this patch.
ecrire/inc/auth.php 2 patches
Indentation   +430 added lines, -430 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('base/abstract_sql');
@@ -35,33 +35,33 @@  discard block
 block discarded – undo
35 35
  *  - une chaîne vide si autorisation à pénétrer dans l'espace privé.
36 36
  */
37 37
 function inc_auth_dist() {
38
-	$row = auth_mode();
38
+    $row = auth_mode();
39 39
 
40
-	if ($row) {
41
-		return auth_init_droits($row);
42
-	}
40
+    if ($row) {
41
+        return auth_init_droits($row);
42
+    }
43 43
 
44
-	if (!$GLOBALS['connect_login']) {
45
-		return auth_a_loger();
46
-	}
44
+    if (!$GLOBALS['connect_login']) {
45
+        return auth_a_loger();
46
+    }
47 47
 
48
-	// Cas ou l'auteur a ete identifie mais on n'a pas d'info sur lui
49
-	// C'est soit parce que la base est inutilisable,
50
-	// soit parce que la table des auteurs a changee (restauration etc)
51
-	// Pas la peine d'insister.
52
-	// Renvoyer le nom fautif et une URL de remise a zero
48
+    // Cas ou l'auteur a ete identifie mais on n'a pas d'info sur lui
49
+    // C'est soit parce que la base est inutilisable,
50
+    // soit parce que la table des auteurs a changee (restauration etc)
51
+    // Pas la peine d'insister.
52
+    // Renvoyer le nom fautif et une URL de remise a zero
53 53
 
54
-	if (spip_connect()) {
55
-		return [
56
-			'login' => $GLOBALS['connect_login'],
57
-			'site' => generer_url_public('', 'action=logout&amp;logout=prive')
58
-		];
59
-	}
54
+    if (spip_connect()) {
55
+        return [
56
+            'login' => $GLOBALS['connect_login'],
57
+            'site' => generer_url_public('', 'action=logout&amp;logout=prive')
58
+        ];
59
+    }
60 60
 
61
-	$n = intval(sql_errno());
62
-	spip_log("Erreur base de donnees $n " . sql_error());
61
+    $n = intval(sql_errno());
62
+    spip_log("Erreur base de donnees $n " . sql_error());
63 63
 
64
-	return $n ?: 1;
64
+    return $n ?: 1;
65 65
 }
66 66
 
67 67
 /**
@@ -73,39 +73,39 @@  discard block
 block discarded – undo
73 73
  * @return array|string
74 74
  */
75 75
 function auth_echec($raison) {
76
-	include_spip('inc/minipres');
77
-	include_spip('inc/headers');
78
-	// pas authentifie. Pourquoi ?
79
-	if (is_string($raison)) {
80
-		// redirection vers une page d'authentification
81
-		// on ne revient pas de cette fonction
82
-		// sauf si pb de header
83
-		$raison = redirige_formulaire($raison);
84
-	} elseif (is_int($raison)) {
85
-		// erreur SQL a afficher
86
-		$raison = minipres(
87
-			_T('info_travaux_titre'),
88
-			_T('titre_probleme_technique') . '<p><tt>' . sql_errno() . ' ' . sql_error() . '</tt></p>'
89
-		);
90
-	} elseif (@$raison['statut']) {
91
-		// un simple visiteur n'a pas acces a l'espace prive
92
-		spip_log('connexion refusee a ' . @$raison['id_auteur']);
93
-		$raison = minipres(_T('avis_erreur_connexion'), _T('avis_erreur_visiteur'));
94
-	} else {
95
-		// auteur en fin de droits ...
96
-		$h = $raison['site'];
97
-		$raison = minipres(
98
-			_T('avis_erreur_connexion'),
99
-			'<br /><br /><p>'
100
-			. _T('texte_inc_auth_1', ['auth_login' => $raison['login']])
101
-			. " <a href='$h'>"
102
-			. _T('texte_inc_auth_2')
103
-			. '</a>'
104
-			. _T('texte_inc_auth_3')
105
-		);
106
-	}
107
-
108
-	return $raison;
76
+    include_spip('inc/minipres');
77
+    include_spip('inc/headers');
78
+    // pas authentifie. Pourquoi ?
79
+    if (is_string($raison)) {
80
+        // redirection vers une page d'authentification
81
+        // on ne revient pas de cette fonction
82
+        // sauf si pb de header
83
+        $raison = redirige_formulaire($raison);
84
+    } elseif (is_int($raison)) {
85
+        // erreur SQL a afficher
86
+        $raison = minipres(
87
+            _T('info_travaux_titre'),
88
+            _T('titre_probleme_technique') . '<p><tt>' . sql_errno() . ' ' . sql_error() . '</tt></p>'
89
+        );
90
+    } elseif (@$raison['statut']) {
91
+        // un simple visiteur n'a pas acces a l'espace prive
92
+        spip_log('connexion refusee a ' . @$raison['id_auteur']);
93
+        $raison = minipres(_T('avis_erreur_connexion'), _T('avis_erreur_visiteur'));
94
+    } else {
95
+        // auteur en fin de droits ...
96
+        $h = $raison['site'];
97
+        $raison = minipres(
98
+            _T('avis_erreur_connexion'),
99
+            '<br /><br /><p>'
100
+            . _T('texte_inc_auth_1', ['auth_login' => $raison['login']])
101
+            . " <a href='$h'>"
102
+            . _T('texte_inc_auth_2')
103
+            . '</a>'
104
+            . _T('texte_inc_auth_3')
105
+        );
106
+    }
107
+
108
+    return $raison;
109 109
 }
110 110
 
111 111
 /**
@@ -115,81 +115,81 @@  discard block
 block discarded – undo
115 115
  * @return array|bool|string
116 116
  */
117 117
 function auth_mode() {
118
-	//
119
-	// Initialiser variables (eviter hacks par URL)
120
-	//
121
-	$GLOBALS['connect_login'] = '';
122
-	$id_auteur = null;
123
-	$GLOBALS['auth_can_disconnect'] = false;
124
-
125
-	//
126
-	// Recuperer les donnees d'identification
127
-	//
128
-	include_spip('inc/session');
129
-	// Session valide en cours ?
130
-	if (isset($_COOKIE['spip_session'])) {
131
-		$session = charger_fonction('session', 'inc');
132
-		if (
133
-			$id_auteur = $session()
134
-			or $id_auteur === 0 // reprise sur restauration
135
-		) {
136
-			$GLOBALS['auth_can_disconnect'] = true;
137
-			$GLOBALS['connect_login'] = session_get('login');
138
-		} else {
139
-			unset($_COOKIE['spip_session']);
140
-		}
141
-	}
142
-
143
-	// Essayer auth http si significatif
144
-	// (ignorer les login d'intranet independants de spip)
145
-	if (!$GLOBALS['ignore_auth_http']) {
146
-		if (
147
-			(isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW'])
148
-				and $r = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']))
149
-			or
150
-			// Si auth http differtente de basic, PHP_AUTH_PW
151
-			// est indisponible mais tentons quand meme pour
152
-			// autocreation via LDAP
153
-			(isset($_SERVER['REMOTE_USER'])
154
-				and $r = lire_php_auth($_SERVER['PHP_AUTH_USER'] = $_SERVER['REMOTE_USER'], ''))
155
-		) {
156
-			if (!$id_auteur) {
157
-				$_SERVER['PHP_AUTH_PW'] = '';
158
-				$GLOBALS['auth_can_disconnect'] = true;
159
-				$GLOBALS['visiteur_session'] = $r;
160
-				$GLOBALS['connect_login'] = session_get('login');
161
-				$id_auteur = $r['id_auteur'];
162
-			} else {
163
-				// cas de la session en plus de PHP_AUTH
164
-				/*				  if ($id_auteur != $r['id_auteur']){
118
+    //
119
+    // Initialiser variables (eviter hacks par URL)
120
+    //
121
+    $GLOBALS['connect_login'] = '';
122
+    $id_auteur = null;
123
+    $GLOBALS['auth_can_disconnect'] = false;
124
+
125
+    //
126
+    // Recuperer les donnees d'identification
127
+    //
128
+    include_spip('inc/session');
129
+    // Session valide en cours ?
130
+    if (isset($_COOKIE['spip_session'])) {
131
+        $session = charger_fonction('session', 'inc');
132
+        if (
133
+            $id_auteur = $session()
134
+            or $id_auteur === 0 // reprise sur restauration
135
+        ) {
136
+            $GLOBALS['auth_can_disconnect'] = true;
137
+            $GLOBALS['connect_login'] = session_get('login');
138
+        } else {
139
+            unset($_COOKIE['spip_session']);
140
+        }
141
+    }
142
+
143
+    // Essayer auth http si significatif
144
+    // (ignorer les login d'intranet independants de spip)
145
+    if (!$GLOBALS['ignore_auth_http']) {
146
+        if (
147
+            (isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW'])
148
+                and $r = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']))
149
+            or
150
+            // Si auth http differtente de basic, PHP_AUTH_PW
151
+            // est indisponible mais tentons quand meme pour
152
+            // autocreation via LDAP
153
+            (isset($_SERVER['REMOTE_USER'])
154
+                and $r = lire_php_auth($_SERVER['PHP_AUTH_USER'] = $_SERVER['REMOTE_USER'], ''))
155
+        ) {
156
+            if (!$id_auteur) {
157
+                $_SERVER['PHP_AUTH_PW'] = '';
158
+                $GLOBALS['auth_can_disconnect'] = true;
159
+                $GLOBALS['visiteur_session'] = $r;
160
+                $GLOBALS['connect_login'] = session_get('login');
161
+                $id_auteur = $r['id_auteur'];
162
+            } else {
163
+                // cas de la session en plus de PHP_AUTH
164
+                /*				  if ($id_auteur != $r['id_auteur']){
165 165
 					spip_log("vol de session $id_auteur" . join(', ', $r));
166 166
 				unset($_COOKIE['spip_session']);
167 167
 				$id_auteur = '';
168 168
 				} */
169
-			}
170
-		} else {
171
-			// Authentification .htaccess old style, car .htaccess semble
172
-			// souvent definir *aussi* PHP_AUTH_USER et PHP_AUTH_PW
173
-			if (isset($_SERVER['REMOTE_USER'])) {
174
-				$GLOBALS['connect_login'] = $_SERVER['REMOTE_USER'];
175
-			}
176
-		}
177
-	}
178
-
179
-	$where = (is_numeric($id_auteur)
180
-		/*AND $id_auteur>0*/ // reprise lors des restaurations
181
-	) ?
182
-		"id_auteur=$id_auteur" :
183
-		(!strlen($GLOBALS['connect_login']) ? '' : 'login=' . sql_quote($GLOBALS['connect_login'], '', 'text'));
184
-
185
-	if (!$where) {
186
-		return '';
187
-	}
188
-
189
-	// Trouver les autres infos dans la table auteurs.
190
-	// le champ 'quand' est utilise par l'agenda
191
-
192
-	return sql_fetsel('*, en_ligne AS quand', 'spip_auteurs', "$where AND statut!='5poubelle'");
169
+            }
170
+        } else {
171
+            // Authentification .htaccess old style, car .htaccess semble
172
+            // souvent definir *aussi* PHP_AUTH_USER et PHP_AUTH_PW
173
+            if (isset($_SERVER['REMOTE_USER'])) {
174
+                $GLOBALS['connect_login'] = $_SERVER['REMOTE_USER'];
175
+            }
176
+        }
177
+    }
178
+
179
+    $where = (is_numeric($id_auteur)
180
+        /*AND $id_auteur>0*/ // reprise lors des restaurations
181
+    ) ?
182
+        "id_auteur=$id_auteur" :
183
+        (!strlen($GLOBALS['connect_login']) ? '' : 'login=' . sql_quote($GLOBALS['connect_login'], '', 'text'));
184
+
185
+    if (!$where) {
186
+        return '';
187
+    }
188
+
189
+    // Trouver les autres infos dans la table auteurs.
190
+    // le champ 'quand' est utilise par l'agenda
191
+
192
+    return sql_fetsel('*, en_ligne AS quand', 'spip_auteurs', "$where AND statut!='5poubelle'");
193 193
 }
194 194
 
195 195
 /**
@@ -207,86 +207,86 @@  discard block
 block discarded – undo
207 207
  */
208 208
 function auth_init_droits($row) {
209 209
 
210
-	include_spip('inc/autoriser');
211
-	if (!autoriser('loger', '', 0, $row)) {
212
-		return false;
213
-	}
214
-
215
-
216
-	if ($row['statut'] == 'nouveau') {
217
-		include_spip('action/inscrire_auteur');
218
-		$row = confirmer_statut_inscription($row);
219
-	}
220
-
221
-	$GLOBALS['connect_id_auteur'] = $row['id_auteur'];
222
-	$GLOBALS['connect_login'] = $row['login'];
223
-	$GLOBALS['connect_statut'] = $row['statut'];
224
-
225
-	$GLOBALS['visiteur_session'] = array_merge((array)$GLOBALS['visiteur_session'], $row);
226
-
227
-	// au cas ou : ne pas memoriser les champs sensibles
228
-	unset($GLOBALS['visiteur_session']['pass']);
229
-	unset($GLOBALS['visiteur_session']['htpass']);
230
-	unset($GLOBALS['visiteur_session']['alea_actuel']);
231
-	unset($GLOBALS['visiteur_session']['alea_futur']);
232
-	unset($GLOBALS['visiteur_session']['ldap_password']);
233
-
234
-	// creer la session au besoin
235
-	if (!isset($_COOKIE['spip_session'])) {
236
-		$session = charger_fonction('session', 'inc');
237
-		$spip_session = $session($row);
238
-	}
239
-
240
-	// reinjecter les preferences_auteur apres le reset de spip_session
241
-	// car utilisees au retour par auth_loger()
242
-	$r = @unserialize($row['prefs']);
243
-	$GLOBALS['visiteur_session']['prefs'] = ($r ?: []);
244
-	// si prefs pas definies, les definir par defaut
245
-	if (!isset($GLOBALS['visiteur_session']['prefs']['couleur'])) {
246
-		$GLOBALS['visiteur_session']['prefs']['couleur'] = 2;
247
-		$GLOBALS['visiteur_session']['prefs']['display'] = 2;
248
-		$GLOBALS['visiteur_session']['prefs']['display_navigation'] = 'navigation_avec_icones';
249
-		$GLOBALS['visiteur_session']['prefs']['display_outils'] = 'oui';
250
-	}
251
-
252
-	$GLOBALS['visiteur_session'] = pipeline(
253
-		'preparer_visiteur_session',
254
-		['args' => ['row' => $row],
255
-		'data' => $GLOBALS['visiteur_session']]
256
-	);
257
-
258
-	// Etablir les droits selon le codage attendu
259
-	// dans ecrire/index.php ecrire/prive.php
260
-
261
-	// Pas autorise a acceder a ecrire ? renvoyer le tableau
262
-	// A noter : le premier appel a autoriser() a le bon gout
263
-	// d'initialiser $GLOBALS['visiteur_session']['restreint'],
264
-	// qui ne figure pas dans le fichier de session
265
-
266
-	if (!autoriser('ecrire')) {
267
-		return $row;
268
-	}
269
-
270
-	// autoriser('ecrire') ne laisse passer que les Admin et les Redac
271
-
272
-	auth_trace($row);
273
-
274
-	// Administrateurs
275
-	if (in_array($GLOBALS['connect_statut'], explode(',', _STATUT_AUTEUR_RUBRIQUE))) {
276
-		if (
277
-			isset($GLOBALS['visiteur_session']['restreint'])
278
-			and is_array($GLOBALS['visiteur_session']['restreint'])
279
-		) {
280
-			$GLOBALS['connect_id_rubrique'] = $GLOBALS['visiteur_session']['restreint'];
281
-		}
282
-		if ($GLOBALS['connect_statut'] == '0minirezo') {
283
-			$GLOBALS['connect_toutes_rubriques'] = !$GLOBALS['connect_id_rubrique'];
284
-		}
285
-	}
286
-
287
-	// Pour les redacteurs, inc_version a fait l'initialisation minimale
288
-
289
-	return ''; // i.e. pas de pb.
210
+    include_spip('inc/autoriser');
211
+    if (!autoriser('loger', '', 0, $row)) {
212
+        return false;
213
+    }
214
+
215
+
216
+    if ($row['statut'] == 'nouveau') {
217
+        include_spip('action/inscrire_auteur');
218
+        $row = confirmer_statut_inscription($row);
219
+    }
220
+
221
+    $GLOBALS['connect_id_auteur'] = $row['id_auteur'];
222
+    $GLOBALS['connect_login'] = $row['login'];
223
+    $GLOBALS['connect_statut'] = $row['statut'];
224
+
225
+    $GLOBALS['visiteur_session'] = array_merge((array)$GLOBALS['visiteur_session'], $row);
226
+
227
+    // au cas ou : ne pas memoriser les champs sensibles
228
+    unset($GLOBALS['visiteur_session']['pass']);
229
+    unset($GLOBALS['visiteur_session']['htpass']);
230
+    unset($GLOBALS['visiteur_session']['alea_actuel']);
231
+    unset($GLOBALS['visiteur_session']['alea_futur']);
232
+    unset($GLOBALS['visiteur_session']['ldap_password']);
233
+
234
+    // creer la session au besoin
235
+    if (!isset($_COOKIE['spip_session'])) {
236
+        $session = charger_fonction('session', 'inc');
237
+        $spip_session = $session($row);
238
+    }
239
+
240
+    // reinjecter les preferences_auteur apres le reset de spip_session
241
+    // car utilisees au retour par auth_loger()
242
+    $r = @unserialize($row['prefs']);
243
+    $GLOBALS['visiteur_session']['prefs'] = ($r ?: []);
244
+    // si prefs pas definies, les definir par defaut
245
+    if (!isset($GLOBALS['visiteur_session']['prefs']['couleur'])) {
246
+        $GLOBALS['visiteur_session']['prefs']['couleur'] = 2;
247
+        $GLOBALS['visiteur_session']['prefs']['display'] = 2;
248
+        $GLOBALS['visiteur_session']['prefs']['display_navigation'] = 'navigation_avec_icones';
249
+        $GLOBALS['visiteur_session']['prefs']['display_outils'] = 'oui';
250
+    }
251
+
252
+    $GLOBALS['visiteur_session'] = pipeline(
253
+        'preparer_visiteur_session',
254
+        ['args' => ['row' => $row],
255
+        'data' => $GLOBALS['visiteur_session']]
256
+    );
257
+
258
+    // Etablir les droits selon le codage attendu
259
+    // dans ecrire/index.php ecrire/prive.php
260
+
261
+    // Pas autorise a acceder a ecrire ? renvoyer le tableau
262
+    // A noter : le premier appel a autoriser() a le bon gout
263
+    // d'initialiser $GLOBALS['visiteur_session']['restreint'],
264
+    // qui ne figure pas dans le fichier de session
265
+
266
+    if (!autoriser('ecrire')) {
267
+        return $row;
268
+    }
269
+
270
+    // autoriser('ecrire') ne laisse passer que les Admin et les Redac
271
+
272
+    auth_trace($row);
273
+
274
+    // Administrateurs
275
+    if (in_array($GLOBALS['connect_statut'], explode(',', _STATUT_AUTEUR_RUBRIQUE))) {
276
+        if (
277
+            isset($GLOBALS['visiteur_session']['restreint'])
278
+            and is_array($GLOBALS['visiteur_session']['restreint'])
279
+        ) {
280
+            $GLOBALS['connect_id_rubrique'] = $GLOBALS['visiteur_session']['restreint'];
281
+        }
282
+        if ($GLOBALS['connect_statut'] == '0minirezo') {
283
+            $GLOBALS['connect_toutes_rubriques'] = !$GLOBALS['connect_id_rubrique'];
284
+        }
285
+    }
286
+
287
+    // Pour les redacteurs, inc_version a fait l'initialisation minimale
288
+
289
+    return ''; // i.e. pas de pb.
290 290
 }
291 291
 
292 292
 /**
@@ -295,23 +295,23 @@  discard block
 block discarded – undo
295 295
  * @return string
296 296
  */
297 297
 function auth_a_loger() {
298
-	$redirect = generer_url_public('login', 'url=' . rawurlencode(self('&', true)), true);
299
-
300
-	// un echec au "bonjour" (login initial) quand le statut est
301
-	// inconnu signale sans doute un probleme de cookies
302
-	if (isset($_GET['bonjour'])) {
303
-		$redirect = parametre_url(
304
-			$redirect,
305
-			'var_erreur',
306
-			(!isset($GLOBALS['visiteur_session']['statut'])
307
-				? 'cookie'
308
-				: 'statut'
309
-			),
310
-			'&'
311
-		);
312
-	}
313
-
314
-	return $redirect;
298
+    $redirect = generer_url_public('login', 'url=' . rawurlencode(self('&', true)), true);
299
+
300
+    // un echec au "bonjour" (login initial) quand le statut est
301
+    // inconnu signale sans doute un probleme de cookies
302
+    if (isset($_GET['bonjour'])) {
303
+        $redirect = parametre_url(
304
+            $redirect,
305
+            'var_erreur',
306
+            (!isset($GLOBALS['visiteur_session']['statut'])
307
+                ? 'cookie'
308
+                : 'statut'
309
+            ),
310
+            '&'
311
+        );
312
+    }
313
+
314
+    return $redirect;
315 315
 }
316 316
 
317 317
 /**
@@ -323,19 +323,19 @@  discard block
 block discarded – undo
323 323
  * @param null|string $date
324 324
  */
325 325
 function auth_trace($row, $date = null) {
326
-	// Indiquer la connexion. A la minute pres ca suffit.
327
-	if (!is_numeric($connect_quand = $row['quand'] ?? '')) {
328
-		$connect_quand = strtotime($connect_quand);
329
-	}
326
+    // Indiquer la connexion. A la minute pres ca suffit.
327
+    if (!is_numeric($connect_quand = $row['quand'] ?? '')) {
328
+        $connect_quand = strtotime($connect_quand);
329
+    }
330 330
 
331
-	$date ??= date('Y-m-d H:i:s');
331
+    $date ??= date('Y-m-d H:i:s');
332 332
 
333
-	if (abs(strtotime($date) - $connect_quand) >= 60) {
334
-		sql_updateq('spip_auteurs', ['en_ligne' => $date], 'id_auteur=' . intval($row['id_auteur']));
335
-		$row['en_ligne'] = $date;
336
-	}
333
+    if (abs(strtotime($date) - $connect_quand) >= 60) {
334
+        sql_updateq('spip_auteurs', ['en_ligne' => $date], 'id_auteur=' . intval($row['id_auteur']));
335
+        $row['en_ligne'] = $date;
336
+    }
337 337
 
338
-	pipeline('trig_auth_trace', ['args' => ['row' => $row, 'date' => $date]]);
338
+    pipeline('trig_auth_trace', ['args' => ['row' => $row, 'date' => $date]]);
339 339
 }
340 340
 
341 341
 
@@ -361,28 +361,28 @@  discard block
 block discarded – undo
361 361
  * @return mixed
362 362
  */
363 363
 function auth_administrer($fonction, $args, $defaut = false) {
364
-	$auth_methode = array_shift($args);
365
-	$auth_methode = $auth_methode ?: 'spip'; // valeur par defaut au cas ou
366
-	if (
367
-		$auth = charger_fonction($auth_methode, 'auth', true)
368
-		and function_exists($f = "auth_{$auth_methode}_$fonction")
369
-	) {
370
-		$res = $f(...$args);
371
-	} else {
372
-		$res = $defaut;
373
-	}
374
-	$res = pipeline(
375
-		'auth_administrer',
376
-		[
377
-			'args' => [
378
-				'fonction' => $fonction,
379
-				'methode' => $auth_methode,
380
-				'args' => $args
381
-			],
382
-			'data' => $res
383
-		]
384
-	);
385
-	return $res;
364
+    $auth_methode = array_shift($args);
365
+    $auth_methode = $auth_methode ?: 'spip'; // valeur par defaut au cas ou
366
+    if (
367
+        $auth = charger_fonction($auth_methode, 'auth', true)
368
+        and function_exists($f = "auth_{$auth_methode}_$fonction")
369
+    ) {
370
+        $res = $f(...$args);
371
+    } else {
372
+        $res = $defaut;
373
+    }
374
+    $res = pipeline(
375
+        'auth_administrer',
376
+        [
377
+            'args' => [
378
+                'fonction' => $fonction,
379
+                'methode' => $auth_methode,
380
+                'args' => $args
381
+            ],
382
+            'data' => $res
383
+        ]
384
+    );
385
+    return $res;
386 386
 }
387 387
 
388 388
 /**
@@ -392,11 +392,11 @@  discard block
 block discarded – undo
392 392
  * @return array
393 393
  */
394 394
 function auth_formulaire_login($flux) {
395
-	foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
396
-		$flux = auth_administrer('formulaire_login', [$methode, $flux], $flux);
397
-	}
395
+    foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
396
+        $flux = auth_administrer('formulaire_login', [$methode, $flux], $flux);
397
+    }
398 398
 
399
-	return $flux;
399
+    return $flux;
400 400
 }
401 401
 
402 402
 
@@ -410,19 +410,19 @@  discard block
 block discarded – undo
410 410
  * @return string/bool
411 411
  */
412 412
 function auth_retrouver_login($login, $serveur = '') {
413
-	if (!spip_connect($serveur)) {
414
-		include_spip('inc/minipres');
415
-		echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
416
-		exit;
417
-	}
418
-
419
-	foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
420
-		if ($auteur = auth_administrer('retrouver_login', [$methode, $login, $serveur])) {
421
-			return $auteur;
422
-		}
423
-	}
424
-
425
-	return false;
413
+    if (!spip_connect($serveur)) {
414
+        include_spip('inc/minipres');
415
+        echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
416
+        exit;
417
+    }
418
+
419
+    foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
420
+        if ($auteur = auth_administrer('retrouver_login', [$methode, $login, $serveur])) {
421
+            return $auteur;
422
+        }
423
+    }
424
+
425
+    return false;
426 426
 }
427 427
 
428 428
 /**
@@ -437,34 +437,34 @@  discard block
 block discarded – undo
437 437
  * @return array
438 438
  */
439 439
 function auth_informer_login($login, $serveur = '') {
440
-	if (
441
-		!$login
442
-		or !$login_base = auth_retrouver_login($login, $serveur)
443
-		or !$row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login_base, $serveur, 'text'), '', '', '', '', $serveur)
444
-	) {
445
-		// generer de fausses infos, mais credibles, pour eviter une attaque
446
-		// https://core.spip.net/issues/1758 + https://core.spip.net/issues/3691
447
-
448
-		$row = [
449
-			'login' => $login,
450
-			'cnx' => '0',
451
-			'logo' => '',
452
-		];
453
-
454
-		return $row;
455
-	}
456
-
457
-	$prefs = @unserialize($row['prefs']);
458
-	$infos = [
459
-		'id_auteur' => $row['id_auteur'],
460
-		'login' => $row['login'],
461
-		'cnx' => (isset($prefs['cnx']) and $prefs['cnx'] === 'perma') ? '1' : '0',
462
-		'logo' => recuperer_fond('formulaires/inc-logo_auteur', $row),
463
-	];
464
-
465
-	verifier_visiteur();
466
-
467
-	return auth_administrer('informer_login', [$row['source'], $infos, $row, $serveur], $infos);
440
+    if (
441
+        !$login
442
+        or !$login_base = auth_retrouver_login($login, $serveur)
443
+        or !$row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login_base, $serveur, 'text'), '', '', '', '', $serveur)
444
+    ) {
445
+        // generer de fausses infos, mais credibles, pour eviter une attaque
446
+        // https://core.spip.net/issues/1758 + https://core.spip.net/issues/3691
447
+
448
+        $row = [
449
+            'login' => $login,
450
+            'cnx' => '0',
451
+            'logo' => '',
452
+        ];
453
+
454
+        return $row;
455
+    }
456
+
457
+    $prefs = @unserialize($row['prefs']);
458
+    $infos = [
459
+        'id_auteur' => $row['id_auteur'],
460
+        'login' => $row['login'],
461
+        'cnx' => (isset($prefs['cnx']) and $prefs['cnx'] === 'perma') ? '1' : '0',
462
+        'logo' => recuperer_fond('formulaires/inc-logo_auteur', $row),
463
+    ];
464
+
465
+    verifier_visiteur();
466
+
467
+    return auth_administrer('informer_login', [$row['source'], $infos, $row, $serveur], $infos);
468 468
 }
469 469
 
470 470
 
@@ -478,21 +478,21 @@  discard block
 block discarded – undo
478 478
  * @return mixed
479 479
  */
480 480
 function auth_identifier_login($login, $password, $serveur = '') {
481
-	$erreur = '';
482
-	foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
483
-		if ($auth = charger_fonction($methode, 'auth', true)) {
484
-			$auteur = $auth($login, $password, $serveur);
485
-			if (is_array($auteur) and count($auteur)) {
486
-				spip_log("connexion de $login par methode $methode");
487
-				$auteur['auth'] = $methode;
488
-				return $auteur;
489
-			} elseif (is_string($auteur)) {
490
-				$erreur .= "$auteur ";
491
-			}
492
-		}
493
-	}
494
-
495
-	return $erreur;
481
+    $erreur = '';
482
+    foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
483
+        if ($auth = charger_fonction($methode, 'auth', true)) {
484
+            $auteur = $auth($login, $password, $serveur);
485
+            if (is_array($auteur) and count($auteur)) {
486
+                spip_log("connexion de $login par methode $methode");
487
+                $auteur['auth'] = $methode;
488
+                return $auteur;
489
+            } elseif (is_string($auteur)) {
490
+                $erreur .= "$auteur ";
491
+            }
492
+        }
493
+    }
494
+
495
+    return $erreur;
496 496
 }
497 497
 
498 498
 /**
@@ -506,8 +506,8 @@  discard block
 block discarded – undo
506 506
  * @return string
507 507
  */
508 508
 function auth_url_retour_login($auth_methode, $login, $redirect = '', $serveur = '') {
509
-	$securiser_action = charger_fonction('securiser_action', 'inc');
510
-	return $securiser_action('auth', "$auth_methode/$login", $redirect, true);
509
+    $securiser_action = charger_fonction('securiser_action', 'inc');
510
+    return $securiser_action('auth', "$auth_methode/$login", $redirect, true);
511 511
 }
512 512
 
513 513
 /**
@@ -521,9 +521,9 @@  discard block
 block discarded – undo
521 521
  * @return mixed
522 522
  */
523 523
 function auth_terminer_identifier_login($auth_methode, $login, $serveur = '') {
524
-	$args = func_get_args();
525
-	$auteur = auth_administrer('terminer_identifier_login', $args);
526
-	return $auteur;
524
+    $args = func_get_args();
525
+    $auteur = auth_administrer('terminer_identifier_login', $args);
526
+    return $auteur;
527 527
 }
528 528
 
529 529
 /**
@@ -533,29 +533,29 @@  discard block
 block discarded – undo
533 533
  * @return bool
534 534
  */
535 535
 function auth_loger($auteur) {
536
-	if (!is_array($auteur) or !count($auteur)) {
537
-		return false;
538
-	}
539
-
540
-	// initialiser et poser le cookie de session
541
-	unset($_COOKIE['spip_session']);
542
-	if (auth_init_droits($auteur) === false) {
543
-		return false;
544
-	}
545
-
546
-	// initialiser les prefs
547
-	$p = $GLOBALS['visiteur_session']['prefs'];
548
-	$p['cnx'] = (isset($auteur['cookie']) and $auteur['cookie'] == 'oui') ? 'perma' : '';
549
-
550
-	sql_updateq(
551
-		'spip_auteurs',
552
-		['prefs' => serialize($p)],
553
-		'id_auteur=' . intval($auteur['id_auteur'])
554
-	);
555
-
556
-	//  bloquer ici le visiteur qui tente d'abuser de ses droits
557
-	verifier_visiteur();
558
-	return true;
536
+    if (!is_array($auteur) or !count($auteur)) {
537
+        return false;
538
+    }
539
+
540
+    // initialiser et poser le cookie de session
541
+    unset($_COOKIE['spip_session']);
542
+    if (auth_init_droits($auteur) === false) {
543
+        return false;
544
+    }
545
+
546
+    // initialiser les prefs
547
+    $p = $GLOBALS['visiteur_session']['prefs'];
548
+    $p['cnx'] = (isset($auteur['cookie']) and $auteur['cookie'] == 'oui') ? 'perma' : '';
549
+
550
+    sql_updateq(
551
+        'spip_auteurs',
552
+        ['prefs' => serialize($p)],
553
+        'id_auteur=' . intval($auteur['id_auteur'])
554
+    );
555
+
556
+    //  bloquer ici le visiteur qui tente d'abuser de ses droits
557
+    verifier_visiteur();
558
+    return true;
559 559
 }
560 560
 
561 561
 /**
@@ -565,8 +565,8 @@  discard block
 block discarded – undo
565 565
  * return void
566 566
  **/
567 567
 function auth_deloger() {
568
-	$logout = charger_fonction('logout', 'action');
569
-	$logout();
568
+    $logout = charger_fonction('logout', 'action');
569
+    $logout();
570 570
 }
571 571
 
572 572
 /**
@@ -580,8 +580,8 @@  discard block
 block discarded – undo
580 580
  * @return bool
581 581
  */
582 582
 function auth_autoriser_modifier_login($auth_methode, $serveur = '') {
583
-	$args = func_get_args();
584
-	return auth_administrer('autoriser_modifier_login', $args);
583
+    $args = func_get_args();
584
+    return auth_administrer('autoriser_modifier_login', $args);
585 585
 }
586 586
 
587 587
 /**
@@ -596,8 +596,8 @@  discard block
 block discarded – undo
596 596
  *  message d'erreur ou chaine vide si pas d'erreur
597 597
  */
598 598
 function auth_verifier_login($auth_methode, $new_login, $id_auteur = 0, $serveur = '') {
599
-	$args = func_get_args();
600
-	return auth_administrer('verifier_login', $args, '');
599
+    $args = func_get_args();
600
+    return auth_administrer('verifier_login', $args, '');
601 601
 }
602 602
 
603 603
 /**
@@ -610,8 +610,8 @@  discard block
 block discarded – undo
610 610
  * @return bool
611 611
  */
612 612
 function auth_modifier_login($auth_methode, $new_login, $id_auteur, $serveur = '') {
613
-	$args = func_get_args();
614
-	return auth_administrer('modifier_login', $args);
613
+    $args = func_get_args();
614
+    return auth_administrer('modifier_login', $args);
615 615
 }
616 616
 
617 617
 /**
@@ -626,8 +626,8 @@  discard block
 block discarded – undo
626 626
  *  succès ou échec
627 627
  */
628 628
 function auth_autoriser_modifier_pass($auth_methode, $serveur = '') {
629
-	$args = func_get_args();
630
-	return auth_administrer('autoriser_modifier_pass', $args);
629
+    $args = func_get_args();
630
+    return auth_administrer('autoriser_modifier_pass', $args);
631 631
 }
632 632
 
633 633
 /**
@@ -643,8 +643,8 @@  discard block
 block discarded – undo
643 643
  *  message d'erreur ou chaine vide si pas d'erreur
644 644
  */
645 645
 function auth_verifier_pass($auth_methode, $login, $new_pass, $id_auteur = 0, $serveur = '') {
646
-	$args = func_get_args();
647
-	return auth_administrer('verifier_pass', $args, '');
646
+    $args = func_get_args();
647
+    return auth_administrer('verifier_pass', $args, '');
648 648
 }
649 649
 
650 650
 /**
@@ -660,8 +660,8 @@  discard block
 block discarded – undo
660 660
  *  succes ou echec
661 661
  */
662 662
 function auth_modifier_pass($auth_methode, $login, $new_pass, $id_auteur, $serveur = '') {
663
-	$args = func_get_args();
664
-	return auth_administrer('modifier_pass', $args);
663
+    $args = func_get_args();
664
+    return auth_administrer('modifier_pass', $args);
665 665
 }
666 666
 
667 667
 /**
@@ -677,24 +677,24 @@  discard block
 block discarded – undo
677 677
  * @return void
678 678
  */
679 679
 function auth_synchroniser_distant(
680
-	$auth_methode = true,
681
-	$id_auteur = 0,
682
-	$champs = [],
683
-	$options = [],
684
-	$serveur = ''
680
+    $auth_methode = true,
681
+    $id_auteur = 0,
682
+    $champs = [],
683
+    $options = [],
684
+    $serveur = ''
685 685
 ) {
686
-	$args = func_get_args();
687
-	if ($auth_methode === true or (isset($options['all']) and $options['all'] == true)) {
688
-		$options['all'] = true; // ajouter une option all=>true pour chaque auth
689
-		$args = [true, $id_auteur, $champs, $options, $serveur];
690
-		foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
691
-			array_shift($args);
692
-			array_unshift($args, $methode);
693
-			auth_administrer('synchroniser_distant', $args);
694
-		}
695
-	} else {
696
-		auth_administrer('synchroniser_distant', $args);
697
-	}
686
+    $args = func_get_args();
687
+    if ($auth_methode === true or (isset($options['all']) and $options['all'] == true)) {
688
+        $options['all'] = true; // ajouter une option all=>true pour chaque auth
689
+        $args = [true, $id_auteur, $champs, $options, $serveur];
690
+        foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
691
+            array_shift($args);
692
+            array_unshift($args, $methode);
693
+            auth_administrer('synchroniser_distant', $args);
694
+        }
695
+    } else {
696
+        auth_administrer('synchroniser_distant', $args);
697
+    }
698 698
 }
699 699
 
700 700
 
@@ -707,45 +707,45 @@  discard block
 block discarded – undo
707 707
  * @return array|bool
708 708
  */
709 709
 function lire_php_auth($login, $pw, $serveur = '') {
710
-	if (
711
-		!$login
712
-		or !$login = auth_retrouver_login($login, $serveur)
713
-	) {
714
-		return false;
715
-	}
716
-
717
-	$row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login, $serveur, 'text'), '', '', '', '', $serveur);
718
-
719
-	if (!$row) {
720
-		if (
721
-			include_spip('inc/auth')
722
-			and auth_ldap_connect($serveur)
723
-			and $auth_ldap = charger_fonction('ldap', 'auth', true)
724
-		) {
725
-			return $auth_ldap($login, $pw, $serveur, true);
726
-		}
727
-
728
-		return false;
729
-	}
730
-	// su pas de source definie
731
-	// ou auth/xxx introuvable, utiliser 'spip'
732
-	if (
733
-		!$auth_methode = $row['source']
734
-		or !$auth = charger_fonction($auth_methode, 'auth', true)
735
-	) {
736
-		$auth = charger_fonction('spip', 'auth', true);
737
-	}
738
-
739
-	$auteur = '';
740
-	if ($auth) {
741
-		$auteur = $auth($login, $pw, $serveur, true);
742
-	}
743
-	// verifier que ce n'est pas un message d'erreur
744
-	if (is_array($auteur) and count($auteur)) {
745
-		return $auteur;
746
-	}
747
-
748
-	return false;
710
+    if (
711
+        !$login
712
+        or !$login = auth_retrouver_login($login, $serveur)
713
+    ) {
714
+        return false;
715
+    }
716
+
717
+    $row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login, $serveur, 'text'), '', '', '', '', $serveur);
718
+
719
+    if (!$row) {
720
+        if (
721
+            include_spip('inc/auth')
722
+            and auth_ldap_connect($serveur)
723
+            and $auth_ldap = charger_fonction('ldap', 'auth', true)
724
+        ) {
725
+            return $auth_ldap($login, $pw, $serveur, true);
726
+        }
727
+
728
+        return false;
729
+    }
730
+    // su pas de source definie
731
+    // ou auth/xxx introuvable, utiliser 'spip'
732
+    if (
733
+        !$auth_methode = $row['source']
734
+        or !$auth = charger_fonction($auth_methode, 'auth', true)
735
+    ) {
736
+        $auth = charger_fonction('spip', 'auth', true);
737
+    }
738
+
739
+    $auteur = '';
740
+    if ($auth) {
741
+        $auteur = $auth($login, $pw, $serveur, true);
742
+    }
743
+    // verifier que ce n'est pas un message d'erreur
744
+    if (is_array($auteur) and count($auteur)) {
745
+        return $auteur;
746
+    }
747
+
748
+    return false;
749 749
 }
750 750
 
751 751
 /**
@@ -761,21 +761,21 @@  discard block
 block discarded – undo
761 761
  * @param string $lien
762 762
  */
763 763
 function ask_php_auth($pb, $raison, $retour = '', $url = '', $re = '', $lien = '') {
764
-	@Header('WWW-Authenticate: Basic realm="espace prive"');
765
-	@Header('HTTP/1.0 401 Unauthorized');
766
-	$corps = '';
767
-	$public = generer_url_public();
768
-	$ecrire = generer_url_ecrire();
769
-	$retour = $retour ?: _T('icone_retour');
770
-	$corps .= "<p>$raison</p>[<a href='$public'>$retour</a>] ";
771
-	if ($url) {
772
-		$corps .= "[<a href='" . generer_url_action('cookie', "essai_auth_http=oui&$url") . "'>$re</a>]";
773
-	}
774
-
775
-	if ($lien) {
776
-		$corps .= " [<a href='$ecrire'>" . _T('login_espace_prive') . '</a>]';
777
-	}
778
-	include_spip('inc/minipres');
779
-	echo minipres($pb, $corps);
780
-	exit;
764
+    @Header('WWW-Authenticate: Basic realm="espace prive"');
765
+    @Header('HTTP/1.0 401 Unauthorized');
766
+    $corps = '';
767
+    $public = generer_url_public();
768
+    $ecrire = generer_url_ecrire();
769
+    $retour = $retour ?: _T('icone_retour');
770
+    $corps .= "<p>$raison</p>[<a href='$public'>$retour</a>] ";
771
+    if ($url) {
772
+        $corps .= "[<a href='" . generer_url_action('cookie', "essai_auth_http=oui&$url") . "'>$re</a>]";
773
+    }
774
+
775
+    if ($lien) {
776
+        $corps .= " [<a href='$ecrire'>" . _T('login_espace_prive') . '</a>]';
777
+    }
778
+    include_spip('inc/minipres');
779
+    echo minipres($pb, $corps);
780
+    exit;
781 781
 }
Please login to merge, or discard this patch.
Spacing   +12 added lines, -13 removed lines patch added patch discarded remove patch
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 	}
60 60
 
61 61
 	$n = intval(sql_errno());
62
-	spip_log("Erreur base de donnees $n " . sql_error());
62
+	spip_log("Erreur base de donnees $n ".sql_error());
63 63
 
64 64
 	return $n ?: 1;
65 65
 }
@@ -85,11 +85,11 @@  discard block
 block discarded – undo
85 85
 		// erreur SQL a afficher
86 86
 		$raison = minipres(
87 87
 			_T('info_travaux_titre'),
88
-			_T('titre_probleme_technique') . '<p><tt>' . sql_errno() . ' ' . sql_error() . '</tt></p>'
88
+			_T('titre_probleme_technique').'<p><tt>'.sql_errno().' '.sql_error().'</tt></p>'
89 89
 		);
90 90
 	} elseif (@$raison['statut']) {
91 91
 		// un simple visiteur n'a pas acces a l'espace prive
92
-		spip_log('connexion refusee a ' . @$raison['id_auteur']);
92
+		spip_log('connexion refusee a '.@$raison['id_auteur']);
93 93
 		$raison = minipres(_T('avis_erreur_connexion'), _T('avis_erreur_visiteur'));
94 94
 	} else {
95 95
 		// auteur en fin de droits ...
@@ -179,8 +179,7 @@  discard block
 block discarded – undo
179 179
 	$where = (is_numeric($id_auteur)
180 180
 		/*AND $id_auteur>0*/ // reprise lors des restaurations
181 181
 	) ?
182
-		"id_auteur=$id_auteur" :
183
-		(!strlen($GLOBALS['connect_login']) ? '' : 'login=' . sql_quote($GLOBALS['connect_login'], '', 'text'));
182
+		"id_auteur=$id_auteur" : (!strlen($GLOBALS['connect_login']) ? '' : 'login='.sql_quote($GLOBALS['connect_login'], '', 'text'));
184 183
 
185 184
 	if (!$where) {
186 185
 		return '';
@@ -222,7 +221,7 @@  discard block
 block discarded – undo
222 221
 	$GLOBALS['connect_login'] = $row['login'];
223 222
 	$GLOBALS['connect_statut'] = $row['statut'];
224 223
 
225
-	$GLOBALS['visiteur_session'] = array_merge((array)$GLOBALS['visiteur_session'], $row);
224
+	$GLOBALS['visiteur_session'] = array_merge((array) $GLOBALS['visiteur_session'], $row);
226 225
 
227 226
 	// au cas ou : ne pas memoriser les champs sensibles
228 227
 	unset($GLOBALS['visiteur_session']['pass']);
@@ -295,7 +294,7 @@  discard block
 block discarded – undo
295 294
  * @return string
296 295
  */
297 296
 function auth_a_loger() {
298
-	$redirect = generer_url_public('login', 'url=' . rawurlencode(self('&', true)), true);
297
+	$redirect = generer_url_public('login', 'url='.rawurlencode(self('&', true)), true);
299 298
 
300 299
 	// un echec au "bonjour" (login initial) quand le statut est
301 300
 	// inconnu signale sans doute un probleme de cookies
@@ -331,7 +330,7 @@  discard block
 block discarded – undo
331 330
 	$date ??= date('Y-m-d H:i:s');
332 331
 
333 332
 	if (abs(strtotime($date) - $connect_quand) >= 60) {
334
-		sql_updateq('spip_auteurs', ['en_ligne' => $date], 'id_auteur=' . intval($row['id_auteur']));
333
+		sql_updateq('spip_auteurs', ['en_ligne' => $date], 'id_auteur='.intval($row['id_auteur']));
335 334
 		$row['en_ligne'] = $date;
336 335
 	}
337 336
 
@@ -440,7 +439,7 @@  discard block
 block discarded – undo
440 439
 	if (
441 440
 		!$login
442 441
 		or !$login_base = auth_retrouver_login($login, $serveur)
443
-		or !$row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login_base, $serveur, 'text'), '', '', '', '', $serveur)
442
+		or !$row = sql_fetsel('*', 'spip_auteurs', 'login='.sql_quote($login_base, $serveur, 'text'), '', '', '', '', $serveur)
444 443
 	) {
445 444
 		// generer de fausses infos, mais credibles, pour eviter une attaque
446 445
 		// https://core.spip.net/issues/1758 + https://core.spip.net/issues/3691
@@ -550,7 +549,7 @@  discard block
 block discarded – undo
550 549
 	sql_updateq(
551 550
 		'spip_auteurs',
552 551
 		['prefs' => serialize($p)],
553
-		'id_auteur=' . intval($auteur['id_auteur'])
552
+		'id_auteur='.intval($auteur['id_auteur'])
554 553
 	);
555 554
 
556 555
 	//  bloquer ici le visiteur qui tente d'abuser de ses droits
@@ -714,7 +713,7 @@  discard block
 block discarded – undo
714 713
 		return false;
715 714
 	}
716 715
 
717
-	$row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login, $serveur, 'text'), '', '', '', '', $serveur);
716
+	$row = sql_fetsel('*', 'spip_auteurs', 'login='.sql_quote($login, $serveur, 'text'), '', '', '', '', $serveur);
718 717
 
719 718
 	if (!$row) {
720 719
 		if (
@@ -769,11 +768,11 @@  discard block
 block discarded – undo
769 768
 	$retour = $retour ?: _T('icone_retour');
770 769
 	$corps .= "<p>$raison</p>[<a href='$public'>$retour</a>] ";
771 770
 	if ($url) {
772
-		$corps .= "[<a href='" . generer_url_action('cookie', "essai_auth_http=oui&$url") . "'>$re</a>]";
771
+		$corps .= "[<a href='".generer_url_action('cookie', "essai_auth_http=oui&$url")."'>$re</a>]";
773 772
 	}
774 773
 
775 774
 	if ($lien) {
776
-		$corps .= " [<a href='$ecrire'>" . _T('login_espace_prive') . '</a>]';
775
+		$corps .= " [<a href='$ecrire'>"._T('login_espace_prive').'</a>]';
777 776
 	}
778 777
 	include_spip('inc/minipres');
779 778
 	echo minipres($pb, $corps);
Please login to merge, or discard this patch.
ecrire/inc/chiffrer.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@
 block discarded – undo
11 11
  * \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 include_spip('src/Chiffrer/Chiffrement');
Please login to merge, or discard this patch.
ecrire/install/etape_3b.php 2 patches
Indentation   +161 added lines, -161 removed lines patch added patch discarded remove patch
@@ -11,173 +11,173 @@
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 include_spip('inc/headers');
18 18
 
19 19
 function install_etape_3b_dist() {
20
-	$auth_spip = null;
21
-	$session = null;
22
-	$row = null;
23
-	$login = _request('login');
24
-	$email = _request('email');
25
-	$nom = _request('nom');
26
-	$pass = _request('pass');
27
-	$pass_verif = _request('pass_verif');
28
-
29
-	$server_db = defined('_INSTALL_SERVER_DB')
30
-		? _INSTALL_SERVER_DB
31
-		: _request('server_db');
32
-
33
-	if (!defined('_PASS_LONGUEUR_MINI')) {
34
-		define('_PASS_LONGUEUR_MINI', 6);
35
-	}
36
-	if (!defined('_LOGIN_TROP_COURT')) {
37
-		define('_LOGIN_TROP_COURT', 4);
38
-	}
39
-	if ($login) {
40
-		$echec = ($pass != $pass_verif) ?
41
-			_T('info_passes_identiques')
42
-			: ((strlen($pass) < _PASS_LONGUEUR_MINI) ?
43
-				_T('info_passe_trop_court_car_pluriel', ['nb' => _PASS_LONGUEUR_MINI])
44
-				: ((strlen($login) < _LOGIN_TROP_COURT) ?
45
-					_T('info_login_trop_court')
46
-					: ''));
47
-		include_spip('inc/filtres');
48
-		if (!$echec and $email and !email_valide($email)) {
49
-			$echec = _T('form_email_non_valide');
50
-		}
51
-		if ($echec) {
52
-			echouer_etape_3b($echec);
53
-		}
54
-	}
55
-
56
-	if (@file_exists(_FILE_CHMOD_TMP)) {
57
-		include(_FILE_CHMOD_TMP);
58
-	} else {
59
-		redirige_url_ecrire('install');
60
-	}
61
-
62
-	if (!@file_exists(_FILE_CONNECT_TMP)) {
63
-		redirige_url_ecrire('install');
64
-	}
65
-
66
-	# maintenant on connait le vrai charset du site s'il est deja configure
67
-	# sinon par defaut lire_meta reglera _DEFAULT_CHARSET
68
-	# (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
69
-
70
-	lire_metas();
71
-	if ($login) {
72
-		include_spip('inc/charsets');
73
-
74
-		$nom = (importer_charset($nom, _DEFAULT_CHARSET));
75
-		$login = (importer_charset($login, _DEFAULT_CHARSET));
76
-		$email = (importer_charset($email, _DEFAULT_CHARSET));
77
-		# pour le passwd, bizarrement il faut le convertir comme s'il avait
78
-		# ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
79
-		$pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
80
-
81
-		include_spip('auth/spip');
82
-		// prelablement, creer le champ webmestre si il n'existe pas (install neuve
83
-		// sur une vieille base
84
-		$t = sql_showtable('spip_auteurs', true);
85
-		if (!isset($t['field']['webmestre'])) {
86
-			@sql_alter("TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL");
87
-		}
88
-
89
-		// il faut avoir une cle des auth valide pour creer un nouvel auteur webmestre
90
-		include_spip('inc/chiffrer');
91
-		$cles = \Spip\Chiffrer\SpipCles::instance();
92
-		$secret = $cles->getSecretAuth();
93
-
94
-		$id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login=' . sql_quote($login));
95
-		if ($id_auteur !== null) {
96
-			// c'est un auteur connu : si on a pas de secret il faut absolument qu'il se reconnecte avec le meme mot de passe
97
-			// pour restaurer la copie des cles
98
-			if (!$secret and !auth_spip_initialiser_secret()) {
99
-				$row = sql_fetsel('backup_cles, pass', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
100
-				if (empty($row['backup_cles']) or !$cles->restore($row['backup_cles'], $pass, $row['pass'], $id_auteur)) {
101
-					$echec = _T('avis_connexion_erreur_fichier_cle_manquant_1');
102
-					echouer_etape_3b($echec);
103
-				}
104
-				spip_log("Les cles secretes ont ete restaurées avec le backup du webmestre #$id_auteur", 'auth' . _LOG_INFO_IMPORTANTE);
105
-				$cles->save();
106
-			}
107
-
108
-			sql_updateq('spip_auteurs', [
109
-				'nom' => $nom,
110
-				'email' => $email,
111
-				'login' => $login,
112
-				'statut' => '0minirezo'
113
-			], 'id_auteur=' . intval($id_auteur));
114
-			// le passer webmestre separement du reste, au cas ou l'alter n'aurait pas fonctionne
115
-			@sql_updateq('spip_auteurs', ['webmestre' => 'oui'], "id_auteur=$id_auteur");
116
-			if (!auth_spip_modifier_pass($login, $pass, $id_auteur)) {
117
-				$echec = _T('avis_erreur_creation_compte');
118
-				echouer_etape_3b($echec);
119
-			}
120
-		} else {
121
-			// Si on a pas de cle et qu'on ne sait pas la creer, on ne peut pas creer de nouveau compte :
122
-			// il faut qu'un webmestre avec un backup fasse l'install
123
-			if (!$secret and !auth_spip_initialiser_secret()) {
124
-				$echec = _T('avis_connexion_erreur_fichier_cle_manquant_2');
125
-				echouer_etape_3b($echec);
126
-			}
127
-
128
-			$id_auteur = sql_insertq('spip_auteurs', [
129
-				'nom' => $nom,
130
-				'email' => $email,
131
-				'login' => $login,
132
-				'statut' => '0minirezo'
133
-			]);
134
-			// le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
135
-			@sql_updateq('spip_auteurs', ['webmestre' => 'oui'], "id_auteur=$id_auteur");
136
-			if (!auth_spip_modifier_pass($login, $pass, $id_auteur)) {
137
-				$echec = _T('avis_erreur_creation_compte');
138
-				echouer_etape_3b($echec);
139
-			}
140
-		}
141
-
142
-		// inserer email comme email webmaster principal
143
-		// (sauf s'il est vide: cas de la re-installation)
144
-		if ($email) {
145
-			ecrire_meta('email_webmaster', $email);
146
-		}
147
-
148
-		// Connecter directement celui qui vient de (re)donner son login
149
-		// mais sans cookie d'admin ni connexion longue
150
-		include_spip('inc/auth');
151
-		if (
152
-			!$auteur = auth_identifier_login($login, $pass)
153
-			or !auth_loger($auteur)
154
-		) {
155
-			spip_log("login automatique impossible $auth_spip $session" . (is_countable($row) ? count($row) : 0));
156
-		}
157
-	}
158
-
159
-	// installer les metas
160
-	$config = charger_fonction('config', 'inc');
161
-	$config();
162
-
163
-	// activer les plugins
164
-	// leur installation ne peut pas se faire sur le meme hit, il faudra donc
165
-	// poursuivre au hit suivant
166
-	include_spip('inc/plugin');
167
-	actualise_plugins_actifs();
168
-
169
-
170
-	include_spip('inc/distant');
171
-	redirige_par_entete(parametre_url(self(), 'etape', '4', '&'));
20
+    $auth_spip = null;
21
+    $session = null;
22
+    $row = null;
23
+    $login = _request('login');
24
+    $email = _request('email');
25
+    $nom = _request('nom');
26
+    $pass = _request('pass');
27
+    $pass_verif = _request('pass_verif');
28
+
29
+    $server_db = defined('_INSTALL_SERVER_DB')
30
+        ? _INSTALL_SERVER_DB
31
+        : _request('server_db');
32
+
33
+    if (!defined('_PASS_LONGUEUR_MINI')) {
34
+        define('_PASS_LONGUEUR_MINI', 6);
35
+    }
36
+    if (!defined('_LOGIN_TROP_COURT')) {
37
+        define('_LOGIN_TROP_COURT', 4);
38
+    }
39
+    if ($login) {
40
+        $echec = ($pass != $pass_verif) ?
41
+            _T('info_passes_identiques')
42
+            : ((strlen($pass) < _PASS_LONGUEUR_MINI) ?
43
+                _T('info_passe_trop_court_car_pluriel', ['nb' => _PASS_LONGUEUR_MINI])
44
+                : ((strlen($login) < _LOGIN_TROP_COURT) ?
45
+                    _T('info_login_trop_court')
46
+                    : ''));
47
+        include_spip('inc/filtres');
48
+        if (!$echec and $email and !email_valide($email)) {
49
+            $echec = _T('form_email_non_valide');
50
+        }
51
+        if ($echec) {
52
+            echouer_etape_3b($echec);
53
+        }
54
+    }
55
+
56
+    if (@file_exists(_FILE_CHMOD_TMP)) {
57
+        include(_FILE_CHMOD_TMP);
58
+    } else {
59
+        redirige_url_ecrire('install');
60
+    }
61
+
62
+    if (!@file_exists(_FILE_CONNECT_TMP)) {
63
+        redirige_url_ecrire('install');
64
+    }
65
+
66
+    # maintenant on connait le vrai charset du site s'il est deja configure
67
+    # sinon par defaut lire_meta reglera _DEFAULT_CHARSET
68
+    # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
69
+
70
+    lire_metas();
71
+    if ($login) {
72
+        include_spip('inc/charsets');
73
+
74
+        $nom = (importer_charset($nom, _DEFAULT_CHARSET));
75
+        $login = (importer_charset($login, _DEFAULT_CHARSET));
76
+        $email = (importer_charset($email, _DEFAULT_CHARSET));
77
+        # pour le passwd, bizarrement il faut le convertir comme s'il avait
78
+        # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
79
+        $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
80
+
81
+        include_spip('auth/spip');
82
+        // prelablement, creer le champ webmestre si il n'existe pas (install neuve
83
+        // sur une vieille base
84
+        $t = sql_showtable('spip_auteurs', true);
85
+        if (!isset($t['field']['webmestre'])) {
86
+            @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL");
87
+        }
88
+
89
+        // il faut avoir une cle des auth valide pour creer un nouvel auteur webmestre
90
+        include_spip('inc/chiffrer');
91
+        $cles = \Spip\Chiffrer\SpipCles::instance();
92
+        $secret = $cles->getSecretAuth();
93
+
94
+        $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login=' . sql_quote($login));
95
+        if ($id_auteur !== null) {
96
+            // c'est un auteur connu : si on a pas de secret il faut absolument qu'il se reconnecte avec le meme mot de passe
97
+            // pour restaurer la copie des cles
98
+            if (!$secret and !auth_spip_initialiser_secret()) {
99
+                $row = sql_fetsel('backup_cles, pass', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
100
+                if (empty($row['backup_cles']) or !$cles->restore($row['backup_cles'], $pass, $row['pass'], $id_auteur)) {
101
+                    $echec = _T('avis_connexion_erreur_fichier_cle_manquant_1');
102
+                    echouer_etape_3b($echec);
103
+                }
104
+                spip_log("Les cles secretes ont ete restaurées avec le backup du webmestre #$id_auteur", 'auth' . _LOG_INFO_IMPORTANTE);
105
+                $cles->save();
106
+            }
107
+
108
+            sql_updateq('spip_auteurs', [
109
+                'nom' => $nom,
110
+                'email' => $email,
111
+                'login' => $login,
112
+                'statut' => '0minirezo'
113
+            ], 'id_auteur=' . intval($id_auteur));
114
+            // le passer webmestre separement du reste, au cas ou l'alter n'aurait pas fonctionne
115
+            @sql_updateq('spip_auteurs', ['webmestre' => 'oui'], "id_auteur=$id_auteur");
116
+            if (!auth_spip_modifier_pass($login, $pass, $id_auteur)) {
117
+                $echec = _T('avis_erreur_creation_compte');
118
+                echouer_etape_3b($echec);
119
+            }
120
+        } else {
121
+            // Si on a pas de cle et qu'on ne sait pas la creer, on ne peut pas creer de nouveau compte :
122
+            // il faut qu'un webmestre avec un backup fasse l'install
123
+            if (!$secret and !auth_spip_initialiser_secret()) {
124
+                $echec = _T('avis_connexion_erreur_fichier_cle_manquant_2');
125
+                echouer_etape_3b($echec);
126
+            }
127
+
128
+            $id_auteur = sql_insertq('spip_auteurs', [
129
+                'nom' => $nom,
130
+                'email' => $email,
131
+                'login' => $login,
132
+                'statut' => '0minirezo'
133
+            ]);
134
+            // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
135
+            @sql_updateq('spip_auteurs', ['webmestre' => 'oui'], "id_auteur=$id_auteur");
136
+            if (!auth_spip_modifier_pass($login, $pass, $id_auteur)) {
137
+                $echec = _T('avis_erreur_creation_compte');
138
+                echouer_etape_3b($echec);
139
+            }
140
+        }
141
+
142
+        // inserer email comme email webmaster principal
143
+        // (sauf s'il est vide: cas de la re-installation)
144
+        if ($email) {
145
+            ecrire_meta('email_webmaster', $email);
146
+        }
147
+
148
+        // Connecter directement celui qui vient de (re)donner son login
149
+        // mais sans cookie d'admin ni connexion longue
150
+        include_spip('inc/auth');
151
+        if (
152
+            !$auteur = auth_identifier_login($login, $pass)
153
+            or !auth_loger($auteur)
154
+        ) {
155
+            spip_log("login automatique impossible $auth_spip $session" . (is_countable($row) ? count($row) : 0));
156
+        }
157
+    }
158
+
159
+    // installer les metas
160
+    $config = charger_fonction('config', 'inc');
161
+    $config();
162
+
163
+    // activer les plugins
164
+    // leur installation ne peut pas se faire sur le meme hit, il faudra donc
165
+    // poursuivre au hit suivant
166
+    include_spip('inc/plugin');
167
+    actualise_plugins_actifs();
168
+
169
+
170
+    include_spip('inc/distant');
171
+    redirige_par_entete(parametre_url(self(), 'etape', '4', '&'));
172 172
 }
173 173
 
174 174
 function echouer_etape_3b($echec) {
175
-	echo minipres(
176
-		'AUTO',
177
-		info_progression_etape(3, 'etape_', 'install/', true) .
178
-		"<div class='error'><h3>$echec</h3>\n" .
179
-		'<p>' . _T('avis_connexion_echec_2') . '</p>' .
180
-		'</div>'
181
-	);
182
-	exit;
175
+    echo minipres(
176
+        'AUTO',
177
+        info_progression_etape(3, 'etape_', 'install/', true) .
178
+        "<div class='error'><h3>$echec</h3>\n" .
179
+        '<p>' . _T('avis_connexion_echec_2') . '</p>' .
180
+        '</div>'
181
+    );
182
+    exit;
183 183
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -91,17 +91,17 @@  discard block
 block discarded – undo
91 91
 		$cles = \Spip\Chiffrer\SpipCles::instance();
92 92
 		$secret = $cles->getSecretAuth();
93 93
 
94
-		$id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login=' . sql_quote($login));
94
+		$id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login='.sql_quote($login));
95 95
 		if ($id_auteur !== null) {
96 96
 			// c'est un auteur connu : si on a pas de secret il faut absolument qu'il se reconnecte avec le meme mot de passe
97 97
 			// pour restaurer la copie des cles
98 98
 			if (!$secret and !auth_spip_initialiser_secret()) {
99
-				$row = sql_fetsel('backup_cles, pass', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
99
+				$row = sql_fetsel('backup_cles, pass', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
100 100
 				if (empty($row['backup_cles']) or !$cles->restore($row['backup_cles'], $pass, $row['pass'], $id_auteur)) {
101 101
 					$echec = _T('avis_connexion_erreur_fichier_cle_manquant_1');
102 102
 					echouer_etape_3b($echec);
103 103
 				}
104
-				spip_log("Les cles secretes ont ete restaurées avec le backup du webmestre #$id_auteur", 'auth' . _LOG_INFO_IMPORTANTE);
104
+				spip_log("Les cles secretes ont ete restaurées avec le backup du webmestre #$id_auteur", 'auth'._LOG_INFO_IMPORTANTE);
105 105
 				$cles->save();
106 106
 			}
107 107
 
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
 				'email' => $email,
111 111
 				'login' => $login,
112 112
 				'statut' => '0minirezo'
113
-			], 'id_auteur=' . intval($id_auteur));
113
+			], 'id_auteur='.intval($id_auteur));
114 114
 			// le passer webmestre separement du reste, au cas ou l'alter n'aurait pas fonctionne
115 115
 			@sql_updateq('spip_auteurs', ['webmestre' => 'oui'], "id_auteur=$id_auteur");
116 116
 			if (!auth_spip_modifier_pass($login, $pass, $id_auteur)) {
@@ -152,7 +152,7 @@  discard block
 block discarded – undo
152 152
 			!$auteur = auth_identifier_login($login, $pass)
153 153
 			or !auth_loger($auteur)
154 154
 		) {
155
-			spip_log("login automatique impossible $auth_spip $session" . (is_countable($row) ? count($row) : 0));
155
+			spip_log("login automatique impossible $auth_spip $session".(is_countable($row) ? count($row) : 0));
156 156
 		}
157 157
 	}
158 158
 
@@ -174,9 +174,9 @@  discard block
 block discarded – undo
174 174
 function echouer_etape_3b($echec) {
175 175
 	echo minipres(
176 176
 		'AUTO',
177
-		info_progression_etape(3, 'etape_', 'install/', true) .
178
-		"<div class='error'><h3>$echec</h3>\n" .
179
-		'<p>' . _T('avis_connexion_echec_2') . '</p>' .
177
+		info_progression_etape(3, 'etape_', 'install/', true).
178
+		"<div class='error'><h3>$echec</h3>\n".
179
+		'<p>'._T('avis_connexion_echec_2').'</p>'.
180 180
 		'</div>'
181 181
 	);
182 182
 	exit;
Please login to merge, or discard this patch.
ecrire/src/Chiffrer/Password.php 2 patches
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -14,57 +14,57 @@
 block discarded – undo
14 14
 
15 15
 /** Vérification et hachage de mot de passe */
16 16
 class Password {
17
-	/**
18
-	 * verifier qu'un mot de passe en clair est correct a l'aide de son hash
19
-	 *
20
-	 * Le mot de passe est poivre via la cle secret_des_auth
21
-	 *
22
-	 * @param string $password_clair
23
-	 * @param string $password_hash
24
-	 * @param string $key
25
-	 * @return bool
26
-	 */
27
-	public static function verifier(
28
-		#[\SensitiveParameter]
29
-		string $password_clair,
30
-		#[\SensitiveParameter]
31
-		string $password_hash,
32
-		#[\SensitiveParameter]
33
-		?string $key = null
34
-	): bool {
35
-		$key ??= self::getDefaultKey();
36
-		if ($key) {
37
-			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
38
-			return password_verify($pass_poivre, $password_hash);
39
-		}
40
-		spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
41
-		return false;
42
-	}
17
+    /**
18
+     * verifier qu'un mot de passe en clair est correct a l'aide de son hash
19
+     *
20
+     * Le mot de passe est poivre via la cle secret_des_auth
21
+     *
22
+     * @param string $password_clair
23
+     * @param string $password_hash
24
+     * @param string $key
25
+     * @return bool
26
+     */
27
+    public static function verifier(
28
+        #[\SensitiveParameter]
29
+        string $password_clair,
30
+        #[\SensitiveParameter]
31
+        string $password_hash,
32
+        #[\SensitiveParameter]
33
+        ?string $key = null
34
+    ): bool {
35
+        $key ??= self::getDefaultKey();
36
+        if ($key) {
37
+            $pass_poivre = hash_hmac('sha256', $password_clair, $key);
38
+            return password_verify($pass_poivre, $password_hash);
39
+        }
40
+        spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
41
+        return false;
42
+    }
43 43
 
44
-	/**
45
-	 * Calculer un hash salé du mot de passe
46
-	 * @param string $password_clair
47
-	 * @param string $salt
48
-	 * @return string
49
-	 */
50
-	public static function hacher(
51
-		#[\SensitiveParameter]
52
-		string $password_clair,
53
-		#[\SensitiveParameter]
54
-		?string $key = null
55
-	): ?string {
56
-		$key ??= self::getDefaultKey();
57
-		// ne pas fournir un hash errone si la cle nous manque
58
-		if ($key) {
59
-			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
60
-			return password_hash($pass_poivre, PASSWORD_DEFAULT);
61
-		}
62
-		spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
63
-		return null;
64
-	}
44
+    /**
45
+     * Calculer un hash salé du mot de passe
46
+     * @param string $password_clair
47
+     * @param string $salt
48
+     * @return string
49
+     */
50
+    public static function hacher(
51
+        #[\SensitiveParameter]
52
+        string $password_clair,
53
+        #[\SensitiveParameter]
54
+        ?string $key = null
55
+    ): ?string {
56
+        $key ??= self::getDefaultKey();
57
+        // ne pas fournir un hash errone si la cle nous manque
58
+        if ($key) {
59
+            $pass_poivre = hash_hmac('sha256', $password_clair, $key);
60
+            return password_hash($pass_poivre, PASSWORD_DEFAULT);
61
+        }
62
+        spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
63
+        return null;
64
+    }
65 65
 
66
-	private static function getDefaultKey(): ?string {
67
-		$keys = SpipCles::instance();
68
-		return $keys->getSecretAuth();
69
-	}
66
+    private static function getDefaultKey(): ?string {
67
+        $keys = SpipCles::instance();
68
+        return $keys->getSecretAuth();
69
+    }
70 70
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
 			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
38 38
 			return password_verify($pass_poivre, $password_hash);
39 39
 		}
40
-		spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
40
+		spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer'._LOG_INFO_IMPORTANTE);
41 41
 		return false;
42 42
 	}
43 43
 
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
60 60
 			return password_hash($pass_poivre, PASSWORD_DEFAULT);
61 61
 		}
62
-		spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
62
+		spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer'._LOG_INFO_IMPORTANTE);
63 63
 		return null;
64 64
 	}
65 65
 
Please login to merge, or discard this patch.
ecrire/src/Chiffrer/Cles.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@
 block discarded – undo
30 30
 	public function generate(string $name): string {
31 31
 		$key = Chiffrement::keygen();
32 32
 		$this->keys[$name] = $key;
33
-		spip_log("Création de la cle $name", 'chiffrer' . _LOG_INFO_IMPORTANTE);
33
+		spip_log("Création de la cle $name", 'chiffrer'._LOG_INFO_IMPORTANTE);
34 34
 		return $key;
35 35
 	}
36 36
 
Please login to merge, or discard this patch.
Indentation   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -14,48 +14,48 @@
 block discarded – undo
14 14
 
15 15
 /** Conteneur de clés (chiffrement, authentification) */
16 16
 class Cles implements \Countable /* , ContainerInterface */ {
17
-	private array $keys;
18
-	public function __construct(array $keys) {
19
-		$this->keys = $keys;
20
-	}
21
-
22
-	public function has(string $name): bool {
23
-		return array_key_exists($name, $this->keys);
24
-	}
25
-
26
-	public function get(string $name): ?string {
27
-		return $this->keys[$name] ?? null;
28
-	}
29
-
30
-	public function generate(string $name): string {
31
-		$key = Chiffrement::keygen();
32
-		$this->keys[$name] = $key;
33
-		spip_log("Création de la cle $name", 'chiffrer' . _LOG_INFO_IMPORTANTE);
34
-		return $key;
35
-	}
36
-
37
-	public function set(
38
-		string $name,
39
-		#[\SensitiveParameter]
40
-		string $key
41
-	): void {
42
-		$this->keys[$name] = $key;
43
-	}
44
-
45
-	public function delete(string $name): bool {
46
-		if (isset($this->keys[$name])) {
47
-			unset($this->keys[$name]);
48
-			return true;
49
-		};
50
-		return false;
51
-	}
52
-
53
-	public function count(): int {
54
-		return count($this->keys);
55
-	}
56
-
57
-	public function toJson(): string {
58
-		$json = array_map('base64_encode', $this->keys);
59
-		return \json_encode($json);
60
-	}
17
+    private array $keys;
18
+    public function __construct(array $keys) {
19
+        $this->keys = $keys;
20
+    }
21
+
22
+    public function has(string $name): bool {
23
+        return array_key_exists($name, $this->keys);
24
+    }
25
+
26
+    public function get(string $name): ?string {
27
+        return $this->keys[$name] ?? null;
28
+    }
29
+
30
+    public function generate(string $name): string {
31
+        $key = Chiffrement::keygen();
32
+        $this->keys[$name] = $key;
33
+        spip_log("Création de la cle $name", 'chiffrer' . _LOG_INFO_IMPORTANTE);
34
+        return $key;
35
+    }
36
+
37
+    public function set(
38
+        string $name,
39
+        #[\SensitiveParameter]
40
+        string $key
41
+    ): void {
42
+        $this->keys[$name] = $key;
43
+    }
44
+
45
+    public function delete(string $name): bool {
46
+        if (isset($this->keys[$name])) {
47
+            unset($this->keys[$name]);
48
+            return true;
49
+        };
50
+        return false;
51
+    }
52
+
53
+    public function count(): int {
54
+        return count($this->keys);
55
+    }
56
+
57
+    public function toJson(): string {
58
+        $json = array_map('base64_encode', $this->keys);
59
+        return \json_encode($json);
60
+    }
61 61
 }
Please login to merge, or discard this patch.
ecrire/maj/2021.php 2 patches
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -19,15 +19,15 @@
 block discarded – undo
19 19
  * @package SPIP\Core\SQL\Upgrade
20 20
  **/
21 21
 if (!defined('_ECRIRE_INC_VERSION')) {
22
-	return;
22
+    return;
23 23
 }
24 24
 
25 25
 $GLOBALS['maj'][2021_02_18_00] = [
26
-	['sql_alter', "TABLE spip_auteurs CHANGE imessage imessage VARCHAR(3) DEFAULT '' NOT NULL" ],
27
-	['sql_updateq', 'spip_auteurs', ['imessage' => 'oui'], "imessage != 'non' OR imessage IS NULL" ],
26
+    ['sql_alter', "TABLE spip_auteurs CHANGE imessage imessage VARCHAR(3) DEFAULT '' NOT NULL" ],
27
+    ['sql_updateq', 'spip_auteurs', ['imessage' => 'oui'], "imessage != 'non' OR imessage IS NULL" ],
28 28
 ];
29 29
 
30 30
 $GLOBALS['maj'][2022_02_23_02] = [
31
-	['sql_alter', "TABLE spip_auteurs ADD backup_cles mediumtext DEFAULT '' NOT NULL" ],
32
-	['sql_delete', 'spip_meta', "nom='secret_du_site'" ],
31
+    ['sql_alter', "TABLE spip_auteurs ADD backup_cles mediumtext DEFAULT '' NOT NULL" ],
32
+    ['sql_delete', 'spip_meta', "nom='secret_du_site'" ],
33 33
 ];
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -23,11 +23,11 @@
 block discarded – undo
23 23
 }
24 24
 
25 25
 $GLOBALS['maj'][2021_02_18_00] = [
26
-	['sql_alter', "TABLE spip_auteurs CHANGE imessage imessage VARCHAR(3) DEFAULT '' NOT NULL" ],
27
-	['sql_updateq', 'spip_auteurs', ['imessage' => 'oui'], "imessage != 'non' OR imessage IS NULL" ],
26
+	['sql_alter', "TABLE spip_auteurs CHANGE imessage imessage VARCHAR(3) DEFAULT '' NOT NULL"],
27
+	['sql_updateq', 'spip_auteurs', ['imessage' => 'oui'], "imessage != 'non' OR imessage IS NULL"],
28 28
 ];
29 29
 
30 30
 $GLOBALS['maj'][2022_02_23_02] = [
31
-	['sql_alter', "TABLE spip_auteurs ADD backup_cles mediumtext DEFAULT '' NOT NULL" ],
32
-	['sql_delete', 'spip_meta', "nom='secret_du_site'" ],
31
+	['sql_alter', "TABLE spip_auteurs ADD backup_cles mediumtext DEFAULT '' NOT NULL"],
32
+	['sql_delete', 'spip_meta', "nom='secret_du_site'"],
33 33
 ];
Please login to merge, or discard this patch.
ecrire/action/inscrire_auteur.php 2 patches
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -61,7 +61,7 @@  discard block
 block discarded – undo
61 61
 	}
62 62
 
63 63
 	include_spip('base/abstract_sql');
64
-	$res = sql_select('statut, id_auteur, login, email, nom', 'spip_auteurs', 'email=' . sql_quote($desc['email']));
64
+	$res = sql_select('statut, id_auteur, login, email, nom', 'spip_auteurs', 'email='.sql_quote($desc['email']));
65 65
 	// erreur ?
66 66
 	if (!$res) {
67 67
 		return _T('titre_probleme_technique');
@@ -217,11 +217,11 @@  discard block
 block discarded – undo
217 217
 
218 218
 	$login = $login_base;
219 219
 
220
-	for ($i = 1;; $i++) {
220
+	for ($i = 1; ; $i++) {
221 221
 		if (!sql_countsel('spip_auteurs', "login='$login'")) {
222 222
 			return $login;
223 223
 		}
224
-		$login = $login_base . $i;
224
+		$login = $login_base.$i;
225 225
 	}
226 226
 }
227 227
 
@@ -361,11 +361,11 @@  discard block
 block discarded – undo
361 361
 	do {
362 362
 		// Un morceau du jeton est lisible en bdd pour éviter de devoir déchiffrer
363 363
 		// tous les jetons connus pour vérifier le jeton d’un auteur.
364
-		$public = substr(creer_uniqid(), 0, 7) . '.';
365
-		$jeton = $public . creer_uniqid();
366
-		$jeton_chiffre_prefixe = $public . Chiffrement::chiffrer($jeton, SpipCles::secret_du_site());
367
-		sql_updateq('spip_auteurs', ['cookie_oubli' => $jeton_chiffre_prefixe], 'id_auteur=' . intval($id_auteur));
368
-	} while (sql_countsel('spip_auteurs', 'cookie_oubli=' . sql_quote($jeton_chiffre_prefixe, '', 'string')) > 1);
364
+		$public = substr(creer_uniqid(), 0, 7).'.';
365
+		$jeton = $public.creer_uniqid();
366
+		$jeton_chiffre_prefixe = $public.Chiffrement::chiffrer($jeton, SpipCles::secret_du_site());
367
+		sql_updateq('spip_auteurs', ['cookie_oubli' => $jeton_chiffre_prefixe], 'id_auteur='.intval($id_auteur));
368
+	} while (sql_countsel('spip_auteurs', 'cookie_oubli='.sql_quote($jeton_chiffre_prefixe, '', 'string')) > 1);
369 369
 
370 370
 	return $jeton;
371 371
 }
@@ -382,7 +382,7 @@  discard block
 block discarded – undo
382 382
  */
383 383
 function auteur_lire_jeton(int $id_auteur, bool $autoInit = false): ?string {
384 384
 	include_spip('base/abstract_sql');
385
-	$jeton_chiffre_prefixe = sql_getfetsel('cookie_oubli', 'spip_auteurs', 'id_auteur=' . $id_auteur);
385
+	$jeton_chiffre_prefixe = sql_getfetsel('cookie_oubli', 'spip_auteurs', 'id_auteur='.$id_auteur);
386 386
 	if ($jeton_chiffre_prefixe) {
387 387
 		include_spip('inc/chiffrer');
388 388
 		$jeton_chiffre = substr($jeton_chiffre_prefixe, 8);
@@ -414,7 +414,7 @@  discard block
 block discarded – undo
414 414
 	$public = substr($jeton, 0, 8);
415 415
 
416 416
 	// Les auteurs qui ont un jetons ressemblant
417
-	$auteurs = sql_allfetsel('*', 'spip_auteurs', 'cookie_oubli LIKE ' . sql_quote($public . '%'));
417
+	$auteurs = sql_allfetsel('*', 'spip_auteurs', 'cookie_oubli LIKE '.sql_quote($public.'%'));
418 418
 	foreach ($auteurs as $auteur) {
419 419
 		$jeton_chiffre = substr($auteur['cookie_oubli'], 8);
420 420
 		$_jeton = Chiffrement::dechiffrer($jeton_chiffre, SpipCles::secret_du_site());
@@ -433,5 +433,5 @@  discard block
 block discarded – undo
433 433
  */
434 434
 function auteur_effacer_jeton($id_auteur) {
435 435
 	include_spip('base/abstract_sql');
436
-	return sql_updateq('spip_auteurs', ['cookie_oubli' => ''], 'id_auteur=' . intval($id_auteur));
436
+	return sql_updateq('spip_auteurs', ['cookie_oubli' => ''], 'id_auteur='.intval($id_auteur));
437 437
 }
Please login to merge, or discard this patch.
Indentation   +238 added lines, -238 removed lines patch added patch discarded remove patch
@@ -21,7 +21,7 @@  discard block
 block discarded – undo
21 21
 
22 22
 
23 23
 if (!defined('_ECRIRE_INC_VERSION')) {
24
-	return;
24
+    return;
25 25
 }
26 26
 
27 27
 
@@ -44,70 +44,70 @@  discard block
 block discarded – undo
44 44
  * @return array|string
45 45
  */
46 46
 function action_inscrire_auteur_dist($statut, $mail_complet, $nom, $options = []) {
47
-	if (!is_array($options)) {
48
-		$options = ['id' => $options];
49
-	}
50
-
51
-	if (function_exists('test_inscription')) {
52
-		$f = 'test_inscription';
53
-	} else {
54
-		$f = 'test_inscription_dist';
55
-	}
56
-	$desc = $f($statut, $mail_complet, $nom, $options);
57
-
58
-	// erreur ?
59
-	if (!is_array($desc)) {
60
-		return _T($desc);
61
-	}
62
-
63
-	include_spip('base/abstract_sql');
64
-	$res = sql_select('statut, id_auteur, login, email, nom', 'spip_auteurs', 'email=' . sql_quote($desc['email']));
65
-	// erreur ?
66
-	if (!$res) {
67
-		return _T('titre_probleme_technique');
68
-	}
69
-
70
-	$row = sql_fetch($res);
71
-	sql_free($res);
72
-	if ($row) {
73
-		if (isset($options['force_nouveau']) and $options['force_nouveau'] == true) {
74
-			$desc['id_auteur'] = $row['id_auteur'];
75
-			$desc = inscription_nouveau($desc);
76
-		} else {
77
-			$desc = $row;
78
-		}
79
-	} else // s'il n'existe pas deja, creer les identifiants
80
-	{
81
-		$desc = inscription_nouveau($desc);
82
-	}
83
-
84
-	// erreur ?
85
-	if (!is_array($desc)) {
86
-		return $desc;
87
-	}
88
-
89
-
90
-	// generer le mot de passe (ou le refaire si compte inutilise)
91
-	$desc['pass'] = creer_pass_pour_auteur($desc['id_auteur']);
92
-
93
-	// attribuer un jeton pour confirmation par clic sur un lien
94
-	$desc['jeton'] = auteur_attribuer_jeton($desc['id_auteur']);
95
-
96
-	// charger de suite cette fonction, pour ses utilitaires
97
-	$envoyer_inscription = charger_fonction('envoyer_inscription', '');
98
-	[$sujet, $msg, $from, $head] = $envoyer_inscription($desc, $nom, $statut, $options);
99
-
100
-	$notifications = charger_fonction('notifications', 'inc');
101
-	notifications_envoyer_mails($mail_complet, $msg, $sujet, $from, $head);
102
-
103
-	// Notifications
104
-	$notifications(
105
-		'inscription',
106
-		$desc['id_auteur'],
107
-		['nom' => $desc['nom'], 'email' => $desc['email']]
108
-	);
109
-
110
-	return $desc;
47
+    if (!is_array($options)) {
48
+        $options = ['id' => $options];
49
+    }
50
+
51
+    if (function_exists('test_inscription')) {
52
+        $f = 'test_inscription';
53
+    } else {
54
+        $f = 'test_inscription_dist';
55
+    }
56
+    $desc = $f($statut, $mail_complet, $nom, $options);
57
+
58
+    // erreur ?
59
+    if (!is_array($desc)) {
60
+        return _T($desc);
61
+    }
62
+
63
+    include_spip('base/abstract_sql');
64
+    $res = sql_select('statut, id_auteur, login, email, nom', 'spip_auteurs', 'email=' . sql_quote($desc['email']));
65
+    // erreur ?
66
+    if (!$res) {
67
+        return _T('titre_probleme_technique');
68
+    }
69
+
70
+    $row = sql_fetch($res);
71
+    sql_free($res);
72
+    if ($row) {
73
+        if (isset($options['force_nouveau']) and $options['force_nouveau'] == true) {
74
+            $desc['id_auteur'] = $row['id_auteur'];
75
+            $desc = inscription_nouveau($desc);
76
+        } else {
77
+            $desc = $row;
78
+        }
79
+    } else // s'il n'existe pas deja, creer les identifiants
80
+    {
81
+        $desc = inscription_nouveau($desc);
82
+    }
83
+
84
+    // erreur ?
85
+    if (!is_array($desc)) {
86
+        return $desc;
87
+    }
88
+
89
+
90
+    // generer le mot de passe (ou le refaire si compte inutilise)
91
+    $desc['pass'] = creer_pass_pour_auteur($desc['id_auteur']);
92
+
93
+    // attribuer un jeton pour confirmation par clic sur un lien
94
+    $desc['jeton'] = auteur_attribuer_jeton($desc['id_auteur']);
95
+
96
+    // charger de suite cette fonction, pour ses utilitaires
97
+    $envoyer_inscription = charger_fonction('envoyer_inscription', '');
98
+    [$sujet, $msg, $from, $head] = $envoyer_inscription($desc, $nom, $statut, $options);
99
+
100
+    $notifications = charger_fonction('notifications', 'inc');
101
+    notifications_envoyer_mails($mail_complet, $msg, $sujet, $from, $head);
102
+
103
+    // Notifications
104
+    $notifications(
105
+        'inscription',
106
+        $desc['id_auteur'],
107
+        ['nom' => $desc['nom'], 'email' => $desc['email']]
108
+    );
109
+
110
+    return $desc;
111 111
 }
112 112
 
113 113
 
@@ -130,23 +130,23 @@  discard block
 block discarded – undo
130 130
  *
131 131
  */
132 132
 function test_inscription_dist($statut, $mail, $nom, $options) {
133
-	include_spip('inc/filtres');
134
-	if (!$r = email_valide($mail)) {
135
-		return 'info_email_invalide';
136
-	}
137
-	$nom = trim(corriger_caracteres($nom));
138
-	$res = ['email' => $r, 'nom' => $nom, 'prefs' => $statut];
139
-	if (isset($options['login'])) {
140
-		$login = trim(corriger_caracteres($options['login']));
141
-		if ((strlen($login) >= _LOGIN_TROP_COURT) and (strlen($nom) <= 64)) {
142
-			$res['login'] = $login;
143
-		}
144
-	}
145
-	if (!isset($res['login']) and ((strlen($nom) < _LOGIN_TROP_COURT) or (strlen($nom) > 64))) {
146
-		return 'ecrire:info_login_trop_court';
147
-	}
148
-
149
-	return $res;
133
+    include_spip('inc/filtres');
134
+    if (!$r = email_valide($mail)) {
135
+        return 'info_email_invalide';
136
+    }
137
+    $nom = trim(corriger_caracteres($nom));
138
+    $res = ['email' => $r, 'nom' => $nom, 'prefs' => $statut];
139
+    if (isset($options['login'])) {
140
+        $login = trim(corriger_caracteres($options['login']));
141
+        if ((strlen($login) >= _LOGIN_TROP_COURT) and (strlen($nom) <= 64)) {
142
+            $res['login'] = $login;
143
+        }
144
+    }
145
+    if (!isset($res['login']) and ((strlen($nom) < _LOGIN_TROP_COURT) or (strlen($nom) > 64))) {
146
+        return 'ecrire:info_login_trop_court';
147
+    }
148
+
149
+    return $res;
150 150
 }
151 151
 
152 152
 
@@ -159,33 +159,33 @@  discard block
 block discarded – undo
159 159
  * @return mixed|string
160 160
  */
161 161
 function inscription_nouveau($desc) {
162
-	if (!isset($desc['login']) or !strlen($desc['login'])) {
163
-		$desc['login'] = test_login($desc['nom'], $desc['email']);
164
-	}
162
+    if (!isset($desc['login']) or !strlen($desc['login'])) {
163
+        $desc['login'] = test_login($desc['nom'], $desc['email']);
164
+    }
165 165
 
166
-	$desc['statut'] = 'nouveau';
167
-	include_spip('action/editer_auteur');
168
-	if (isset($desc['id_auteur'])) {
169
-		$id_auteur = $desc['id_auteur'];
170
-	} else {
171
-		$id_auteur = auteur_inserer();
172
-	}
166
+    $desc['statut'] = 'nouveau';
167
+    include_spip('action/editer_auteur');
168
+    if (isset($desc['id_auteur'])) {
169
+        $id_auteur = $desc['id_auteur'];
170
+    } else {
171
+        $id_auteur = auteur_inserer();
172
+    }
173 173
 
174
-	if (!$id_auteur) {
175
-		return _T('titre_probleme_technique');
176
-	}
174
+    if (!$id_auteur) {
175
+        return _T('titre_probleme_technique');
176
+    }
177 177
 
178
-	$desc['lang'] = $GLOBALS['spip_lang'];
178
+    $desc['lang'] = $GLOBALS['spip_lang'];
179 179
 
180
-	include_spip('inc/autoriser');
181
-	// lever l'autorisation pour pouvoir modifier le statut
182
-	autoriser_exception('modifier', 'auteur', $id_auteur);
183
-	auteur_modifier($id_auteur, $desc);
184
-	autoriser_exception('modifier', 'auteur', $id_auteur, false);
180
+    include_spip('inc/autoriser');
181
+    // lever l'autorisation pour pouvoir modifier le statut
182
+    autoriser_exception('modifier', 'auteur', $id_auteur);
183
+    auteur_modifier($id_auteur, $desc);
184
+    autoriser_exception('modifier', 'auteur', $id_auteur, false);
185 185
 
186
-	$desc['id_auteur'] = $id_auteur;
186
+    $desc['id_auteur'] = $id_auteur;
187 187
 
188
-	return $desc;
188
+    return $desc;
189 189
 }
190 190
 
191 191
 
@@ -202,27 +202,27 @@  discard block
 block discarded – undo
202 202
  * @return string
203 203
  */
204 204
 function test_login($nom, $mail) {
205
-	include_spip('inc/charsets');
206
-	$nom = strtolower(translitteration($nom));
207
-	$login_base = preg_replace('/[^\w\d_]/', '_', $nom);
208
-
209
-	// il faut eviter que le login soit vraiment trop court
210
-	if (strlen($login_base) < 3) {
211
-		$mail = strtolower(translitteration(preg_replace('/@.*/', '', $mail)));
212
-		$login_base = preg_replace('/[^\w\d]/', '_', $mail);
213
-	}
214
-	if (strlen($login_base) < 3) {
215
-		$login_base = 'user';
216
-	}
217
-
218
-	$login = $login_base;
219
-
220
-	for ($i = 1;; $i++) {
221
-		if (!sql_countsel('spip_auteurs', "login='$login'")) {
222
-			return $login;
223
-		}
224
-		$login = $login_base . $i;
225
-	}
205
+    include_spip('inc/charsets');
206
+    $nom = strtolower(translitteration($nom));
207
+    $login_base = preg_replace('/[^\w\d_]/', '_', $nom);
208
+
209
+    // il faut eviter que le login soit vraiment trop court
210
+    if (strlen($login_base) < 3) {
211
+        $mail = strtolower(translitteration(preg_replace('/@.*/', '', $mail)));
212
+        $login_base = preg_replace('/[^\w\d]/', '_', $mail);
213
+    }
214
+    if (strlen($login_base) < 3) {
215
+        $login_base = 'user';
216
+    }
217
+
218
+    $login = $login_base;
219
+
220
+    for ($i = 1;; $i++) {
221
+        if (!sql_countsel('spip_auteurs', "login='$login'")) {
222
+            return $login;
223
+        }
224
+        $login = $login_base . $i;
225
+    }
226 226
 }
227 227
 
228 228
 
@@ -240,26 +240,26 @@  discard block
 block discarded – undo
240 240
  */
241 241
 function envoyer_inscription_dist($desc, $nom, $mode, $options = []) {
242 242
 
243
-	$contexte = array_merge($desc, $options);
244
-	$contexte['nom'] = $nom;
245
-	$contexte['mode'] = $mode;
246
-	$contexte['url_confirm'] = generer_url_action('confirmer_inscription', '', true, true);
247
-	$contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'email', $desc['email']);
248
-	$contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'jeton', $desc['jeton']);
249
-	// S'il y a l'option redirect, on l'ajoute directement ici
250
-	if (isset($options['redirect'])) {
251
-		$contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'redirect', $options['redirect']);
252
-	}
253
-
254
-	$modele_mail = 'modeles/mail_inscription';
255
-	if (isset($options['modele_mail']) and $options['modele_mail']) {
256
-		$modele_mail = $options['modele_mail'];
257
-	}
258
-	$message = recuperer_fond($modele_mail, $contexte);
259
-	$from = ($options['from'] ?? '');
260
-	$head = '';
261
-
262
-	return ['', $message, $from, $head];
243
+    $contexte = array_merge($desc, $options);
244
+    $contexte['nom'] = $nom;
245
+    $contexte['mode'] = $mode;
246
+    $contexte['url_confirm'] = generer_url_action('confirmer_inscription', '', true, true);
247
+    $contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'email', $desc['email']);
248
+    $contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'jeton', $desc['jeton']);
249
+    // S'il y a l'option redirect, on l'ajoute directement ici
250
+    if (isset($options['redirect'])) {
251
+        $contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'redirect', $options['redirect']);
252
+    }
253
+
254
+    $modele_mail = 'modeles/mail_inscription';
255
+    if (isset($options['modele_mail']) and $options['modele_mail']) {
256
+        $modele_mail = $options['modele_mail'];
257
+    }
258
+    $message = recuperer_fond($modele_mail, $contexte);
259
+    $from = ($options['from'] ?? '');
260
+    $head = '';
261
+
262
+    return ['', $message, $from, $head];
263 263
 }
264 264
 
265 265
 
@@ -270,12 +270,12 @@  discard block
 block discarded – undo
270 270
  * @return string
271 271
  */
272 272
 function creer_pass_pour_auteur($id_auteur) {
273
-	include_spip('inc/acces');
274
-	$pass = creer_pass_aleatoire(max(_PASS_LONGUEUR_MINI, 16), $id_auteur);
275
-	include_spip('action/editer_auteur');
276
-	auteur_instituer($id_auteur, ['pass' => $pass]);
273
+    include_spip('inc/acces');
274
+    $pass = creer_pass_aleatoire(max(_PASS_LONGUEUR_MINI, 16), $id_auteur);
275
+    include_spip('action/editer_auteur');
276
+    auteur_instituer($id_auteur, ['pass' => $pass]);
277 277
 
278
-	return $pass;
278
+    return $pass;
279 279
 }
280 280
 
281 281
 /**
@@ -288,17 +288,17 @@  discard block
 block discarded – undo
288 288
  * @return string
289 289
  */
290 290
 function tester_statut_inscription($statut_tmp, $id) {
291
-	include_spip('inc/autoriser');
292
-	if ($statut_tmp) {
293
-		return autoriser('inscrireauteur', $statut_tmp, $id) ? $statut_tmp : '';
294
-	} elseif (
295
-		autoriser('inscrireauteur', $statut_tmp = '1comite', $id)
296
-		or autoriser('inscrireauteur', $statut_tmp = '6forum', $id)
297
-	) {
298
-		return $statut_tmp;
299
-	}
300
-
301
-	return '';
291
+    include_spip('inc/autoriser');
292
+    if ($statut_tmp) {
293
+        return autoriser('inscrireauteur', $statut_tmp, $id) ? $statut_tmp : '';
294
+    } elseif (
295
+        autoriser('inscrireauteur', $statut_tmp = '1comite', $id)
296
+        or autoriser('inscrireauteur', $statut_tmp = '6forum', $id)
297
+    ) {
298
+        return $statut_tmp;
299
+    }
300
+
301
+    return '';
302 302
 }
303 303
 
304 304
 
@@ -312,35 +312,35 @@  discard block
 block discarded – undo
312 312
  * @return array
313 313
  */
314 314
 function confirmer_statut_inscription($auteur) {
315
-	// securite
316
-	if ($auteur['statut'] != 'nouveau') {
317
-		return $auteur;
318
-	}
319
-
320
-	$s = $auteur['prefs'];
321
-	// securite, au cas ou prefs aurait ete corrompu (ou deja ecrase par un tableau serialize)
322
-	if (!preg_match(',^\w+$,', $s)) {
323
-		$s = '6forum';
324
-	}
325
-	include_spip('inc/autoriser');
326
-	if (!autoriser('inscrireauteur', $s)) {
327
-		return $auteur;
328
-	}
329
-
330
-	include_spip('inc/autoriser');
331
-	// accorder l'autorisation de modif du statut auteur
332
-	autoriser_exception('modifier', 'auteur', $auteur['id_auteur']);
333
-	include_spip('action/editer_auteur');
334
-	// changer le statut
335
-	auteur_modifier($auteur['id_auteur'], ['statut' => $s]);
336
-	unset($_COOKIE['spip_session']); // forcer la maj de la session
337
-	// lever l'autorisation de modif du statut auteur
338
-	autoriser_exception('modifier', 'auteur', $auteur['id_auteur'], false);
339
-
340
-	// mettre a jour le statut
341
-	$auteur['statut'] = $s;
342
-
343
-	return $auteur;
315
+    // securite
316
+    if ($auteur['statut'] != 'nouveau') {
317
+        return $auteur;
318
+    }
319
+
320
+    $s = $auteur['prefs'];
321
+    // securite, au cas ou prefs aurait ete corrompu (ou deja ecrase par un tableau serialize)
322
+    if (!preg_match(',^\w+$,', $s)) {
323
+        $s = '6forum';
324
+    }
325
+    include_spip('inc/autoriser');
326
+    if (!autoriser('inscrireauteur', $s)) {
327
+        return $auteur;
328
+    }
329
+
330
+    include_spip('inc/autoriser');
331
+    // accorder l'autorisation de modif du statut auteur
332
+    autoriser_exception('modifier', 'auteur', $auteur['id_auteur']);
333
+    include_spip('action/editer_auteur');
334
+    // changer le statut
335
+    auteur_modifier($auteur['id_auteur'], ['statut' => $s]);
336
+    unset($_COOKIE['spip_session']); // forcer la maj de la session
337
+    // lever l'autorisation de modif du statut auteur
338
+    autoriser_exception('modifier', 'auteur', $auteur['id_auteur'], false);
339
+
340
+    // mettre a jour le statut
341
+    $auteur['statut'] = $s;
342
+
343
+    return $auteur;
344 344
 }
345 345
 
346 346
 
@@ -354,20 +354,20 @@  discard block
 block discarded – undo
354 354
  * @return string
355 355
  */
356 356
 function auteur_attribuer_jeton($id_auteur): string {
357
-	include_spip('base/abstract_sql');
358
-	include_spip('inc/acces');
359
-	include_spip('inc/chiffrer');
360
-	// s'assurer de l'unicite du jeton pour le couple (email,cookie)
361
-	do {
362
-		// Un morceau du jeton est lisible en bdd pour éviter de devoir déchiffrer
363
-		// tous les jetons connus pour vérifier le jeton d’un auteur.
364
-		$public = substr(creer_uniqid(), 0, 7) . '.';
365
-		$jeton = $public . creer_uniqid();
366
-		$jeton_chiffre_prefixe = $public . Chiffrement::chiffrer($jeton, SpipCles::secret_du_site());
367
-		sql_updateq('spip_auteurs', ['cookie_oubli' => $jeton_chiffre_prefixe], 'id_auteur=' . intval($id_auteur));
368
-	} while (sql_countsel('spip_auteurs', 'cookie_oubli=' . sql_quote($jeton_chiffre_prefixe, '', 'string')) > 1);
369
-
370
-	return $jeton;
357
+    include_spip('base/abstract_sql');
358
+    include_spip('inc/acces');
359
+    include_spip('inc/chiffrer');
360
+    // s'assurer de l'unicite du jeton pour le couple (email,cookie)
361
+    do {
362
+        // Un morceau du jeton est lisible en bdd pour éviter de devoir déchiffrer
363
+        // tous les jetons connus pour vérifier le jeton d’un auteur.
364
+        $public = substr(creer_uniqid(), 0, 7) . '.';
365
+        $jeton = $public . creer_uniqid();
366
+        $jeton_chiffre_prefixe = $public . Chiffrement::chiffrer($jeton, SpipCles::secret_du_site());
367
+        sql_updateq('spip_auteurs', ['cookie_oubli' => $jeton_chiffre_prefixe], 'id_auteur=' . intval($id_auteur));
368
+    } while (sql_countsel('spip_auteurs', 'cookie_oubli=' . sql_quote($jeton_chiffre_prefixe, '', 'string')) > 1);
369
+
370
+    return $jeton;
371 371
 }
372 372
 
373 373
 /**
@@ -381,20 +381,20 @@  discard block
 block discarded – undo
381 381
  * @return string|null
382 382
  */
383 383
 function auteur_lire_jeton(int $id_auteur, bool $autoInit = false): ?string {
384
-	include_spip('base/abstract_sql');
385
-	$jeton_chiffre_prefixe = sql_getfetsel('cookie_oubli', 'spip_auteurs', 'id_auteur=' . $id_auteur);
386
-	if ($jeton_chiffre_prefixe) {
387
-		include_spip('inc/chiffrer');
388
-		$jeton_chiffre = substr($jeton_chiffre_prefixe, 8);
389
-		$jeton = Chiffrement::dechiffrer($jeton_chiffre, SpipCles::secret_du_site());
390
-		if ($jeton) {
391
-			return $jeton;
392
-		}
393
-	}
394
-	if ($autoInit) {
395
-		return auteur_attribuer_jeton($id_auteur);
396
-	}
397
-	return null;
384
+    include_spip('base/abstract_sql');
385
+    $jeton_chiffre_prefixe = sql_getfetsel('cookie_oubli', 'spip_auteurs', 'id_auteur=' . $id_auteur);
386
+    if ($jeton_chiffre_prefixe) {
387
+        include_spip('inc/chiffrer');
388
+        $jeton_chiffre = substr($jeton_chiffre_prefixe, 8);
389
+        $jeton = Chiffrement::dechiffrer($jeton_chiffre, SpipCles::secret_du_site());
390
+        if ($jeton) {
391
+            return $jeton;
392
+        }
393
+    }
394
+    if ($autoInit) {
395
+        return auteur_attribuer_jeton($id_auteur);
396
+    }
397
+    return null;
398 398
 }
399 399
 
400 400
 /**
@@ -404,25 +404,25 @@  discard block
 block discarded – undo
404 404
  * @return array|bool
405 405
  */
406 406
 function auteur_verifier_jeton($jeton) {
407
-	// refuser un jeton corrompu
408
-	if (preg_match(',[^0-9a-f.],i', $jeton)) {
409
-		return false;
410
-	}
411
-
412
-	include_spip('base/abstract_sql');
413
-	include_spip('inc/chiffrer');
414
-	$public = substr($jeton, 0, 8);
415
-
416
-	// Les auteurs qui ont un jetons ressemblant
417
-	$auteurs = sql_allfetsel('*', 'spip_auteurs', 'cookie_oubli LIKE ' . sql_quote($public . '%'));
418
-	foreach ($auteurs as $auteur) {
419
-		$jeton_chiffre = substr($auteur['cookie_oubli'], 8);
420
-		$_jeton = Chiffrement::dechiffrer($jeton_chiffre, SpipCles::secret_du_site());
421
-		if ($_jeton and hash_equals($jeton, $_jeton)) {
422
-			return $auteur;
423
-		}
424
-	}
425
-	return false;
407
+    // refuser un jeton corrompu
408
+    if (preg_match(',[^0-9a-f.],i', $jeton)) {
409
+        return false;
410
+    }
411
+
412
+    include_spip('base/abstract_sql');
413
+    include_spip('inc/chiffrer');
414
+    $public = substr($jeton, 0, 8);
415
+
416
+    // Les auteurs qui ont un jetons ressemblant
417
+    $auteurs = sql_allfetsel('*', 'spip_auteurs', 'cookie_oubli LIKE ' . sql_quote($public . '%'));
418
+    foreach ($auteurs as $auteur) {
419
+        $jeton_chiffre = substr($auteur['cookie_oubli'], 8);
420
+        $_jeton = Chiffrement::dechiffrer($jeton_chiffre, SpipCles::secret_du_site());
421
+        if ($_jeton and hash_equals($jeton, $_jeton)) {
422
+            return $auteur;
423
+        }
424
+    }
425
+    return false;
426 426
 }
427 427
 
428 428
 /**
@@ -432,6 +432,6 @@  discard block
 block discarded – undo
432 432
  * @return bool
433 433
  */
434 434
 function auteur_effacer_jeton($id_auteur) {
435
-	include_spip('base/abstract_sql');
436
-	return sql_updateq('spip_auteurs', ['cookie_oubli' => ''], 'id_auteur=' . intval($id_auteur));
435
+    include_spip('base/abstract_sql');
436
+    return sql_updateq('spip_auteurs', ['cookie_oubli' => ''], 'id_auteur=' . intval($id_auteur));
437 437
 }
Please login to merge, or discard this patch.