Completed
Push — master ( 6c9939...4ccfda )
by cam
01:06
created
ecrire/inc/simplexml_to_array.php 1 patch
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 
@@ -23,12 +23,12 @@  discard block
 block discarded – undo
23 23
  * @return array
24 24
  */
25 25
 function inc_simplexml_to_array_dist($u, $utiliser_namespace = false) {
26
-	// decoder la chaine en SimpleXML si pas deja fait
27
-	if (is_string($u)) {
28
-		$u = simplexml_load_string($u);
29
-	}
26
+    // decoder la chaine en SimpleXML si pas deja fait
27
+    if (is_string($u)) {
28
+        $u = simplexml_load_string($u);
29
+    }
30 30
 
31
-	return ['root' => @xmlObjToArr($u, $utiliser_namespace)];
31
+    return ['root' => @xmlObjToArr($u, $utiliser_namespace)];
32 32
 }
33 33
 
34 34
 
@@ -43,67 +43,67 @@  discard block
 block discarded – undo
43 43
  **/
44 44
 function xmlObjToArr($obj, $utiliser_namespace = false) {
45 45
 
46
-	$namespace = [];
47
-	$tableau = [];
46
+    $namespace = [];
47
+    $tableau = [];
48 48
 
49
-	// Cette fonction getDocNamespaces() est longue sur de gros xml. On permet donc
50
-	// de l'activer ou pas suivant le contenu supposé du XML
51
-	if (is_object($obj)) {
52
-		if (is_array($utiliser_namespace)) {
53
-			$namespace = $utiliser_namespace;
54
-		} else {
55
-			if ($utiliser_namespace) {
56
-				$namespace = $obj->getDocNamespaces(true);
57
-			}
58
-			$namespace[null] = null;
59
-		}
49
+    // Cette fonction getDocNamespaces() est longue sur de gros xml. On permet donc
50
+    // de l'activer ou pas suivant le contenu supposé du XML
51
+    if (is_object($obj)) {
52
+        if (is_array($utiliser_namespace)) {
53
+            $namespace = $utiliser_namespace;
54
+        } else {
55
+            if ($utiliser_namespace) {
56
+                $namespace = $obj->getDocNamespaces(true);
57
+            }
58
+            $namespace[null] = null;
59
+        }
60 60
 
61
-		$name = strtolower((string)$obj->getName());
62
-		$text = trim((string)$obj);
63
-		if (strlen($text) <= 0) {
64
-			$text = null;
65
-		}
61
+        $name = strtolower((string)$obj->getName());
62
+        $text = trim((string)$obj);
63
+        if (strlen($text) <= 0) {
64
+            $text = null;
65
+        }
66 66
 
67
-		$children = [];
68
-		$attributes = [];
67
+        $children = [];
68
+        $attributes = [];
69 69
 
70
-		// get info for all namespaces
71
-		foreach ($namespace as $ns => $nsUrl) {
72
-			// attributes
73
-			$objAttributes = $obj->attributes($ns, true);
74
-			foreach ($objAttributes as $attributeName => $attributeValue) {
75
-				$attribName = strtolower(trim((string)$attributeName));
76
-				$attribVal = trim((string)$attributeValue);
77
-				if (!empty($ns)) {
78
-					$attribName = $ns . ':' . $attribName;
79
-				}
80
-				$attributes[$attribName] = $attribVal;
81
-			}
70
+        // get info for all namespaces
71
+        foreach ($namespace as $ns => $nsUrl) {
72
+            // attributes
73
+            $objAttributes = $obj->attributes($ns, true);
74
+            foreach ($objAttributes as $attributeName => $attributeValue) {
75
+                $attribName = strtolower(trim((string)$attributeName));
76
+                $attribVal = trim((string)$attributeValue);
77
+                if (!empty($ns)) {
78
+                    $attribName = $ns . ':' . $attribName;
79
+                }
80
+                $attributes[$attribName] = $attribVal;
81
+            }
82 82
 
83
-			// children
84
-			$objChildren = $obj->children($ns, true);
85
-			foreach ($objChildren as $childName => $child) {
86
-				$childName = strtolower((string)$childName);
87
-				if (!empty($ns)) {
88
-					$childName = $ns . ':' . $childName;
89
-				}
90
-				$children[$childName][] = xmlObjToArr($child, $namespace);
91
-			}
92
-		}
83
+            // children
84
+            $objChildren = $obj->children($ns, true);
85
+            foreach ($objChildren as $childName => $child) {
86
+                $childName = strtolower((string)$childName);
87
+                if (!empty($ns)) {
88
+                    $childName = $ns . ':' . $childName;
89
+                }
90
+                $children[$childName][] = xmlObjToArr($child, $namespace);
91
+            }
92
+        }
93 93
 
94
-		$tableau = [
95
-			'name' => $name,
96
-		];
97
-		if ($text) {
98
-			$tableau['text'] = $text;
99
-		}
100
-		if ($attributes) {
101
-			$tableau['attributes'] = $attributes;
102
-		}
103
-		if ($children) {
104
-			$tableau['children'] = $children;
105
-		}
106
-	}
94
+        $tableau = [
95
+            'name' => $name,
96
+        ];
97
+        if ($text) {
98
+            $tableau['text'] = $text;
99
+        }
100
+        if ($attributes) {
101
+            $tableau['attributes'] = $attributes;
102
+        }
103
+        if ($children) {
104
+            $tableau['children'] = $children;
105
+        }
106
+    }
107 107
 
108
-	return $tableau;
108
+    return $tableau;
109 109
 }
Please login to merge, or discard this patch.
ecrire/inc/prepare_recherche.php 1 patch
Indentation   +142 added lines, -142 removed lines patch added patch discarded remove patch
@@ -17,12 +17,12 @@  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('inc/rechercher');
24 24
 if (!defined('_DELAI_CACHE_RESULTATS')) {
25
-	define('_DELAI_CACHE_RESULTATS', 600);
25
+    define('_DELAI_CACHE_RESULTATS', 600);
26 26
 }
27 27
 
28 28
 /**
@@ -49,129 +49,129 @@  discard block
 block discarded – undo
49 49
  * @return array
50 50
  */
51 51
 function inc_prepare_recherche_dist(
52
-	$recherche,
53
-	$table = 'articles',
54
-	$cond = false,
55
-	$serveur = '',
56
-	$modificateurs = [],
57
-	$primary = ''
52
+    $recherche,
53
+    $table = 'articles',
54
+    $cond = false,
55
+    $serveur = '',
56
+    $modificateurs = [],
57
+    $primary = ''
58 58
 ) {
59
-	$where = null;
60
-	$rows = null;
61
-	static $cache = [];
62
-	$delai_fraicheur = min(
63
-		\_DELAI_CACHE_RESULTATS,
64
-		time() - ($GLOBALS['meta']['derniere_modif'] ?? 0)
65
-	);
66
-
67
-	// si recherche n'est pas dans le contexte, on va prendre en globals
68
-	// ca permet de faire des inclure simple.
69
-	if (!isset($recherche) and isset($GLOBALS['recherche'])) {
70
-		$recherche = $GLOBALS['recherche'];
71
-	}
72
-
73
-	// traiter le cas {recherche?}
74
-	if ($cond and !strlen($recherche)) {
75
-		return [
76
-			'0 as points' /* as points */, /* where */
77
-			''
78
-		];
79
-	}
80
-
81
-
82
-	$rechercher = false;
83
-
84
-	$where_resultat_recent = sql_date_proche('maj', (0 - ($delai_fraicheur + 100)), ' SECOND');
85
-	if (!isset($cache[$serveur][$table][$recherche])) {
86
-		$hash_serv = ($serveur ? substr(md5($serveur), 0, 16) : '');
87
-		$hash = substr(md5($recherche . $table), 0, 16);
88
-		$where = "(resultats.recherche='$hash' AND resultats.table_objet=" . sql_quote($table) . " AND resultats.serveur='$hash_serv')";
89
-		$row = sql_fetsel(
90
-			'recherche',
91
-			'spip_resultats AS resultats',
92
-			$where . " AND $where_resultat_recent",
93
-			'',
94
-			'',
95
-			'0,1'
96
-		);
97
-		if (
98
-			!$row
99
-			or (defined('_VAR_MODE') and _VAR_MODE == 'recalcul')
100
-		) {
101
-			$rechercher = true;
102
-		}
103
-	}
104
-
105
-	// si on n'a pas encore traite les donnees dans une boucle precedente
106
-	if ($rechercher) {
107
-		//$tables = liste_des_champs();
108
-		$x = objet_type($table);
109
-		$points = recherche_en_base(
110
-			$recherche,
111
-			$x,
112
-			[
113
-				'score' => true,
114
-				'toutvoir' => true,
115
-				'jointures' => true
116
-			],
117
-			$serveur
118
-		);
119
-		// pas de résultat, pas de point
120
-		$points = $points[$x] ?? [];
121
-
122
-		// permettre aux plugins de modifier le resultat
123
-		$points = pipeline('prepare_recherche', [
124
-			'args' => [
125
-				'type' => $x,
126
-				'recherche' => $recherche,
127
-				'serveur' => $serveur,
128
-				'modificateurs' => $modificateurs
129
-			],
130
-			'data' => $points
131
-		]);
132
-
133
-		// supprimer les anciens resultats de cette recherche
134
-		// et les resultats trop vieux avec une marge
135
-		// pas de AS resultats dans un delete (mysql)
136
-		$whered = str_replace(
137
-			['resultats.recherche', 'resultats.table_objet', 'resultats.serveur'],
138
-			['recherche', 'table_objet', 'serveur'],
139
-			$where
140
-		);
141
-
142
-		sql_delete(
143
-			'spip_resultats',
144
-			"NOT($where_resultat_recent) OR ($whered)"
145
-		);
146
-
147
-		// inserer les resultats dans la table de cache des resultats
148
-		if (is_countable($points) ? count($points) : 0) {
149
-			$tab_couples = [];
150
-			foreach ($points as $id => $p) {
151
-				$tab_couples[] = [
152
-					'recherche' => $hash,
153
-					'id' => $id,
154
-					'points' => $p['score'],
155
-					'table_objet' => $table,
156
-					'serveur' => $hash_serv,
157
-				];
158
-			}
159
-			sql_insertq_multi('spip_resultats', $tab_couples, []);
160
-		}
161
-	}
162
-
163
-	if (!isset($cache[$serveur][$table][$recherche])) {
164
-		if (!$serveur) {
165
-			$cache[$serveur][$table][$recherche] = ['resultats.points AS points', $where];
166
-		} else {
167
-			if (sql_countsel('spip_resultats as resultats', $where)) {
168
-				$rows = sql_allfetsel('resultats.id,resultats.points', 'spip_resultats as resultats', $where);
169
-			}
170
-			$cache[$serveur][$table][$recherche] = generer_select_where_explicites($table, $primary, $rows, $serveur);
171
-		}
172
-	}
173
-
174
-	return $cache[$serveur][$table][$recherche];
59
+    $where = null;
60
+    $rows = null;
61
+    static $cache = [];
62
+    $delai_fraicheur = min(
63
+        \_DELAI_CACHE_RESULTATS,
64
+        time() - ($GLOBALS['meta']['derniere_modif'] ?? 0)
65
+    );
66
+
67
+    // si recherche n'est pas dans le contexte, on va prendre en globals
68
+    // ca permet de faire des inclure simple.
69
+    if (!isset($recherche) and isset($GLOBALS['recherche'])) {
70
+        $recherche = $GLOBALS['recherche'];
71
+    }
72
+
73
+    // traiter le cas {recherche?}
74
+    if ($cond and !strlen($recherche)) {
75
+        return [
76
+            '0 as points' /* as points */, /* where */
77
+            ''
78
+        ];
79
+    }
80
+
81
+
82
+    $rechercher = false;
83
+
84
+    $where_resultat_recent = sql_date_proche('maj', (0 - ($delai_fraicheur + 100)), ' SECOND');
85
+    if (!isset($cache[$serveur][$table][$recherche])) {
86
+        $hash_serv = ($serveur ? substr(md5($serveur), 0, 16) : '');
87
+        $hash = substr(md5($recherche . $table), 0, 16);
88
+        $where = "(resultats.recherche='$hash' AND resultats.table_objet=" . sql_quote($table) . " AND resultats.serveur='$hash_serv')";
89
+        $row = sql_fetsel(
90
+            'recherche',
91
+            'spip_resultats AS resultats',
92
+            $where . " AND $where_resultat_recent",
93
+            '',
94
+            '',
95
+            '0,1'
96
+        );
97
+        if (
98
+            !$row
99
+            or (defined('_VAR_MODE') and _VAR_MODE == 'recalcul')
100
+        ) {
101
+            $rechercher = true;
102
+        }
103
+    }
104
+
105
+    // si on n'a pas encore traite les donnees dans une boucle precedente
106
+    if ($rechercher) {
107
+        //$tables = liste_des_champs();
108
+        $x = objet_type($table);
109
+        $points = recherche_en_base(
110
+            $recherche,
111
+            $x,
112
+            [
113
+                'score' => true,
114
+                'toutvoir' => true,
115
+                'jointures' => true
116
+            ],
117
+            $serveur
118
+        );
119
+        // pas de résultat, pas de point
120
+        $points = $points[$x] ?? [];
121
+
122
+        // permettre aux plugins de modifier le resultat
123
+        $points = pipeline('prepare_recherche', [
124
+            'args' => [
125
+                'type' => $x,
126
+                'recherche' => $recherche,
127
+                'serveur' => $serveur,
128
+                'modificateurs' => $modificateurs
129
+            ],
130
+            'data' => $points
131
+        ]);
132
+
133
+        // supprimer les anciens resultats de cette recherche
134
+        // et les resultats trop vieux avec une marge
135
+        // pas de AS resultats dans un delete (mysql)
136
+        $whered = str_replace(
137
+            ['resultats.recherche', 'resultats.table_objet', 'resultats.serveur'],
138
+            ['recherche', 'table_objet', 'serveur'],
139
+            $where
140
+        );
141
+
142
+        sql_delete(
143
+            'spip_resultats',
144
+            "NOT($where_resultat_recent) OR ($whered)"
145
+        );
146
+
147
+        // inserer les resultats dans la table de cache des resultats
148
+        if (is_countable($points) ? count($points) : 0) {
149
+            $tab_couples = [];
150
+            foreach ($points as $id => $p) {
151
+                $tab_couples[] = [
152
+                    'recherche' => $hash,
153
+                    'id' => $id,
154
+                    'points' => $p['score'],
155
+                    'table_objet' => $table,
156
+                    'serveur' => $hash_serv,
157
+                ];
158
+            }
159
+            sql_insertq_multi('spip_resultats', $tab_couples, []);
160
+        }
161
+    }
162
+
163
+    if (!isset($cache[$serveur][$table][$recherche])) {
164
+        if (!$serveur) {
165
+            $cache[$serveur][$table][$recherche] = ['resultats.points AS points', $where];
166
+        } else {
167
+            if (sql_countsel('spip_resultats as resultats', $where)) {
168
+                $rows = sql_allfetsel('resultats.id,resultats.points', 'spip_resultats as resultats', $where);
169
+            }
170
+            $cache[$serveur][$table][$recherche] = generer_select_where_explicites($table, $primary, $rows, $serveur);
171
+        }
172
+    }
173
+
174
+    return $cache[$serveur][$table][$recherche];
175 175
 }
176 176
 
177 177
 
@@ -187,22 +187,22 @@  discard block
 block discarded – undo
187 187
  * @return array
188 188
  */
189 189
 function generer_select_where_explicites($table, $primary, $rows, $serveur) {
190
-	# calculer le {id_article IN()} et le {... as points}
191
-	if (!count($rows)) {
192
-		return ["''", '0=1'];
193
-	} else {
194
-		$listes_ids = [];
195
-		$select = '0';
196
-		foreach ($rows as $r) {
197
-			$listes_ids[$r['points']][] = $r['id'];
198
-		}
199
-
200
-		foreach ($listes_ids as $p => $ids) {
201
-			$select .= "+$p*(" .
202
-				sql_in("$table.$primary", $ids, '', $serveur)
203
-				. ') ';
204
-		}
205
-
206
-		return ["$select AS points ", sql_in("$table.$primary", array_map('reset', $rows), '', $serveur)];
207
-	}
190
+    # calculer le {id_article IN()} et le {... as points}
191
+    if (!count($rows)) {
192
+        return ["''", '0=1'];
193
+    } else {
194
+        $listes_ids = [];
195
+        $select = '0';
196
+        foreach ($rows as $r) {
197
+            $listes_ids[$r['points']][] = $r['id'];
198
+        }
199
+
200
+        foreach ($listes_ids as $p => $ids) {
201
+            $select .= "+$p*(" .
202
+                sql_in("$table.$primary", $ids, '', $serveur)
203
+                . ') ';
204
+        }
205
+
206
+        return ["$select AS points ", sql_in("$table.$primary", array_map('reset', $rows), '', $serveur)];
207
+    }
208 208
 }
Please login to merge, or discard this patch.
ecrire/inc/log.php 1 patch
Indentation   +100 added lines, -100 removed lines patch added patch discarded remove patch
@@ -11,107 +11,107 @@
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 function inc_log_dist($message, $logname = null, $logdir = null, $logsuf = null) {
18
-	static $test_repertoire = [];
19
-	static $compteur = [];
20
-	static $debugverb = ''; // pour ne pas le recalculer au reappel
21
-
22
-	if (is_null($logname) or !is_string($logname)) {
23
-		$logname = defined('_FILE_LOG') ? _FILE_LOG : 'spip';
24
-	}
25
-	if (!isset($compteur[$logname])) {
26
-		$compteur[$logname] = 0;
27
-	}
28
-	if (
29
-		$logname != 'maj'
30
-		and defined('_MAX_LOG')
31
-		and (
32
-			$compteur[$logname]++ > _MAX_LOG
33
-			or !$GLOBALS['nombre_de_logs']
34
-			or !$GLOBALS['taille_des_logs']
35
-		)
36
-	) {
37
-		return;
38
-	}
39
-
40
-	$logfile = ($logdir ?? _DIR_LOG)
41
-		. ($logname)
42
-		. ($logsuf ?? _FILE_LOG_SUFFIX);
43
-
44
-	if (!isset($test_repertoire[$d = dirname($logfile)])) {
45
-		$test_repertoire[$d] = false; // eviter une recursivite en cas d'erreur de sous_repertoire
46
-		$test_repertoire[$d] = (@is_dir($d) ? true : (function_exists('sous_repertoire') ? sous_repertoire(
47
-			$d,
48
-			'',
49
-			false,
50
-			true
51
-		) : false));
52
-	}
53
-
54
-	// si spip_log() dans mes_options, ou repertoire log/ non present, poser dans tmp/
55
-	if (!defined('_DIR_LOG') or !$test_repertoire[$d]) {
56
-		$logfile = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES . $logname . '.log';
57
-	}
58
-
59
-	$rotate = 0;
60
-	$pid = '(pid ' . @getmypid() . ')';
61
-
62
-	// accepter spip_log( Array )
63
-	if (!is_string($message)) {
64
-		$message = var_export($message, true);
65
-	}
66
-
67
-	if (!$debugverb and defined('_LOG_FILELINE') and _LOG_FILELINE) {
68
-		$debug = debug_backtrace();
69
-		$l = $debug[1]['line'];
70
-		$fi = $debug[1]['file'];
71
-		if (strncmp($fi, _ROOT_RACINE, strlen(_ROOT_RACINE)) == 0) {
72
-			$fi = substr($fi, strlen(_ROOT_RACINE));
73
-		}
74
-		$fu = $debug[2]['function'] ?? '';
75
-		$debugverb = "$fi:L$l:$fu" . '():';
76
-	}
77
-
78
-	$m = date('Y-m-d H:i:s') . ' ' . ($GLOBALS['ip'] ?? '') . ' ' . $pid . ' '
79
-		//distinguer les logs prives et publics dans les grep
80
-		. $debugverb
81
-		. (test_espace_prive() ? ':Pri:' : ':Pub:')
82
-		. preg_replace("/\n*$/", "\n", $message);
83
-
84
-
85
-	if (
86
-		@is_readable($logfile)
87
-		and (!$s = @filesize($logfile) or $s > $GLOBALS['taille_des_logs'] * 1024)
88
-	) {
89
-		$rotate = $GLOBALS['nombre_de_logs'];
90
-		$m .= "[-- rotate --]\n";
91
-	}
92
-
93
-	$f = @fopen($logfile, 'ab');
94
-	if ($f) {
95
-		fputs($f, (defined('_LOG_BRUT') and _LOG_BRUT) ? $m : str_replace('<', '&lt;', $m));
96
-		fclose($f);
97
-	}
98
-
99
-	if (
100
-		$rotate-- > 0
101
-		and function_exists('spip_unlink')
102
-	) {
103
-		spip_unlink($logfile . '.' . $rotate);
104
-		while ($rotate--) {
105
-			@rename($logfile . ($rotate ? '.' . $rotate : ''), $logfile . '.' . ($rotate + 1));
106
-		}
107
-	}
108
-
109
-	// Dupliquer les erreurs specifiques dans le log general
110
-	if (
111
-		defined('_FILE_LOG')
112
-		and ($logname !== _FILE_LOG)
113
-	) {
114
-		inc_log_dist($logname == 'maj' ? 'cf maj.log' : $message);
115
-	}
116
-	$debugverb = '';
18
+    static $test_repertoire = [];
19
+    static $compteur = [];
20
+    static $debugverb = ''; // pour ne pas le recalculer au reappel
21
+
22
+    if (is_null($logname) or !is_string($logname)) {
23
+        $logname = defined('_FILE_LOG') ? _FILE_LOG : 'spip';
24
+    }
25
+    if (!isset($compteur[$logname])) {
26
+        $compteur[$logname] = 0;
27
+    }
28
+    if (
29
+        $logname != 'maj'
30
+        and defined('_MAX_LOG')
31
+        and (
32
+            $compteur[$logname]++ > _MAX_LOG
33
+            or !$GLOBALS['nombre_de_logs']
34
+            or !$GLOBALS['taille_des_logs']
35
+        )
36
+    ) {
37
+        return;
38
+    }
39
+
40
+    $logfile = ($logdir ?? _DIR_LOG)
41
+        . ($logname)
42
+        . ($logsuf ?? _FILE_LOG_SUFFIX);
43
+
44
+    if (!isset($test_repertoire[$d = dirname($logfile)])) {
45
+        $test_repertoire[$d] = false; // eviter une recursivite en cas d'erreur de sous_repertoire
46
+        $test_repertoire[$d] = (@is_dir($d) ? true : (function_exists('sous_repertoire') ? sous_repertoire(
47
+            $d,
48
+            '',
49
+            false,
50
+            true
51
+        ) : false));
52
+    }
53
+
54
+    // si spip_log() dans mes_options, ou repertoire log/ non present, poser dans tmp/
55
+    if (!defined('_DIR_LOG') or !$test_repertoire[$d]) {
56
+        $logfile = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES . $logname . '.log';
57
+    }
58
+
59
+    $rotate = 0;
60
+    $pid = '(pid ' . @getmypid() . ')';
61
+
62
+    // accepter spip_log( Array )
63
+    if (!is_string($message)) {
64
+        $message = var_export($message, true);
65
+    }
66
+
67
+    if (!$debugverb and defined('_LOG_FILELINE') and _LOG_FILELINE) {
68
+        $debug = debug_backtrace();
69
+        $l = $debug[1]['line'];
70
+        $fi = $debug[1]['file'];
71
+        if (strncmp($fi, _ROOT_RACINE, strlen(_ROOT_RACINE)) == 0) {
72
+            $fi = substr($fi, strlen(_ROOT_RACINE));
73
+        }
74
+        $fu = $debug[2]['function'] ?? '';
75
+        $debugverb = "$fi:L$l:$fu" . '():';
76
+    }
77
+
78
+    $m = date('Y-m-d H:i:s') . ' ' . ($GLOBALS['ip'] ?? '') . ' ' . $pid . ' '
79
+        //distinguer les logs prives et publics dans les grep
80
+        . $debugverb
81
+        . (test_espace_prive() ? ':Pri:' : ':Pub:')
82
+        . preg_replace("/\n*$/", "\n", $message);
83
+
84
+
85
+    if (
86
+        @is_readable($logfile)
87
+        and (!$s = @filesize($logfile) or $s > $GLOBALS['taille_des_logs'] * 1024)
88
+    ) {
89
+        $rotate = $GLOBALS['nombre_de_logs'];
90
+        $m .= "[-- rotate --]\n";
91
+    }
92
+
93
+    $f = @fopen($logfile, 'ab');
94
+    if ($f) {
95
+        fputs($f, (defined('_LOG_BRUT') and _LOG_BRUT) ? $m : str_replace('<', '&lt;', $m));
96
+        fclose($f);
97
+    }
98
+
99
+    if (
100
+        $rotate-- > 0
101
+        and function_exists('spip_unlink')
102
+    ) {
103
+        spip_unlink($logfile . '.' . $rotate);
104
+        while ($rotate--) {
105
+            @rename($logfile . ($rotate ? '.' . $rotate : ''), $logfile . '.' . ($rotate + 1));
106
+        }
107
+    }
108
+
109
+    // Dupliquer les erreurs specifiques dans le log general
110
+    if (
111
+        defined('_FILE_LOG')
112
+        and ($logname !== _FILE_LOG)
113
+    ) {
114
+        inc_log_dist($logname == 'maj' ? 'cf maj.log' : $message);
115
+    }
116
+    $debugverb = '';
117 117
 }
Please login to merge, or discard this patch.
ecrire/inc/envoyer_mail.php 1 patch
Indentation   +150 added lines, -150 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Mail
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/charsets');
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
  * @return string
33 33
  */
34 34
 function nettoyer_titre_email($titre) {
35
-	return str_replace("\n", ' ', nettoyer_caracteres_mail(textebrut(corriger_typo($titre))));
35
+    return str_replace("\n", ' ', nettoyer_caracteres_mail(textebrut(corriger_typo($titre))));
36 36
 }
37 37
 
38 38
 /**
@@ -48,23 +48,23 @@  discard block
 block discarded – undo
48 48
  */
49 49
 function nettoyer_caracteres_mail($t) {
50 50
 
51
-	$t = filtrer_entites($t);
51
+    $t = filtrer_entites($t);
52 52
 
53
-	if ($GLOBALS['meta']['charset'] <> 'utf-8') {
54
-		$t = str_replace(
55
-			['&#8217;', '&#8220;', '&#8221;'],
56
-			["'", '"', '"'],
57
-			$t
58
-		);
59
-	}
53
+    if ($GLOBALS['meta']['charset'] <> 'utf-8') {
54
+        $t = str_replace(
55
+            ['&#8217;', '&#8220;', '&#8221;'],
56
+            ["'", '"', '"'],
57
+            $t
58
+        );
59
+    }
60 60
 
61
-	$t = str_replace(
62
-		['&mdash;', '&endash;'],
63
-		['--', '-'],
64
-		$t
65
-	);
61
+    $t = str_replace(
62
+        ['&mdash;', '&endash;'],
63
+        ['--', '-'],
64
+        $t
65
+    );
66 66
 
67
-	return $t;
67
+    return $t;
68 68
 }
69 69
 
70 70
 /**
@@ -97,86 +97,86 @@  discard block
 block discarded – undo
97 97
  */
98 98
 function inc_envoyer_mail_dist($destinataire, $sujet, $corps, $from = '', $headers = '') {
99 99
 
100
-	if (!email_valide($destinataire)) {
101
-		return false;
102
-	}
103
-	if ($destinataire == _T('info_mail_fournisseur')) {
104
-		return false;
105
-	} // tres fort
106
-
107
-	// Fournir si possible un Message-Id: conforme au RFC1036,
108
-	// sinon SpamAssassin denoncera un MSGID_FROM_MTA_HEADER
109
-
110
-	$email_envoi = $GLOBALS['meta']['email_envoi'];
111
-	if (!email_valide($email_envoi)) {
112
-		spip_log('Meta email_envoi invalide. Le mail sera probablement vu comme spam.');
113
-		$email_envoi = $destinataire;
114
-	}
115
-
116
-	$parts = '';
117
-	if (is_array($corps)) {
118
-		$texte = $corps['texte'];
119
-		$from = ($corps['from'] ?? $from);
120
-		$headers = ($corps['headers'] ?? $headers);
121
-		if (is_array($headers)) {
122
-			$headers = implode("\n", $headers);
123
-		}
124
-		if (isset($corps['pieces_jointes']) and function_exists('mail_embarquer_pieces_jointes')) {
125
-			$parts = mail_embarquer_pieces_jointes($corps['pieces_jointes']);
126
-		}
127
-	} else {
128
-		$texte = $corps;
129
-	}
130
-
131
-	if (!$from) {
132
-		$from = $email_envoi;
133
-	}
134
-
135
-	// ceci est la RegExp NO_REAL_NAME faisant hurler SpamAssassin
136
-	if (preg_match('/^["\s]*\<?\S+\@\S+\>?\s*$/', $from)) {
137
-		$from .= ' (' . str_replace(')', '', translitteration(str_replace('@', ' at ', $from))) . ')';
138
-	}
139
-
140
-	// nettoyer les &eacute; &#8217, &emdash; etc...
141
-	// les 'cliquer ici' etc sont a eviter;  voir:
142
-	// http://mta.org.ua/spamassassin-2.55/stuff/wiki.CustomRulesets/20050914/rules/french_rules.cf
143
-	$texte = nettoyer_caracteres_mail($texte);
144
-	$sujet = nettoyer_caracteres_mail($sujet);
145
-
146
-	// encoder le sujet si possible selon la RFC
147
-	if (init_mb_string()) {
148
-		# un bug de mb_string casse mb_encode_mimeheader si l'encoding interne
149
-		# est UTF-8 et le charset iso-8859-1 (constate php5-mac ; php4.3-debian)
150
-		$charset = $GLOBALS['meta']['charset'];
151
-		mb_internal_encoding($charset);
152
-		$sujet = mb_encode_mimeheader($sujet, $charset, 'Q', "\n");
153
-		mb_internal_encoding('utf-8');
154
-	}
155
-
156
-	if (function_exists('wordwrap') && (preg_match(',multipart/mixed,', $headers) == 0)) {
157
-		$texte = wordwrap($texte);
158
-	}
159
-
160
-	[$headers, $texte] = mail_normaliser_headers($headers, $from, $destinataire, $texte, $parts);
161
-
162
-	if (_OS_SERVEUR == 'windows') {
163
-		$texte = preg_replace("@\r*\n@", "\r\n", $texte);
164
-		$headers = preg_replace("@\r*\n@", "\r\n", $headers);
165
-		$sujet = preg_replace("@\r*\n@", "\r\n", $sujet);
166
-	}
167
-
168
-	spip_log("mail $destinataire\n$sujet\n$headers", 'mails');
169
-	// mode TEST : forcer l'email
170
-	if (defined('_TEST_EMAIL_DEST')) {
171
-		if (!_TEST_EMAIL_DEST) {
172
-			return false;
173
-		} else {
174
-			$texte = "Dest : $destinataire\r\n" . $texte;
175
-			$destinataire = _TEST_EMAIL_DEST;
176
-		}
177
-	}
178
-
179
-	return @mail($destinataire, $sujet, $texte, $headers);
100
+    if (!email_valide($destinataire)) {
101
+        return false;
102
+    }
103
+    if ($destinataire == _T('info_mail_fournisseur')) {
104
+        return false;
105
+    } // tres fort
106
+
107
+    // Fournir si possible un Message-Id: conforme au RFC1036,
108
+    // sinon SpamAssassin denoncera un MSGID_FROM_MTA_HEADER
109
+
110
+    $email_envoi = $GLOBALS['meta']['email_envoi'];
111
+    if (!email_valide($email_envoi)) {
112
+        spip_log('Meta email_envoi invalide. Le mail sera probablement vu comme spam.');
113
+        $email_envoi = $destinataire;
114
+    }
115
+
116
+    $parts = '';
117
+    if (is_array($corps)) {
118
+        $texte = $corps['texte'];
119
+        $from = ($corps['from'] ?? $from);
120
+        $headers = ($corps['headers'] ?? $headers);
121
+        if (is_array($headers)) {
122
+            $headers = implode("\n", $headers);
123
+        }
124
+        if (isset($corps['pieces_jointes']) and function_exists('mail_embarquer_pieces_jointes')) {
125
+            $parts = mail_embarquer_pieces_jointes($corps['pieces_jointes']);
126
+        }
127
+    } else {
128
+        $texte = $corps;
129
+    }
130
+
131
+    if (!$from) {
132
+        $from = $email_envoi;
133
+    }
134
+
135
+    // ceci est la RegExp NO_REAL_NAME faisant hurler SpamAssassin
136
+    if (preg_match('/^["\s]*\<?\S+\@\S+\>?\s*$/', $from)) {
137
+        $from .= ' (' . str_replace(')', '', translitteration(str_replace('@', ' at ', $from))) . ')';
138
+    }
139
+
140
+    // nettoyer les &eacute; &#8217, &emdash; etc...
141
+    // les 'cliquer ici' etc sont a eviter;  voir:
142
+    // http://mta.org.ua/spamassassin-2.55/stuff/wiki.CustomRulesets/20050914/rules/french_rules.cf
143
+    $texte = nettoyer_caracteres_mail($texte);
144
+    $sujet = nettoyer_caracteres_mail($sujet);
145
+
146
+    // encoder le sujet si possible selon la RFC
147
+    if (init_mb_string()) {
148
+        # un bug de mb_string casse mb_encode_mimeheader si l'encoding interne
149
+        # est UTF-8 et le charset iso-8859-1 (constate php5-mac ; php4.3-debian)
150
+        $charset = $GLOBALS['meta']['charset'];
151
+        mb_internal_encoding($charset);
152
+        $sujet = mb_encode_mimeheader($sujet, $charset, 'Q', "\n");
153
+        mb_internal_encoding('utf-8');
154
+    }
155
+
156
+    if (function_exists('wordwrap') && (preg_match(',multipart/mixed,', $headers) == 0)) {
157
+        $texte = wordwrap($texte);
158
+    }
159
+
160
+    [$headers, $texte] = mail_normaliser_headers($headers, $from, $destinataire, $texte, $parts);
161
+
162
+    if (_OS_SERVEUR == 'windows') {
163
+        $texte = preg_replace("@\r*\n@", "\r\n", $texte);
164
+        $headers = preg_replace("@\r*\n@", "\r\n", $headers);
165
+        $sujet = preg_replace("@\r*\n@", "\r\n", $sujet);
166
+    }
167
+
168
+    spip_log("mail $destinataire\n$sujet\n$headers", 'mails');
169
+    // mode TEST : forcer l'email
170
+    if (defined('_TEST_EMAIL_DEST')) {
171
+        if (!_TEST_EMAIL_DEST) {
172
+            return false;
173
+        } else {
174
+            $texte = "Dest : $destinataire\r\n" . $texte;
175
+            $destinataire = _TEST_EMAIL_DEST;
176
+        }
177
+    }
178
+
179
+    return @mail($destinataire, $sujet, $texte, $headers);
180 180
 }
181 181
 
182 182
 /**
@@ -190,58 +190,58 @@  discard block
 block discarded – undo
190 190
  * @return array
191 191
  */
192 192
 function mail_normaliser_headers($headers, $from, $to, $texte, $parts = '') {
193
-	$charset = $GLOBALS['meta']['charset'];
194
-
195
-	// Ajouter le Content-Type et consort s'il n'y est pas deja
196
-	if (strpos($headers, 'Content-Type: ') === false) {
197
-		$type =
198
-			"Content-Type: text/plain;charset=\"$charset\";\n" .
199
-			"Content-Transfer-Encoding: 8bit\n";
200
-	} else {
201
-		$type = '';
202
-	}
203
-
204
-	// calculer un identifiant unique
205
-	// Marie Toto <[email protected]> => @toto.com
206
-	if (preg_match('/@[^\s>]+/', $from, $domain)) {
207
-		$domain = $domain[0];
208
-	}
209
-	else {
210
-		$domain = '@unknown-' . md5($from) . '.org';
211
-	}
212
-	$uniq = random_int(0, mt_getrandmax()) . '_' . md5($to . $texte) . $domain;
213
-
214
-	// Si multi-part, s'en servir comme borne ...
215
-	if ($parts) {
216
-		$texte = "--$uniq\n$type\n" . $texte . "\n";
217
-		foreach ($parts as $part) {
218
-			$n = strlen($part[1]) . ($part[0] ? "\n" : '');
219
-			$e = join("\n", $part[0]);
220
-			$texte .= "\n--$uniq\nContent-Length: $n$e\n\n" . $part[1];
221
-		}
222
-		$texte .= "\n\n--$uniq--\n";
223
-		// Si boundary n'est pas entre guillemets,
224
-		// elle est comprise mais le charset est ignoree !
225
-		$type = "Content-Type: multipart/mixed; boundary=\"$uniq\"\n";
226
-	}
227
-
228
-	// .. et s'en servir pour plaire a SpamAssassin
229
-
230
-	$mid = 'Message-Id: <' . $uniq . '>';
231
-
232
-	// indispensable pour les sites qui collent d'office From: serveur-http
233
-	// sauf si deja mis par l'envoyeur
234
-	$rep = (strpos($headers, 'Reply-To:') !== false) ? '' : "Reply-To: $from\n";
235
-
236
-	// Nettoyer les en-tetes envoyees
237
-	// Ajouter le \n final
238
-	if (strlen($headers = trim($headers))) {
239
-		$headers .= "\n";
240
-	}
241
-
242
-	// Et mentionner l'indeboulonable nomenclature ratee
243
-
244
-	$headers .= "From: $from\n$type$rep$mid\nMIME-Version: 1.0\n";
245
-
246
-	return [$headers, $texte];
193
+    $charset = $GLOBALS['meta']['charset'];
194
+
195
+    // Ajouter le Content-Type et consort s'il n'y est pas deja
196
+    if (strpos($headers, 'Content-Type: ') === false) {
197
+        $type =
198
+            "Content-Type: text/plain;charset=\"$charset\";\n" .
199
+            "Content-Transfer-Encoding: 8bit\n";
200
+    } else {
201
+        $type = '';
202
+    }
203
+
204
+    // calculer un identifiant unique
205
+    // Marie Toto <[email protected]> => @toto.com
206
+    if (preg_match('/@[^\s>]+/', $from, $domain)) {
207
+        $domain = $domain[0];
208
+    }
209
+    else {
210
+        $domain = '@unknown-' . md5($from) . '.org';
211
+    }
212
+    $uniq = random_int(0, mt_getrandmax()) . '_' . md5($to . $texte) . $domain;
213
+
214
+    // Si multi-part, s'en servir comme borne ...
215
+    if ($parts) {
216
+        $texte = "--$uniq\n$type\n" . $texte . "\n";
217
+        foreach ($parts as $part) {
218
+            $n = strlen($part[1]) . ($part[0] ? "\n" : '');
219
+            $e = join("\n", $part[0]);
220
+            $texte .= "\n--$uniq\nContent-Length: $n$e\n\n" . $part[1];
221
+        }
222
+        $texte .= "\n\n--$uniq--\n";
223
+        // Si boundary n'est pas entre guillemets,
224
+        // elle est comprise mais le charset est ignoree !
225
+        $type = "Content-Type: multipart/mixed; boundary=\"$uniq\"\n";
226
+    }
227
+
228
+    // .. et s'en servir pour plaire a SpamAssassin
229
+
230
+    $mid = 'Message-Id: <' . $uniq . '>';
231
+
232
+    // indispensable pour les sites qui collent d'office From: serveur-http
233
+    // sauf si deja mis par l'envoyeur
234
+    $rep = (strpos($headers, 'Reply-To:') !== false) ? '' : "Reply-To: $from\n";
235
+
236
+    // Nettoyer les en-tetes envoyees
237
+    // Ajouter le \n final
238
+    if (strlen($headers = trim($headers))) {
239
+        $headers .= "\n";
240
+    }
241
+
242
+    // Et mentionner l'indeboulonable nomenclature ratee
243
+
244
+    $headers .= "From: $from\n$type$rep$mid\nMIME-Version: 1.0\n";
245
+
246
+    return [$headers, $texte];
247 247
 }
Please login to merge, or discard this patch.
ecrire/inc/lang.php 1 patch
Indentation   +252 added lines, -252 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Langue
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 
@@ -39,36 +39,36 @@  discard block
 block discarded – undo
39 39
  **/
40 40
 function changer_langue($lang, $liste_langues = null) {
41 41
 
42
-	if (is_null($liste_langues)) {
43
-		$liste_langues = @$GLOBALS['meta']['langues_proposees'] . ',' . @$GLOBALS['meta']['langues_multilingue'];
44
-	}
45
-	else {
46
-		if (is_array($liste_langues)) {
47
-			$liste_langues = implode(',', $liste_langues);
48
-		}
49
-	}
50
-	$liste_langues = ',' . $liste_langues . ',';
51
-
52
-	// Si la langue demandee n'existe pas, on essaie d'autres variantes
53
-	// Exemple : 'pt-br' => 'pt_br' => 'pt'
54
-	$lang = str_replace('-', '_', trim($lang));
55
-	if (!$lang) {
56
-		return false;
57
-	}
58
-
59
-	if (
60
-		strpos($liste_langues, (string) ",$lang,") !== false
61
-		or ($lang = preg_replace(',_.*,', '', $lang)
62
-			and strpos($liste_langues, (string) ",$lang,") !== false)
63
-	) {
64
-		$GLOBALS['spip_lang_rtl'] = lang_dir($lang, '', '_rtl');
65
-		$GLOBALS['spip_lang_right'] = $GLOBALS['spip_lang_rtl'] ? 'left' : 'right';
66
-		$GLOBALS['spip_lang_left'] = $GLOBALS['spip_lang_rtl'] ? 'right' : 'left';
67
-
68
-		return $GLOBALS['spip_lang'] = $lang;
69
-	} else {
70
-		return false;
71
-	}
42
+    if (is_null($liste_langues)) {
43
+        $liste_langues = @$GLOBALS['meta']['langues_proposees'] . ',' . @$GLOBALS['meta']['langues_multilingue'];
44
+    }
45
+    else {
46
+        if (is_array($liste_langues)) {
47
+            $liste_langues = implode(',', $liste_langues);
48
+        }
49
+    }
50
+    $liste_langues = ',' . $liste_langues . ',';
51
+
52
+    // Si la langue demandee n'existe pas, on essaie d'autres variantes
53
+    // Exemple : 'pt-br' => 'pt_br' => 'pt'
54
+    $lang = str_replace('-', '_', trim($lang));
55
+    if (!$lang) {
56
+        return false;
57
+    }
58
+
59
+    if (
60
+        strpos($liste_langues, (string) ",$lang,") !== false
61
+        or ($lang = preg_replace(',_.*,', '', $lang)
62
+            and strpos($liste_langues, (string) ",$lang,") !== false)
63
+    ) {
64
+        $GLOBALS['spip_lang_rtl'] = lang_dir($lang, '', '_rtl');
65
+        $GLOBALS['spip_lang_right'] = $GLOBALS['spip_lang_rtl'] ? 'left' : 'right';
66
+        $GLOBALS['spip_lang_left'] = $GLOBALS['spip_lang_rtl'] ? 'right' : 'left';
67
+
68
+        return $GLOBALS['spip_lang'] = $lang;
69
+    } else {
70
+        return false;
71
+    }
72 72
 }
73 73
 
74 74
 //
@@ -81,9 +81,9 @@  discard block
 block discarded – undo
81 81
 // par exemple le francais pour l'espagnol, l'anglais pour l'allemand, etc.
82 82
 
83 83
 function choisir_traduction($trads, $lang = '') {
84
-	$k = approcher_langue($trads, $lang);
84
+    $k = approcher_langue($trads, $lang);
85 85
 
86
-	return $k ? $trads[$k] : array_shift($trads);
86
+    return $k ? $trads[$k] : array_shift($trads);
87 87
 }
88 88
 
89 89
 // retourne son 2e argument si c'est un index du premier
@@ -91,21 +91,21 @@  discard block
 block discarded – undo
91 91
 // la langue X etant consideree comme une approche de X_Y
92 92
 function approcher_langue($trads, $lang = '') {
93 93
 
94
-	if (!$lang) {
95
-		$lang = $GLOBALS['spip_lang'];
96
-	}
97
-
98
-	if (isset($trads[$lang])) {
99
-		return $lang;
100
-	} // cas des langues xx_yy
101
-	else {
102
-		$r = explode('_', $lang);
103
-		if (isset($trads[$r[0]])) {
104
-			return $r[0];
105
-		}
106
-	}
107
-
108
-	return '';
94
+    if (!$lang) {
95
+        $lang = $GLOBALS['spip_lang'];
96
+    }
97
+
98
+    if (isset($trads[$lang])) {
99
+        return $lang;
100
+    } // cas des langues xx_yy
101
+    else {
102
+        $r = explode('_', $lang);
103
+        if (isset($trads[$r[0]])) {
104
+            return $r[0];
105
+        }
106
+    }
107
+
108
+    return '';
109 109
 }
110 110
 
111 111
 /**
@@ -120,10 +120,10 @@  discard block
 block discarded – undo
120 120
  *     Nom de la langue, sinon son code.
121 121
  **/
122 122
 function traduire_nom_langue($lang) {
123
-	include_spip('inc/lang_liste');
124
-	include_spip('inc/charsets');
123
+    include_spip('inc/lang_liste');
124
+    include_spip('inc/charsets');
125 125
 
126
-	return html2unicode($GLOBALS['codes_langues'][$lang] ?? $lang);
126
+    return html2unicode($GLOBALS['codes_langues'][$lang] ?? $lang);
127 127
 }
128 128
 
129 129
 //
@@ -137,10 +137,10 @@  discard block
 block discarded – undo
137 137
 // C'est utilise par #LANG_DIR, #LANG_LEFT, #LANG_RIGHT.
138 138
 // https://code.spip.net/@lang_dir
139 139
 function lang_dir($lang = '', $droitier = 'ltr', $gaucher = 'rtl') {
140
-	static $lang_rtl = ['ar', 'fa', 'ku', 'prs', 'ps', 'ur', 'he', 'heb', 'hbo', 'yi'];
140
+    static $lang_rtl = ['ar', 'fa', 'ku', 'prs', 'ps', 'ur', 'he', 'heb', 'hbo', 'yi'];
141 141
 
142
-	return in_array(($lang ?: $GLOBALS['spip_lang']), $lang_rtl) ?
143
-		$gaucher : $droitier;
142
+    return in_array(($lang ?: $GLOBALS['spip_lang']), $lang_rtl) ?
143
+        $gaucher : $droitier;
144 144
 }
145 145
 
146 146
 // typo francaise ou anglaise ?
@@ -150,30 +150,30 @@  discard block
 block discarded – undo
150 150
 
151 151
 // https://code.spip.net/@lang_typo
152 152
 function lang_typo($lang = '') {
153
-	if (!$lang) {
154
-		$lang = $GLOBALS['lang_objet'] ?? $GLOBALS['spip_lang'];
155
-	}
156
-	if (
157
-		$lang == 'eo'
158
-		or $lang == 'fr'
159
-		or strncmp($lang, 'fr_', 3) == 0
160
-		or $lang == 'cpf'
161
-	) {
162
-		return 'fr';
163
-	} else {
164
-		return 'en';
165
-	}
153
+    if (!$lang) {
154
+        $lang = $GLOBALS['lang_objet'] ?? $GLOBALS['spip_lang'];
155
+    }
156
+    if (
157
+        $lang == 'eo'
158
+        or $lang == 'fr'
159
+        or strncmp($lang, 'fr_', 3) == 0
160
+        or $lang == 'cpf'
161
+    ) {
162
+        return 'fr';
163
+    } else {
164
+        return 'en';
165
+    }
166 166
 }
167 167
 
168 168
 // gestion de la globale $lang_objet pour que les textes soient affiches
169 169
 // avec les memes typo et direction dans l'espace prive que dans le public
170 170
 // https://code.spip.net/@changer_typo
171 171
 function changer_typo($lang = '') {
172
-	if ($lang) {
173
-		$GLOBALS['lang_objet'] = $lang;
174
-	} else {
175
-		unset($GLOBALS['lang_objet']);
176
-	}
172
+    if ($lang) {
173
+        $GLOBALS['lang_objet'] = $lang;
174
+    } else {
175
+        unset($GLOBALS['lang_objet']);
176
+    }
177 177
 }
178 178
 
179 179
 //
@@ -184,59 +184,59 @@  discard block
 block discarded – undo
184 184
 //
185 185
 // https://code.spip.net/@menu_langues
186 186
 function menu_langues($nom_select, $default = '') {
187
-	include_spip('inc/actions');
188
-
189
-	$langues = liste_options_langues($nom_select);
190
-	$ret = '';
191
-	if (!count($langues)) {
192
-		return '';
193
-	}
194
-
195
-	if (!$default) {
196
-		$default = $GLOBALS['spip_lang'];
197
-	}
198
-	foreach ($langues as $l) {
199
-		$selected = ($l == $default) ? ' selected=\'selected\'' : '';
200
-		$ret .= "<option value='$l'$selected>[" . $l . '] ' . traduire_nom_langue($l) . "</option>\n";
201
-	}
202
-
203
-	if (!test_espace_prive()) {
204
-		$cible = self();
205
-		$base = '';
206
-	} else {
207
-		$cible = self();
208
-		$base = spip_connect() ? 'base' : '';
209
-	}
210
-
211
-	$change = ' onchange="this.parentNode.parentNode.submit()"';
212
-
213
-	return generer_action_auteur(
214
-		'converser',
215
-		$base,
216
-		$cible,
217
-		(select_langues($nom_select, $change, $ret)
218
-			. "<noscript><div style='display:inline'><input type='submit' class='fondo' value='" . _T('bouton_changer') . "' /></div></noscript>"),
219
-		" method='post'"
220
-	);
187
+    include_spip('inc/actions');
188
+
189
+    $langues = liste_options_langues($nom_select);
190
+    $ret = '';
191
+    if (!count($langues)) {
192
+        return '';
193
+    }
194
+
195
+    if (!$default) {
196
+        $default = $GLOBALS['spip_lang'];
197
+    }
198
+    foreach ($langues as $l) {
199
+        $selected = ($l == $default) ? ' selected=\'selected\'' : '';
200
+        $ret .= "<option value='$l'$selected>[" . $l . '] ' . traduire_nom_langue($l) . "</option>\n";
201
+    }
202
+
203
+    if (!test_espace_prive()) {
204
+        $cible = self();
205
+        $base = '';
206
+    } else {
207
+        $cible = self();
208
+        $base = spip_connect() ? 'base' : '';
209
+    }
210
+
211
+    $change = ' onchange="this.parentNode.parentNode.submit()"';
212
+
213
+    return generer_action_auteur(
214
+        'converser',
215
+        $base,
216
+        $cible,
217
+        (select_langues($nom_select, $change, $ret)
218
+            . "<noscript><div style='display:inline'><input type='submit' class='fondo' value='" . _T('bouton_changer') . "' /></div></noscript>"),
219
+        " method='post'"
220
+    );
221 221
 }
222 222
 
223 223
 // https://code.spip.net/@select_langues
224 224
 function select_langues($nom_select, $change, $options, $label = '') {
225
-	static $cpt = 0;
226
-	$id = 'menu_langues' . $cpt++;
227
-
228
-	return
229
-		"<label for='$id'>" . ($label ?: _T('info_langues')) . '</label> ' .
230
-		"<select name='$nom_select' id='$id' "
231
-		. ((!test_espace_prive()) ?
232
-			("class='forml menu_langues'") :
233
-			(($nom_select == 'var_lang_ecrire') ?
234
-				("class='lang_ecrire'") :
235
-				"class='fondl'"))
236
-		. $change
237
-		. ">\n"
238
-		. $options
239
-		. '</select>';
225
+    static $cpt = 0;
226
+    $id = 'menu_langues' . $cpt++;
227
+
228
+    return
229
+        "<label for='$id'>" . ($label ?: _T('info_langues')) . '</label> ' .
230
+        "<select name='$nom_select' id='$id' "
231
+        . ((!test_espace_prive()) ?
232
+            ("class='forml menu_langues'") :
233
+            (($nom_select == 'var_lang_ecrire') ?
234
+                ("class='lang_ecrire'") :
235
+                "class='fondl'"))
236
+        . $change
237
+        . ">\n"
238
+        . $options
239
+        . '</select>';
240 240
 }
241 241
 
242 242
 /**
@@ -258,34 +258,34 @@  discard block
 block discarded – undo
258 258
  */
259 259
 function liste_options_langues($nom_select) {
260 260
 
261
-	switch ($nom_select) {
262
-		# #MENU_LANG
263
-		case 'var_lang':
264
-			# menu de changement de la langue d'un article
265
-			# les langues selectionnees dans la configuration "multilinguisme"
266
-		case 'changer_lang':
267
-			$langues = explode(',', $GLOBALS['meta']['langues_multilingue']);
268
-			break;
269
-		# menu de l'interface (privee, installation et panneau de login)
270
-		# les langues presentes sous forme de fichiers de langue
271
-		# on force la relecture du repertoire des langues pour etre synchrone.
272
-		case 'var_lang_ecrire':
273
-		default:
274
-			$GLOBALS['meta']['langues_proposees'] = '';
275
-			init_langues();
276
-			$langues = explode(',', $GLOBALS['meta']['langues_proposees']);
277
-			break;
261
+    switch ($nom_select) {
262
+        # #MENU_LANG
263
+        case 'var_lang':
264
+            # menu de changement de la langue d'un article
265
+            # les langues selectionnees dans la configuration "multilinguisme"
266
+        case 'changer_lang':
267
+            $langues = explode(',', $GLOBALS['meta']['langues_multilingue']);
268
+            break;
269
+        # menu de l'interface (privee, installation et panneau de login)
270
+        # les langues presentes sous forme de fichiers de langue
271
+        # on force la relecture du repertoire des langues pour etre synchrone.
272
+        case 'var_lang_ecrire':
273
+        default:
274
+            $GLOBALS['meta']['langues_proposees'] = '';
275
+            init_langues();
276
+            $langues = explode(',', $GLOBALS['meta']['langues_proposees']);
277
+            break;
278 278
 
279 279
 # dernier choix possible : toutes les langues = langues_proposees
280 280
 # + langues_multilingues ; mais, ne sert pas
281 281
 #			$langues = explode(',', $GLOBALS['all_langs']);
282
-	}
283
-	if (count($langues) <= 1) {
284
-		return [];
285
-	}
286
-	sort($langues);
282
+    }
283
+    if (count($langues) <= 1) {
284
+        return [];
285
+    }
286
+    sort($langues);
287 287
 
288
-	return $langues;
288
+    return $langues;
289 289
 }
290 290
 
291 291
 
@@ -300,39 +300,39 @@  discard block
 block discarded – undo
300 300
  **/
301 301
 function verifier_lang_url() {
302 302
 
303
-	// quelle langue est demandee ?
304
-	$lang_demandee = (test_espace_prive() ? $GLOBALS['spip_lang'] : $GLOBALS['meta']['langue_site']);
305
-	if (isset($_COOKIE['spip_lang_ecrire'])) {
306
-		$lang_demandee = $_COOKIE['spip_lang_ecrire'];
307
-	}
308
-	if (!test_espace_prive() and isset($_COOKIE['spip_lang'])) {
309
-		$lang_demandee = $_COOKIE['spip_lang'];
310
-	}
311
-	if (isset($_GET['lang'])) {
312
-		$lang_demandee = $_GET['lang'];
313
-	}
314
-
315
-	// Renvoyer si besoin (et si la langue demandee existe)
316
-	if (
317
-		$GLOBALS['spip_lang'] != $lang_demandee
318
-		and changer_langue($lang_demandee)
319
-		and $lang_demandee != @$_GET['lang']
320
-	) {
321
-		$destination = parametre_url(self(), 'lang', $lang_demandee, '&');
322
-		// ici on a besoin des var_truc
323
-		foreach ($_GET as $var => $val) {
324
-			if (!strncmp('var_', $var, 4)) {
325
-				$destination = parametre_url($destination, $var, $val, '&');
326
-			}
327
-		}
328
-		include_spip('inc/headers');
329
-		redirige_par_entete($destination);
330
-	}
331
-
332
-	// Subtilite : si la langue demandee par cookie est la bonne
333
-	// alors on fait comme si $lang etait passee dans l'URL
334
-	// (pour criteres {lang}).
335
-	$GLOBALS['lang'] = $_GET['lang'] = $GLOBALS['spip_lang'];
303
+    // quelle langue est demandee ?
304
+    $lang_demandee = (test_espace_prive() ? $GLOBALS['spip_lang'] : $GLOBALS['meta']['langue_site']);
305
+    if (isset($_COOKIE['spip_lang_ecrire'])) {
306
+        $lang_demandee = $_COOKIE['spip_lang_ecrire'];
307
+    }
308
+    if (!test_espace_prive() and isset($_COOKIE['spip_lang'])) {
309
+        $lang_demandee = $_COOKIE['spip_lang'];
310
+    }
311
+    if (isset($_GET['lang'])) {
312
+        $lang_demandee = $_GET['lang'];
313
+    }
314
+
315
+    // Renvoyer si besoin (et si la langue demandee existe)
316
+    if (
317
+        $GLOBALS['spip_lang'] != $lang_demandee
318
+        and changer_langue($lang_demandee)
319
+        and $lang_demandee != @$_GET['lang']
320
+    ) {
321
+        $destination = parametre_url(self(), 'lang', $lang_demandee, '&');
322
+        // ici on a besoin des var_truc
323
+        foreach ($_GET as $var => $val) {
324
+            if (!strncmp('var_', $var, 4)) {
325
+                $destination = parametre_url($destination, $var, $val, '&');
326
+            }
327
+        }
328
+        include_spip('inc/headers');
329
+        redirige_par_entete($destination);
330
+    }
331
+
332
+    // Subtilite : si la langue demandee par cookie est la bonne
333
+    // alors on fait comme si $lang etait passee dans l'URL
334
+    // (pour criteres {lang}).
335
+    $GLOBALS['lang'] = $_GET['lang'] = $GLOBALS['spip_lang'];
336 336
 }
337 337
 
338 338
 
@@ -350,22 +350,22 @@  discard block
 block discarded – undo
350 350
  *     La langue sélectionnée
351 351
  **/
352 352
 function utiliser_langue_site($liste_langues = null) {
353
-	// s'il existe une langue du site (en gros tout le temps en théorie)
354
-	if (
355
-		isset($GLOBALS['meta']['langue_site'])
356
-		// et si spip_langue est pas encore définie (ce que va faire changer_langue())
357
-		// ou qu'elle n'est pas identique à la langue du site
358
-		and (!isset($GLOBALS['spip_lang'])
359
-			or $GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site'])
360
-	) {
361
-		return changer_langue($GLOBALS['meta']['langue_site'], $liste_langues);//@:install
362
-	}
363
-	// en theorie là, la globale est définie, sinon c'est un problème.
364
-	if (!isset($GLOBALS['spip_lang'])) {
365
-		spip_log('La globale spip_lang est indéfinie dans utiliser_langue_site() !', _LOG_ERREUR);
366
-	}
367
-
368
-	return $GLOBALS['spip_lang'];
353
+    // s'il existe une langue du site (en gros tout le temps en théorie)
354
+    if (
355
+        isset($GLOBALS['meta']['langue_site'])
356
+        // et si spip_langue est pas encore définie (ce que va faire changer_langue())
357
+        // ou qu'elle n'est pas identique à la langue du site
358
+        and (!isset($GLOBALS['spip_lang'])
359
+            or $GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site'])
360
+    ) {
361
+        return changer_langue($GLOBALS['meta']['langue_site'], $liste_langues);//@:install
362
+    }
363
+    // en theorie là, la globale est définie, sinon c'est un problème.
364
+    if (!isset($GLOBALS['spip_lang'])) {
365
+        spip_log('La globale spip_lang est indéfinie dans utiliser_langue_site() !', _LOG_ERREUR);
366
+    }
367
+
368
+    return $GLOBALS['spip_lang'];
369 369
 }
370 370
 
371 371
 /**
@@ -384,30 +384,30 @@  discard block
 block discarded – undo
384 384
  **/
385 385
 function utiliser_langue_visiteur($liste_langues = null) {
386 386
 
387
-	$l = (!test_espace_prive() ? 'spip_lang' : 'spip_lang_ecrire');
388
-	if (isset($_COOKIE[$l])) {
389
-		if (changer_langue($l = $_COOKIE[$l], $liste_langues)) {
390
-			return $l;
391
-		}
392
-	}
393
-
394
-	if (isset($GLOBALS['visiteur_session']['lang'])) {
395
-		if (changer_langue($l = $GLOBALS['visiteur_session']['lang'], $liste_langues)) {
396
-			return $l;
397
-		}
398
-	}
399
-
400
-	if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
401
-		foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $s) {
402
-			if (preg_match('#^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$#i', trim($s), $r)) {
403
-				if (changer_langue($l = strtolower($r[1]), $liste_langues)) {
404
-					return $l;
405
-				}
406
-			}
407
-		}
408
-	}
409
-
410
-	return utiliser_langue_site($liste_langues);
387
+    $l = (!test_espace_prive() ? 'spip_lang' : 'spip_lang_ecrire');
388
+    if (isset($_COOKIE[$l])) {
389
+        if (changer_langue($l = $_COOKIE[$l], $liste_langues)) {
390
+            return $l;
391
+        }
392
+    }
393
+
394
+    if (isset($GLOBALS['visiteur_session']['lang'])) {
395
+        if (changer_langue($l = $GLOBALS['visiteur_session']['lang'], $liste_langues)) {
396
+            return $l;
397
+        }
398
+    }
399
+
400
+    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
401
+        foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $s) {
402
+            if (preg_match('#^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$#i', trim($s), $r)) {
403
+                if (changer_langue($l = strtolower($r[1]), $liste_langues)) {
404
+                    return $l;
405
+                }
406
+            }
407
+        }
408
+    }
409
+
410
+    return utiliser_langue_site($liste_langues);
411 411
 }
412 412
 
413 413
 
@@ -417,7 +417,7 @@  discard block
 block discarded – undo
417 417
  * @return int
418 418
  */
419 419
 function match_langue($chaine) {
420
-	return preg_match('/^[a-z]{2,3}(_[a-z]{2,3}){0,2}$/', $chaine);
420
+    return preg_match('/^[a-z]{2,3}(_[a-z]{2,3}){0,2}$/', $chaine);
421 421
 }
422 422
 
423 423
 /**
@@ -435,36 +435,36 @@  discard block
 block discarded – undo
435 435
  **/
436 436
 function init_langues() {
437 437
 
438
-	// liste des langues dans les meta, sauf a l'install
439
-	$all_langs = @$GLOBALS['meta']['langues_proposees'];
440
-
441
-	$tout = [];
442
-	if (!$all_langs) {
443
-		// trouver tous les modules lang/spip_xx.php
444
-		$modules = find_all_in_path('lang/', '/spip_([a-z_]+)\.php$');
445
-		foreach ($modules as $name => $path) {
446
-			if (preg_match(',^spip_([a-z_]+)\.php$,', $name, $regs)) {
447
-				if (match_langue($regs[1])) {
448
-					$tout[] = $regs[1];
449
-				}
450
-			}
451
-		}
452
-		sort($tout);
453
-		$tout = join(',', $tout);
454
-		// Si les langues n'ont pas change, ne rien faire
455
-		if ($tout != $all_langs) {
456
-			$GLOBALS['meta']['langues_proposees'] = $tout;
457
-			include_spip('inc/meta');
458
-			ecrire_meta('langues_proposees', $tout);
459
-		}
460
-	}
461
-	if (!isset($GLOBALS['meta']['langue_site'])) {
462
-		// Initialisation : le francais si dispo, sinon la premiere langue trouvee
463
-		$GLOBALS['meta']['langue_site'] = $tout =
464
-			(!$all_langs or (strpos(',' . _LANGUE_PAR_DEFAUT . ',', (string) ",$all_langs,") !== false))
465
-				? _LANGUE_PAR_DEFAUT : substr($all_langs, 0, strpos($all_langs, ','));
466
-		ecrire_meta('langue_site', $tout);
467
-	}
438
+    // liste des langues dans les meta, sauf a l'install
439
+    $all_langs = @$GLOBALS['meta']['langues_proposees'];
440
+
441
+    $tout = [];
442
+    if (!$all_langs) {
443
+        // trouver tous les modules lang/spip_xx.php
444
+        $modules = find_all_in_path('lang/', '/spip_([a-z_]+)\.php$');
445
+        foreach ($modules as $name => $path) {
446
+            if (preg_match(',^spip_([a-z_]+)\.php$,', $name, $regs)) {
447
+                if (match_langue($regs[1])) {
448
+                    $tout[] = $regs[1];
449
+                }
450
+            }
451
+        }
452
+        sort($tout);
453
+        $tout = join(',', $tout);
454
+        // Si les langues n'ont pas change, ne rien faire
455
+        if ($tout != $all_langs) {
456
+            $GLOBALS['meta']['langues_proposees'] = $tout;
457
+            include_spip('inc/meta');
458
+            ecrire_meta('langues_proposees', $tout);
459
+        }
460
+    }
461
+    if (!isset($GLOBALS['meta']['langue_site'])) {
462
+        // Initialisation : le francais si dispo, sinon la premiere langue trouvee
463
+        $GLOBALS['meta']['langue_site'] = $tout =
464
+            (!$all_langs or (strpos(',' . _LANGUE_PAR_DEFAUT . ',', (string) ",$all_langs,") !== false))
465
+                ? _LANGUE_PAR_DEFAUT : substr($all_langs, 0, strpos($all_langs, ','));
466
+        ecrire_meta('langue_site', $tout);
467
+    }
468 468
 }
469 469
 
470 470
 /**
@@ -478,10 +478,10 @@  discard block
 block discarded – undo
478 478
  *     Code html de la balise <html>
479 479
  **/
480 480
 function html_lang_attributes() {
481
-	$lang = $GLOBALS['spip_lang'];
482
-	$dir = ($GLOBALS['spip_lang_rtl'] ? 'rtl' : 'ltr');
481
+    $lang = $GLOBALS['spip_lang'];
482
+    $dir = ($GLOBALS['spip_lang_rtl'] ? 'rtl' : 'ltr');
483 483
 
484
-	return "<html class='$dir $lang no-js' xmlns='http://www.w3.org/1999/xhtml' lang='$lang' dir='$dir'>\n";
484
+    return "<html class='$dir $lang no-js' xmlns='http://www.w3.org/1999/xhtml' lang='$lang' dir='$dir'>\n";
485 485
 }
486 486
 
487 487
 
@@ -495,7 +495,7 @@  discard block
 block discarded – undo
495 495
  * @return string
496 496
  */
497 497
 function aide_lang_dir($spip_lang, $spip_lang_rtl) {
498
-	return ($spip_lang <> 'he') ? $spip_lang_rtl : '';
498
+    return ($spip_lang <> 'he') ? $spip_lang_rtl : '';
499 499
 }
500 500
 
501 501
 
Please login to merge, or discard this patch.
ecrire/inc/presentation.php 1 patch
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Presentation
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/presentation_mini');
@@ -32,142 +32,142 @@  discard block
 block discarded – undo
32 32
 
33 33
 // https://code.spip.net/@debut_cadre
34 34
 function debut_cadre($style, $icone = '', $fonction = '', $titre = '', $id = '', $class = '', $padding = true) {
35
-	$fond = null;
36
-	$style_mapping = [
37
-		'r' => 'simple',
38
-		'e' => 'raccourcis',
39
-		'couleur' => 'basic highlight',
40
-		'couleur-foncee' => 'basic highlight',
41
-		'trait-couleur' => 'important',
42
-		'alerte' => 'notice',
43
-		'info' => 'info',
44
-		'sous_rub' => 'simple sous-rub'
45
-	];
46
-	$style_titre_mapping = ['couleur' => 'topper', 'trait-couleur' => 'section'];
47
-	$c = $style_mapping[$style] ?? 'simple';
48
-	$class = $c . ($class ? " $class" : '');
49
-	if (!$padding) {
50
-		$class .= ($class ? ' ' : '') . 'no-padding';
51
-	}
52
-
53
-	//($id?"id='$id' ":"")
54
-	if (strlen($icone) > 1) {
55
-		if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
56
-			[$fond, $fonction] = $icone_renommer($icone, $fonction);
57
-		}
58
-		$size = 24;
59
-		if (preg_match('/-([0-9]{1,3})[.](gif|png)$/i', $fond, $match)) {
60
-			$size = $match[1];
61
-		}
62
-		if ($fonction) {
63
-			// 2 images pour composer l'icone : le fond (article) en background,
64
-			// la fonction (new) en image
65
-			$icone = http_img_pack($fonction, '', "class='cadre-icone' width='$size' height='$size'\n" .
66
-				http_style_background($fond, 'no-repeat center center', $size));
67
-		} else {
68
-			$icone = http_img_pack($fond, '', "class='cadre-icone' width='$size' height='$size'");
69
-		}
70
-		$titre = $icone . $titre;
71
-	}
72
-
73
-	return boite_ouvrir($titre, $class, $style_titre_mapping[$style] ?? '', $id);
35
+    $fond = null;
36
+    $style_mapping = [
37
+        'r' => 'simple',
38
+        'e' => 'raccourcis',
39
+        'couleur' => 'basic highlight',
40
+        'couleur-foncee' => 'basic highlight',
41
+        'trait-couleur' => 'important',
42
+        'alerte' => 'notice',
43
+        'info' => 'info',
44
+        'sous_rub' => 'simple sous-rub'
45
+    ];
46
+    $style_titre_mapping = ['couleur' => 'topper', 'trait-couleur' => 'section'];
47
+    $c = $style_mapping[$style] ?? 'simple';
48
+    $class = $c . ($class ? " $class" : '');
49
+    if (!$padding) {
50
+        $class .= ($class ? ' ' : '') . 'no-padding';
51
+    }
52
+
53
+    //($id?"id='$id' ":"")
54
+    if (strlen($icone) > 1) {
55
+        if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
56
+            [$fond, $fonction] = $icone_renommer($icone, $fonction);
57
+        }
58
+        $size = 24;
59
+        if (preg_match('/-([0-9]{1,3})[.](gif|png)$/i', $fond, $match)) {
60
+            $size = $match[1];
61
+        }
62
+        if ($fonction) {
63
+            // 2 images pour composer l'icone : le fond (article) en background,
64
+            // la fonction (new) en image
65
+            $icone = http_img_pack($fonction, '', "class='cadre-icone' width='$size' height='$size'\n" .
66
+                http_style_background($fond, 'no-repeat center center', $size));
67
+        } else {
68
+            $icone = http_img_pack($fond, '', "class='cadre-icone' width='$size' height='$size'");
69
+        }
70
+        $titre = $icone . $titre;
71
+    }
72
+
73
+    return boite_ouvrir($titre, $class, $style_titre_mapping[$style] ?? '', $id);
74 74
 }
75 75
 
76 76
 // https://code.spip.net/@fin_cadre
77 77
 function fin_cadre() {
78
- return boite_fermer();
78
+    return boite_fermer();
79 79
 }
80 80
 
81 81
 
82 82
 function debut_cadre_relief(
83
-	$icone = '',
84
-	$dummy = '',
85
-	$fonction = '',
86
-	$titre = '',
87
-	$id = '',
88
-	$class = ''
83
+    $icone = '',
84
+    $dummy = '',
85
+    $fonction = '',
86
+    $titre = '',
87
+    $id = '',
88
+    $class = ''
89 89
 ) {
90
-	return debut_cadre('r', $icone, $fonction, $titre, $id, $class);
90
+    return debut_cadre('r', $icone, $fonction, $titre, $id, $class);
91 91
 }
92 92
 
93 93
 function fin_cadre_relief() {
94
- return fin_cadre();
94
+    return fin_cadre();
95 95
 }
96 96
 
97 97
 function debut_cadre_enfonce(
98
-	$icone = '',
99
-	$dummy = '',
100
-	$fonction = '',
101
-	$titre = '',
102
-	$id = '',
103
-	$class = ''
98
+    $icone = '',
99
+    $dummy = '',
100
+    $fonction = '',
101
+    $titre = '',
102
+    $id = '',
103
+    $class = ''
104 104
 ) {
105
-	return debut_cadre('e', $icone, $fonction, $titre, $id, $class);
105
+    return debut_cadre('e', $icone, $fonction, $titre, $id, $class);
106 106
 }
107 107
 
108 108
 function fin_cadre_enfonce() {
109
- return fin_cadre();
109
+    return fin_cadre();
110 110
 }
111 111
 
112 112
 function debut_cadre_sous_rub(
113
-	$icone = '',
114
-	$dummy = '',
115
-	$fonction = '',
116
-	$titre = '',
117
-	$id = '',
118
-	$class = ''
113
+    $icone = '',
114
+    $dummy = '',
115
+    $fonction = '',
116
+    $titre = '',
117
+    $id = '',
118
+    $class = ''
119 119
 ) {
120
-	return debut_cadre('sous_rub', $icone, $fonction, $titre, $id, $class);
120
+    return debut_cadre('sous_rub', $icone, $fonction, $titre, $id, $class);
121 121
 }
122 122
 
123 123
 function fin_cadre_sous_rub() {
124
- return fin_cadre();
124
+    return fin_cadre();
125 125
 }
126 126
 
127 127
 function debut_cadre_couleur(
128
-	$icone = '',
129
-	$dummy = '',
130
-	$fonction = '',
131
-	$titre = '',
132
-	$id = '',
133
-	$class = ''
128
+    $icone = '',
129
+    $dummy = '',
130
+    $fonction = '',
131
+    $titre = '',
132
+    $id = '',
133
+    $class = ''
134 134
 ) {
135
-	return debut_cadre('couleur', $icone, $fonction, $titre, $id, $class);
135
+    return debut_cadre('couleur', $icone, $fonction, $titre, $id, $class);
136 136
 }
137 137
 
138 138
 function fin_cadre_couleur() {
139
- return fin_cadre();
139
+    return fin_cadre();
140 140
 }
141 141
 
142 142
 function debut_cadre_trait_couleur(
143
-	$icone = '',
144
-	$dummy = '',
145
-	$fonction = '',
146
-	$titre = '',
147
-	$id = '',
148
-	$class = ''
143
+    $icone = '',
144
+    $dummy = '',
145
+    $fonction = '',
146
+    $titre = '',
147
+    $id = '',
148
+    $class = ''
149 149
 ) {
150
-	return debut_cadre('trait-couleur', $icone, $fonction, $titre, $id, $class);
150
+    return debut_cadre('trait-couleur', $icone, $fonction, $titre, $id, $class);
151 151
 }
152 152
 
153 153
 function fin_cadre_trait_couleur() {
154
- return fin_cadre();
154
+    return fin_cadre();
155 155
 }
156 156
 
157 157
 function debut_boite_alerte() {
158
- return debut_cadre('alerte', '', '', '', '', '');
158
+    return debut_cadre('alerte', '', '', '', '', '');
159 159
 }
160 160
 
161 161
 function fin_boite_alerte() {
162
- return fin_cadre();
162
+    return fin_cadre();
163 163
 }
164 164
 
165 165
 function debut_boite_info() {
166
- return debut_cadre('info', '', '', '', '', '');
166
+    return debut_cadre('info', '', '', '', '', '');
167 167
 }
168 168
 
169 169
 function fin_boite_info() {
170
- return fin_cadre();
170
+    return fin_cadre();
171 171
 }
172 172
 
173 173
 /**
@@ -178,18 +178,18 @@  discard block
 block discarded – undo
178 178
  * @return string Code PHP.
179 179
  **/
180 180
 function gros_titre(
181
-	$titre,
182
-	$ze_logo = ''
181
+    $titre,
182
+    $ze_logo = ''
183 183
 ) {
184
-	return "<h1 class = 'grostitre'>" . $ze_logo . ' ' . typo($titre) . "</h1>\n";
184
+    return "<h1 class = 'grostitre'>" . $ze_logo . ' ' . typo($titre) . "</h1>\n";
185 185
 }
186 186
 
187 187
 // La boite des raccourcis
188 188
 // Se place a droite si l'ecran est en mode panoramique.
189 189
 // https://code.spip.net/@bloc_des_raccourcis
190 190
 function bloc_des_raccourcis($bloc) {
191
-	return creer_colonne_droite()
192
-	. boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis') . $bloc . boite_fermer();
191
+    return creer_colonne_droite()
192
+    . boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis') . $bloc . boite_fermer();
193 193
 }
194 194
 
195 195
 //
@@ -200,20 +200,20 @@  discard block
 block discarded – undo
200 200
 // https://code.spip.net/@debut_onglet
201 201
 // @param string $sous_classe	prend la valeur second pour definir les onglet de deuxieme niveau
202 202
 function debut_onglet($classe = 'barre_onglet') {
203
- return "<div class = '$classe clearfix'><ul>\n";
203
+    return "<div class = '$classe clearfix'><ul>\n";
204 204
 }
205 205
 
206 206
 // https://code.spip.net/@fin_onglet
207 207
 function fin_onglet() {
208
- return "</ul></div>\n";
208
+    return "</ul></div>\n";
209 209
 }
210 210
 
211 211
 // https://code.spip.net/@onglet
212 212
 function onglet($texte, $lien, $onglet_ref, $onglet, $icone = '') {
213
-	return '<li>'
214
-	. ($icone ? http_img_pack($icone, '', " class='cadre-icone'") : '')
215
-	. lien_ou_expose($lien, $texte, $onglet == $onglet_ref)
216
-	. '</li>';
213
+    return '<li>'
214
+    . ($icone ? http_img_pack($icone, '', " class='cadre-icone'") : '')
215
+    . lien_ou_expose($lien, $texte, $onglet == $onglet_ref)
216
+    . '</li>';
217 217
 }
218 218
 
219 219
 /**
@@ -245,14 +245,14 @@  discard block
 block discarded – undo
245 245
  *     Code HTML du lien
246 246
  **/
247 247
 function icone_verticale($texte, $lien, $fond, $fonction = '', $align = '', $javascript = '') {
248
-	// cas d'ajax_action_auteur: faut defaire le boulot
249
-	// (il faudrait fusionner avec le cas $javascript)
250
-	if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
251
-		[$x, $lien, $atts, $texte] = $r;
252
-		$javascript .= $atts;
253
-	}
254
-
255
-	return icone_base($lien, $texte, $fond, $fonction, "verticale $align", $javascript);
248
+    // cas d'ajax_action_auteur: faut defaire le boulot
249
+    // (il faudrait fusionner avec le cas $javascript)
250
+    if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
251
+        [$x, $lien, $atts, $texte] = $r;
252
+        $javascript .= $atts;
253
+    }
254
+
255
+    return icone_base($lien, $texte, $fond, $fonction, "verticale $align", $javascript);
256 256
 }
257 257
 
258 258
 /**
@@ -277,15 +277,15 @@  discard block
 block discarded – undo
277 277
  *     Code HTML du lien
278 278
  **/
279 279
 function icone_horizontale($texte, $lien, $fond, $fonction = '', $dummy = '', $javascript = '') {
280
-	$retour = '';
281
-	// cas d'ajax_action_auteur: faut defaire le boulot
282
-	// (il faudrait fusionner avec le cas $javascript)
283
-	if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
284
-		[$x, $lien, $atts, $texte] = $r;
285
-		$javascript .= $atts;
286
-	}
280
+    $retour = '';
281
+    // cas d'ajax_action_auteur: faut defaire le boulot
282
+    // (il faudrait fusionner avec le cas $javascript)
283
+    if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
284
+        [$x, $lien, $atts, $texte] = $r;
285
+        $javascript .= $atts;
286
+    }
287 287
 
288
-	$retour = icone_base($lien, $texte, $fond, $fonction, 'horizontale', $javascript);
288
+    $retour = icone_base($lien, $texte, $fond, $fonction, 'horizontale', $javascript);
289 289
 
290
-	return $retour;
290
+    return $retour;
291 291
 }
Please login to merge, or discard this patch.
ecrire/inc/documents.php 1 patch
Indentation   +227 added lines, -227 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
 /**
@@ -30,12 +30,12 @@  discard block
 block discarded – undo
30 30
  * @return string
31 31
  */
32 32
 function set_spip_doc(?string $fichier): string {
33
-	if ($fichier and strpos($fichier, (string) _DIR_IMG) === 0) {
34
-		return substr($fichier, strlen(_DIR_IMG));
35
-	} else {
36
-		// ex: fichier distant
37
-		return $fichier ?? '';
38
-	} 
33
+    if ($fichier and strpos($fichier, (string) _DIR_IMG) === 0) {
34
+        return substr($fichier, strlen(_DIR_IMG));
35
+    } else {
36
+        // ex: fichier distant
37
+        return $fichier ?? '';
38
+    } 
39 39
 }
40 40
 
41 41
 /**
@@ -47,26 +47,26 @@  discard block
 block discarded – undo
47 47
  * @return bool|string
48 48
  */
49 49
 function get_spip_doc(?string $fichier) {
50
-	if ($fichier === null) {
51
-		return false;
52
-	}
53
-
54
-	// fichier distant
55
-	if (tester_url_absolue($fichier)) {
56
-		return $fichier;
57
-	}
58
-
59
-	// gestion d'erreurs, fichier=''
60
-	if (!strlen($fichier)) {
61
-		return false;
62
-	}
63
-
64
-	if (strncmp($fichier, _DIR_IMG, strlen(_DIR_IMG)) !== 0) {
65
-		$fichier = _DIR_IMG . $fichier;
66
-	}
67
-
68
-	// fichier normal
69
-	return $fichier;
50
+    if ($fichier === null) {
51
+        return false;
52
+    }
53
+
54
+    // fichier distant
55
+    if (tester_url_absolue($fichier)) {
56
+        return $fichier;
57
+    }
58
+
59
+    // gestion d'erreurs, fichier=''
60
+    if (!strlen($fichier)) {
61
+        return false;
62
+    }
63
+
64
+    if (strncmp($fichier, _DIR_IMG, strlen(_DIR_IMG)) !== 0) {
65
+        $fichier = _DIR_IMG . $fichier;
66
+    }
67
+
68
+    // fichier normal
69
+    return $fichier;
70 70
 }
71 71
 
72 72
 /**
@@ -80,26 +80,26 @@  discard block
 block discarded – undo
80 80
  * @return string
81 81
  */
82 82
 function creer_repertoire_documents($ext) {
83
-	$rep = sous_repertoire(_DIR_IMG, $ext);
84
-
85
-	if (!$ext or !$rep) {
86
-		spip_log("creer_repertoire_documents '$rep' interdit");
87
-		exit;
88
-	}
89
-
90
-	// Cette variable de configuration peut etre posee par un plugin
91
-	// par exemple acces_restreint
92
-	// sauf pour logo/ utilise pour stocker les logoon et logooff
93
-	if (
94
-		isset($GLOBALS['meta']['creer_htaccess'])
95
-		and $GLOBALS['meta']['creer_htaccess'] == 'oui'
96
-		and $ext !== 'logo'
97
-	) {
98
-		include_spip('inc/acces');
99
-		verifier_htaccess($rep);
100
-	}
101
-
102
-	return $rep;
83
+    $rep = sous_repertoire(_DIR_IMG, $ext);
84
+
85
+    if (!$ext or !$rep) {
86
+        spip_log("creer_repertoire_documents '$rep' interdit");
87
+        exit;
88
+    }
89
+
90
+    // Cette variable de configuration peut etre posee par un plugin
91
+    // par exemple acces_restreint
92
+    // sauf pour logo/ utilise pour stocker les logoon et logooff
93
+    if (
94
+        isset($GLOBALS['meta']['creer_htaccess'])
95
+        and $GLOBALS['meta']['creer_htaccess'] == 'oui'
96
+        and $ext !== 'logo'
97
+    ) {
98
+        include_spip('inc/acces');
99
+        verifier_htaccess($rep);
100
+    }
101
+
102
+    return $rep;
103 103
 }
104 104
 
105 105
 /**
@@ -108,22 +108,22 @@  discard block
 block discarded – undo
108 108
  * @param string $nom
109 109
  */
110 110
 function effacer_repertoire_temporaire($nom) {
111
-	if ($d = opendir($nom)) {
112
-		while (($f = readdir($d)) !== false) {
113
-			if (is_file("$nom/$f")) {
114
-				spip_unlink("$nom/$f");
115
-			} else {
116
-				if (
117
-					$f <> '.' and $f <> '..'
118
-					and is_dir("$nom/$f")
119
-				) {
120
-					effacer_repertoire_temporaire("$nom/$f");
121
-				}
122
-			}
123
-		}
124
-	}
125
-	closedir($d);
126
-	@rmdir($nom);
111
+    if ($d = opendir($nom)) {
112
+        while (($f = readdir($d)) !== false) {
113
+            if (is_file("$nom/$f")) {
114
+                spip_unlink("$nom/$f");
115
+            } else {
116
+                if (
117
+                    $f <> '.' and $f <> '..'
118
+                    and is_dir("$nom/$f")
119
+                ) {
120
+                    effacer_repertoire_temporaire("$nom/$f");
121
+                }
122
+            }
123
+        }
124
+    }
125
+    closedir($d);
126
+    @rmdir($nom);
127 127
 }
128 128
 
129 129
 //
@@ -140,45 +140,45 @@  discard block
 block discarded – undo
140 140
  */
141 141
 function copier_document($ext, $orig, $source, $subdir = null) {
142 142
 
143
-	$orig = preg_replace(',\.\.+,', '.', $orig); // pas de .. dans le nom du doc
144
-	$dir = creer_repertoire_documents($subdir ?: $ext);
145
-
146
-	$dest = preg_replace('/<[^>]*>/', '', basename($orig));
147
-	$dest = preg_replace('/\.([^.]+)$/', '', $dest);
148
-	$dest = translitteration($dest);
149
-	$dest = preg_replace('/[^.=\w-]+/', '_', $dest);
150
-
151
-	// ne pas accepter de noms de la forme -r90.jpg qui sont reserves
152
-	// pour les images transformees par rotation (action/documenter)
153
-	$dest = preg_replace(',-r(90|180|270)$,', '', $dest);
154
-
155
-	while (preg_match(',\.(\w+)$,', $dest, $m)) {
156
-		if (
157
-			!function_exists('verifier_upload_autorise')
158
-			or !$r = verifier_upload_autorise($dest)
159
-			or $r['autozip']
160
-		) {
161
-			$dest = substr($dest, 0, -strlen($m[0])) . '_' . $m[1];
162
-			break;
163
-		}
164
-		else {
165
-			$dest = substr($dest, 0, -strlen($m[0]));
166
-			$ext = $m[1] . '.' . $ext;
167
-		}
168
-	}
169
-
170
-	// Si le document "source" est deja au bon endroit, ne rien faire
171
-	if ($source == ($dir . $dest . '.' . $ext)) {
172
-		return $source;
173
-	}
174
-
175
-	// sinon tourner jusqu'a trouver un numero correct
176
-	$n = 0;
177
-	while (@file_exists($newFile = $dir . $dest . ($n++ ? ('-' . $n) : '') . '.' . $ext)) {
178
-		;
179
-	}
180
-
181
-	return deplacer_fichier_upload($source, $newFile);
143
+    $orig = preg_replace(',\.\.+,', '.', $orig); // pas de .. dans le nom du doc
144
+    $dir = creer_repertoire_documents($subdir ?: $ext);
145
+
146
+    $dest = preg_replace('/<[^>]*>/', '', basename($orig));
147
+    $dest = preg_replace('/\.([^.]+)$/', '', $dest);
148
+    $dest = translitteration($dest);
149
+    $dest = preg_replace('/[^.=\w-]+/', '_', $dest);
150
+
151
+    // ne pas accepter de noms de la forme -r90.jpg qui sont reserves
152
+    // pour les images transformees par rotation (action/documenter)
153
+    $dest = preg_replace(',-r(90|180|270)$,', '', $dest);
154
+
155
+    while (preg_match(',\.(\w+)$,', $dest, $m)) {
156
+        if (
157
+            !function_exists('verifier_upload_autorise')
158
+            or !$r = verifier_upload_autorise($dest)
159
+            or $r['autozip']
160
+        ) {
161
+            $dest = substr($dest, 0, -strlen($m[0])) . '_' . $m[1];
162
+            break;
163
+        }
164
+        else {
165
+            $dest = substr($dest, 0, -strlen($m[0]));
166
+            $ext = $m[1] . '.' . $ext;
167
+        }
168
+    }
169
+
170
+    // Si le document "source" est deja au bon endroit, ne rien faire
171
+    if ($source == ($dir . $dest . '.' . $ext)) {
172
+        return $source;
173
+    }
174
+
175
+    // sinon tourner jusqu'a trouver un numero correct
176
+    $n = 0;
177
+    while (@file_exists($newFile = $dir . $dest . ($n++ ? ('-' . $n) : '') . '.' . $ext)) {
178
+        ;
179
+    }
180
+
181
+    return deplacer_fichier_upload($source, $newFile);
182 182
 }
183 183
 
184 184
 /**
@@ -193,28 +193,28 @@  discard block
 block discarded – undo
193 193
  * @return bool|string
194 194
  */
195 195
 function determine_upload($type = '') {
196
-	if (!function_exists('autoriser')) {
197
-		include_spip('inc/autoriser');
198
-	}
199
-
200
-	if (
201
-		!autoriser('chargerftp')
202
-		or $type == 'logos'
203
-	) { # on ne le permet pas pour les logos
204
-	return false;
205
-	}
206
-
207
-	$repertoire = _DIR_TRANSFERT;
208
-	if (!@is_dir($repertoire)) {
209
-		$repertoire = str_replace(_DIR_TMP, '', $repertoire);
210
-		$repertoire = sous_repertoire(_DIR_TMP, $repertoire);
211
-	}
212
-
213
-	if (!$GLOBALS['visiteur_session']['restreint']) {
214
-		return $repertoire;
215
-	} else {
216
-		return sous_repertoire($repertoire, $GLOBALS['visiteur_session']['login']);
217
-	}
196
+    if (!function_exists('autoriser')) {
197
+        include_spip('inc/autoriser');
198
+    }
199
+
200
+    if (
201
+        !autoriser('chargerftp')
202
+        or $type == 'logos'
203
+    ) { # on ne le permet pas pour les logos
204
+    return false;
205
+    }
206
+
207
+    $repertoire = _DIR_TRANSFERT;
208
+    if (!@is_dir($repertoire)) {
209
+        $repertoire = str_replace(_DIR_TMP, '', $repertoire);
210
+        $repertoire = sous_repertoire(_DIR_TMP, $repertoire);
211
+    }
212
+
213
+    if (!$GLOBALS['visiteur_session']['restreint']) {
214
+        return $repertoire;
215
+    } else {
216
+        return sous_repertoire($repertoire, $GLOBALS['visiteur_session']['login']);
217
+    }
218 218
 }
219 219
 
220 220
 /**
@@ -233,35 +233,35 @@  discard block
 block discarded – undo
233 233
  * @return bool|mixed|string
234 234
  */
235 235
 function deplacer_fichier_upload($source, $dest, $move = false) {
236
-	// Securite
237
-	if (substr($dest, 0, strlen(_DIR_RACINE)) == _DIR_RACINE) {
238
-		$dest = _DIR_RACINE . preg_replace(',\.\.+,', '.', substr($dest, strlen(_DIR_RACINE)));
239
-	} else {
240
-		$dest = preg_replace(',\.\.+,', '.', $dest);
241
-	}
242
-
243
-	if ($move) {
244
-		$ok = @rename($source, $dest);
245
-	} else {
246
-		$ok = @copy($source, $dest);
247
-	}
248
-	if (!$ok) {
249
-		$ok = @move_uploaded_file($source, $dest);
250
-	}
251
-	if ($ok) {
252
-		@chmod($dest, _SPIP_CHMOD & ~0111);
253
-	} else {
254
-		$f = @fopen($dest, 'w');
255
-		if ($f) {
256
-			fclose($f);
257
-		} else {
258
-			include_spip('inc/flock');
259
-			raler_fichier($dest);
260
-		}
261
-		spip_unlink($dest);
262
-	}
263
-
264
-	return $ok ? $dest : false;
236
+    // Securite
237
+    if (substr($dest, 0, strlen(_DIR_RACINE)) == _DIR_RACINE) {
238
+        $dest = _DIR_RACINE . preg_replace(',\.\.+,', '.', substr($dest, strlen(_DIR_RACINE)));
239
+    } else {
240
+        $dest = preg_replace(',\.\.+,', '.', $dest);
241
+    }
242
+
243
+    if ($move) {
244
+        $ok = @rename($source, $dest);
245
+    } else {
246
+        $ok = @copy($source, $dest);
247
+    }
248
+    if (!$ok) {
249
+        $ok = @move_uploaded_file($source, $dest);
250
+    }
251
+    if ($ok) {
252
+        @chmod($dest, _SPIP_CHMOD & ~0111);
253
+    } else {
254
+        $f = @fopen($dest, 'w');
255
+        if ($f) {
256
+            fclose($f);
257
+        } else {
258
+            include_spip('inc/flock');
259
+            raler_fichier($dest);
260
+        }
261
+        spip_unlink($dest);
262
+    }
263
+
264
+    return $ok ? $dest : false;
265 265
 }
266 266
 
267 267
 
@@ -285,60 +285,60 @@  discard block
 block discarded – undo
285 285
  */
286 286
 function check_upload_error($error, $msg = '', $return = false) {
287 287
 
288
-	if (!$error) {
289
-		return false;
290
-	}
291
-
292
-	spip_log("Erreur upload $error -- cf. http://php.net/manual/fr/features.file-upload.errors.php");
293
-
294
-	switch ($error) {
295
-		case 4: /* UPLOAD_ERR_NO_FILE */
296
-			return true;
297
-
298
-		# on peut affiner les differents messages d'erreur
299
-		case 1: /* UPLOAD_ERR_INI_SIZE */
300
-			$msg = _T(
301
-				'upload_limit',
302
-				['max' => ini_get('upload_max_filesize')]
303
-			);
304
-			break;
305
-		case 2: /* UPLOAD_ERR_FORM_SIZE */
306
-			$msg = _T(
307
-				'upload_limit',
308
-				['max' => ini_get('upload_max_filesize')]
309
-			);
310
-			break;
311
-		case 3: /* UPLOAD_ERR_PARTIAL  */
312
-			$msg = _T(
313
-				'upload_limit',
314
-				['max' => ini_get('upload_max_filesize')]
315
-			);
316
-			break;
317
-
318
-		default: /* autre */
319
-			if (!$msg) {
320
-				$msg = _T('pass_erreur') . ' ' . $error
321
-					. '<br />' . propre('[->http://php.net/manual/fr/features.file-upload.errors.php]');
322
-			}
323
-			break;
324
-	}
325
-
326
-	spip_log("erreur upload $error");
327
-	if ($return) {
328
-		return $msg;
329
-	}
330
-
331
-	if (_request('iframe') == 'iframe') {
332
-		echo "<div class='upload_answer upload_error'>$msg</div>";
333
-		exit;
334
-	}
335
-
336
-	include_spip('inc/minipres');
337
-	echo minipres(
338
-		$msg,
339
-		"<div style='text-align: " . $GLOBALS['spip_lang_right'] . "'><a href='" . rawurldecode($GLOBALS['redirect']) . "'><button type='button'>" . _T('ecrire:bouton_suivant') . '</button></a></div>'
340
-	);
341
-	exit;
288
+    if (!$error) {
289
+        return false;
290
+    }
291
+
292
+    spip_log("Erreur upload $error -- cf. http://php.net/manual/fr/features.file-upload.errors.php");
293
+
294
+    switch ($error) {
295
+        case 4: /* UPLOAD_ERR_NO_FILE */
296
+            return true;
297
+
298
+        # on peut affiner les differents messages d'erreur
299
+        case 1: /* UPLOAD_ERR_INI_SIZE */
300
+            $msg = _T(
301
+                'upload_limit',
302
+                ['max' => ini_get('upload_max_filesize')]
303
+            );
304
+            break;
305
+        case 2: /* UPLOAD_ERR_FORM_SIZE */
306
+            $msg = _T(
307
+                'upload_limit',
308
+                ['max' => ini_get('upload_max_filesize')]
309
+            );
310
+            break;
311
+        case 3: /* UPLOAD_ERR_PARTIAL  */
312
+            $msg = _T(
313
+                'upload_limit',
314
+                ['max' => ini_get('upload_max_filesize')]
315
+            );
316
+            break;
317
+
318
+        default: /* autre */
319
+            if (!$msg) {
320
+                $msg = _T('pass_erreur') . ' ' . $error
321
+                    . '<br />' . propre('[->http://php.net/manual/fr/features.file-upload.errors.php]');
322
+            }
323
+            break;
324
+    }
325
+
326
+    spip_log("erreur upload $error");
327
+    if ($return) {
328
+        return $msg;
329
+    }
330
+
331
+    if (_request('iframe') == 'iframe') {
332
+        echo "<div class='upload_answer upload_error'>$msg</div>";
333
+        exit;
334
+    }
335
+
336
+    include_spip('inc/minipres');
337
+    echo minipres(
338
+        $msg,
339
+        "<div style='text-align: " . $GLOBALS['spip_lang_right'] . "'><a href='" . rawurldecode($GLOBALS['redirect']) . "'><button type='button'>" . _T('ecrire:bouton_suivant') . '</button></a></div>'
340
+    );
341
+    exit;
342 342
 }
343 343
 
344 344
 /**
@@ -355,24 +355,24 @@  discard block
 block discarded – undo
355 355
  * @return string
356 356
  */
357 357
 function corriger_extension($ext) {
358
-	$ext = preg_replace(',[^a-z0-9],i', '', $ext);
359
-	switch ($ext) {
360
-		case 'htm':
361
-			$ext = 'html';
362
-			break;
363
-		case 'jpeg':
364
-			$ext = 'jpg';
365
-			break;
366
-		case 'tiff':
367
-			$ext = 'tif';
368
-			break;
369
-		case 'aif':
370
-			$ext = 'aiff';
371
-			break;
372
-		case 'mpeg':
373
-			$ext = 'mpg';
374
-			break;
375
-	}
376
-
377
-	return $ext;
358
+    $ext = preg_replace(',[^a-z0-9],i', '', $ext);
359
+    switch ($ext) {
360
+        case 'htm':
361
+            $ext = 'html';
362
+            break;
363
+        case 'jpeg':
364
+            $ext = 'jpg';
365
+            break;
366
+        case 'tiff':
367
+            $ext = 'tif';
368
+            break;
369
+        case 'aif':
370
+            $ext = 'aiff';
371
+            break;
372
+        case 'mpeg':
373
+            $ext = 'mpg';
374
+            break;
375
+    }
376
+
377
+    return $ext;
378 378
 }
Please login to merge, or discard this patch.
ecrire/inc/editer.php 1 patch
Indentation   +492 added lines, -492 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
 include_spip('base/abstract_sql');
23 23
 
@@ -59,56 +59,56 @@  discard block
 block discarded – undo
59 59
  *     Retour des traitements.
60 60
  **/
61 61
 function formulaires_editer_objet_traiter(
62
-	$type,
63
-	$id = 'new',
64
-	$id_parent = 0,
65
-	$lier_trad = 0,
66
-	$retour = '',
67
-	$config_fonc = 'articles_edit_config',
68
-	$row = [],
69
-	$hidden = ''
62
+    $type,
63
+    $id = 'new',
64
+    $id_parent = 0,
65
+    $lier_trad = 0,
66
+    $retour = '',
67
+    $config_fonc = 'articles_edit_config',
68
+    $row = [],
69
+    $hidden = ''
70 70
 ) {
71 71
 
72
-	$res = [];
73
-	// eviter la redirection forcee par l'action...
74
-	set_request('redirect');
75
-	if ($action_editer = charger_fonction("editer_$type", 'action', true)) {
76
-		[$id, $err] = $action_editer($id);
77
-	} else {
78
-		$action_editer = charger_fonction('editer_objet', 'action');
79
-		[$id, $err] = $action_editer($id, $type);
80
-	}
81
-	$id_table_objet = id_table_objet($type);
82
-	$res[$id_table_objet] = $id;
83
-	if ($err or !$id) {
84
-		$res['message_erreur'] = ($err ?: _T('erreur'));
85
-	} else {
86
-		// Un lien de trad a prendre en compte
87
-		if ($lier_trad) {
88
-			// referencer la traduction
89
-			$referencer_traduction = charger_fonction('referencer_traduction', 'action');
90
-			$referencer_traduction($type, $id, $lier_trad);
91
-			// actions de recopie de champs / liens sur le nouvel objet créé
92
-			$completer_traduction = charger_fonction('completer_traduction', 'inc');
93
-			$err = $completer_traduction($type, $id, $lier_trad);
94
-			if ($err) {
95
-				$res['message_erreur'] = $err;
96
-				return $res;
97
-			}
98
-		}
99
-
100
-		$res['message_ok'] = _T('info_modification_enregistree');
101
-		if ($retour) {
102
-			if (strncmp($retour, 'javascript:', 11) == 0) {
103
-				$res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/' . substr($retour, 11) . '/*]]>*/</script>';
104
-				$res['editable'] = true;
105
-			} else {
106
-				$res['redirect'] = parametre_url($retour, $id_table_objet, $id);
107
-			}
108
-		}
109
-	}
110
-
111
-	return $res;
72
+    $res = [];
73
+    // eviter la redirection forcee par l'action...
74
+    set_request('redirect');
75
+    if ($action_editer = charger_fonction("editer_$type", 'action', true)) {
76
+        [$id, $err] = $action_editer($id);
77
+    } else {
78
+        $action_editer = charger_fonction('editer_objet', 'action');
79
+        [$id, $err] = $action_editer($id, $type);
80
+    }
81
+    $id_table_objet = id_table_objet($type);
82
+    $res[$id_table_objet] = $id;
83
+    if ($err or !$id) {
84
+        $res['message_erreur'] = ($err ?: _T('erreur'));
85
+    } else {
86
+        // Un lien de trad a prendre en compte
87
+        if ($lier_trad) {
88
+            // referencer la traduction
89
+            $referencer_traduction = charger_fonction('referencer_traduction', 'action');
90
+            $referencer_traduction($type, $id, $lier_trad);
91
+            // actions de recopie de champs / liens sur le nouvel objet créé
92
+            $completer_traduction = charger_fonction('completer_traduction', 'inc');
93
+            $err = $completer_traduction($type, $id, $lier_trad);
94
+            if ($err) {
95
+                $res['message_erreur'] = $err;
96
+                return $res;
97
+            }
98
+        }
99
+
100
+        $res['message_ok'] = _T('info_modification_enregistree');
101
+        if ($retour) {
102
+            if (strncmp($retour, 'javascript:', 11) == 0) {
103
+                $res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/' . substr($retour, 11) . '/*]]>*/</script>';
104
+                $res['editable'] = true;
105
+            } else {
106
+                $res['redirect'] = parametre_url($retour, $id_table_objet, $id);
107
+            }
108
+        }
109
+    }
110
+
111
+    return $res;
112 112
 }
113 113
 
114 114
 /**
@@ -132,29 +132,29 @@  discard block
 block discarded – undo
132 132
  *     Tableau des erreurs
133 133
  **/
134 134
 function formulaires_editer_objet_verifier($type, $id = 'new', $oblis = []) {
135
-	$erreurs = [];
136
-	if (intval($id)) {
137
-		$conflits = controler_contenu($type, $id);
138
-		if ($conflits and is_countable($conflits) ? count($conflits) : 0) {
139
-			foreach ($conflits as $champ => $conflit) {
140
-				if (!isset($erreurs[$champ])) {
141
-					$erreurs[$champ] = '';
142
-				}
143
-				$erreurs[$champ] .= _T('alerte_modif_info_concourante') . "<br /><textarea readonly='readonly' class='forml'>" . entites_html($conflit['base']) . '</textarea>';
144
-			}
145
-		}
146
-	}
147
-	foreach ($oblis as $obli) {
148
-		$value = _request($obli);
149
-		if (is_null($value) or !(is_array($value) ? count($value) : strlen($value))) {
150
-			if (!isset($erreurs[$obli])) {
151
-				$erreurs[$obli] = '';
152
-			}
153
-			$erreurs[$obli] .= _T('info_obligatoire');
154
-		}
155
-	}
156
-
157
-	return $erreurs;
135
+    $erreurs = [];
136
+    if (intval($id)) {
137
+        $conflits = controler_contenu($type, $id);
138
+        if ($conflits and is_countable($conflits) ? count($conflits) : 0) {
139
+            foreach ($conflits as $champ => $conflit) {
140
+                if (!isset($erreurs[$champ])) {
141
+                    $erreurs[$champ] = '';
142
+                }
143
+                $erreurs[$champ] .= _T('alerte_modif_info_concourante') . "<br /><textarea readonly='readonly' class='forml'>" . entites_html($conflit['base']) . '</textarea>';
144
+            }
145
+        }
146
+    }
147
+    foreach ($oblis as $obli) {
148
+        $value = _request($obli);
149
+        if (is_null($value) or !(is_array($value) ? count($value) : strlen($value))) {
150
+            if (!isset($erreurs[$obli])) {
151
+                $erreurs[$obli] = '';
152
+            }
153
+            $erreurs[$obli] .= _T('info_obligatoire');
154
+        }
155
+    }
156
+
157
+    return $erreurs;
158 158
 }
159 159
 
160 160
 /**
@@ -199,152 +199,152 @@  discard block
 block discarded – undo
199 199
  *     Environnement du formulaire.
200 200
  **/
201 201
 function formulaires_editer_objet_charger(
202
-	$type,
203
-	$id = 'new',
204
-	$id_parent = 0,
205
-	$lier_trad = 0,
206
-	$retour = '',
207
-	$config_fonc = 'articles_edit_config',
208
-	$row = [],
209
-	$hidden = ''
202
+    $type,
203
+    $id = 'new',
204
+    $id_parent = 0,
205
+    $lier_trad = 0,
206
+    $retour = '',
207
+    $config_fonc = 'articles_edit_config',
208
+    $row = [],
209
+    $hidden = ''
210 210
 ) {
211 211
 
212
-	$valeurs = [];
213
-	$table_objet = table_objet($type);
214
-	$table_objet_sql = table_objet_sql($type);
215
-	$id_table_objet = id_table_objet($type);
216
-
217
-	// on accepte pas une fonction de config inconnue si elle vient d'un modele
218
-	if (
219
-		$config_fonc
220
-		and !in_array($config_fonc, ['articles_edit_config', 'rubriques_edit_config', 'auteurs_edit_config'])
221
-		and $config_fonc !== $table_objet . '_edit_config'
222
-	) {
223
-		if (
224
-			$args = test_formulaire_inclus_par_modele()
225
-			and in_array($config_fonc, $args)
226
-		) {
227
-			$config_fonc = '';
228
-		}
229
-	}
230
-
231
-	$new = !is_numeric($id);
232
-	$lang_default = '';
233
-	// Appel direct dans un squelette
234
-	if (!$row) {
235
-		if (!$new or $lier_trad) {
236
-			if ($select = charger_fonction('precharger_' . $type, 'inc', true)) {
237
-				$row = $select($id, $id_parent, $lier_trad);
238
-				// si on a une fonction precharger, elle pu faire un reglage de langue
239
-				$lang_default = (!empty($row['lang']) ? $row['lang'] : null);
240
-			} else {
241
-				$row = sql_fetsel('*', $table_objet_sql, $id_table_objet . '=' . intval($id));
242
-			}
243
-			if (!$new) {
244
-				$md5 = controles_md5($row);
245
-			}
246
-		}
247
-		if (!$row) {
248
-			$row = [];
249
-			$trouver_table = charger_fonction('trouver_table', 'base');
250
-			if ($desc = $trouver_table($table_objet)) {
251
-				foreach ($desc['field'] as $k => $v) {
252
-					$row[$k] = '';
253
-				}
254
-			}
255
-		}
256
-	}
257
-
258
-	// Gaffe: sans ceci, on ecrase systematiquement l'article d'origine
259
-	// (et donc: pas de lien de traduction)
260
-	$id = ($new or $lier_trad)
261
-		? 'oui'
262
-		: $row[$id_table_objet];
263
-	$row[$id_table_objet] = $id;
264
-
265
-	$contexte = $row;
266
-	if (is_numeric($id_parent) && strlen($id_parent) && (!isset($contexte['id_parent']) or $new)) {
267
-		if (!isset($contexte['id_parent'])) {
268
-			unset($contexte['id_rubrique']);
269
-		}
270
-		$contexte['id_parent'] = $id_parent;
271
-	} elseif (!isset($contexte['id_parent'])) {
272
-		// id_rubrique dans id_parent si possible
273
-		if (isset($contexte['id_rubrique'])) {
274
-			$contexte['id_parent'] = $contexte['id_rubrique'];
275
-			unset($contexte['id_rubrique']);
276
-		} else {
277
-			$contexte['id_parent'] = '';
278
-		}
279
-		if (
280
-			!$contexte['id_parent']
281
-			and $preselectionner_parent_nouvel_objet = charger_fonction('preselectionner_parent_nouvel_objet', 'inc', true)
282
-		) {
283
-			$contexte['id_parent'] = $preselectionner_parent_nouvel_objet($type, $row);
284
-		}
285
-	}
286
-
287
-	$config = [];
288
-	if ($config_fonc) {
289
-		$contexte['config'] = $config = $config_fonc($contexte);
290
-		if (!$lang_default) {
291
-			$lang_default = $config['langue'] ?? session_get('lang') ;
292
-		}
293
-	}
294
-	$config = $config + [
295
-		'lignes' => 0,
296
-		'langue' => '',
297
-	];
298
-
299
-	$att_text = " class='textarea' "
300
-		. " rows='"
301
-		. ($config['lignes'] + 15)
302
-		. "' cols='40'";
303
-	if (isset($contexte['texte'])) {
304
-		[$contexte['texte'], $contexte['_texte_trop_long']] = editer_texte_recolle($contexte['texte'], $att_text);
305
-	}
306
-
307
-	// on veut conserver la langue de l'interface ;
308
-	// on passe cette donnee sous un autre nom, au cas ou le squelette
309
-	// voudrait l'exploiter
310
-	if (isset($contexte['lang'])) {
311
-		$contexte['langue'] = $contexte['lang'];
312
-		unset($contexte['lang']);
313
-	}
314
-
315
-	$contexte['_hidden'] = "<input type='hidden' name='editer_$type' value='oui' />\n" .
316
-		(!$lier_trad ? '' :
317
-			("\n<input type='hidden' name='lier_trad' value='" .
318
-				$lier_trad .
319
-				"' />" .
320
-				"\n<input type='hidden' name='changer_lang' value='" .
321
-				$lang_default .
322
-				"' />"))
323
-		. $hidden
324
-		. ($md5 ?? '');
325
-
326
-	// preciser que le formulaire doit passer dans un pipeline
327
-	$contexte['_pipeline'] = ['editer_contenu_objet', ['type' => $type, 'id' => $id]];
328
-
329
-	// preciser que le formulaire doit etre securise auteur/action
330
-	// n'est plus utile lorsque l'action accepte l'id en argument direct
331
-	// on le garde pour compat
332
-	$contexte['_action'] = ["editer_$type", $id];
333
-
334
-	// et in fine placer l'autorisation
335
-	include_spip('inc/autoriser');
336
-	if (intval($id)) {
337
-		if (!autoriser('modifier', $type, intval($id))) {
338
-			$valeurs['editable'] = '';
339
-		}
340
-	}
341
-	else {
342
-		if (!autoriser('creer', $type, 0, null, ['id_parent' => $id_parent])) {
343
-			$valeurs['editable'] = '';
344
-		}
345
-	}
346
-
347
-	return $contexte;
212
+    $valeurs = [];
213
+    $table_objet = table_objet($type);
214
+    $table_objet_sql = table_objet_sql($type);
215
+    $id_table_objet = id_table_objet($type);
216
+
217
+    // on accepte pas une fonction de config inconnue si elle vient d'un modele
218
+    if (
219
+        $config_fonc
220
+        and !in_array($config_fonc, ['articles_edit_config', 'rubriques_edit_config', 'auteurs_edit_config'])
221
+        and $config_fonc !== $table_objet . '_edit_config'
222
+    ) {
223
+        if (
224
+            $args = test_formulaire_inclus_par_modele()
225
+            and in_array($config_fonc, $args)
226
+        ) {
227
+            $config_fonc = '';
228
+        }
229
+    }
230
+
231
+    $new = !is_numeric($id);
232
+    $lang_default = '';
233
+    // Appel direct dans un squelette
234
+    if (!$row) {
235
+        if (!$new or $lier_trad) {
236
+            if ($select = charger_fonction('precharger_' . $type, 'inc', true)) {
237
+                $row = $select($id, $id_parent, $lier_trad);
238
+                // si on a une fonction precharger, elle pu faire un reglage de langue
239
+                $lang_default = (!empty($row['lang']) ? $row['lang'] : null);
240
+            } else {
241
+                $row = sql_fetsel('*', $table_objet_sql, $id_table_objet . '=' . intval($id));
242
+            }
243
+            if (!$new) {
244
+                $md5 = controles_md5($row);
245
+            }
246
+        }
247
+        if (!$row) {
248
+            $row = [];
249
+            $trouver_table = charger_fonction('trouver_table', 'base');
250
+            if ($desc = $trouver_table($table_objet)) {
251
+                foreach ($desc['field'] as $k => $v) {
252
+                    $row[$k] = '';
253
+                }
254
+            }
255
+        }
256
+    }
257
+
258
+    // Gaffe: sans ceci, on ecrase systematiquement l'article d'origine
259
+    // (et donc: pas de lien de traduction)
260
+    $id = ($new or $lier_trad)
261
+        ? 'oui'
262
+        : $row[$id_table_objet];
263
+    $row[$id_table_objet] = $id;
264
+
265
+    $contexte = $row;
266
+    if (is_numeric($id_parent) && strlen($id_parent) && (!isset($contexte['id_parent']) or $new)) {
267
+        if (!isset($contexte['id_parent'])) {
268
+            unset($contexte['id_rubrique']);
269
+        }
270
+        $contexte['id_parent'] = $id_parent;
271
+    } elseif (!isset($contexte['id_parent'])) {
272
+        // id_rubrique dans id_parent si possible
273
+        if (isset($contexte['id_rubrique'])) {
274
+            $contexte['id_parent'] = $contexte['id_rubrique'];
275
+            unset($contexte['id_rubrique']);
276
+        } else {
277
+            $contexte['id_parent'] = '';
278
+        }
279
+        if (
280
+            !$contexte['id_parent']
281
+            and $preselectionner_parent_nouvel_objet = charger_fonction('preselectionner_parent_nouvel_objet', 'inc', true)
282
+        ) {
283
+            $contexte['id_parent'] = $preselectionner_parent_nouvel_objet($type, $row);
284
+        }
285
+    }
286
+
287
+    $config = [];
288
+    if ($config_fonc) {
289
+        $contexte['config'] = $config = $config_fonc($contexte);
290
+        if (!$lang_default) {
291
+            $lang_default = $config['langue'] ?? session_get('lang') ;
292
+        }
293
+    }
294
+    $config = $config + [
295
+        'lignes' => 0,
296
+        'langue' => '',
297
+    ];
298
+
299
+    $att_text = " class='textarea' "
300
+        . " rows='"
301
+        . ($config['lignes'] + 15)
302
+        . "' cols='40'";
303
+    if (isset($contexte['texte'])) {
304
+        [$contexte['texte'], $contexte['_texte_trop_long']] = editer_texte_recolle($contexte['texte'], $att_text);
305
+    }
306
+
307
+    // on veut conserver la langue de l'interface ;
308
+    // on passe cette donnee sous un autre nom, au cas ou le squelette
309
+    // voudrait l'exploiter
310
+    if (isset($contexte['lang'])) {
311
+        $contexte['langue'] = $contexte['lang'];
312
+        unset($contexte['lang']);
313
+    }
314
+
315
+    $contexte['_hidden'] = "<input type='hidden' name='editer_$type' value='oui' />\n" .
316
+        (!$lier_trad ? '' :
317
+            ("\n<input type='hidden' name='lier_trad' value='" .
318
+                $lier_trad .
319
+                "' />" .
320
+                "\n<input type='hidden' name='changer_lang' value='" .
321
+                $lang_default .
322
+                "' />"))
323
+        . $hidden
324
+        . ($md5 ?? '');
325
+
326
+    // preciser que le formulaire doit passer dans un pipeline
327
+    $contexte['_pipeline'] = ['editer_contenu_objet', ['type' => $type, 'id' => $id]];
328
+
329
+    // preciser que le formulaire doit etre securise auteur/action
330
+    // n'est plus utile lorsque l'action accepte l'id en argument direct
331
+    // on le garde pour compat
332
+    $contexte['_action'] = ["editer_$type", $id];
333
+
334
+    // et in fine placer l'autorisation
335
+    include_spip('inc/autoriser');
336
+    if (intval($id)) {
337
+        if (!autoriser('modifier', $type, intval($id))) {
338
+            $valeurs['editable'] = '';
339
+        }
340
+    }
341
+    else {
342
+        if (!autoriser('creer', $type, 0, null, ['id_parent' => $id_parent])) {
343
+            $valeurs['editable'] = '';
344
+        }
345
+    }
346
+
347
+    return $contexte;
348 348
 }
349 349
 
350 350
 /**
@@ -355,29 +355,29 @@  discard block
 block discarded – undo
355 355
  * @return array
356 356
  */
357 357
 function coupe_trop_long($texte) {
358
-	$aider = charger_fonction('aider', 'inc');
359
-	if (strlen($texte) > 28 * 1024) {
360
-		$texte = str_replace("\r\n", "\n", $texte);
361
-		$pos = strpos($texte, "\n\n", 28 * 1024);  // coupe para > 28 ko
362
-		if ($pos > 0 and $pos < 32 * 1024) {
363
-			$debut = substr($texte, 0, $pos) . "\n\n<!--SPIP-->\n";
364
-			$suite = substr($texte, $pos + 2);
365
-		} else {
366
-			$pos = strpos($texte, ' ', 28 * 1024);  // sinon coupe espace
367
-			if (!($pos > 0 and $pos < 32 * 1024)) {
368
-				$pos = 28 * 1024;  // au pire (pas d'espace trouv'e)
369
-				$decalage = 0; // si y'a pas d'espace, il ne faut pas perdre le caract`ere
370
-			} else {
371
-				$decalage = 1;
372
-			}
373
-			$debut = substr($texte, 0, $pos + $decalage); // Il faut conserver l'espace s'il y en a un
374
-			$suite = substr($texte, $pos + $decalage);
375
-		}
376
-
377
-		return ([$debut, $suite]);
378
-	} else {
379
-		return ([$texte, '']);
380
-	}
358
+    $aider = charger_fonction('aider', 'inc');
359
+    if (strlen($texte) > 28 * 1024) {
360
+        $texte = str_replace("\r\n", "\n", $texte);
361
+        $pos = strpos($texte, "\n\n", 28 * 1024);  // coupe para > 28 ko
362
+        if ($pos > 0 and $pos < 32 * 1024) {
363
+            $debut = substr($texte, 0, $pos) . "\n\n<!--SPIP-->\n";
364
+            $suite = substr($texte, $pos + 2);
365
+        } else {
366
+            $pos = strpos($texte, ' ', 28 * 1024);  // sinon coupe espace
367
+            if (!($pos > 0 and $pos < 32 * 1024)) {
368
+                $pos = 28 * 1024;  // au pire (pas d'espace trouv'e)
369
+                $decalage = 0; // si y'a pas d'espace, il ne faut pas perdre le caract`ere
370
+            } else {
371
+                $decalage = 1;
372
+            }
373
+            $debut = substr($texte, 0, $pos + $decalage); // Il faut conserver l'espace s'il y en a un
374
+            $suite = substr($texte, $pos + $decalage);
375
+        }
376
+
377
+        return ([$debut, $suite]);
378
+    } else {
379
+        return ([$texte, '']);
380
+    }
381 381
 }
382 382
 
383 383
 /**
@@ -388,25 +388,25 @@  discard block
 block discarded – undo
388 388
  * @return array
389 389
  */
390 390
 function editer_texte_recolle($texte, $att_text) {
391
-	if (
392
-		(strlen($texte) < 29 * 1024)
393
-		or (include_spip('inc/layer') and ($GLOBALS['browser_name'] != 'MSIE'))
394
-	) {
395
-		return [$texte, ''];
396
-	}
397
-
398
-	include_spip('inc/barre');
399
-	$textes_supplement = "<br /><span style='color: red'>" . _T('info_texte_long') . "</span>\n";
400
-	$nombre = 0;
401
-
402
-	while (strlen($texte) > 29 * 1024) {
403
-		$nombre++;
404
-		[$texte1, $texte] = coupe_trop_long($texte);
405
-		$textes_supplement .= '<br />' .
406
-			"<textarea id='texte$nombre' name='texte_plus[$nombre]'$att_text>$texte1</textarea>\n";
407
-	}
408
-
409
-	return [$texte, $textes_supplement];
391
+    if (
392
+        (strlen($texte) < 29 * 1024)
393
+        or (include_spip('inc/layer') and ($GLOBALS['browser_name'] != 'MSIE'))
394
+    ) {
395
+        return [$texte, ''];
396
+    }
397
+
398
+    include_spip('inc/barre');
399
+    $textes_supplement = "<br /><span style='color: red'>" . _T('info_texte_long') . "</span>\n";
400
+    $nombre = 0;
401
+
402
+    while (strlen($texte) > 29 * 1024) {
403
+        $nombre++;
404
+        [$texte1, $texte] = coupe_trop_long($texte);
405
+        $textes_supplement .= '<br />' .
406
+            "<textarea id='texte$nombre' name='texte_plus[$nombre]'$att_text>$texte1</textarea>\n";
407
+    }
408
+
409
+    return [$texte, $textes_supplement];
410 410
 }
411 411
 
412 412
 /**
@@ -417,17 +417,17 @@  discard block
 block discarded – undo
417 417
  * @param int $longueur
418 418
  */
419 419
 function titre_automatique($champ_titre, $champs_contenu, $longueur = null) {
420
-	if (!_request($champ_titre)) {
421
-		$titrer_contenu = charger_fonction('titrer_contenu', 'inc');
422
-		if (!is_null($longueur)) {
423
-			$t = $titrer_contenu($champs_contenu, null, $longueur);
424
-		} else {
425
-			$t = $titrer_contenu($champs_contenu);
426
-		}
427
-		if ($t) {
428
-			set_request($champ_titre, $t);
429
-		}
430
-	}
420
+    if (!_request($champ_titre)) {
421
+        $titrer_contenu = charger_fonction('titrer_contenu', 'inc');
422
+        if (!is_null($longueur)) {
423
+            $t = $titrer_contenu($champs_contenu, null, $longueur);
424
+        } else {
425
+            $t = $titrer_contenu($champs_contenu);
426
+        }
427
+        if ($t) {
428
+            set_request($champ_titre, $t);
429
+        }
430
+    }
431 431
 }
432 432
 
433 433
 /**
@@ -447,20 +447,20 @@  discard block
 block discarded – undo
447 447
  * @return string
448 448
  */
449 449
 function inc_titrer_contenu_dist($champs_contenu, $c = null, $longueur = 50) {
450
-	// trouver un champ texte non vide
451
-	$t = '';
452
-	foreach ($champs_contenu as $champ) {
453
-		if ($t = _request($champ, $c)) {
454
-			break;
455
-		}
456
-	}
457
-
458
-	if ($t) {
459
-		include_spip('inc/texte_mini');
460
-		$t = couper($t, $longueur, '...');
461
-	}
462
-
463
-	return $t;
450
+    // trouver un champ texte non vide
451
+    $t = '';
452
+    foreach ($champs_contenu as $champ) {
453
+        if ($t = _request($champ, $c)) {
454
+            break;
455
+        }
456
+    }
457
+
458
+    if ($t) {
459
+        include_spip('inc/texte_mini');
460
+        $t = couper($t, $longueur, '...');
461
+    }
462
+
463
+    return $t;
464 464
 }
465 465
 
466 466
 /**
@@ -482,26 +482,26 @@  discard block
 block discarded – undo
482 482
  *      - array sinon couples ('$prefixe$colonne => md5)
483 483
  **/
484 484
 function controles_md5(array $data, string $prefixe = 'ctr_', string $format = 'html') {
485
-	$ctr = [];
486
-	foreach ($data as $key => $val) {
487
-		$m = md5($val ?? '');
488
-		$k = $prefixe . $key;
489
-
490
-		switch ($format) {
491
-			case 'html':
492
-				$ctr[$k] = "<input type='hidden' value='$m' name='$k' />";
493
-				break;
494
-			default:
495
-				$ctr[$k] = $m;
496
-				break;
497
-		}
498
-	}
499
-
500
-	if ($format === 'html') {
501
-		return "\n\n<!-- controles md5 -->\n" . join("\n", $ctr) . "\n\n";
502
-	} else {
503
-		return $ctr;
504
-	}
485
+    $ctr = [];
486
+    foreach ($data as $key => $val) {
487
+        $m = md5($val ?? '');
488
+        $k = $prefixe . $key;
489
+
490
+        switch ($format) {
491
+            case 'html':
492
+                $ctr[$k] = "<input type='hidden' value='$m' name='$k' />";
493
+                break;
494
+            default:
495
+                $ctr[$k] = $m;
496
+                break;
497
+        }
498
+    }
499
+
500
+    if ($format === 'html') {
501
+        return "\n\n<!-- controles md5 -->\n" . join("\n", $ctr) . "\n\n";
502
+    } else {
503
+        return $ctr;
504
+    }
505 505
 }
506 506
 
507 507
 /**
@@ -540,80 +540,80 @@  discard block
 block discarded – undo
540 540
  *     - post : le contenu posté
541 541
  **/
542 542
 function controler_contenu($type, $id, $options = [], $c = false, $serveur = '') {
543
-	include_spip('inc/filtres');
544
-
545
-	$table_objet = table_objet($type);
546
-	$spip_table_objet = table_objet_sql($type);
547
-	$trouver_table = charger_fonction('trouver_table', 'base');
548
-	$desc = $trouver_table($table_objet, $serveur);
549
-
550
-	// Appels incomplets (sans $c)
551
-	if (!is_array($c)) {
552
-		$c = [];
553
-		foreach ($desc['field'] as $champ => $ignore) {
554
-			if (_request($champ)) {
555
-				$c[$champ] = _request($champ);
556
-			}
557
-		}
558
-	}
559
-
560
-	// Securite : certaines variables ne sont jamais acceptees ici
561
-	// car elles ne relevent pas de autoriser(article, modifier) ;
562
-	// il faut passer par instituer_XX()
563
-	// TODO: faut-il passer ces variables interdites
564
-	// dans un fichier de description separe ?
565
-	unset($c['statut']);
566
-	unset($c['id_parent']);
567
-	unset($c['id_rubrique']);
568
-	unset($c['id_secteur']);
569
-
570
-	// Gerer les champs non vides
571
-	if (isset($options['nonvide']) and is_array($options['nonvide'])) {
572
-		foreach ($options['nonvide'] as $champ => $sinon) {
573
-			if ($c[$champ] === '') {
574
-				$c[$champ] = $sinon;
575
-			}
576
-		}
577
-	}
578
-
579
-	// N'accepter que les champs qui existent
580
-	// [TODO] ici aussi on peut valider les contenus en fonction du type
581
-	$champs = [];
582
-	foreach ($desc['field'] as $champ => $ignore) {
583
-		if (isset($c[$champ])) {
584
-			$champs[$champ] = $c[$champ];
585
-		}
586
-	}
587
-
588
-	// Nettoyer les valeurs
589
-	$champs = array_map('corriger_caracteres', $champs);
590
-
591
-	// Envoyer aux plugins
592
-	$champs = pipeline(
593
-		'pre_edition',
594
-		[
595
-			'args' => [
596
-				'table' => $spip_table_objet, // compatibilite
597
-				'table_objet' => $table_objet,
598
-				'spip_table_objet' => $spip_table_objet,
599
-				'type' => $type,
600
-				'id_objet' => $id,
601
-				'champs' => $options['champs'] ?? [], // [doc] c'est quoi ?
602
-				'action' => 'controler',
603
-				'serveur' => $serveur,
604
-			],
605
-			'data' => $champs
606
-		]
607
-	);
608
-
609
-	if (!$champs) {
610
-		return false;
611
-	}
612
-
613
-	// Verifier si les mises a jour sont pertinentes, datees, en conflit etc
614
-	$conflits = controler_md5($champs, $_POST, $type, $id, $serveur, $options['prefix'] ?? 'ctr_');
615
-
616
-	return $conflits;
543
+    include_spip('inc/filtres');
544
+
545
+    $table_objet = table_objet($type);
546
+    $spip_table_objet = table_objet_sql($type);
547
+    $trouver_table = charger_fonction('trouver_table', 'base');
548
+    $desc = $trouver_table($table_objet, $serveur);
549
+
550
+    // Appels incomplets (sans $c)
551
+    if (!is_array($c)) {
552
+        $c = [];
553
+        foreach ($desc['field'] as $champ => $ignore) {
554
+            if (_request($champ)) {
555
+                $c[$champ] = _request($champ);
556
+            }
557
+        }
558
+    }
559
+
560
+    // Securite : certaines variables ne sont jamais acceptees ici
561
+    // car elles ne relevent pas de autoriser(article, modifier) ;
562
+    // il faut passer par instituer_XX()
563
+    // TODO: faut-il passer ces variables interdites
564
+    // dans un fichier de description separe ?
565
+    unset($c['statut']);
566
+    unset($c['id_parent']);
567
+    unset($c['id_rubrique']);
568
+    unset($c['id_secteur']);
569
+
570
+    // Gerer les champs non vides
571
+    if (isset($options['nonvide']) and is_array($options['nonvide'])) {
572
+        foreach ($options['nonvide'] as $champ => $sinon) {
573
+            if ($c[$champ] === '') {
574
+                $c[$champ] = $sinon;
575
+            }
576
+        }
577
+    }
578
+
579
+    // N'accepter que les champs qui existent
580
+    // [TODO] ici aussi on peut valider les contenus en fonction du type
581
+    $champs = [];
582
+    foreach ($desc['field'] as $champ => $ignore) {
583
+        if (isset($c[$champ])) {
584
+            $champs[$champ] = $c[$champ];
585
+        }
586
+    }
587
+
588
+    // Nettoyer les valeurs
589
+    $champs = array_map('corriger_caracteres', $champs);
590
+
591
+    // Envoyer aux plugins
592
+    $champs = pipeline(
593
+        'pre_edition',
594
+        [
595
+            'args' => [
596
+                'table' => $spip_table_objet, // compatibilite
597
+                'table_objet' => $table_objet,
598
+                'spip_table_objet' => $spip_table_objet,
599
+                'type' => $type,
600
+                'id_objet' => $id,
601
+                'champs' => $options['champs'] ?? [], // [doc] c'est quoi ?
602
+                'action' => 'controler',
603
+                'serveur' => $serveur,
604
+            ],
605
+            'data' => $champs
606
+        ]
607
+    );
608
+
609
+    if (!$champs) {
610
+        return false;
611
+    }
612
+
613
+    // Verifier si les mises a jour sont pertinentes, datees, en conflit etc
614
+    $conflits = controler_md5($champs, $_POST, $type, $id, $serveur, $options['prefix'] ?? 'ctr_');
615
+
616
+    return $conflits;
617 617
 }
618 618
 
619 619
 
@@ -643,64 +643,64 @@  discard block
 block discarded – undo
643 643
  *     - post : le contenu posté
644 644
  **/
645 645
 function controler_md5(&$champs, $ctr, $type, $id, $serveur, $prefix = 'ctr_') {
646
-	$spip_table_objet = table_objet_sql($type);
647
-	$id_table_objet = id_table_objet($type);
648
-
649
-	// Controle des MD5 envoyes
650
-	// On elimine les donnees non modifiees par le formulaire (mais
651
-	// potentiellement modifiees entre temps par un autre utilisateur)
652
-	foreach ($champs as $key => $val) {
653
-		if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) {
654
-			if (is_scalar($val) and $m == md5($val)) {
655
-				unset($champs[$key]);
656
-			}
657
-		}
658
-	}
659
-	if (!$champs) {
660
-		return;
661
-	}
662
-
663
-	// On veut savoir si notre modif va avoir un impact
664
-	// par rapport aux donnees contenues dans la base
665
-	// (qui peuvent etre differentes de celles ayant servi a calculer le ctr)
666
-	$s = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=$id", $serveur);
667
-	$intact = true;
668
-	foreach ($champs as $ch => $val) {
669
-		$intact &= ($s[$ch] == $val);
670
-	}
671
-	if ($intact) {
672
-		return;
673
-	}
674
-
675
-	// Detection de conflits :
676
-	// On verifie si notre modif ne provient pas d'un formulaire
677
-	// genere a partir de donnees modifiees dans l'intervalle ; ici
678
-	// on compare a ce qui est dans la base, et on bloque en cas
679
-	// de conflit.
680
-	$ctrh = $ctrq = $conflits = [];
681
-	foreach (array_keys($champs) as $key) {
682
-		if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) {
683
-			$ctrh[$key] = $m;
684
-			$ctrq[] = $key;
685
-		}
686
-	}
687
-	if ($ctrq) {
688
-		$ctrq = sql_fetsel($ctrq, $spip_table_objet, "$id_table_objet=$id", $serveur);
689
-		foreach ($ctrh as $key => $m) {
690
-			if (
691
-				$m != md5($ctrq[$key])
692
-				and $champs[$key] !== $ctrq[$key]
693
-			) {
694
-				$conflits[$key] = [
695
-					'base' => $ctrq[$key],
696
-					'post' => $champs[$key]
697
-				];
698
-				unset($champs[$key]); # stocker quand meme les modifs ?
699
-			}
700
-		}
701
-	}
702
-
703
-	return $conflits;
646
+    $spip_table_objet = table_objet_sql($type);
647
+    $id_table_objet = id_table_objet($type);
648
+
649
+    // Controle des MD5 envoyes
650
+    // On elimine les donnees non modifiees par le formulaire (mais
651
+    // potentiellement modifiees entre temps par un autre utilisateur)
652
+    foreach ($champs as $key => $val) {
653
+        if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) {
654
+            if (is_scalar($val) and $m == md5($val)) {
655
+                unset($champs[$key]);
656
+            }
657
+        }
658
+    }
659
+    if (!$champs) {
660
+        return;
661
+    }
662
+
663
+    // On veut savoir si notre modif va avoir un impact
664
+    // par rapport aux donnees contenues dans la base
665
+    // (qui peuvent etre differentes de celles ayant servi a calculer le ctr)
666
+    $s = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=$id", $serveur);
667
+    $intact = true;
668
+    foreach ($champs as $ch => $val) {
669
+        $intact &= ($s[$ch] == $val);
670
+    }
671
+    if ($intact) {
672
+        return;
673
+    }
674
+
675
+    // Detection de conflits :
676
+    // On verifie si notre modif ne provient pas d'un formulaire
677
+    // genere a partir de donnees modifiees dans l'intervalle ; ici
678
+    // on compare a ce qui est dans la base, et on bloque en cas
679
+    // de conflit.
680
+    $ctrh = $ctrq = $conflits = [];
681
+    foreach (array_keys($champs) as $key) {
682
+        if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) {
683
+            $ctrh[$key] = $m;
684
+            $ctrq[] = $key;
685
+        }
686
+    }
687
+    if ($ctrq) {
688
+        $ctrq = sql_fetsel($ctrq, $spip_table_objet, "$id_table_objet=$id", $serveur);
689
+        foreach ($ctrh as $key => $m) {
690
+            if (
691
+                $m != md5($ctrq[$key])
692
+                and $champs[$key] !== $ctrq[$key]
693
+            ) {
694
+                $conflits[$key] = [
695
+                    'base' => $ctrq[$key],
696
+                    'post' => $champs[$key]
697
+                ];
698
+                unset($champs[$key]); # stocker quand meme les modifs ?
699
+            }
700
+        }
701
+    }
702
+
703
+    return $conflits;
704 704
 }
705 705
 
706 706
 /**
@@ -712,11 +712,11 @@  discard block
 block discarded – undo
712 712
  * @return string
713 713
  */
714 714
 function display_conflit_champ($x) {
715
-	if (strstr($x, "\n") or strlen($x) > 80) {
716
-		return "<textarea style='width:99%; height:10em;'>" . entites_html($x) . "</textarea>\n";
717
-	} else {
718
-		return "<input type='text' size='40' style='width:99%' value=\"" . entites_html($x) . "\" />\n";
719
-	}
715
+    if (strstr($x, "\n") or strlen($x) > 80) {
716
+        return "<textarea style='width:99%; height:10em;'>" . entites_html($x) . "</textarea>\n";
717
+    } else {
718
+        return "<input type='text' size='40' style='width:99%' value=\"" . entites_html($x) . "\" />\n";
719
+    }
720 720
 }
721 721
 
722 722
 /**
@@ -734,57 +734,57 @@  discard block
 block discarded – undo
734 734
  * @return string
735 735
  */
736 736
 function signaler_conflits_edition($conflits, $redirect = '') {
737
-	include_spip('inc/minipres');
738
-	include_spip('inc/revisions');
739
-	include_spip('afficher_diff/champ');
740
-	include_spip('inc/suivi_versions');
741
-	include_spip('inc/diff');
742
-	$diffs = [];
743
-	foreach ($conflits as $champ => $a) {
744
-		// probleme de stockage ou conflit d'edition ?
745
-		$base = $a['save'] ?? $a['base'];
746
-
747
-		$diff = new Diff(new DiffTexte());
748
-		$n = preparer_diff($a['post']);
749
-		$o = preparer_diff($base);
750
-		$d = propre_diff(afficher_para_modifies(afficher_diff($diff->comparer($n, $o))));
751
-
752
-		$titre = isset($a['save']) ? _L(
753
-			'Echec lors de l\'enregistrement du champ @champ@',
754
-			['champ' => $champ]
755
-		) : $champ;
756
-
757
-		$diffs[] = "<h2>$titre</h2>\n"
758
-			. '<h3>' . _T('info_conflit_edition_differences') . "</h3>\n"
759
-			. "<div style='max-height:8em; overflow: auto; width:99%;'>" . $d . "</div>\n"
760
-			. '<h4>' . _T('info_conflit_edition_votre_version') . '</h4>'
761
-			. display_conflit_champ($a['post'])
762
-			. '<h4>' . _T('info_conflit_edition_version_enregistree') . '</h4>'
763
-			. display_conflit_champ($base);
764
-	}
765
-
766
-	if ($redirect) {
767
-		$id = uniqid(random_int(0, mt_getrandmax()));
768
-		$redirect = "<form action='$redirect' method='get'
737
+    include_spip('inc/minipres');
738
+    include_spip('inc/revisions');
739
+    include_spip('afficher_diff/champ');
740
+    include_spip('inc/suivi_versions');
741
+    include_spip('inc/diff');
742
+    $diffs = [];
743
+    foreach ($conflits as $champ => $a) {
744
+        // probleme de stockage ou conflit d'edition ?
745
+        $base = $a['save'] ?? $a['base'];
746
+
747
+        $diff = new Diff(new DiffTexte());
748
+        $n = preparer_diff($a['post']);
749
+        $o = preparer_diff($base);
750
+        $d = propre_diff(afficher_para_modifies(afficher_diff($diff->comparer($n, $o))));
751
+
752
+        $titre = isset($a['save']) ? _L(
753
+            'Echec lors de l\'enregistrement du champ @champ@',
754
+            ['champ' => $champ]
755
+        ) : $champ;
756
+
757
+        $diffs[] = "<h2>$titre</h2>\n"
758
+            . '<h3>' . _T('info_conflit_edition_differences') . "</h3>\n"
759
+            . "<div style='max-height:8em; overflow: auto; width:99%;'>" . $d . "</div>\n"
760
+            . '<h4>' . _T('info_conflit_edition_votre_version') . '</h4>'
761
+            . display_conflit_champ($a['post'])
762
+            . '<h4>' . _T('info_conflit_edition_version_enregistree') . '</h4>'
763
+            . display_conflit_champ($base);
764
+    }
765
+
766
+    if ($redirect) {
767
+        $id = uniqid(random_int(0, mt_getrandmax()));
768
+        $redirect = "<form action='$redirect' method='get'
769 769
 			id='$id'
770 770
 			style='float:" . $GLOBALS['spip_lang_right'] . "; margin-top:2em;'>\n"
771
-			. form_hidden($redirect)
772
-			. "<input type='submit' value='" . _T('icone_retour') . "' />
771
+            . form_hidden($redirect)
772
+            . "<input type='submit' value='" . _T('icone_retour') . "' />
773 773
 		</form>\n";
774 774
 
775
-		// pour les documents, on est probablement en ajax : il faut ajaxer
776
-		if (_AJAX) {
777
-			$redirect .= '<script type="text/javascript">'
778
-				. 'setTimeout(function(){$("#' . $id . '")
775
+        // pour les documents, on est probablement en ajax : il faut ajaxer
776
+        if (_AJAX) {
777
+            $redirect .= '<script type="text/javascript">'
778
+                . 'setTimeout(function(){$("#' . $id . '")
779 779
 			.ajaxForm({target:$("#' . $id . '").parent()});
780 780
 			}, 200);'
781
-				. "</script>\n";
782
-		}
783
-	}
781
+                . "</script>\n";
782
+        }
783
+    }
784 784
 
785
-	echo minipres(
786
-		_T('titre_conflit_edition'),
787
-		'<style>
785
+    echo minipres(
786
+        _T('titre_conflit_edition'),
787
+        '<style>
788 788
 .diff-para-deplace { background: #e8e8ff; }
789 789
 .diff-para-ajoute { background: #d0ffc0; color: #000; }
790 790
 .diff-para-supprime { background: #ffd0c0; color: #904040; text-decoration: line-through; }
@@ -795,12 +795,12 @@  discard block
 block discarded – undo
795 795
 .diff-para-deplace .diff-supprime { background: #ffb8b8; border: 1px solid #808080; }
796 796
 .diff-para-deplace .diff-deplace { background: #b8b8ff; border: 1px solid #808080; }
797 797
 </style>'
798
-		. '<p>' . _T('info_conflit_edition_avis_non_sauvegarde') . '</p>'
799
-		. '<p>' . _T('texte_conflit_edition_correction') . '</p>'
800
-		. "<div style='text-align:" . $GLOBALS['spip_lang_left'] . ";'>"
801
-		. join("\n", $diffs)
802
-		. "</div>\n"
803
-
804
-		. $redirect
805
-	);
798
+        . '<p>' . _T('info_conflit_edition_avis_non_sauvegarde') . '</p>'
799
+        . '<p>' . _T('texte_conflit_edition_correction') . '</p>'
800
+        . "<div style='text-align:" . $GLOBALS['spip_lang_left'] . ";'>"
801
+        . join("\n", $diffs)
802
+        . "</div>\n"
803
+
804
+        . $redirect
805
+    );
806 806
 }
Please login to merge, or discard this patch.
ecrire/inc/importer_csv.php 1 patch
Indentation   +86 added lines, -86 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 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/charsets');
@@ -42,22 +42,22 @@  discard block
 block discarded – undo
42 42
  * @return array
43 43
  */
44 44
 function importer_csv_importcharset($texte, $definir_charset_source = false) {
45
-	// le plus frequent, en particulier avec les trucs de ms@@@
46
-	static $charset_source = 'iso-8859-1';
47
-	if ($definir_charset_source) {
48
-		if ($definir_charset_source === true) {
49
-			$charset_source = 'iso-8859-1';
50
-		} else {
51
-			$charset_source = $definir_charset_source;
52
-		}
53
-	}
54
-	// mais open-office sait faire mieux, donc mefiance !
55
-	if (is_utf8($texte)) {
56
-		$charset = 'utf-8';
57
-	} else {
58
-		$charset = $charset_source;
59
-	}
60
-	return importer_charset($texte, $charset);
45
+    // le plus frequent, en particulier avec les trucs de ms@@@
46
+    static $charset_source = 'iso-8859-1';
47
+    if ($definir_charset_source) {
48
+        if ($definir_charset_source === true) {
49
+            $charset_source = 'iso-8859-1';
50
+        } else {
51
+            $charset_source = $definir_charset_source;
52
+        }
53
+    }
54
+    // mais open-office sait faire mieux, donc mefiance !
55
+    if (is_utf8($texte)) {
56
+        $charset = 'utf-8';
57
+    } else {
58
+        $charset = $charset_source;
59
+    }
60
+    return importer_charset($texte, $charset);
61 61
 }
62 62
 
63 63
 /**
@@ -68,7 +68,7 @@  discard block
 block discarded – undo
68 68
  * @return string
69 69
  */
70 70
 function importer_csv_nettoie_key($key) {
71
-	return translitteration($key);
71
+    return translitteration($key);
72 72
 }
73 73
 
74 74
 /**
@@ -87,77 +87,77 @@  discard block
 block discarded – undo
87 87
  */
88 88
 function inc_importer_csv_dist($file, $options = []) {
89 89
 
90
-	// support ancienne syntaxe
91
-	// inc_importer_csv_dist($file, $head = false, $delim = ',', $enclos = '"', $len = 10000, $charset_source = '')
92
-	if (!is_array($options)) {
93
-		$args = func_get_args();
94
-		$options = [];
95
-		foreach ([1 => 'head', 2 => 'delim', 3 => 'enclos', 4 => 'len', 5 => 'charset_source'] as $k => $option) {
96
-			if (!empty($args[$k])) {
97
-				$options[$option] = $args[$k];
98
-			}
99
-		}
100
-	}
90
+    // support ancienne syntaxe
91
+    // inc_importer_csv_dist($file, $head = false, $delim = ',', $enclos = '"', $len = 10000, $charset_source = '')
92
+    if (!is_array($options)) {
93
+        $args = func_get_args();
94
+        $options = [];
95
+        foreach ([1 => 'head', 2 => 'delim', 3 => 'enclos', 4 => 'len', 5 => 'charset_source'] as $k => $option) {
96
+            if (!empty($args[$k])) {
97
+                $options[$option] = $args[$k];
98
+            }
99
+        }
100
+    }
101 101
 
102
-	$default_options = [
103
-		'head' => false,
104
-		'delim' => ',',
105
-		'enclos' => '"',
106
-		'len' => 10000,
107
-		'charset_source' => '',
108
-	];
109
-	$options = array_merge($default_options, $options);
102
+    $default_options = [
103
+        'head' => false,
104
+        'delim' => ',',
105
+        'enclos' => '"',
106
+        'len' => 10000,
107
+        'charset_source' => '',
108
+    ];
109
+    $options = array_merge($default_options, $options);
110 110
 
111 111
 
112
-	$return = false;
113
-	if (
114
-		@file_exists($file)
115
-		and $handle = fopen($file, 'r')
116
-	) {
117
-		if ($options['charset_source']) {
118
-			importer_csv_importcharset('', $options['charset_source']);
119
-		}
120
-		if ($options['head']) {
121
-			$header = fgetcsv($handle, $options['len'], $options['delim'], $options['enclos']);
122
-			if ($header) {
123
-				$header = array_map('importer_csv_importcharset', $header);
124
-				$header = array_map('importer_csv_nettoie_key', $header);
125
-				$header_type = [];
126
-				foreach ($header as $heading) {
127
-					if (!isset($header_type[$heading])) {
128
-						$header_type[$heading] = 'scalar';
129
-					} else {
130
-						$header_type[$heading] = 'array';
131
-					}
132
-				}
133
-			}
134
-		}
112
+    $return = false;
113
+    if (
114
+        @file_exists($file)
115
+        and $handle = fopen($file, 'r')
116
+    ) {
117
+        if ($options['charset_source']) {
118
+            importer_csv_importcharset('', $options['charset_source']);
119
+        }
120
+        if ($options['head']) {
121
+            $header = fgetcsv($handle, $options['len'], $options['delim'], $options['enclos']);
122
+            if ($header) {
123
+                $header = array_map('importer_csv_importcharset', $header);
124
+                $header = array_map('importer_csv_nettoie_key', $header);
125
+                $header_type = [];
126
+                foreach ($header as $heading) {
127
+                    if (!isset($header_type[$heading])) {
128
+                        $header_type[$heading] = 'scalar';
129
+                    } else {
130
+                        $header_type[$heading] = 'array';
131
+                    }
132
+                }
133
+            }
134
+        }
135 135
 
136
-		while (($data = fgetcsv($handle, $options['len'], $options['delim'], $options['enclos'])) !== false) {
137
-			$data = array_map('importer_csv_importcharset', $data);
138
-			if ($options['head'] and isset($header)) {
139
-				$row = [];
140
-				foreach ($header as $key => $heading) {
141
-					if ($header_type[$heading] == 'array') {
142
-						if (!isset($row[$heading])) {
143
-							$row[$heading] = [];
144
-						}
145
-						if (isset($data[$key]) and strlen($data[$key])) {
146
-							$row[$heading][] = $data[$key];
147
-						}
148
-					} else {
149
-						$row[$heading] = $data[$key] ?? '';
150
-					}
151
-				}
152
-				$return[] = $row;
153
-			} else {
154
-				$return[] = $data;
155
-			}
156
-		}
157
-		if ($options['charset_source']) {
158
-			importer_csv_importcharset('', true);
159
-		}
160
-	}
136
+        while (($data = fgetcsv($handle, $options['len'], $options['delim'], $options['enclos'])) !== false) {
137
+            $data = array_map('importer_csv_importcharset', $data);
138
+            if ($options['head'] and isset($header)) {
139
+                $row = [];
140
+                foreach ($header as $key => $heading) {
141
+                    if ($header_type[$heading] == 'array') {
142
+                        if (!isset($row[$heading])) {
143
+                            $row[$heading] = [];
144
+                        }
145
+                        if (isset($data[$key]) and strlen($data[$key])) {
146
+                            $row[$heading][] = $data[$key];
147
+                        }
148
+                    } else {
149
+                        $row[$heading] = $data[$key] ?? '';
150
+                    }
151
+                }
152
+                $return[] = $row;
153
+            } else {
154
+                $return[] = $data;
155
+            }
156
+        }
157
+        if ($options['charset_source']) {
158
+            importer_csv_importcharset('', true);
159
+        }
160
+    }
161 161
 
162
-	return $return;
162
+    return $return;
163 163
 }
Please login to merge, or discard this patch.