Completed
Push — master ( a07606...4c3c71 )
by cam
02:01
created
ecrire/maj/legacy/v32.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -18,10 +18,10 @@
 block discarded – undo
18 18
  * @package SPIP\Core\SQL\Upgrade
19 19
  **/
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 
25 25
 $GLOBALS['maj'][23375] = [
26
-	['sql_alter', 'TABLE spip_auteurs CHANGE prefs prefs text'],
26
+    ['sql_alter', 'TABLE spip_auteurs CHANGE prefs prefs text'],
27 27
 ];
Please login to merge, or discard this patch.
ecrire/maj/legacy/v40.php 2 patches
Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -20,7 +20,7 @@  discard block
 block discarded – undo
20 20
  * @package SPIP\Core\SQL\Upgrade
21 21
  **/
22 22
 if (!defined('_ECRIRE_INC_VERSION')) {
23
-	return;
23
+    return;
24 24
 }
25 25
 
26 26
 
@@ -35,49 +35,49 @@  discard block
 block discarded – undo
35 35
  **/
36 36
 function maj_timestamp_mysql($tables = null) {
37 37
 
38
-	include_spip('base/dump');
39
-	if (is_null($tables)) {
40
-		$tables = base_lister_toutes_tables();
41
-	} elseif (is_string($tables)) {
42
-		$tables = [$tables];
43
-	} elseif (!is_array($tables)) {
44
-		return;
45
-	}
38
+    include_spip('base/dump');
39
+    if (is_null($tables)) {
40
+        $tables = base_lister_toutes_tables();
41
+    } elseif (is_string($tables)) {
42
+        $tables = [$tables];
43
+    } elseif (!is_array($tables)) {
44
+        return;
45
+    }
46 46
 
47
-	// rien a faire si base non mysql
48
-	if (strncmp($GLOBALS['connexions'][0]['type'], 'mysql', 5) !== 0) {
49
-		return;
50
-	}
47
+    // rien a faire si base non mysql
48
+    if (strncmp($GLOBALS['connexions'][0]['type'], 'mysql', 5) !== 0) {
49
+        return;
50
+    }
51 51
 
52
-	$trouver_table = charger_fonction('trouver_table', 'base');
53
-	// forcer le vidage de cache
54
-	$trouver_table('');
52
+    $trouver_table = charger_fonction('trouver_table', 'base');
53
+    // forcer le vidage de cache
54
+    $trouver_table('');
55 55
 
56
-	foreach ($tables as $table) {
57
-		if (time() >= _TIME_OUT) {
58
-			return;
59
-		}
60
-		if ($desc = $trouver_table($table)) {
61
-			$fields_corrected = _mysql_remplacements_definitions_table($desc['field']);
62
-			$d = array_diff($desc['field'], $fields_corrected);
63
-			if ($d) {
64
-				spip_log("Table $table TIMESTAMP incorrect", 'maj');
65
-				foreach ($desc['field'] as $field => $type) {
66
-					if ($desc['field'][$field] !== $fields_corrected[$field]) {
67
-						spip_log("Adaptation TIMESTAMP table $table", 'maj.' . _LOG_INFO_IMPORTANTE);
68
-						sql_alter("table $table change $field $field " . $fields_corrected[$field]);
69
-						$trouver_table('');
70
-						$new_desc = $trouver_table($table);
71
-						spip_log(
72
-							"Apres conversion $table : " . var_export($new_desc['field'], true),
73
-							'maj.' . _LOG_INFO_IMPORTANTE
74
-						);
75
-					}
76
-				}
77
-			}
78
-		}
79
-	}
56
+    foreach ($tables as $table) {
57
+        if (time() >= _TIME_OUT) {
58
+            return;
59
+        }
60
+        if ($desc = $trouver_table($table)) {
61
+            $fields_corrected = _mysql_remplacements_definitions_table($desc['field']);
62
+            $d = array_diff($desc['field'], $fields_corrected);
63
+            if ($d) {
64
+                spip_log("Table $table TIMESTAMP incorrect", 'maj');
65
+                foreach ($desc['field'] as $field => $type) {
66
+                    if ($desc['field'][$field] !== $fields_corrected[$field]) {
67
+                        spip_log("Adaptation TIMESTAMP table $table", 'maj.' . _LOG_INFO_IMPORTANTE);
68
+                        sql_alter("table $table change $field $field " . $fields_corrected[$field]);
69
+                        $trouver_table('');
70
+                        $new_desc = $trouver_table($table);
71
+                        spip_log(
72
+                            "Apres conversion $table : " . var_export($new_desc['field'], true),
73
+                            'maj.' . _LOG_INFO_IMPORTANTE
74
+                        );
75
+                    }
76
+                }
77
+            }
78
+        }
79
+    }
80 80
 
81
-	// forcer le vidage de cache
82
-	$trouver_table('');
81
+    // forcer le vidage de cache
82
+    $trouver_table('');
83 83
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -64,13 +64,13 @@
 block discarded – undo
64 64
 				spip_log("Table $table TIMESTAMP incorrect", 'maj');
65 65
 				foreach ($desc['field'] as $field => $type) {
66 66
 					if ($desc['field'][$field] !== $fields_corrected[$field]) {
67
-						spip_log("Adaptation TIMESTAMP table $table", 'maj.' . _LOG_INFO_IMPORTANTE);
68
-						sql_alter("table $table change $field $field " . $fields_corrected[$field]);
67
+						spip_log("Adaptation TIMESTAMP table $table", 'maj.'._LOG_INFO_IMPORTANTE);
68
+						sql_alter("table $table change $field $field ".$fields_corrected[$field]);
69 69
 						$trouver_table('');
70 70
 						$new_desc = $trouver_table($table);
71 71
 						spip_log(
72
-							"Apres conversion $table : " . var_export($new_desc['field'], true),
73
-							'maj.' . _LOG_INFO_IMPORTANTE
72
+							"Apres conversion $table : ".var_export($new_desc['field'], true),
73
+							'maj.'._LOG_INFO_IMPORTANTE
74 74
 						);
75 75
 					}
76 76
 				}
Please login to merge, or discard this patch.
ecrire/maj/legacy/svn10000.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@
 block discarded – undo
18 18
  */
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 include_spip('maj/legacy/v30');
Please login to merge, or discard this patch.
ecrire/base/connect_sql.php 2 patches
Spacing   +11 added lines, -12 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19 19
 	return;
20 20
 }
21
-require_once _ROOT_RESTREINT . 'base/objets.php';
21
+require_once _ROOT_RESTREINT.'base/objets.php';
22 22
 
23 23
 
24 24
 /**
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 		$f = (!preg_match('/^[\w\.]*$/', $serveur))
60 60
 			? '' // nom de serveur mal ecrit
61 61
 			: ($serveur ?
62
-				(_DIR_CONNECT . $serveur . '.php') // serveur externe
62
+				(_DIR_CONNECT.$serveur.'.php') // serveur externe
63 63
 				: (_FILE_CONNECT ? _FILE_CONNECT // serveur principal ok
64 64
 					: ($install ? _FILE_CONNECT_TMP // init du serveur principal
65 65
 						: ''))); // installation pas faite
@@ -102,9 +102,9 @@  discard block
 block discarded – undo
102 102
 	// chargement de la version du jeu de fonctions
103 103
 	// si pas dans le fichier par defaut
104 104
 	$type = $GLOBALS['db_ok']['type'];
105
-	$jeu = 'spip_' . $type . '_functions_' . $version;
105
+	$jeu = 'spip_'.$type.'_functions_'.$version;
106 106
 	if (!isset($GLOBALS[$jeu])) {
107
-		if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) {
107
+		if (!find_in_path($type.'_'.$version.'.php', 'req/', true)) {
108 108
 			spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS);
109 109
 
110 110
 			// ne plus reessayer
@@ -166,9 +166,9 @@  discard block
 block discarded – undo
166 166
 	$connexion = spip_connect($serveur);
167 167
 	$e = sql_errno($serveur);
168 168
 	$t = (isset($connexion['type']) ? $connexion['type'] : 'sql');
169
-	$m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim($connexion['last']);
170
-	$f = $t . $serveur;
171
-	spip_log($m, $f . '.' . _LOG_ERREUR);
169
+	$m = "Erreur $e de $t: ".sql_error($serveur)."\nin ".sql_error_backtrace()."\n".trim($connexion['last']);
170
+	$f = $t.$serveur;
171
+	spip_log($m, $f.'.'._LOG_ERREUR);
172 172
 }
173 173
 
174 174
 /**
@@ -250,7 +250,7 @@  discard block
 block discarded – undo
250 250
 	// si en cours d'installation ou si db=@test@ on ne pose rien
251 251
 	// car c'est un test de connexion
252 252
 	if (!defined('_ECRIRE_INSTALL') and $db !== '@test@') {
253
-		$f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out';
253
+		$f = _DIR_TMP.$type.'.'.substr(md5($host.$port.$db), 0, 8).'.out';
254 254
 	} elseif ($db == '@test@') {
255 255
 		$db = '';
256 256
 	}
@@ -290,7 +290,7 @@  discard block
 block discarded – undo
290 290
 	// En cas d'indisponibilite du serveur, eviter de le bombarder
291 291
 	if ($f) {
292 292
 		@touch($f);
293
-		spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type . '.' . _LOG_HS);
293
+		spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type.'.'._LOG_HS);
294 294
 	}
295 295
 }
296 296
 
@@ -382,8 +382,7 @@  discard block
 block discarded – undo
382 382
  * @return string Valeur échappée.
383 383
  **/
384 384
 function _q($a) {
385
-	return (is_numeric($a)) ? strval($a) :
386
-		(!is_array($a) ? ("'" . addslashes($a) . "'")
385
+	return (is_numeric($a)) ? strval($a) : (!is_array($a) ? ("'".addslashes($a)."'")
387 386
 			: join(',', array_map('_q', $a)));
388 387
 }
389 388
 
@@ -425,7 +424,7 @@  discard block
 block discarded – undo
425 424
 				break;
426 425
 			default:
427 426
 				$replace = range(1, count($textes));
428
-				$replace = '%' . implode('$s,%', $replace) . '$s';
427
+				$replace = '%'.implode('$s,%', $replace).'$s';
429 428
 				$replace = explode(',', $replace);
430 429
 				break;
431 430
 		}
Please login to merge, or discard this patch.
Indentation   +294 added lines, -294 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\SQL
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 require_once _ROOT_RESTREINT . 'base/objets.php';
22 22
 
@@ -42,119 +42,119 @@  discard block
 block discarded – undo
42 42
  **/
43 43
 function spip_connect($serveur = '', $version = '') {
44 44
 
45
-	$serveur = !is_string($serveur) ? '' : strtolower($serveur);
46
-	$index = $serveur ? $serveur : 0;
47
-	if (!$version) {
48
-		$version = $GLOBALS['spip_sql_version'];
49
-	}
50
-	if (isset($GLOBALS['connexions'][$index][$version])) {
51
-		return $GLOBALS['connexions'][$index];
52
-	}
53
-
54
-	include_spip('base/abstract_sql');
55
-	$install = (_request('exec') == 'install');
56
-
57
-	// Premiere connexion ?
58
-	if (!($old = isset($GLOBALS['connexions'][$index]))) {
59
-		$f = (!preg_match('/^[\w\.]*$/', $serveur))
60
-			? '' // nom de serveur mal ecrit
61
-			: ($serveur ?
62
-				(_DIR_CONNECT . $serveur . '.php') // serveur externe
63
-				: (_FILE_CONNECT ? _FILE_CONNECT // serveur principal ok
64
-					: ($install ? _FILE_CONNECT_TMP // init du serveur principal
65
-						: ''))); // installation pas faite
66
-
67
-		unset($GLOBALS['db_ok']);
68
-		unset($GLOBALS['spip_connect_version']);
69
-		if ($f) {
70
-			if (is_readable($f)) {
71
-				include($f);
72
-			} elseif ($serveur and !$install) {
73
-				// chercher une declaration de serveur dans le path
74
-				// qui pourra un jour servir a declarer des bases sqlite
75
-				// par des plugins. Et sert aussi aux boucles POUR.
76
-				find_in_path("$serveur.php", 'connect/', true);
77
-			}
78
-		}
79
-		if (!isset($GLOBALS['db_ok'])) {
80
-			// fera mieux la prochaine fois
81
-			if ($install) {
82
-				return false;
83
-			}
84
-			if ($f and is_readable($f)) {
85
-				spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE);
86
-			} else {
87
-				spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE);
88
-			}
89
-			spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS);
90
-
91
-			// ne plus reessayer si ce n'est pas l'install
92
-			return $GLOBALS['connexions'][$index] = false;
93
-		}
94
-		$GLOBALS['connexions'][$index] = $GLOBALS['db_ok'];
95
-	}
96
-	// si la connexion a deja ete tentee mais a echoue, le dire!
97
-	if (!$GLOBALS['connexions'][$index]) {
98
-		return false;
99
-	}
100
-
101
-	// la connexion a reussi ou etait deja faite.
102
-	// chargement de la version du jeu de fonctions
103
-	// si pas dans le fichier par defaut
104
-	$type = $GLOBALS['db_ok']['type'];
105
-	$jeu = 'spip_' . $type . '_functions_' . $version;
106
-	if (!isset($GLOBALS[$jeu])) {
107
-		if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) {
108
-			spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS);
109
-
110
-			// ne plus reessayer
111
-			return $GLOBALS['connexions'][$index][$version] = [];
112
-		}
113
-	}
114
-	$GLOBALS['connexions'][$index][$version] = $GLOBALS[$jeu];
115
-	if ($old) {
116
-		return $GLOBALS['connexions'][$index];
117
-	}
118
-
119
-	$GLOBALS['connexions'][$index]['spip_connect_version'] = isset($GLOBALS['spip_connect_version']) ? $GLOBALS['spip_connect_version'] : 0;
120
-
121
-	// initialisation de l'alphabet utilise dans les connexions SQL
122
-	// si l'installation l'a determine.
123
-	// Celui du serveur principal l'impose aux serveurs secondaires
124
-	// s'ils le connaissent
125
-
126
-	if (!$serveur) {
127
-		$charset = spip_connect_main($GLOBALS[$jeu], $GLOBALS['db_ok']['charset']);
128
-		if (!$charset) {
129
-			unset($GLOBALS['connexions'][$index]);
130
-			spip_log('spip_connect: absence de charset', _LOG_AVERTISSEMENT);
131
-
132
-			return false;
133
-		}
134
-	} else {
135
-		if ($GLOBALS['db_ok']['charset']) {
136
-			$charset = $GLOBALS['db_ok']['charset'];
137
-		}
138
-		// spip_meta n'existe pas toujours dans la base
139
-		// C'est le cas d'un dump sqlite par exemple
140
-		elseif (
141
-			$GLOBALS['connexions'][$index]['spip_connect_version']
142
-			and sql_showtable('spip_meta', true, $serveur)
143
-			and $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur)
144
-		) {
145
-			$charset = $r;
146
-		} else {
147
-			$charset = -1;
148
-		}
149
-	}
150
-	if ($charset != -1) {
151
-		$f = $GLOBALS[$jeu]['set_charset'];
152
-		if (function_exists($f)) {
153
-			$f($charset, $serveur);
154
-		}
155
-	}
156
-
157
-	return $GLOBALS['connexions'][$index];
45
+    $serveur = !is_string($serveur) ? '' : strtolower($serveur);
46
+    $index = $serveur ? $serveur : 0;
47
+    if (!$version) {
48
+        $version = $GLOBALS['spip_sql_version'];
49
+    }
50
+    if (isset($GLOBALS['connexions'][$index][$version])) {
51
+        return $GLOBALS['connexions'][$index];
52
+    }
53
+
54
+    include_spip('base/abstract_sql');
55
+    $install = (_request('exec') == 'install');
56
+
57
+    // Premiere connexion ?
58
+    if (!($old = isset($GLOBALS['connexions'][$index]))) {
59
+        $f = (!preg_match('/^[\w\.]*$/', $serveur))
60
+            ? '' // nom de serveur mal ecrit
61
+            : ($serveur ?
62
+                (_DIR_CONNECT . $serveur . '.php') // serveur externe
63
+                : (_FILE_CONNECT ? _FILE_CONNECT // serveur principal ok
64
+                    : ($install ? _FILE_CONNECT_TMP // init du serveur principal
65
+                        : ''))); // installation pas faite
66
+
67
+        unset($GLOBALS['db_ok']);
68
+        unset($GLOBALS['spip_connect_version']);
69
+        if ($f) {
70
+            if (is_readable($f)) {
71
+                include($f);
72
+            } elseif ($serveur and !$install) {
73
+                // chercher une declaration de serveur dans le path
74
+                // qui pourra un jour servir a declarer des bases sqlite
75
+                // par des plugins. Et sert aussi aux boucles POUR.
76
+                find_in_path("$serveur.php", 'connect/', true);
77
+            }
78
+        }
79
+        if (!isset($GLOBALS['db_ok'])) {
80
+            // fera mieux la prochaine fois
81
+            if ($install) {
82
+                return false;
83
+            }
84
+            if ($f and is_readable($f)) {
85
+                spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE);
86
+            } else {
87
+                spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE);
88
+            }
89
+            spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS);
90
+
91
+            // ne plus reessayer si ce n'est pas l'install
92
+            return $GLOBALS['connexions'][$index] = false;
93
+        }
94
+        $GLOBALS['connexions'][$index] = $GLOBALS['db_ok'];
95
+    }
96
+    // si la connexion a deja ete tentee mais a echoue, le dire!
97
+    if (!$GLOBALS['connexions'][$index]) {
98
+        return false;
99
+    }
100
+
101
+    // la connexion a reussi ou etait deja faite.
102
+    // chargement de la version du jeu de fonctions
103
+    // si pas dans le fichier par defaut
104
+    $type = $GLOBALS['db_ok']['type'];
105
+    $jeu = 'spip_' . $type . '_functions_' . $version;
106
+    if (!isset($GLOBALS[$jeu])) {
107
+        if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) {
108
+            spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS);
109
+
110
+            // ne plus reessayer
111
+            return $GLOBALS['connexions'][$index][$version] = [];
112
+        }
113
+    }
114
+    $GLOBALS['connexions'][$index][$version] = $GLOBALS[$jeu];
115
+    if ($old) {
116
+        return $GLOBALS['connexions'][$index];
117
+    }
118
+
119
+    $GLOBALS['connexions'][$index]['spip_connect_version'] = isset($GLOBALS['spip_connect_version']) ? $GLOBALS['spip_connect_version'] : 0;
120
+
121
+    // initialisation de l'alphabet utilise dans les connexions SQL
122
+    // si l'installation l'a determine.
123
+    // Celui du serveur principal l'impose aux serveurs secondaires
124
+    // s'ils le connaissent
125
+
126
+    if (!$serveur) {
127
+        $charset = spip_connect_main($GLOBALS[$jeu], $GLOBALS['db_ok']['charset']);
128
+        if (!$charset) {
129
+            unset($GLOBALS['connexions'][$index]);
130
+            spip_log('spip_connect: absence de charset', _LOG_AVERTISSEMENT);
131
+
132
+            return false;
133
+        }
134
+    } else {
135
+        if ($GLOBALS['db_ok']['charset']) {
136
+            $charset = $GLOBALS['db_ok']['charset'];
137
+        }
138
+        // spip_meta n'existe pas toujours dans la base
139
+        // C'est le cas d'un dump sqlite par exemple
140
+        elseif (
141
+            $GLOBALS['connexions'][$index]['spip_connect_version']
142
+            and sql_showtable('spip_meta', true, $serveur)
143
+            and $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur)
144
+        ) {
145
+            $charset = $r;
146
+        } else {
147
+            $charset = -1;
148
+        }
149
+    }
150
+    if ($charset != -1) {
151
+        $f = $GLOBALS[$jeu]['set_charset'];
152
+        if (function_exists($f)) {
153
+            $f($charset, $serveur);
154
+        }
155
+    }
156
+
157
+    return $GLOBALS['connexions'][$index];
158 158
 }
159 159
 
160 160
 /**
@@ -163,12 +163,12 @@  discard block
 block discarded – undo
163 163
  * @param string $serveur Nom du connecteur de bdd utilisé
164 164
  **/
165 165
 function spip_sql_erreur($serveur = '') {
166
-	$connexion = spip_connect($serveur);
167
-	$e = sql_errno($serveur);
168
-	$t = (isset($connexion['type']) ? $connexion['type'] : 'sql');
169
-	$m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim($connexion['last']);
170
-	$f = $t . $serveur;
171
-	spip_log($m, $f . '.' . _LOG_ERREUR);
166
+    $connexion = spip_connect($serveur);
167
+    $e = sql_errno($serveur);
168
+    $t = (isset($connexion['type']) ? $connexion['type'] : 'sql');
169
+    $m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim($connexion['last']);
170
+    $f = $t . $serveur;
171
+    spip_log($m, $f . '.' . _LOG_ERREUR);
172 172
 }
173 173
 
174 174
 /**
@@ -190,19 +190,19 @@  discard block
 block discarded – undo
190 190
  *     - array : description de la connexion, si l'instruction sql est indisponible pour cette connexion
191 191
  **/
192 192
 function spip_connect_sql($version, $ins = '', $serveur = '', $continue = false) {
193
-	$desc = spip_connect($serveur, $version);
194
-	if (function_exists($f = @$desc[$version][$ins])) {
195
-		return $f;
196
-	}
197
-	if ($continue) {
198
-		return $desc;
199
-	}
200
-	if ($ins) {
201
-		spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR);
202
-	}
203
-	include_spip('inc/minipres');
204
-	echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]);
205
-	exit;
193
+    $desc = spip_connect($serveur, $version);
194
+    if (function_exists($f = @$desc[$version][$ins])) {
195
+        return $f;
196
+    }
197
+    if ($continue) {
198
+        return $desc;
199
+    }
200
+    if ($ins) {
201
+        spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR);
202
+    }
203
+    include_spip('inc/minipres');
204
+    echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]);
205
+    exit;
206 206
 }
207 207
 
208 208
 /**
@@ -228,70 +228,70 @@  discard block
 block discarded – undo
228 228
  * @return array          Description de la connexion
229 229
  */
230 230
 function spip_connect_db(
231
-	$host,
232
-	$port,
233
-	$login,
234
-	$pass,
235
-	$db = '',
236
-	$type = 'mysql',
237
-	$prefixe = '',
238
-	$auth = '',
239
-	$charset = ''
231
+    $host,
232
+    $port,
233
+    $login,
234
+    $pass,
235
+    $db = '',
236
+    $type = 'mysql',
237
+    $prefixe = '',
238
+    $auth = '',
239
+    $charset = ''
240 240
 ) {
241
-	// temps avant nouvelle tentative de connexion
242
-	// suite a une connection echouee
243
-	if (!defined('_CONNECT_RETRY_DELAY')) {
244
-		define('_CONNECT_RETRY_DELAY', 30);
245
-	}
246
-
247
-	$f = '';
248
-	// un fichier de identifiant par combinaison (type,host,port,db)
249
-	// pour ne pas declarer tout indisponible d'un coup
250
-	// si en cours d'installation ou si db=@test@ on ne pose rien
251
-	// car c'est un test de connexion
252
-	if (!defined('_ECRIRE_INSTALL') and $db !== '@test@') {
253
-		$f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out';
254
-	} elseif ($db == '@test@') {
255
-		$db = '';
256
-	}
257
-
258
-	if (
259
-		$f
260
-		and @file_exists($f)
261
-		and (time() - @filemtime($f) < _CONNECT_RETRY_DELAY)
262
-	) {
263
-		spip_log("Echec : $f recent. Pas de tentative de connexion", _LOG_HS);
264
-
265
-		return;
266
-	}
267
-
268
-	if (!$prefixe) {
269
-		$prefixe = isset($GLOBALS['table_prefix'])
270
-			? $GLOBALS['table_prefix'] : $db;
271
-	}
272
-	$h = charger_fonction($type, 'req', true);
273
-	if (!$h) {
274
-		spip_log("les requetes $type ne sont pas fournies", _LOG_HS);
275
-
276
-		return;
277
-	}
278
-	if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) {
279
-		if (!is_array($auth)) {
280
-			// compatibilite version 0.7 initiale
281
-			$g['ldap'] = $auth;
282
-			$auth = ['ldap' => $auth];
283
-		}
284
-		$g['authentification'] = $auth;
285
-		$g['type'] = $type;
286
-		$g['charset'] = $charset;
287
-
288
-		return $GLOBALS['db_ok'] = $g;
289
-	}
290
-	// En cas d'indisponibilite du serveur, eviter de le bombarder
291
-	if ($f) {
292
-		@touch($f);
293
-		spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type . '.' . _LOG_HS);
294
-	}
241
+    // temps avant nouvelle tentative de connexion
242
+    // suite a une connection echouee
243
+    if (!defined('_CONNECT_RETRY_DELAY')) {
244
+        define('_CONNECT_RETRY_DELAY', 30);
245
+    }
246
+
247
+    $f = '';
248
+    // un fichier de identifiant par combinaison (type,host,port,db)
249
+    // pour ne pas declarer tout indisponible d'un coup
250
+    // si en cours d'installation ou si db=@test@ on ne pose rien
251
+    // car c'est un test de connexion
252
+    if (!defined('_ECRIRE_INSTALL') and $db !== '@test@') {
253
+        $f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out';
254
+    } elseif ($db == '@test@') {
255
+        $db = '';
256
+    }
257
+
258
+    if (
259
+        $f
260
+        and @file_exists($f)
261
+        and (time() - @filemtime($f) < _CONNECT_RETRY_DELAY)
262
+    ) {
263
+        spip_log("Echec : $f recent. Pas de tentative de connexion", _LOG_HS);
264
+
265
+        return;
266
+    }
267
+
268
+    if (!$prefixe) {
269
+        $prefixe = isset($GLOBALS['table_prefix'])
270
+            ? $GLOBALS['table_prefix'] : $db;
271
+    }
272
+    $h = charger_fonction($type, 'req', true);
273
+    if (!$h) {
274
+        spip_log("les requetes $type ne sont pas fournies", _LOG_HS);
275
+
276
+        return;
277
+    }
278
+    if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) {
279
+        if (!is_array($auth)) {
280
+            // compatibilite version 0.7 initiale
281
+            $g['ldap'] = $auth;
282
+            $auth = ['ldap' => $auth];
283
+        }
284
+        $g['authentification'] = $auth;
285
+        $g['type'] = $type;
286
+        $g['charset'] = $charset;
287
+
288
+        return $GLOBALS['db_ok'] = $g;
289
+    }
290
+    // En cas d'indisponibilite du serveur, eviter de le bombarder
291
+    if ($f) {
292
+        @touch($f);
293
+        spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type . '.' . _LOG_HS);
294
+    }
295 295
 }
296 296
 
297 297
 
@@ -323,32 +323,32 @@  discard block
 block discarded – undo
323 323
  *     - nom du charset sinon
324 324
  **/
325 325
 function spip_connect_main($connexion, $charset_sql_connexion = '') {
326
-	if ($GLOBALS['spip_connect_version'] < 0.1 and _DIR_RESTREINT) {
327
-		include_spip('inc/headers');
328
-		redirige_url_ecrire('upgrade', 'reinstall=oui');
329
-	}
330
-
331
-	if (!($f = $connexion['select'])) {
332
-		return false;
333
-	}
334
-	// si le charset est fourni, l'utiliser
335
-	if ($charset_sql_connexion) {
336
-		return $charset_sql_connexion;
337
-	}
338
-	// sinon on regarde la table spip_meta
339
-	// en cas d'erreur select retourne la requette (is_string=true donc)
340
-	if (
341
-		!$r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'")
342
-		or is_string($r)
343
-	) {
344
-		return false;
345
-	}
346
-	if (!($f = $connexion['fetch'])) {
347
-		return false;
348
-	}
349
-	$r = $f($r);
350
-
351
-	return (isset($r['valeur']) && $r['valeur']) ? $r['valeur'] : -1;
326
+    if ($GLOBALS['spip_connect_version'] < 0.1 and _DIR_RESTREINT) {
327
+        include_spip('inc/headers');
328
+        redirige_url_ecrire('upgrade', 'reinstall=oui');
329
+    }
330
+
331
+    if (!($f = $connexion['select'])) {
332
+        return false;
333
+    }
334
+    // si le charset est fourni, l'utiliser
335
+    if ($charset_sql_connexion) {
336
+        return $charset_sql_connexion;
337
+    }
338
+    // sinon on regarde la table spip_meta
339
+    // en cas d'erreur select retourne la requette (is_string=true donc)
340
+    if (
341
+        !$r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'")
342
+        or is_string($r)
343
+    ) {
344
+        return false;
345
+    }
346
+    if (!($f = $connexion['fetch'])) {
347
+        return false;
348
+    }
349
+    $r = $f($r);
350
+
351
+    return (isset($r['valeur']) && $r['valeur']) ? $r['valeur'] : -1;
352 352
 }
353 353
 
354 354
 /**
@@ -364,9 +364,9 @@  discard block
 block discarded – undo
364 364
  * @return array
365 365
  */
366 366
 function spip_connect_ldap($serveur = '') {
367
-	include_spip('auth/ldap');
367
+    include_spip('auth/ldap');
368 368
 
369
-	return auth_ldap_connect($serveur);
369
+    return auth_ldap_connect($serveur);
370 370
 }
371 371
 
372 372
 /**
@@ -382,9 +382,9 @@  discard block
 block discarded – undo
382 382
  * @return string Valeur échappée.
383 383
  **/
384 384
 function _q($a) {
385
-	return (is_numeric($a)) ? strval($a) :
386
-		(!is_array($a) ? ("'" . addslashes($a) . "'")
387
-			: join(',', array_map('_q', $a)));
385
+    return (is_numeric($a)) ? strval($a) :
386
+        (!is_array($a) ? ("'" . addslashes($a) . "'")
387
+            : join(',', array_map('_q', $a)));
388 388
 }
389 389
 
390 390
 /**
@@ -400,66 +400,66 @@  discard block
 block discarded – undo
400 400
  * @return array
401 401
  */
402 402
 function query_echappe_textes($query, $uniqid = null) {
403
-	static $codeEchappements = null;
404
-	if (is_null($codeEchappements) or $uniqid) {
405
-		if (is_null($uniqid)) {
406
-			$uniqid = uniqid();
407
-		}
408
-		$uniqid = substr(md5($uniqid), 0, 4);
409
-		$codeEchappements = ['\\\\' => "\x1@#{$uniqid}#@\x1", "\\'" => "\x2@#{$uniqid}#@\x2", '\\"' => "\x3@#{$uniqid}#@\x3"];
410
-	}
411
-	if ($query === null) {
412
-		return $codeEchappements;
413
-	}
414
-
415
-	// si la query contient deja des codes d'echappement on va s'emmeler les pinceaux et donc on ne touche a rien
416
-	// ce n'est pas un cas legitime
417
-	foreach ($codeEchappements as $codeEchappement) {
418
-		if (strpos($query, $codeEchappement) !== false) {
419
-			return [$query, []];
420
-		}
421
-	}
422
-
423
-	$query_echappees = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
424
-	if (preg_match_all("/('[^']*')|(\"[^\"]*\")/S", $query_echappees, $textes)) {
425
-		$textes = reset($textes); // indice 0 du match
426
-		switch (count($textes)) {
427
-			case 0:
428
-				$replace = [];
429
-				break;
430
-			case 1:
431
-				$replace = ['%1$s'];
432
-				break;
433
-			case 2:
434
-				$replace = ['%1$s', '%2$s'];
435
-				break;
436
-			case 3:
437
-				$replace = ['%1$s', '%2$s', '%3$s'];
438
-				break;
439
-			case 4:
440
-				$replace = ['%1$s', '%2$s', '%3$s', '%4$s'];
441
-				break;
442
-			case 5:
443
-				$replace = ['%1$s', '%2$s', '%3$s', '%4$s', '%5$s'];
444
-				break;
445
-			default:
446
-				$replace = range(1, count($textes));
447
-				$replace = '%' . implode('$s,%', $replace) . '$s';
448
-				$replace = explode(',', $replace);
449
-				break;
450
-		}
451
-		$query_echappees = str_replace($textes, $replace, $query_echappees);
452
-	} else {
453
-		$textes = [];
454
-	}
455
-
456
-	// si il reste des quotes simples ou doubles, c'est qu'on s'est emmelles les pinceaux
457
-	// dans le doute on ne touche a rien
458
-	if (strpbrk($query_echappees, "'\"") !== false) {
459
-		return [$query, []];
460
-	}
461
-
462
-	return [$query_echappees, $textes];
403
+    static $codeEchappements = null;
404
+    if (is_null($codeEchappements) or $uniqid) {
405
+        if (is_null($uniqid)) {
406
+            $uniqid = uniqid();
407
+        }
408
+        $uniqid = substr(md5($uniqid), 0, 4);
409
+        $codeEchappements = ['\\\\' => "\x1@#{$uniqid}#@\x1", "\\'" => "\x2@#{$uniqid}#@\x2", '\\"' => "\x3@#{$uniqid}#@\x3"];
410
+    }
411
+    if ($query === null) {
412
+        return $codeEchappements;
413
+    }
414
+
415
+    // si la query contient deja des codes d'echappement on va s'emmeler les pinceaux et donc on ne touche a rien
416
+    // ce n'est pas un cas legitime
417
+    foreach ($codeEchappements as $codeEchappement) {
418
+        if (strpos($query, $codeEchappement) !== false) {
419
+            return [$query, []];
420
+        }
421
+    }
422
+
423
+    $query_echappees = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
424
+    if (preg_match_all("/('[^']*')|(\"[^\"]*\")/S", $query_echappees, $textes)) {
425
+        $textes = reset($textes); // indice 0 du match
426
+        switch (count($textes)) {
427
+            case 0:
428
+                $replace = [];
429
+                break;
430
+            case 1:
431
+                $replace = ['%1$s'];
432
+                break;
433
+            case 2:
434
+                $replace = ['%1$s', '%2$s'];
435
+                break;
436
+            case 3:
437
+                $replace = ['%1$s', '%2$s', '%3$s'];
438
+                break;
439
+            case 4:
440
+                $replace = ['%1$s', '%2$s', '%3$s', '%4$s'];
441
+                break;
442
+            case 5:
443
+                $replace = ['%1$s', '%2$s', '%3$s', '%4$s', '%5$s'];
444
+                break;
445
+            default:
446
+                $replace = range(1, count($textes));
447
+                $replace = '%' . implode('$s,%', $replace) . '$s';
448
+                $replace = explode(',', $replace);
449
+                break;
450
+        }
451
+        $query_echappees = str_replace($textes, $replace, $query_echappees);
452
+    } else {
453
+        $textes = [];
454
+    }
455
+
456
+    // si il reste des quotes simples ou doubles, c'est qu'on s'est emmelles les pinceaux
457
+    // dans le doute on ne touche a rien
458
+    if (strpbrk($query_echappees, "'\"") !== false) {
459
+        return [$query, []];
460
+    }
461
+
462
+    return [$query_echappees, $textes];
463 463
 }
464 464
 
465 465
 /**
@@ -473,14 +473,14 @@  discard block
 block discarded – undo
473 473
  * @return string
474 474
  */
475 475
 function query_reinjecte_textes($query, $textes) {
476
-	// recuperer les codes echappements
477
-	$codeEchappements = query_echappe_textes(null);
476
+    // recuperer les codes echappements
477
+    $codeEchappements = query_echappe_textes(null);
478 478
 
479
-	$query = sprintf($query, ...$textes);
479
+    $query = sprintf($query, ...$textes);
480 480
 
481
-	$query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query);
481
+    $query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query);
482 482
 
483
-	return $query;
483
+    return $query;
484 484
 }
485 485
 
486 486
 
@@ -499,7 +499,7 @@  discard block
 block discarded – undo
499 499
  **/
500 500
 function spip_query($query, $serveur = '') {
501 501
 
502
-	$f = spip_connect_sql($GLOBALS['spip_sql_version'], 'query', $serveur, true);
502
+    $f = spip_connect_sql($GLOBALS['spip_sql_version'], 'query', $serveur, true);
503 503
 
504
-	return function_exists($f) ? $f($query, $serveur) : false;
504
+    return function_exists($f) ? $f($query, $serveur) : false;
505 505
 }
Please login to merge, or discard this patch.
ecrire/base/create.php 2 patches
Indentation   +98 added lines, -98 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Installation
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/acces');
@@ -33,18 +33,18 @@  discard block
 block discarded – undo
33 33
  * @return bool
34 34
  */
35 35
 function base_determine_autoinc($table, $desc = []) {
36
-	if ($t = lister_tables_principales() and isset($t[$table])) {
37
-		$autoinc = true;
38
-	} elseif ($t = lister_tables_auxiliaires() and isset($t[$table])) {
39
-		$autoinc = false;
40
-	} else {
41
-		// essayer de faire au mieux !
42
-		$autoinc = (isset($desc['key']['PRIMARY KEY'])
43
-			and strpos($desc['key']['PRIMARY KEY'], ',') === false
44
-			and strpos($desc['field'][$desc['key']['PRIMARY KEY']], 'default') === false);
45
-	}
36
+    if ($t = lister_tables_principales() and isset($t[$table])) {
37
+        $autoinc = true;
38
+    } elseif ($t = lister_tables_auxiliaires() and isset($t[$table])) {
39
+        $autoinc = false;
40
+    } else {
41
+        // essayer de faire au mieux !
42
+        $autoinc = (isset($desc['key']['PRIMARY KEY'])
43
+            and strpos($desc['key']['PRIMARY KEY'], ',') === false
44
+            and strpos($desc['field'][$desc['key']['PRIMARY KEY']], 'default') === false);
45
+    }
46 46
 
47
-	return $autoinc;
47
+    return $autoinc;
48 48
 }
49 49
 
50 50
 /**
@@ -61,58 +61,58 @@  discard block
 block discarded – undo
61 61
  * @return void
62 62
  */
63 63
 function creer_ou_upgrader_table($table, $desc, $autoinc, $upgrade = false, $serveur = '') {
64
-	#spip_log("creer_ou_upgrader_table table=$table autoinc=$autoinc upgrade=$upgrade","dbinstall"._LOG_INFO_IMPORTANTE);
65
-	$sql_desc = $upgrade ? sql_showtable($table, true, $serveur) : false;
66
-	#if (!$sql_desc) $sql_desc = false;
67
-	#spip_log("table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
68
-	if (!$sql_desc) {
69
-		if ($autoinc === 'auto') {
70
-			$autoinc = base_determine_autoinc($table, $desc);
71
-		}
72
-		#spip_log("sql_create $table autoinc=$autoinc","dbinstall"._LOG_INFO_IMPORTANTE);
73
-		if (isset($desc['field']) and isset($desc['key'])) {
74
-			sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
75
-		}
76
-		// verifier la bonne installation de la table (php-fpm es-tu la ?)
77
-		$sql_desc = sql_showtable($table, true, $serveur);
78
-		#if (!$sql_desc) $sql_desc = false;
79
-		#spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
80
-		if (!$sql_desc) {
81
-			// on retente avec un sleep ?
82
-			sleep(1);
83
-			sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
84
-			$sql_desc = sql_showtable($table, true, $serveur);
85
-			#if (!$sql_desc) $sql_desc = false;
86
-			#spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
87
-			if (!$sql_desc) {
88
-				spip_log("Echec creation table $table", 'maj' . _LOG_CRITIQUE);
89
-			}
90
-		}
91
-	} else {
92
-		#spip_log("sql_alter $table ... (on s'en fiche)","dbinstall"._LOG_INFO_IMPORTANTE);
93
-		// ajouter les champs manquants
94
-		// on ne supprime jamais les champs, car c'est dangereux
95
-		// c'est toujours a faire manuellement
96
-		$last = '';
97
-		if (isset($desc['field'])) {
98
-			foreach ($desc['field'] as $field => $type) {
99
-				if (!isset($sql_desc['field'][$field])) {
100
-					sql_alter("TABLE $table ADD $field $type" . ($last ? " AFTER $last" : ''), $serveur);
101
-				}
102
-				$last = $field;
103
-			}
104
-		}
105
-		if (isset($desc['key'])) {
106
-			foreach ($desc['key'] as $key => $type) {
107
-				// Ne pas oublier les cas des cles non nommees dans la declaration et qui sont retournees
108
-				// par le showtable sous la forme d'un index de tableau "KEY $type" et non "KEY"
109
-				if (!isset($sql_desc['key'][$key]) and !isset($sql_desc['key']["$key $type"])) {
110
-					sql_alter("TABLE $table ADD $key ($type)", $serveur);
111
-				}
112
-				$last = $field;
113
-			}
114
-		}
115
-	}
64
+    #spip_log("creer_ou_upgrader_table table=$table autoinc=$autoinc upgrade=$upgrade","dbinstall"._LOG_INFO_IMPORTANTE);
65
+    $sql_desc = $upgrade ? sql_showtable($table, true, $serveur) : false;
66
+    #if (!$sql_desc) $sql_desc = false;
67
+    #spip_log("table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
68
+    if (!$sql_desc) {
69
+        if ($autoinc === 'auto') {
70
+            $autoinc = base_determine_autoinc($table, $desc);
71
+        }
72
+        #spip_log("sql_create $table autoinc=$autoinc","dbinstall"._LOG_INFO_IMPORTANTE);
73
+        if (isset($desc['field']) and isset($desc['key'])) {
74
+            sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
75
+        }
76
+        // verifier la bonne installation de la table (php-fpm es-tu la ?)
77
+        $sql_desc = sql_showtable($table, true, $serveur);
78
+        #if (!$sql_desc) $sql_desc = false;
79
+        #spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
80
+        if (!$sql_desc) {
81
+            // on retente avec un sleep ?
82
+            sleep(1);
83
+            sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
84
+            $sql_desc = sql_showtable($table, true, $serveur);
85
+            #if (!$sql_desc) $sql_desc = false;
86
+            #spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
87
+            if (!$sql_desc) {
88
+                spip_log("Echec creation table $table", 'maj' . _LOG_CRITIQUE);
89
+            }
90
+        }
91
+    } else {
92
+        #spip_log("sql_alter $table ... (on s'en fiche)","dbinstall"._LOG_INFO_IMPORTANTE);
93
+        // ajouter les champs manquants
94
+        // on ne supprime jamais les champs, car c'est dangereux
95
+        // c'est toujours a faire manuellement
96
+        $last = '';
97
+        if (isset($desc['field'])) {
98
+            foreach ($desc['field'] as $field => $type) {
99
+                if (!isset($sql_desc['field'][$field])) {
100
+                    sql_alter("TABLE $table ADD $field $type" . ($last ? " AFTER $last" : ''), $serveur);
101
+                }
102
+                $last = $field;
103
+            }
104
+        }
105
+        if (isset($desc['key'])) {
106
+            foreach ($desc['key'] as $key => $type) {
107
+                // Ne pas oublier les cas des cles non nommees dans la declaration et qui sont retournees
108
+                // par le showtable sous la forme d'un index de tableau "KEY $type" et non "KEY"
109
+                if (!isset($sql_desc['key'][$key]) and !isset($sql_desc['key']["$key $type"])) {
110
+                    sql_alter("TABLE $table ADD $key ($type)", $serveur);
111
+                }
112
+                $last = $field;
113
+            }
114
+        }
115
+    }
116 116
 }
117 117
 
118 118
 /**
@@ -134,26 +134,26 @@  discard block
 block discarded – undo
134 134
  * @return void
135 135
  */
136 136
 function alterer_base($tables_inc, $tables_noinc, $up = false, $serveur = '') {
137
-	if ($up === false) {
138
-		$old = false;
139
-		$up = [];
140
-	} else {
141
-		$old = true;
142
-		if (!is_array($up)) {
143
-			$up = [$up];
144
-		}
145
-	}
146
-	foreach ($tables_inc as $k => $v) {
147
-		if (!$old or in_array($k, $up)) {
148
-			creer_ou_upgrader_table($k, $v, true, $old, $serveur);
149
-		}
150
-	}
137
+    if ($up === false) {
138
+        $old = false;
139
+        $up = [];
140
+    } else {
141
+        $old = true;
142
+        if (!is_array($up)) {
143
+            $up = [$up];
144
+        }
145
+    }
146
+    foreach ($tables_inc as $k => $v) {
147
+        if (!$old or in_array($k, $up)) {
148
+            creer_ou_upgrader_table($k, $v, true, $old, $serveur);
149
+        }
150
+    }
151 151
 
152
-	foreach ($tables_noinc as $k => $v) {
153
-		if (!$old or in_array($k, $up)) {
154
-			creer_ou_upgrader_table($k, $v, false, $old, $serveur);
155
-		}
156
-	}
152
+    foreach ($tables_noinc as $k => $v) {
153
+        if (!$old or in_array($k, $up)) {
154
+            creer_ou_upgrader_table($k, $v, false, $old, $serveur);
155
+        }
156
+    }
157 157
 }
158 158
 
159 159
 /**
@@ -173,16 +173,16 @@  discard block
 block discarded – undo
173 173
  */
174 174
 function creer_base($serveur = '') {
175 175
 
176
-	// Note: les mises a jour reexecutent ce code pour s'assurer
177
-	// de la conformite de la base
178
-	// pas de panique sur  "already exists" et "duplicate entry" donc.
176
+    // Note: les mises a jour reexecutent ce code pour s'assurer
177
+    // de la conformite de la base
178
+    // pas de panique sur  "already exists" et "duplicate entry" donc.
179 179
 
180
-	alterer_base(
181
-		lister_tables_principales(),
182
-		lister_tables_auxiliaires(),
183
-		false,
184
-		$serveur
185
-	);
180
+    alterer_base(
181
+        lister_tables_principales(),
182
+        lister_tables_auxiliaires(),
183
+        false,
184
+        $serveur
185
+    );
186 186
 }
187 187
 
188 188
 /**
@@ -202,10 +202,10 @@  discard block
 block discarded – undo
202 202
  * @return void
203 203
  */
204 204
 function maj_tables($upgrade_tables = [], $serveur = '') {
205
-	alterer_base(
206
-		lister_tables_principales(),
207
-		lister_tables_auxiliaires(),
208
-		$upgrade_tables,
209
-		$serveur
210
-	);
205
+    alterer_base(
206
+        lister_tables_principales(),
207
+        lister_tables_auxiliaires(),
208
+        $upgrade_tables,
209
+        $serveur
210
+    );
211 211
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -85,7 +85,7 @@  discard block
 block discarded – undo
85 85
 			#if (!$sql_desc) $sql_desc = false;
86 86
 			#spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
87 87
 			if (!$sql_desc) {
88
-				spip_log("Echec creation table $table", 'maj' . _LOG_CRITIQUE);
88
+				spip_log("Echec creation table $table", 'maj'._LOG_CRITIQUE);
89 89
 			}
90 90
 		}
91 91
 	} else {
@@ -97,7 +97,7 @@  discard block
 block discarded – undo
97 97
 		if (isset($desc['field'])) {
98 98
 			foreach ($desc['field'] as $field => $type) {
99 99
 				if (!isset($sql_desc['field'][$field])) {
100
-					sql_alter("TABLE $table ADD $field $type" . ($last ? " AFTER $last" : ''), $serveur);
100
+					sql_alter("TABLE $table ADD $field $type".($last ? " AFTER $last" : ''), $serveur);
101 101
 				}
102 102
 				$last = $field;
103 103
 			}
Please login to merge, or discard this patch.
ecrire/base/repair.php 2 patches
Indentation   +62 added lines, -62 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
 /**
@@ -36,20 +36,20 @@  discard block
 block discarded – undo
36 36
  **/
37 37
 function base_repair_dist($titre = '', $reprise = '') {
38 38
 
39
-	$res = admin_repair_tables();
40
-	if (!$res) {
41
-		$res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n";
42
-	} else {
43
-		include_spip('inc/rubriques');
44
-		calculer_rubriques();
45
-		propager_les_secteurs();
46
-	}
47
-	include_spip('inc/minipres');
48
-	$res .= pipeline('base_admin_repair', $res);
49
-	echo minipres(
50
-		_T('texte_tentative_recuperation'),
51
-		$res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site'))
52
-	);
39
+    $res = admin_repair_tables();
40
+    if (!$res) {
41
+        $res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n";
42
+    } else {
43
+        include_spip('inc/rubriques');
44
+        calculer_rubriques();
45
+        propager_les_secteurs();
46
+    }
47
+    include_spip('inc/minipres');
48
+    $res .= pipeline('base_admin_repair', $res);
49
+    echo minipres(
50
+        _T('texte_tentative_recuperation'),
51
+        $res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site'))
52
+    );
53 53
 }
54 54
 
55 55
 /**
@@ -63,59 +63,59 @@  discard block
 block discarded – undo
63 63
  **/
64 64
 function admin_repair_tables() {
65 65
 
66
-	$repair = sql_repair('repair', null, 'continue');
66
+    $repair = sql_repair('repair', null, 'continue');
67 67
 
68
-	// recreer les tables manquantes eventuelles
69
-	include_spip('base/create');
70
-	creer_base();
71
-	$tables = sql_alltable();
68
+    // recreer les tables manquantes eventuelles
69
+    include_spip('base/create');
70
+    creer_base();
71
+    $tables = sql_alltable();
72 72
 
73
-	$res = '';
74
-	foreach ($tables as $tab) {
75
-		$class = '';
76
-		$m = "<strong>$tab</strong> ";
77
-		spip_log("Repare $tab", _LOG_INFO_IMPORTANTE);
78
-		// supprimer la meta avant de lancer la reparation
79
-		// car le repair peut etre long ; on ne veut pas boucler
80
-		effacer_meta('admin_repair');
81
-		if ($repair) {
82
-			$result_repair = sql_repair($tab);
83
-			if (!$result_repair) {
84
-				return false;
85
-			}
86
-		}
73
+    $res = '';
74
+    foreach ($tables as $tab) {
75
+        $class = '';
76
+        $m = "<strong>$tab</strong> ";
77
+        spip_log("Repare $tab", _LOG_INFO_IMPORTANTE);
78
+        // supprimer la meta avant de lancer la reparation
79
+        // car le repair peut etre long ; on ne veut pas boucler
80
+        effacer_meta('admin_repair');
81
+        if ($repair) {
82
+            $result_repair = sql_repair($tab);
83
+            if (!$result_repair) {
84
+                return false;
85
+            }
86
+        }
87 87
 
88
-		// essayer de maj la table (creation de champs manquants)
89
-		maj_tables($tab);
88
+        // essayer de maj la table (creation de champs manquants)
89
+        maj_tables($tab);
90 90
 
91
-		$count = sql_countsel($tab);
91
+        $count = sql_countsel($tab);
92 92
 
93
-		if ($count > 1) {
94
-			$m .= '(' . _T('texte_compte_elements', ['count' => $count]) . ")\n";
95
-		} else {
96
-			if ($count == 1) {
97
-				$m .= '(' . _T('texte_compte_element', ['count' => $count]) . ")\n";
98
-			} else {
99
-				$m .= '(' . _T('texte_vide') . ")\n";
100
-			}
101
-		}
93
+        if ($count > 1) {
94
+            $m .= '(' . _T('texte_compte_elements', ['count' => $count]) . ")\n";
95
+        } else {
96
+            if ($count == 1) {
97
+                $m .= '(' . _T('texte_compte_element', ['count' => $count]) . ")\n";
98
+            } else {
99
+                $m .= '(' . _T('texte_vide') . ")\n";
100
+            }
101
+        }
102 102
 
103
-		if (
104
-			$result_repair
105
-			and $msg = join(
106
-				' ',
107
-				(is_resource($result_repair) or is_object($result_repair)) ? sql_fetch($result_repair) : $result_repair
108
-			) . ' '
109
-			and strpos($msg, ' OK ') === false
110
-		) {
111
-			$class = " class='notice'";
112
-			$m .= '<br /><tt>' . spip_htmlentities($msg) . "</tt>\n";
113
-		} else {
114
-			$m .= ' ' . _T('texte_table_ok');
115
-		}
103
+        if (
104
+            $result_repair
105
+            and $msg = join(
106
+                ' ',
107
+                (is_resource($result_repair) or is_object($result_repair)) ? sql_fetch($result_repair) : $result_repair
108
+            ) . ' '
109
+            and strpos($msg, ' OK ') === false
110
+        ) {
111
+            $class = " class='notice'";
112
+            $m .= '<br /><tt>' . spip_htmlentities($msg) . "</tt>\n";
113
+        } else {
114
+            $m .= ' ' . _T('texte_table_ok');
115
+        }
116 116
 
117
-		$res .= "<div$class>$m</div>";
118
-	}
117
+        $res .= "<div$class>$m</div>";
118
+    }
119 119
 
120
-	return $res;
120
+    return $res;
121 121
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
 
39 39
 	$res = admin_repair_tables();
40 40
 	if (!$res) {
41
-		$res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n";
41
+		$res = "<div class='error'>"._T('avis_erreur_mysql').' '.sql_errno().': '.sql_error()."</div>\n";
42 42
 	} else {
43 43
 		include_spip('inc/rubriques');
44 44
 		calculer_rubriques();
@@ -48,7 +48,7 @@  discard block
 block discarded – undo
48 48
 	$res .= pipeline('base_admin_repair', $res);
49 49
 	echo minipres(
50 50
 		_T('texte_tentative_recuperation'),
51
-		$res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site'))
51
+		$res.generer_form_ecrire('accueil', '', '', _T('public:accueil_site'))
52 52
 	);
53 53
 }
54 54
 
@@ -91,12 +91,12 @@  discard block
 block discarded – undo
91 91
 		$count = sql_countsel($tab);
92 92
 
93 93
 		if ($count > 1) {
94
-			$m .= '(' . _T('texte_compte_elements', ['count' => $count]) . ")\n";
94
+			$m .= '('._T('texte_compte_elements', ['count' => $count]).")\n";
95 95
 		} else {
96 96
 			if ($count == 1) {
97
-				$m .= '(' . _T('texte_compte_element', ['count' => $count]) . ")\n";
97
+				$m .= '('._T('texte_compte_element', ['count' => $count]).")\n";
98 98
 			} else {
99
-				$m .= '(' . _T('texte_vide') . ")\n";
99
+				$m .= '('._T('texte_vide').")\n";
100 100
 			}
101 101
 		}
102 102
 
@@ -105,13 +105,13 @@  discard block
 block discarded – undo
105 105
 			and $msg = join(
106 106
 				' ',
107 107
 				(is_resource($result_repair) or is_object($result_repair)) ? sql_fetch($result_repair) : $result_repair
108
-			) . ' '
108
+			).' '
109 109
 			and strpos($msg, ' OK ') === false
110 110
 		) {
111 111
 			$class = " class='notice'";
112
-			$m .= '<br /><tt>' . spip_htmlentities($msg) . "</tt>\n";
112
+			$m .= '<br /><tt>'.spip_htmlentities($msg)."</tt>\n";
113 113
 		} else {
114
-			$m .= ' ' . _T('texte_table_ok');
114
+			$m .= ' '._T('texte_table_ok');
115 115
 		}
116 116
 
117 117
 		$res .= "<div$class>$m</div>";
Please login to merge, or discard this patch.
ecrire/base/upgrade.php 2 patches
Indentation   +282 added lines, -282 removed lines patch added patch discarded remove patch
@@ -17,17 +17,17 @@  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
 if (!defined('_UPGRADE_TIME_OUT')) {
24
-	/**
25
-	 * Durée en secondes pour relancer les scripts de mises à jour, x secondes
26
-	 * avant que la durée d'exécution du script provoque un timeout
27
-	 *
28
-	 * @var int
29
-	 **/
30
-	define('_UPGRADE_TIME_OUT', 20);
24
+    /**
25
+     * Durée en secondes pour relancer les scripts de mises à jour, x secondes
26
+     * avant que la durée d'exécution du script provoque un timeout
27
+     *
28
+     * @var int
29
+     **/
30
+    define('_UPGRADE_TIME_OUT', 20);
31 31
 }
32 32
 
33 33
 /**
@@ -50,40 +50,40 @@  discard block
 block discarded – undo
50 50
  * @return void
51 51
  */
52 52
 function base_upgrade_dist($titre = '', $reprise = '') {
53
-	if (!$titre) {
54
-		return;
55
-	} // anti-testeur automatique
56
-	if ($GLOBALS['spip_version_base'] != $GLOBALS['meta']['version_installee']) {
57
-		if (!is_numeric(_request('reinstall'))) {
58
-			include_spip('base/create');
59
-			spip_log('recree les tables eventuellement disparues', 'maj.' . _LOG_INFO_IMPORTANTE);
60
-			creer_base();
61
-		}
62
-
63
-		// quand on rentre par ici, c'est toujours une mise a jour de SPIP
64
-		// lancement de l'upgrade SPIP
65
-		$res = maj_base();
66
-
67
-		if ($res) {
68
-			// on arrete tout ici !
69
-			exit;
70
-		}
71
-	}
72
-	spip_log('Fin de mise a jour SQL. Debut m-a-j acces et config', 'maj.' . _LOG_INFO_IMPORTANTE);
73
-
74
-	// supprimer quelques fichiers temporaires qui peuvent se retrouver invalides
75
-	@spip_unlink(_CACHE_RUBRIQUES);
76
-	@spip_unlink(_CACHE_PIPELINES);
77
-	@spip_unlink(_CACHE_PLUGINS_PATH);
78
-	@spip_unlink(_CACHE_PLUGINS_OPT);
79
-	@spip_unlink(_CACHE_PLUGINS_FCT);
80
-	@spip_unlink(_CACHE_CHEMIN);
81
-	@spip_unlink(_DIR_TMP . 'plugin_xml_cache.gz');
82
-
83
-	include_spip('inc/auth');
84
-	auth_synchroniser_distant();
85
-	$config = charger_fonction('config', 'inc');
86
-	$config();
53
+    if (!$titre) {
54
+        return;
55
+    } // anti-testeur automatique
56
+    if ($GLOBALS['spip_version_base'] != $GLOBALS['meta']['version_installee']) {
57
+        if (!is_numeric(_request('reinstall'))) {
58
+            include_spip('base/create');
59
+            spip_log('recree les tables eventuellement disparues', 'maj.' . _LOG_INFO_IMPORTANTE);
60
+            creer_base();
61
+        }
62
+
63
+        // quand on rentre par ici, c'est toujours une mise a jour de SPIP
64
+        // lancement de l'upgrade SPIP
65
+        $res = maj_base();
66
+
67
+        if ($res) {
68
+            // on arrete tout ici !
69
+            exit;
70
+        }
71
+    }
72
+    spip_log('Fin de mise a jour SQL. Debut m-a-j acces et config', 'maj.' . _LOG_INFO_IMPORTANTE);
73
+
74
+    // supprimer quelques fichiers temporaires qui peuvent se retrouver invalides
75
+    @spip_unlink(_CACHE_RUBRIQUES);
76
+    @spip_unlink(_CACHE_PIPELINES);
77
+    @spip_unlink(_CACHE_PLUGINS_PATH);
78
+    @spip_unlink(_CACHE_PLUGINS_OPT);
79
+    @spip_unlink(_CACHE_PLUGINS_FCT);
80
+    @spip_unlink(_CACHE_CHEMIN);
81
+    @spip_unlink(_DIR_TMP . 'plugin_xml_cache.gz');
82
+
83
+    include_spip('inc/auth');
84
+    auth_synchroniser_distant();
85
+    $config = charger_fonction('config', 'inc');
86
+    $config();
87 87
 }
88 88
 
89 89
 /**
@@ -114,51 +114,51 @@  discard block
 block discarded – undo
114 114
  */
115 115
 function maj_base($version_cible = 0, $redirect = '', $debut_page = true) {
116 116
 
117
-	$version_installee = $GLOBALS['meta']['version_installee'] ?? null;
118
-
119
-	spip_log(
120
-		"Version anterieure: $version_installee. Courante: " . $GLOBALS['spip_version_base'],
121
-		'maj.' . _LOG_INFO_IMPORTANTE
122
-	);
123
-	if (!$version_installee or ($GLOBALS['spip_version_base'] < $version_installee)) {
124
-		sql_replace(
125
-			'spip_meta',
126
-			[
127
-				'nom' => 'version_installee',
128
-				'valeur' => $GLOBALS['spip_version_base'],
129
-				'impt' => 'non'
130
-			]
131
-		);
132
-		return false;
133
-	}
134
-	if (!upgrade_test()) {
135
-		return true;
136
-	}
137
-
138
-	$cible = ($version_cible ? $version_cible : $GLOBALS['spip_version_base']);
139
-
140
-	if ($version_installee < 2021010100) {
141
-		include_spip('maj/legacy/v21');
142
-		include_spip('maj/legacy/v30');
143
-		include_spip('maj/legacy/v31');
144
-		include_spip('maj/legacy/v32');
145
-		include_spip('maj/legacy/v40');
146
-	}
147
-
148
-	include_spip('maj/2021');
149
-
150
-	ksort($GLOBALS['maj']);
151
-	$res = maj_while($version_installee, $cible, $GLOBALS['maj'], 'version_installee', 'meta', $redirect, $debut_page);
152
-	if ($res) {
153
-		if (!is_array($res)) {
154
-			spip_log("Pb d'acces SQL a la mise a jour", 'maj.' . _LOG_INFO_ERREUR);
155
-		} else {
156
-			echo _T('avis_operation_echec') . ' ' . join(' ', $res);
157
-			echo install_fin_html();
158
-		}
159
-	}
160
-
161
-	return $res;
117
+    $version_installee = $GLOBALS['meta']['version_installee'] ?? null;
118
+
119
+    spip_log(
120
+        "Version anterieure: $version_installee. Courante: " . $GLOBALS['spip_version_base'],
121
+        'maj.' . _LOG_INFO_IMPORTANTE
122
+    );
123
+    if (!$version_installee or ($GLOBALS['spip_version_base'] < $version_installee)) {
124
+        sql_replace(
125
+            'spip_meta',
126
+            [
127
+                'nom' => 'version_installee',
128
+                'valeur' => $GLOBALS['spip_version_base'],
129
+                'impt' => 'non'
130
+            ]
131
+        );
132
+        return false;
133
+    }
134
+    if (!upgrade_test()) {
135
+        return true;
136
+    }
137
+
138
+    $cible = ($version_cible ? $version_cible : $GLOBALS['spip_version_base']);
139
+
140
+    if ($version_installee < 2021010100) {
141
+        include_spip('maj/legacy/v21');
142
+        include_spip('maj/legacy/v30');
143
+        include_spip('maj/legacy/v31');
144
+        include_spip('maj/legacy/v32');
145
+        include_spip('maj/legacy/v40');
146
+    }
147
+
148
+    include_spip('maj/2021');
149
+
150
+    ksort($GLOBALS['maj']);
151
+    $res = maj_while($version_installee, $cible, $GLOBALS['maj'], 'version_installee', 'meta', $redirect, $debut_page);
152
+    if ($res) {
153
+        if (!is_array($res)) {
154
+            spip_log("Pb d'acces SQL a la mise a jour", 'maj.' . _LOG_INFO_ERREUR);
155
+        } else {
156
+            echo _T('avis_operation_echec') . ' ' . join(' ', $res);
157
+            echo install_fin_html();
158
+        }
159
+    }
160
+
161
+    return $res;
162 162
 }
163 163
 
164 164
 /**
@@ -200,53 +200,53 @@  discard block
 block discarded – undo
200 200
  */
201 201
 function maj_plugin($nom_meta_base_version, $version_cible, $maj, $table_meta = 'meta') {
202 202
 
203
-	if ($table_meta !== 'meta') {
204
-		installer_table_meta($table_meta);
205
-	}
206
-
207
-	$current_version = null;
208
-
209
-	if (
210
-		(!isset($GLOBALS[$table_meta][$nom_meta_base_version]))
211
-		|| (!spip_version_compare($current_version = $GLOBALS[$table_meta][$nom_meta_base_version], $version_cible, '='))
212
-	) {
213
-		// $maj['create'] contient les directives propres a la premiere creation de base
214
-		// c'est une operation derogatoire qui fait aboutir directement dans la version_cible
215
-		if (isset($maj['create'])) {
216
-			if (!isset($GLOBALS[$table_meta][$nom_meta_base_version])) {
217
-				// installation : on ne fait que l'operation create
218
-				$maj = ['init' => $maj['create']];
219
-				// et on lui ajoute un appel a inc/config
220
-				// pour creer les metas par defaut
221
-				$config = charger_fonction('config', 'inc');
222
-				$maj[$version_cible] = [[$config]];
223
-			}
224
-			// dans tous les cas enlever cet index du tableau
225
-			unset($maj['create']);
226
-		}
227
-		// si init, deja dans le bon ordre
228
-		if (!isset($maj['init'])) {
229
-			include_spip('inc/plugin'); // pour spip_version_compare
230
-			uksort($maj, 'spip_version_compare');
231
-		}
232
-
233
-		// la redirection se fait par defaut sur la page d'administration des plugins
234
-		// sauf lorsque nous sommes sur l'installation de SPIP
235
-		// ou define _REDIRECT_MAJ_PLUGIN
236
-		$redirect = (defined('_REDIRECT_MAJ_PLUGIN') ? _REDIRECT_MAJ_PLUGIN : generer_url_ecrire('admin_plugin'));
237
-		if (defined('_ECRIRE_INSTALL')) {
238
-			$redirect = parametre_url(generer_url_ecrire('install'), 'etape', _request('etape'));
239
-		}
240
-
241
-		$res = maj_while($current_version, $version_cible, $maj, $nom_meta_base_version, $table_meta, $redirect);
242
-		if ($res) {
243
-			if (!is_array($res)) {
244
-				spip_log("Pb d'acces SQL a la mise a jour", 'maj.' . _LOG_INFO_ERREUR);
245
-			} else {
246
-				echo '<p>' . _T('avis_operation_echec') . ' ' . join(' ', $res) . '</p>';
247
-			}
248
-		}
249
-	}
203
+    if ($table_meta !== 'meta') {
204
+        installer_table_meta($table_meta);
205
+    }
206
+
207
+    $current_version = null;
208
+
209
+    if (
210
+        (!isset($GLOBALS[$table_meta][$nom_meta_base_version]))
211
+        || (!spip_version_compare($current_version = $GLOBALS[$table_meta][$nom_meta_base_version], $version_cible, '='))
212
+    ) {
213
+        // $maj['create'] contient les directives propres a la premiere creation de base
214
+        // c'est une operation derogatoire qui fait aboutir directement dans la version_cible
215
+        if (isset($maj['create'])) {
216
+            if (!isset($GLOBALS[$table_meta][$nom_meta_base_version])) {
217
+                // installation : on ne fait que l'operation create
218
+                $maj = ['init' => $maj['create']];
219
+                // et on lui ajoute un appel a inc/config
220
+                // pour creer les metas par defaut
221
+                $config = charger_fonction('config', 'inc');
222
+                $maj[$version_cible] = [[$config]];
223
+            }
224
+            // dans tous les cas enlever cet index du tableau
225
+            unset($maj['create']);
226
+        }
227
+        // si init, deja dans le bon ordre
228
+        if (!isset($maj['init'])) {
229
+            include_spip('inc/plugin'); // pour spip_version_compare
230
+            uksort($maj, 'spip_version_compare');
231
+        }
232
+
233
+        // la redirection se fait par defaut sur la page d'administration des plugins
234
+        // sauf lorsque nous sommes sur l'installation de SPIP
235
+        // ou define _REDIRECT_MAJ_PLUGIN
236
+        $redirect = (defined('_REDIRECT_MAJ_PLUGIN') ? _REDIRECT_MAJ_PLUGIN : generer_url_ecrire('admin_plugin'));
237
+        if (defined('_ECRIRE_INSTALL')) {
238
+            $redirect = parametre_url(generer_url_ecrire('install'), 'etape', _request('etape'));
239
+        }
240
+
241
+        $res = maj_while($current_version, $version_cible, $maj, $nom_meta_base_version, $table_meta, $redirect);
242
+        if ($res) {
243
+            if (!is_array($res)) {
244
+                spip_log("Pb d'acces SQL a la mise a jour", 'maj.' . _LOG_INFO_ERREUR);
245
+            } else {
246
+                echo '<p>' . _T('avis_operation_echec') . ' ' . join(' ', $res) . '</p>';
247
+            }
248
+        }
249
+    }
250 250
 }
251 251
 
252 252
 /**
@@ -263,17 +263,17 @@  discard block
 block discarded – undo
263 263
  * @return void
264 264
  */
265 265
 function relance_maj($meta, $table, $redirect = '') {
266
-	include_spip('inc/headers');
267
-	if (!$redirect) {
268
-		// recuperer la valeur installee en cours
269
-		// on la tronque numeriquement, elle ne sert pas reellement
270
-		// sauf pour verifier que ce n'est pas oui ou non
271
-		// sinon is_numeric va echouer sur un numero de version 1.2.3
272
-		$installee = intval($GLOBALS[$table][$meta]);
273
-		$redirect = generer_url_ecrire('upgrade', "reinstall=$installee&meta=$meta&table=$table", true);
274
-	}
275
-	echo redirige_formulaire($redirect);
276
-	exit();
266
+    include_spip('inc/headers');
267
+    if (!$redirect) {
268
+        // recuperer la valeur installee en cours
269
+        // on la tronque numeriquement, elle ne sert pas reellement
270
+        // sauf pour verifier que ce n'est pas oui ou non
271
+        // sinon is_numeric va echouer sur un numero de version 1.2.3
272
+        $installee = intval($GLOBALS[$table][$meta]);
273
+        $redirect = generer_url_ecrire('upgrade', "reinstall=$installee&meta=$meta&table=$table", true);
274
+    }
275
+    echo redirige_formulaire($redirect);
276
+    exit();
277 277
 }
278 278
 
279 279
 /**
@@ -286,26 +286,26 @@  discard block
 block discarded – undo
286 286
  * @return void
287 287
  */
288 288
 function maj_debut_page($installee, $meta, $table) {
289
-	static $done = false;
290
-	if ($done) {
291
-		return;
292
-	}
293
-	include_spip('inc/minipres');
294
-	@ini_set('zlib.output_compression', '0'); // pour permettre l'affichage au fur et a mesure
295
-	$timeout = _UPGRADE_TIME_OUT * 2;
296
-	$titre = _T('titre_page_upgrade');
297
-	$balise_img = charger_filtre('balise_img');
298
-	$titre .= $balise_img(chemin_image('loader.svg'), '', 'loader');
299
-	echo(install_debut_html($titre));
300
-	// script de rechargement auto sur timeout
301
-	$redirect = generer_url_ecrire('upgrade', "reinstall=$installee&meta=$meta&table=$table", true);
302
-	echo http_script("window.setTimeout('location.href=\"" . $redirect . "\";'," . ($timeout * 1000) . ')');
303
-	echo "<div style='text-align: left'>\n";
304
-	if (ob_get_level()) {
305
-		ob_flush();
306
-	}
307
-	flush();
308
-	$done = true;
289
+    static $done = false;
290
+    if ($done) {
291
+        return;
292
+    }
293
+    include_spip('inc/minipres');
294
+    @ini_set('zlib.output_compression', '0'); // pour permettre l'affichage au fur et a mesure
295
+    $timeout = _UPGRADE_TIME_OUT * 2;
296
+    $titre = _T('titre_page_upgrade');
297
+    $balise_img = charger_filtre('balise_img');
298
+    $titre .= $balise_img(chemin_image('loader.svg'), '', 'loader');
299
+    echo(install_debut_html($titre));
300
+    // script de rechargement auto sur timeout
301
+    $redirect = generer_url_ecrire('upgrade', "reinstall=$installee&meta=$meta&table=$table", true);
302
+    echo http_script("window.setTimeout('location.href=\"" . $redirect . "\";'," . ($timeout * 1000) . ')');
303
+    echo "<div style='text-align: left'>\n";
304
+    if (ob_get_level()) {
305
+        ob_flush();
306
+    }
307
+    flush();
308
+    $done = true;
309 309
 }
310 310
 
311 311
 
@@ -349,64 +349,64 @@  discard block
 block discarded – undo
349 349
  *    - tableau vide sinon.
350 350
  */
351 351
 function maj_while($installee, $cible, $maj, $meta = '', $table = 'meta', $redirect = '', $debut_page = false) {
352
-	# inclusions pour que les procedures d'upgrade disposent des fonctions de base
353
-	include_spip('base/create');
354
-	include_spip('base/abstract_sql');
355
-	$trouver_table = charger_fonction('trouver_table', 'base');
356
-	include_spip('inc/plugin'); // pour spip_version_compare
357
-	$n = 0;
358
-	$time = time();
359
-
360
-	if (!defined('_TIME_OUT')) {
361
-		/**
362
-		 * Définir le timeout qui peut-être utilisé dans les fonctions
363
-		 * de mises à jour qui durent trop longtemps
364
-		 *
365
-		 * À utiliser tel que : `if (time() >= _TIME_OUT)`
366
-		 *
367
-		 * @var int
368
-		 */
369
-		define('_TIME_OUT', $time + _UPGRADE_TIME_OUT);
370
-	}
371
-
372
-	foreach ($maj as $v => $operations) {
373
-		// si une maj pour cette version
374
-		if (
375
-			$v == 'init' or
376
-			(spip_version_compare($v, $installee, '>')
377
-				and spip_version_compare($v, $cible, '<='))
378
-		) {
379
-			if ($debut_page) {
380
-				maj_debut_page($v, $meta, $table);
381
-			}
382
-			echo "MAJ $v";
383
-			$etape = serie_alter($v, $operations, $meta, $table, $redirect);
384
-			$trouver_table(''); // vider le cache des descriptions de table
385
-			# echec sur une etape en cours ?
386
-			# on sort
387
-			if ($etape) {
388
-				return [$v, $etape];
389
-			}
390
-			$n = time() - $time;
391
-			spip_log("$table $meta: $v en $n secondes", 'maj.' . _LOG_INFO_IMPORTANTE);
392
-			if ($meta) {
393
-				ecrire_meta($meta, $installee = $v, 'oui', $table);
394
-			}
395
-			echo (_IS_CLI ? "\n" : '<br />');
396
-		}
397
-		if (time() >= _TIME_OUT) {
398
-			relance_maj($meta, $table, $redirect);
399
-		}
400
-	}
401
-	$trouver_table(''); // vider le cache des descriptions de table
402
-	// indispensable pour les chgt de versions qui n'ecrivent pas en base
403
-	// tant pis pour la redondance eventuelle avec ci-dessus
404
-	if ($meta) {
405
-		ecrire_meta($meta, $cible, 'oui', $table);
406
-	}
407
-	spip_log("MAJ terminee. $meta: $installee", 'maj.' . _LOG_INFO_IMPORTANTE);
408
-
409
-	return [];
352
+    # inclusions pour que les procedures d'upgrade disposent des fonctions de base
353
+    include_spip('base/create');
354
+    include_spip('base/abstract_sql');
355
+    $trouver_table = charger_fonction('trouver_table', 'base');
356
+    include_spip('inc/plugin'); // pour spip_version_compare
357
+    $n = 0;
358
+    $time = time();
359
+
360
+    if (!defined('_TIME_OUT')) {
361
+        /**
362
+         * Définir le timeout qui peut-être utilisé dans les fonctions
363
+         * de mises à jour qui durent trop longtemps
364
+         *
365
+         * À utiliser tel que : `if (time() >= _TIME_OUT)`
366
+         *
367
+         * @var int
368
+         */
369
+        define('_TIME_OUT', $time + _UPGRADE_TIME_OUT);
370
+    }
371
+
372
+    foreach ($maj as $v => $operations) {
373
+        // si une maj pour cette version
374
+        if (
375
+            $v == 'init' or
376
+            (spip_version_compare($v, $installee, '>')
377
+                and spip_version_compare($v, $cible, '<='))
378
+        ) {
379
+            if ($debut_page) {
380
+                maj_debut_page($v, $meta, $table);
381
+            }
382
+            echo "MAJ $v";
383
+            $etape = serie_alter($v, $operations, $meta, $table, $redirect);
384
+            $trouver_table(''); // vider le cache des descriptions de table
385
+            # echec sur une etape en cours ?
386
+            # on sort
387
+            if ($etape) {
388
+                return [$v, $etape];
389
+            }
390
+            $n = time() - $time;
391
+            spip_log("$table $meta: $v en $n secondes", 'maj.' . _LOG_INFO_IMPORTANTE);
392
+            if ($meta) {
393
+                ecrire_meta($meta, $installee = $v, 'oui', $table);
394
+            }
395
+            echo (_IS_CLI ? "\n" : '<br />');
396
+        }
397
+        if (time() >= _TIME_OUT) {
398
+            relance_maj($meta, $table, $redirect);
399
+        }
400
+    }
401
+    $trouver_table(''); // vider le cache des descriptions de table
402
+    // indispensable pour les chgt de versions qui n'ecrivent pas en base
403
+    // tant pis pour la redondance eventuelle avec ci-dessus
404
+    if ($meta) {
405
+        ecrire_meta($meta, $cible, 'oui', $table);
406
+    }
407
+    spip_log("MAJ terminee. $meta: $installee", 'maj.' . _LOG_INFO_IMPORTANTE);
408
+
409
+    return [];
410 410
 }
411 411
 
412 412
 /**
@@ -429,53 +429,53 @@  discard block
 block discarded – undo
429 429
  * @return int
430 430
  */
431 431
 function serie_alter($serie, $q = [], $meta = '', $table = 'meta', $redirect = '') {
432
-	$meta2 = $meta . '_maj_' . $serie;
433
-	$etape = 0;
434
-	if (isset($GLOBALS[$table][$meta2])) {
435
-		$etape = intval($GLOBALS[$table][$meta2]);
436
-	}
437
-	foreach ($q as $i => $r) {
438
-		if ($i >= $etape) {
439
-			$msg = "maj $table $meta2 etape $i";
440
-			if (
441
-				is_array($r)
442
-				and function_exists($f = array_shift($r))
443
-			) {
444
-				// note: $r (arguments de la fonction $f) peut avoir des données tabulaires
445
-				spip_log("$msg: $f " . @join(',', $r), 'maj.' . _LOG_INFO_IMPORTANTE);
446
-				// pour les fonctions atomiques sql_xx
447
-				// on enregistre le meta avant de lancer la fonction,
448
-				// de maniere a eviter de boucler sur timeout
449
-				// mais pour les fonctions complexes,
450
-				// il faut les rejouer jusqu'a achevement.
451
-				// C'est a elle d'assurer qu'elles progressent a chaque rappel
452
-				if (strncmp($f, 'sql_', 4) == 0) {
453
-					ecrire_meta($meta2, $i + 1, 'non', $table);
454
-				}
455
-				echo (_IS_CLI ? '.' : " <span title='$i'>.</span>");
456
-				call_user_func_array($f, $r);
457
-				// si temps imparti depasse, on relance sans ecrire en meta
458
-				// car on est peut etre sorti sur timeout si c'est une fonction longue
459
-				if (time() >= _TIME_OUT) {
460
-					relance_maj($meta, $table, $redirect);
461
-				}
462
-				ecrire_meta($meta2, $i + 1, 'non', $table);
463
-				spip_log("$meta2: ok", 'maj.' . _LOG_INFO_IMPORTANTE);
464
-			} else {
465
-				if (!is_array($r)) {
466
-					spip_log("maj $i format incorrect", 'maj.' . _LOG_ERREUR);
467
-				} else {
468
-					spip_log("maj $i fonction $f non definie", 'maj.' . _LOG_ERREUR);
469
-				}
470
-				// en cas d'erreur serieuse, on s'arrete
471
-				// mais on permet de passer par dessus en rechargeant la page.
472
-				return $i + 1;
473
-			}
474
-		}
475
-	}
476
-	effacer_meta($meta2, $table);
477
-
478
-	return 0;
432
+    $meta2 = $meta . '_maj_' . $serie;
433
+    $etape = 0;
434
+    if (isset($GLOBALS[$table][$meta2])) {
435
+        $etape = intval($GLOBALS[$table][$meta2]);
436
+    }
437
+    foreach ($q as $i => $r) {
438
+        if ($i >= $etape) {
439
+            $msg = "maj $table $meta2 etape $i";
440
+            if (
441
+                is_array($r)
442
+                and function_exists($f = array_shift($r))
443
+            ) {
444
+                // note: $r (arguments de la fonction $f) peut avoir des données tabulaires
445
+                spip_log("$msg: $f " . @join(',', $r), 'maj.' . _LOG_INFO_IMPORTANTE);
446
+                // pour les fonctions atomiques sql_xx
447
+                // on enregistre le meta avant de lancer la fonction,
448
+                // de maniere a eviter de boucler sur timeout
449
+                // mais pour les fonctions complexes,
450
+                // il faut les rejouer jusqu'a achevement.
451
+                // C'est a elle d'assurer qu'elles progressent a chaque rappel
452
+                if (strncmp($f, 'sql_', 4) == 0) {
453
+                    ecrire_meta($meta2, $i + 1, 'non', $table);
454
+                }
455
+                echo (_IS_CLI ? '.' : " <span title='$i'>.</span>");
456
+                call_user_func_array($f, $r);
457
+                // si temps imparti depasse, on relance sans ecrire en meta
458
+                // car on est peut etre sorti sur timeout si c'est une fonction longue
459
+                if (time() >= _TIME_OUT) {
460
+                    relance_maj($meta, $table, $redirect);
461
+                }
462
+                ecrire_meta($meta2, $i + 1, 'non', $table);
463
+                spip_log("$meta2: ok", 'maj.' . _LOG_INFO_IMPORTANTE);
464
+            } else {
465
+                if (!is_array($r)) {
466
+                    spip_log("maj $i format incorrect", 'maj.' . _LOG_ERREUR);
467
+                } else {
468
+                    spip_log("maj $i fonction $f non definie", 'maj.' . _LOG_ERREUR);
469
+                }
470
+                // en cas d'erreur serieuse, on s'arrete
471
+                // mais on permet de passer par dessus en rechargeant la page.
472
+                return $i + 1;
473
+            }
474
+        }
475
+    }
476
+    effacer_meta($meta2, $table);
477
+
478
+    return 0;
479 479
 }
480 480
 
481 481
 /**
@@ -484,16 +484,16 @@  discard block
 block discarded – undo
484 484
  * @return bool True si possible.
485 485
  **/
486 486
 function upgrade_test() {
487
-	sql_drop_table('spip_test', true);
488
-	sql_create('spip_test', ['a' => 'int']);
489
-	sql_alter('TABLE spip_test ADD b INT');
490
-	sql_insertq('spip_test', ['b' => 1], ['field' => ['b' => 'int']]);
491
-	$result = sql_select('b', 'spip_test');
492
-	// ne pas garder le resultat de la requete sinon sqlite3
493
-	// ne peut pas supprimer la table spip_test lors du sql_alter qui suit
494
-	// car cette table serait alors 'verouillee'
495
-	$result = $result ? true : false;
496
-	sql_alter('TABLE spip_test DROP b');
497
-
498
-	return $result;
487
+    sql_drop_table('spip_test', true);
488
+    sql_create('spip_test', ['a' => 'int']);
489
+    sql_alter('TABLE spip_test ADD b INT');
490
+    sql_insertq('spip_test', ['b' => 1], ['field' => ['b' => 'int']]);
491
+    $result = sql_select('b', 'spip_test');
492
+    // ne pas garder le resultat de la requete sinon sqlite3
493
+    // ne peut pas supprimer la table spip_test lors du sql_alter qui suit
494
+    // car cette table serait alors 'verouillee'
495
+    $result = $result ? true : false;
496
+    sql_alter('TABLE spip_test DROP b');
497
+
498
+    return $result;
499 499
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -56,7 +56,7 @@  discard block
 block discarded – undo
56 56
 	if ($GLOBALS['spip_version_base'] != $GLOBALS['meta']['version_installee']) {
57 57
 		if (!is_numeric(_request('reinstall'))) {
58 58
 			include_spip('base/create');
59
-			spip_log('recree les tables eventuellement disparues', 'maj.' . _LOG_INFO_IMPORTANTE);
59
+			spip_log('recree les tables eventuellement disparues', 'maj.'._LOG_INFO_IMPORTANTE);
60 60
 			creer_base();
61 61
 		}
62 62
 
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 			exit;
70 70
 		}
71 71
 	}
72
-	spip_log('Fin de mise a jour SQL. Debut m-a-j acces et config', 'maj.' . _LOG_INFO_IMPORTANTE);
72
+	spip_log('Fin de mise a jour SQL. Debut m-a-j acces et config', 'maj.'._LOG_INFO_IMPORTANTE);
73 73
 
74 74
 	// supprimer quelques fichiers temporaires qui peuvent se retrouver invalides
75 75
 	@spip_unlink(_CACHE_RUBRIQUES);
@@ -78,7 +78,7 @@  discard block
 block discarded – undo
78 78
 	@spip_unlink(_CACHE_PLUGINS_OPT);
79 79
 	@spip_unlink(_CACHE_PLUGINS_FCT);
80 80
 	@spip_unlink(_CACHE_CHEMIN);
81
-	@spip_unlink(_DIR_TMP . 'plugin_xml_cache.gz');
81
+	@spip_unlink(_DIR_TMP.'plugin_xml_cache.gz');
82 82
 
83 83
 	include_spip('inc/auth');
84 84
 	auth_synchroniser_distant();
@@ -117,8 +117,8 @@  discard block
 block discarded – undo
117 117
 	$version_installee = $GLOBALS['meta']['version_installee'] ?? null;
118 118
 
119 119
 	spip_log(
120
-		"Version anterieure: $version_installee. Courante: " . $GLOBALS['spip_version_base'],
121
-		'maj.' . _LOG_INFO_IMPORTANTE
120
+		"Version anterieure: $version_installee. Courante: ".$GLOBALS['spip_version_base'],
121
+		'maj.'._LOG_INFO_IMPORTANTE
122 122
 	);
123 123
 	if (!$version_installee or ($GLOBALS['spip_version_base'] < $version_installee)) {
124 124
 		sql_replace(
@@ -151,9 +151,9 @@  discard block
 block discarded – undo
151 151
 	$res = maj_while($version_installee, $cible, $GLOBALS['maj'], 'version_installee', 'meta', $redirect, $debut_page);
152 152
 	if ($res) {
153 153
 		if (!is_array($res)) {
154
-			spip_log("Pb d'acces SQL a la mise a jour", 'maj.' . _LOG_INFO_ERREUR);
154
+			spip_log("Pb d'acces SQL a la mise a jour", 'maj.'._LOG_INFO_ERREUR);
155 155
 		} else {
156
-			echo _T('avis_operation_echec') . ' ' . join(' ', $res);
156
+			echo _T('avis_operation_echec').' '.join(' ', $res);
157 157
 			echo install_fin_html();
158 158
 		}
159 159
 	}
@@ -241,9 +241,9 @@  discard block
 block discarded – undo
241 241
 		$res = maj_while($current_version, $version_cible, $maj, $nom_meta_base_version, $table_meta, $redirect);
242 242
 		if ($res) {
243 243
 			if (!is_array($res)) {
244
-				spip_log("Pb d'acces SQL a la mise a jour", 'maj.' . _LOG_INFO_ERREUR);
244
+				spip_log("Pb d'acces SQL a la mise a jour", 'maj.'._LOG_INFO_ERREUR);
245 245
 			} else {
246
-				echo '<p>' . _T('avis_operation_echec') . ' ' . join(' ', $res) . '</p>';
246
+				echo '<p>'._T('avis_operation_echec').' '.join(' ', $res).'</p>';
247 247
 			}
248 248
 		}
249 249
 	}
@@ -299,7 +299,7 @@  discard block
 block discarded – undo
299 299
 	echo(install_debut_html($titre));
300 300
 	// script de rechargement auto sur timeout
301 301
 	$redirect = generer_url_ecrire('upgrade', "reinstall=$installee&meta=$meta&table=$table", true);
302
-	echo http_script("window.setTimeout('location.href=\"" . $redirect . "\";'," . ($timeout * 1000) . ')');
302
+	echo http_script("window.setTimeout('location.href=\"".$redirect."\";',".($timeout * 1000).')');
303 303
 	echo "<div style='text-align: left'>\n";
304 304
 	if (ob_get_level()) {
305 305
 		ob_flush();
@@ -388,7 +388,7 @@  discard block
 block discarded – undo
388 388
 				return [$v, $etape];
389 389
 			}
390 390
 			$n = time() - $time;
391
-			spip_log("$table $meta: $v en $n secondes", 'maj.' . _LOG_INFO_IMPORTANTE);
391
+			spip_log("$table $meta: $v en $n secondes", 'maj.'._LOG_INFO_IMPORTANTE);
392 392
 			if ($meta) {
393 393
 				ecrire_meta($meta, $installee = $v, 'oui', $table);
394 394
 			}
@@ -404,7 +404,7 @@  discard block
 block discarded – undo
404 404
 	if ($meta) {
405 405
 		ecrire_meta($meta, $cible, 'oui', $table);
406 406
 	}
407
-	spip_log("MAJ terminee. $meta: $installee", 'maj.' . _LOG_INFO_IMPORTANTE);
407
+	spip_log("MAJ terminee. $meta: $installee", 'maj.'._LOG_INFO_IMPORTANTE);
408 408
 
409 409
 	return [];
410 410
 }
@@ -429,7 +429,7 @@  discard block
 block discarded – undo
429 429
  * @return int
430 430
  */
431 431
 function serie_alter($serie, $q = [], $meta = '', $table = 'meta', $redirect = '') {
432
-	$meta2 = $meta . '_maj_' . $serie;
432
+	$meta2 = $meta.'_maj_'.$serie;
433 433
 	$etape = 0;
434 434
 	if (isset($GLOBALS[$table][$meta2])) {
435 435
 		$etape = intval($GLOBALS[$table][$meta2]);
@@ -442,7 +442,7 @@  discard block
 block discarded – undo
442 442
 				and function_exists($f = array_shift($r))
443 443
 			) {
444 444
 				// note: $r (arguments de la fonction $f) peut avoir des données tabulaires
445
-				spip_log("$msg: $f " . @join(',', $r), 'maj.' . _LOG_INFO_IMPORTANTE);
445
+				spip_log("$msg: $f ".@join(',', $r), 'maj.'._LOG_INFO_IMPORTANTE);
446 446
 				// pour les fonctions atomiques sql_xx
447 447
 				// on enregistre le meta avant de lancer la fonction,
448 448
 				// de maniere a eviter de boucler sur timeout
@@ -460,12 +460,12 @@  discard block
 block discarded – undo
460 460
 					relance_maj($meta, $table, $redirect);
461 461
 				}
462 462
 				ecrire_meta($meta2, $i + 1, 'non', $table);
463
-				spip_log("$meta2: ok", 'maj.' . _LOG_INFO_IMPORTANTE);
463
+				spip_log("$meta2: ok", 'maj.'._LOG_INFO_IMPORTANTE);
464 464
 			} else {
465 465
 				if (!is_array($r)) {
466
-					spip_log("maj $i format incorrect", 'maj.' . _LOG_ERREUR);
466
+					spip_log("maj $i format incorrect", 'maj.'._LOG_ERREUR);
467 467
 				} else {
468
-					spip_log("maj $i fonction $f non definie", 'maj.' . _LOG_ERREUR);
468
+					spip_log("maj $i fonction $f non definie", 'maj.'._LOG_ERREUR);
469 469
 				}
470 470
 				// en cas d'erreur serieuse, on s'arrete
471 471
 				// mais on permet de passer par dessus en rechargeant la page.
Please login to merge, or discard this patch.
ecrire/base/trouver_table.php 2 patches
Indentation   +140 added lines, -140 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\SQL\Tables
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 include_spip('base/objets');
22 22
 
@@ -64,143 +64,143 @@  discard block
 block discarded – undo
64 64
  *
65 65
  **/
66 66
 function base_trouver_table_dist($nom, $serveur = '', $table_spip = true) {
67
-	static $nom_cache_desc_sql = [];
68
-
69
-	if (
70
-		!spip_connect($serveur)
71
-		or !preg_match('/^[a-zA-Z0-9._-]*/', $nom)
72
-	) {
73
-		return null;
74
-	}
75
-
76
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
77
-	$objets_sql = lister_tables_objets_sql('::md5');
78
-
79
-	// le nom du cache depend du serveur mais aussi du nom de la db et du prefixe
80
-	// ce qui permet une auto invalidation en cas de modif manuelle du fichier
81
-	// de connexion, et tout risque d'ambiguite
82
-	if (!isset($nom_cache_desc_sql[$serveur][$objets_sql])) {
83
-		$nom_cache_desc_sql[$serveur][$objets_sql] =
84
-			_DIR_CACHE . 'sql_desc_'
85
-			. ($serveur ? "{$serveur}_" : '')
86
-			. substr(md5($connexion['db'] . ':' . $connexion['prefixe'] . ":$objets_sql"), 0, 8)
87
-			. '.txt';
88
-		// nouveau nom de cache = nouvelle version en memoire
89
-		unset($connexion['tables']);
90
-	}
91
-
92
-	// un appel avec $nom vide est une demande explicite de vidange du cache des descriptions
93
-	if (!$nom) {
94
-		spip_unlink($nom_cache_desc_sql[$serveur][$objets_sql]);
95
-		$connexion['tables'] = [];
96
-
97
-		return null;
98
-	}
99
-
100
-	$nom_sql = $nom;
101
-	if (preg_match('/\.(.*)$/', $nom, $s)) {
102
-		$nom_sql = $s[1];
103
-	} else {
104
-		$nom_sql = $nom;
105
-	}
106
-
107
-	$fdesc = $desc = '';
108
-	$connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
109
-
110
-	// base sous SPIP: gerer les abreviations explicites des noms de table
111
-	if ($connexion['spip_connect_version']) {
112
-		if ($table_spip and isset($GLOBALS['table_des_tables'][$nom])) {
113
-			$nom = $GLOBALS['table_des_tables'][$nom];
114
-			$nom_sql = 'spip_' . $nom;
115
-		}
116
-	}
117
-
118
-	// si c'est la premiere table qu'on cherche
119
-	// et si on est pas explicitement en recalcul
120
-	// on essaye de recharger le cache des decriptions de ce serveur
121
-	// dans le fichier cache
122
-	if (
123
-		!isset($connexion['tables'][$nom_sql])
124
-		and defined('_VAR_MODE') and _VAR_MODE !== 'recalcul'
125
-		and (!isset($connexion['tables']) or !$connexion['tables'])
126
-	) {
127
-		if (
128
-			lire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], $desc_cache)
129
-			and $desc_cache = unserialize($desc_cache)
130
-		) {
131
-			$connexion['tables'] = $desc_cache;
132
-		}
133
-	}
134
-	if ($table_spip and !isset($connexion['tables'][$nom_sql])) {
135
-		if (isset($GLOBALS['tables_principales'][$nom_sql])) {
136
-			$fdesc = $GLOBALS['tables_principales'][$nom_sql];
137
-		}
138
-		// meme si pas d'abreviation declaree, trouver la table spip_$nom
139
-		// si c'est une table principale,
140
-		// puisqu'on le fait aussi pour les tables auxiliaires
141
-		elseif ($nom_sql == $nom and isset($GLOBALS['tables_principales']['spip_' . $nom])) {
142
-			$nom_sql = 'spip_' . $nom;
143
-			$fdesc = &$GLOBALS['tables_principales'][$nom_sql];
144
-		} elseif (
145
-			isset($GLOBALS['tables_auxiliaires'][$n = $nom])
146
-			or isset($GLOBALS['tables_auxiliaires'][$n = 'spip_' . $nom])
147
-		) {
148
-			$nom_sql = $n;
149
-			$fdesc = &$GLOBALS['tables_auxiliaires'][$n];
150
-		}  # table locale a cote de SPIP, comme non SPIP:
151
-	}
152
-	if (!isset($connexion['tables'][$nom_sql])) {
153
-		// La *vraie* base a la priorite
154
-		$desc = sql_showtable($nom_sql, $table_spip, $serveur);
155
-		if (!$desc or !$desc['field']) {
156
-			if (!$fdesc) {
157
-				spip_log("trouver_table: table inconnue '$serveur' '$nom'", 'base' . _LOG_INFO_IMPORTANTE);
158
-
159
-				return null;
160
-			}
161
-			// on ne sait pas lire la structure de la table :
162
-			// on retombe sur la description donnee dans les fichiers spip
163
-			$desc = $fdesc;
164
-			$desc['exist'] = false;
165
-		} else {
166
-			$desc['exist'] = true;
167
-			// gerer le cas des cles vides (echec de l'analyse sur une vue par exemple)
168
-			// pour recuperer la declaration de lister_tables_objets_sql() si il y en a une
169
-			if (! $desc['key']) {
170
-				spip_log("trouver_table: table sans cle '$serveur' '$nom'", 'base');
171
-				unset($desc['key']);
172
-			}
173
-		}
174
-
175
-		$desc['table'] = $desc['table_sql'] = $nom_sql;
176
-		$desc['connexion'] = $serveur;
177
-
178
-		// charger les infos declarees pour cette table
179
-		// en lui passant les infos connues
180
-		// $desc est prioritaire pour la description de la table
181
-		$desc = array_merge(lister_tables_objets_sql($nom_sql, $desc), $desc);
182
-		// s'assurer qu'on a toujours un 'key'
183
-		if (!isset($desc['key']) && !empty($fdesc['key'])) {
184
-			$desc['key'] = $fdesc['key'];
185
-		}
186
-		if (! isset($desc['key'])) {
187
-			$desc['key'] = [];
188
-		}
189
-
190
-		// si tables_objets_sql est bien fini d'init, on peut cacher
191
-		$connexion['tables'][$nom_sql] = $desc;
192
-		$res = &$connexion['tables'][$nom_sql];
193
-		// une nouvelle table a ete decrite
194
-		// mettons donc a jour le cache des descriptions de ce serveur
195
-		if (is_writeable(_DIR_CACHE)) {
196
-			ecrire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], serialize($connexion['tables']), true);
197
-		}
198
-	} else {
199
-		$res = &$connexion['tables'][$nom_sql];
200
-	}
201
-
202
-	// toujours retourner $nom dans id_table
203
-	$res['id_table'] = $nom;
204
-
205
-	return $res;
67
+    static $nom_cache_desc_sql = [];
68
+
69
+    if (
70
+        !spip_connect($serveur)
71
+        or !preg_match('/^[a-zA-Z0-9._-]*/', $nom)
72
+    ) {
73
+        return null;
74
+    }
75
+
76
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
77
+    $objets_sql = lister_tables_objets_sql('::md5');
78
+
79
+    // le nom du cache depend du serveur mais aussi du nom de la db et du prefixe
80
+    // ce qui permet une auto invalidation en cas de modif manuelle du fichier
81
+    // de connexion, et tout risque d'ambiguite
82
+    if (!isset($nom_cache_desc_sql[$serveur][$objets_sql])) {
83
+        $nom_cache_desc_sql[$serveur][$objets_sql] =
84
+            _DIR_CACHE . 'sql_desc_'
85
+            . ($serveur ? "{$serveur}_" : '')
86
+            . substr(md5($connexion['db'] . ':' . $connexion['prefixe'] . ":$objets_sql"), 0, 8)
87
+            . '.txt';
88
+        // nouveau nom de cache = nouvelle version en memoire
89
+        unset($connexion['tables']);
90
+    }
91
+
92
+    // un appel avec $nom vide est une demande explicite de vidange du cache des descriptions
93
+    if (!$nom) {
94
+        spip_unlink($nom_cache_desc_sql[$serveur][$objets_sql]);
95
+        $connexion['tables'] = [];
96
+
97
+        return null;
98
+    }
99
+
100
+    $nom_sql = $nom;
101
+    if (preg_match('/\.(.*)$/', $nom, $s)) {
102
+        $nom_sql = $s[1];
103
+    } else {
104
+        $nom_sql = $nom;
105
+    }
106
+
107
+    $fdesc = $desc = '';
108
+    $connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
109
+
110
+    // base sous SPIP: gerer les abreviations explicites des noms de table
111
+    if ($connexion['spip_connect_version']) {
112
+        if ($table_spip and isset($GLOBALS['table_des_tables'][$nom])) {
113
+            $nom = $GLOBALS['table_des_tables'][$nom];
114
+            $nom_sql = 'spip_' . $nom;
115
+        }
116
+    }
117
+
118
+    // si c'est la premiere table qu'on cherche
119
+    // et si on est pas explicitement en recalcul
120
+    // on essaye de recharger le cache des decriptions de ce serveur
121
+    // dans le fichier cache
122
+    if (
123
+        !isset($connexion['tables'][$nom_sql])
124
+        and defined('_VAR_MODE') and _VAR_MODE !== 'recalcul'
125
+        and (!isset($connexion['tables']) or !$connexion['tables'])
126
+    ) {
127
+        if (
128
+            lire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], $desc_cache)
129
+            and $desc_cache = unserialize($desc_cache)
130
+        ) {
131
+            $connexion['tables'] = $desc_cache;
132
+        }
133
+    }
134
+    if ($table_spip and !isset($connexion['tables'][$nom_sql])) {
135
+        if (isset($GLOBALS['tables_principales'][$nom_sql])) {
136
+            $fdesc = $GLOBALS['tables_principales'][$nom_sql];
137
+        }
138
+        // meme si pas d'abreviation declaree, trouver la table spip_$nom
139
+        // si c'est une table principale,
140
+        // puisqu'on le fait aussi pour les tables auxiliaires
141
+        elseif ($nom_sql == $nom and isset($GLOBALS['tables_principales']['spip_' . $nom])) {
142
+            $nom_sql = 'spip_' . $nom;
143
+            $fdesc = &$GLOBALS['tables_principales'][$nom_sql];
144
+        } elseif (
145
+            isset($GLOBALS['tables_auxiliaires'][$n = $nom])
146
+            or isset($GLOBALS['tables_auxiliaires'][$n = 'spip_' . $nom])
147
+        ) {
148
+            $nom_sql = $n;
149
+            $fdesc = &$GLOBALS['tables_auxiliaires'][$n];
150
+        }  # table locale a cote de SPIP, comme non SPIP:
151
+    }
152
+    if (!isset($connexion['tables'][$nom_sql])) {
153
+        // La *vraie* base a la priorite
154
+        $desc = sql_showtable($nom_sql, $table_spip, $serveur);
155
+        if (!$desc or !$desc['field']) {
156
+            if (!$fdesc) {
157
+                spip_log("trouver_table: table inconnue '$serveur' '$nom'", 'base' . _LOG_INFO_IMPORTANTE);
158
+
159
+                return null;
160
+            }
161
+            // on ne sait pas lire la structure de la table :
162
+            // on retombe sur la description donnee dans les fichiers spip
163
+            $desc = $fdesc;
164
+            $desc['exist'] = false;
165
+        } else {
166
+            $desc['exist'] = true;
167
+            // gerer le cas des cles vides (echec de l'analyse sur une vue par exemple)
168
+            // pour recuperer la declaration de lister_tables_objets_sql() si il y en a une
169
+            if (! $desc['key']) {
170
+                spip_log("trouver_table: table sans cle '$serveur' '$nom'", 'base');
171
+                unset($desc['key']);
172
+            }
173
+        }
174
+
175
+        $desc['table'] = $desc['table_sql'] = $nom_sql;
176
+        $desc['connexion'] = $serveur;
177
+
178
+        // charger les infos declarees pour cette table
179
+        // en lui passant les infos connues
180
+        // $desc est prioritaire pour la description de la table
181
+        $desc = array_merge(lister_tables_objets_sql($nom_sql, $desc), $desc);
182
+        // s'assurer qu'on a toujours un 'key'
183
+        if (!isset($desc['key']) && !empty($fdesc['key'])) {
184
+            $desc['key'] = $fdesc['key'];
185
+        }
186
+        if (! isset($desc['key'])) {
187
+            $desc['key'] = [];
188
+        }
189
+
190
+        // si tables_objets_sql est bien fini d'init, on peut cacher
191
+        $connexion['tables'][$nom_sql] = $desc;
192
+        $res = &$connexion['tables'][$nom_sql];
193
+        // une nouvelle table a ete decrite
194
+        // mettons donc a jour le cache des descriptions de ce serveur
195
+        if (is_writeable(_DIR_CACHE)) {
196
+            ecrire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], serialize($connexion['tables']), true);
197
+        }
198
+    } else {
199
+        $res = &$connexion['tables'][$nom_sql];
200
+    }
201
+
202
+    // toujours retourner $nom dans id_table
203
+    $res['id_table'] = $nom;
204
+
205
+    return $res;
206 206
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -81,9 +81,9 @@  discard block
 block discarded – undo
81 81
 	// de connexion, et tout risque d'ambiguite
82 82
 	if (!isset($nom_cache_desc_sql[$serveur][$objets_sql])) {
83 83
 		$nom_cache_desc_sql[$serveur][$objets_sql] =
84
-			_DIR_CACHE . 'sql_desc_'
84
+			_DIR_CACHE.'sql_desc_'
85 85
 			. ($serveur ? "{$serveur}_" : '')
86
-			. substr(md5($connexion['db'] . ':' . $connexion['prefixe'] . ":$objets_sql"), 0, 8)
86
+			. substr(md5($connexion['db'].':'.$connexion['prefixe'].":$objets_sql"), 0, 8)
87 87
 			. '.txt';
88 88
 		// nouveau nom de cache = nouvelle version en memoire
89 89
 		unset($connexion['tables']);
@@ -111,7 +111,7 @@  discard block
 block discarded – undo
111 111
 	if ($connexion['spip_connect_version']) {
112 112
 		if ($table_spip and isset($GLOBALS['table_des_tables'][$nom])) {
113 113
 			$nom = $GLOBALS['table_des_tables'][$nom];
114
-			$nom_sql = 'spip_' . $nom;
114
+			$nom_sql = 'spip_'.$nom;
115 115
 		}
116 116
 	}
117 117
 
@@ -138,12 +138,12 @@  discard block
 block discarded – undo
138 138
 		// meme si pas d'abreviation declaree, trouver la table spip_$nom
139 139
 		// si c'est une table principale,
140 140
 		// puisqu'on le fait aussi pour les tables auxiliaires
141
-		elseif ($nom_sql == $nom and isset($GLOBALS['tables_principales']['spip_' . $nom])) {
142
-			$nom_sql = 'spip_' . $nom;
141
+		elseif ($nom_sql == $nom and isset($GLOBALS['tables_principales']['spip_'.$nom])) {
142
+			$nom_sql = 'spip_'.$nom;
143 143
 			$fdesc = &$GLOBALS['tables_principales'][$nom_sql];
144 144
 		} elseif (
145 145
 			isset($GLOBALS['tables_auxiliaires'][$n = $nom])
146
-			or isset($GLOBALS['tables_auxiliaires'][$n = 'spip_' . $nom])
146
+			or isset($GLOBALS['tables_auxiliaires'][$n = 'spip_'.$nom])
147 147
 		) {
148 148
 			$nom_sql = $n;
149 149
 			$fdesc = &$GLOBALS['tables_auxiliaires'][$n];
@@ -154,7 +154,7 @@  discard block
 block discarded – undo
154 154
 		$desc = sql_showtable($nom_sql, $table_spip, $serveur);
155 155
 		if (!$desc or !$desc['field']) {
156 156
 			if (!$fdesc) {
157
-				spip_log("trouver_table: table inconnue '$serveur' '$nom'", 'base' . _LOG_INFO_IMPORTANTE);
157
+				spip_log("trouver_table: table inconnue '$serveur' '$nom'", 'base'._LOG_INFO_IMPORTANTE);
158 158
 
159 159
 				return null;
160 160
 			}
@@ -166,7 +166,7 @@  discard block
 block discarded – undo
166 166
 			$desc['exist'] = true;
167 167
 			// gerer le cas des cles vides (echec de l'analyse sur une vue par exemple)
168 168
 			// pour recuperer la declaration de lister_tables_objets_sql() si il y en a une
169
-			if (! $desc['key']) {
169
+			if (!$desc['key']) {
170 170
 				spip_log("trouver_table: table sans cle '$serveur' '$nom'", 'base');
171 171
 				unset($desc['key']);
172 172
 			}
@@ -183,7 +183,7 @@  discard block
 block discarded – undo
183 183
 		if (!isset($desc['key']) && !empty($fdesc['key'])) {
184 184
 			$desc['key'] = $fdesc['key'];
185 185
 		}
186
-		if (! isset($desc['key'])) {
186
+		if (!isset($desc['key'])) {
187 187
 			$desc['key'] = [];
188 188
 		}
189 189
 
Please login to merge, or discard this patch.
ecrire/base/objets.php 3 patches
Indentation   +1254 added lines, -1254 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
 /**
@@ -32,11 +32,11 @@  discard block
 block discarded – undo
32 32
  * @return void
33 33
  **/
34 34
 function array_set_merge(&$table, $index, $valeur) {
35
-	if (!isset($table[$index])) {
36
-		$table[$index] = $valeur;
37
-	} else {
38
-		$table[$index] = array_merge($table[$index], $valeur);
39
-	}
35
+    if (!isset($table[$index])) {
36
+        $table[$index] = $valeur;
37
+    } else {
38
+        $table[$index] = array_merge($table[$index], $valeur);
39
+    }
40 40
 }
41 41
 
42 42
 /**
@@ -53,440 +53,440 @@  discard block
 block discarded – undo
53 53
  * @return array|bool
54 54
  */
55 55
 function lister_tables_objets_sql($table_sql = null, $desc = []) {
56
-	static $deja_la = false;
57
-	static $infos_tables = null;
58
-	static $md5 = null;
59
-	static $plugin_hash = null;
60
-
61
-	// plugins hash connu ? non si _CACHE_PLUGINS_OPT est pas encore chargé.
62
-	$_PLUGINS_HASH = defined('_PLUGINS_HASH') ? _PLUGINS_HASH : '!_CACHE_PLUGINS_OPT';
63
-
64
-	// prealablement recuperer les tables_principales
65
-	if (is_null($infos_tables) or $plugin_hash !== $_PLUGINS_HASH) {
66
-		// pas de reentrance (cas base/serial)
67
-		if ($deja_la) {
68
-			spip_log('Re-entrance anormale sur lister_tables_objets_sql : '
69
-				. var_export(debug_backtrace(), true), _LOG_CRITIQUE);
70
-
71
-			return ($table_sql === '::md5' ? $md5 : []);
72
-		}
73
-		$deja_la = true;
74
-		$plugin_hash = $_PLUGINS_HASH; // avant de lancer les pipelines
75
-
76
-		// recuperer les declarations explicites ancienne mode
77
-		// qui servent a completer declarer_tables_objets_sql
78
-		base_serial($GLOBALS['tables_principales']);
79
-		base_auxiliaires($GLOBALS['tables_auxiliaires']);
80
-		$infos_tables = [
81
-			'spip_articles' => [
82
-				'page' => 'article',
83
-				'texte_retour' => 'icone_retour_article',
84
-				'texte_modifier' => 'icone_modifier_article',
85
-				'texte_creer' => 'icone_ecrire_article',
86
-				'texte_objets' => 'public:articles',
87
-				'texte_objet' => 'public:article',
88
-				'texte_signale_edition' => 'texte_travail_article',
89
-				'info_aucun_objet' => 'info_aucun_article',
90
-				'info_1_objet' => 'info_1_article',
91
-				'info_nb_objets' => 'info_nb_articles',
92
-				'texte_logo_objet' => 'logo_article',
93
-				'texte_langue_objet' => 'titre_langue_article',
94
-				'texte_definir_comme_traduction_objet' => 'trad_lier',
95
-				'titre' => 'titre, lang',
96
-				'date' => 'date',
97
-				'principale' => 'oui',
98
-				'introduction_longueur' => '500',
99
-				'champs_editables' => [
100
-					'surtitre',
101
-					'titre',
102
-					'soustitre',
103
-					'descriptif',
104
-					'nom_site',
105
-					'url_site',
106
-					'chapo',
107
-					'texte',
108
-					'ps',
109
-					'virtuel'
110
-				],
111
-				'champs_versionnes' => [
112
-					'id_rubrique',
113
-					'surtitre',
114
-					'titre',
115
-					'soustitre',
116
-					'jointure_auteurs',
117
-					'descriptif',
118
-					'nom_site',
119
-					'url_site',
120
-					'chapo',
121
-					'texte',
122
-					'ps'
123
-				],
124
-				'field' => [
125
-					'id_article' => 'bigint(21) NOT NULL',
126
-					'surtitre' => "text DEFAULT '' NOT NULL",
127
-					'titre' => "text DEFAULT '' NOT NULL",
128
-					'soustitre' => "text DEFAULT '' NOT NULL",
129
-					'id_rubrique' => "bigint(21) DEFAULT '0' NOT NULL",
130
-					'descriptif' => "text DEFAULT '' NOT NULL",
131
-					'chapo' => "mediumtext DEFAULT '' NOT NULL",
132
-					'texte' => "longtext DEFAULT '' NOT NULL",
133
-					'ps' => "mediumtext DEFAULT '' NOT NULL",
134
-					'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
135
-					'statut' => "varchar(10) DEFAULT '0' NOT NULL",
136
-					'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
137
-					'maj' => 'TIMESTAMP',
138
-					'export' => "VARCHAR(10) DEFAULT 'oui'",
139
-					'date_redac' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
140
-					'visites' => "integer DEFAULT '0' NOT NULL",
141
-					'referers' => "integer DEFAULT '0' NOT NULL",
142
-					'popularite' => "DOUBLE DEFAULT '0' NOT NULL",
143
-					'accepter_forum' => "CHAR(3) DEFAULT '' NOT NULL",
144
-					'date_modif' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
145
-					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
146
-					'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
147
-					'id_trad' => "bigint(21) DEFAULT '0' NOT NULL",
148
-					'nom_site' => "tinytext DEFAULT '' NOT NULL",
149
-					'url_site' => "text DEFAULT '' NOT NULL",
150
-					'virtuel' => "text DEFAULT '' NOT NULL",
151
-				],
152
-				'key' => [
153
-					'PRIMARY KEY' => 'id_article',
154
-					'KEY id_rubrique' => 'id_rubrique',
155
-					'KEY id_secteur' => 'id_secteur',
156
-					'KEY id_trad' => 'id_trad',
157
-					'KEY lang' => 'lang',
158
-					'KEY statut' => 'statut, date',
159
-				],
160
-				'join' => [
161
-					'id_article' => 'id_article',
162
-					'id_rubrique' => 'id_rubrique'
163
-				],
164
-				'parent' => [
165
-					['type' => 'rubrique', 'champ' => 'id_rubrique']
166
-				],
167
-				'rechercher_champs' => [
168
-					'surtitre' => 5,
169
-					'titre' => 8,
170
-					'soustitre' => 5,
171
-					'chapo' => 3,
172
-					'texte' => 1,
173
-					'ps' => 1,
174
-					'nom_site' => 1,
175
-					'url_site' => 1,
176
-					'descriptif' => 4
177
-				],
178
-				'rechercher_jointures' => [
179
-					'auteur' => ['nom' => 10],
180
-				],
181
-				'statut' => [
182
-					[
183
-						'champ' => 'statut',
184
-						'publie' => 'publie',
185
-						'previsu' => 'publie,prop,prepa/auteur',
186
-						'post_date' => 'date',
187
-						'exception' => ['statut', 'tout']
188
-					]
189
-				],
190
-				'statut_titres' => [
191
-					'prepa' => 'info_article_redaction',
192
-					'prop' => 'info_article_propose',
193
-					'publie' => 'info_article_publie',
194
-					'refuse' => 'info_article_refuse',
195
-					'poubelle' => 'info_article_supprime'
196
-				],
197
-				'statut_textes_instituer' => [
198
-					'prepa' => 'texte_statut_en_cours_redaction',
199
-					'prop' => 'texte_statut_propose_evaluation',
200
-					'publie' => 'texte_statut_publie',
201
-					'refuse' => 'texte_statut_refuse',
202
-					'poubelle' => 'texte_statut_poubelle',
203
-				],
204
-				'texte_changer_statut' => 'texte_article_statut',
205
-				'aide_changer_statut' => 'artstatut',
206
-				'tables_jointures' => [
207
-					'profondeur' => 'rubriques',
208
-					#'id_auteur' => 'auteurs_liens' // declaration generique plus bas
209
-				],
210
-			],
211
-			'spip_auteurs' => [
212
-				'page' => 'auteur',
213
-				'texte_retour' => 'icone_retour',
214
-				'texte_ajouter' => 'titre_ajouter_un_auteur',
215
-				'texte_modifier' => 'admin_modifier_auteur',
216
-				'texte_objets' => 'icone_auteurs',
217
-				'texte_objet' => 'public:auteur',
218
-				'info_aucun_objet' => 'info_aucun_auteur',
219
-				'info_1_objet' => 'info_1_auteur',
220
-				'info_nb_objets' => 'info_nb_auteurs',
221
-				'texte_logo_objet' => 'logo_auteur',
222
-				'texte_creer_associer' => 'creer_et_associer_un_auteur',
223
-				'titre' => "nom AS titre, '' AS lang",
224
-				'date' => 'date',
225
-				'principale' => 'oui',
226
-				'champs_editables' => ['nom', 'email', 'bio', 'nom_site', 'url_site', 'imessage', 'pgp'],
227
-				'champs_versionnes' => ['nom', 'bio', 'email', 'nom_site', 'url_site', 'login'],
228
-				'field' => [
229
-					'id_auteur' => 'bigint(21) NOT NULL',
230
-					'nom' => "text DEFAULT '' NOT NULL",
231
-					'bio' => "text DEFAULT '' NOT NULL",
232
-					'email' => "tinytext DEFAULT '' NOT NULL",
233
-					'nom_site' => "tinytext DEFAULT '' NOT NULL",
234
-					'url_site' => "text DEFAULT '' NOT NULL",
235
-					'login' => 'VARCHAR(255) BINARY',
236
-					'pass' => "tinytext DEFAULT '' NOT NULL",
237
-					'low_sec' => "tinytext DEFAULT '' NOT NULL",
238
-					'statut' => "varchar(255)  DEFAULT '0' NOT NULL",
239
-					'webmestre' => "varchar(3)  DEFAULT 'non' NOT NULL",
240
-					'maj' => 'TIMESTAMP',
241
-					'pgp' => "TEXT DEFAULT '' NOT NULL",
242
-					'htpass' => "tinytext DEFAULT '' NOT NULL",
243
-					'en_ligne' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
244
-					'alea_actuel' => 'tinytext',
245
-					'alea_futur' => 'tinytext',
246
-					'prefs' => 'text',
247
-					'cookie_oubli' => 'tinytext',
248
-					'source' => "VARCHAR(10) DEFAULT 'spip' NOT NULL",
249
-					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
250
-					'imessage' => "VARCHAR(3) DEFAULT '' NOT NULL"
251
-				],
252
-				'key' => [
253
-					'PRIMARY KEY' => 'id_auteur',
254
-					'KEY login' => 'login',
255
-					'KEY statut' => 'statut',
256
-					'KEY en_ligne' => 'en_ligne',
257
-				],
258
-				'join' => [
259
-					'id_auteur' => 'id_auteur',
260
-					'login' => 'login'
261
-				],
262
-				'rechercher_champs' => [
263
-					'nom' => 5,
264
-					'bio' => 1,
265
-					'email' => 1,
266
-					'nom_site' => 1,
267
-					'url_site' => 1,
268
-					'login' => 1
269
-				],
270
-				// 2 conditions pour les auteurs : statut!=poubelle,
271
-				// et avoir des articles publies
272
-				'statut' => [
273
-					[
274
-						'champ' => 'statut',
275
-						'publie' => '!5poubelle',
276
-						'previsu' => '!5poubelle',
277
-						'exception' => 'statut'
278
-					],
279
-					[
280
-						'champ' => [
281
-							['spip_auteurs_liens', 'id_auteur'],
282
-							[
283
-								'spip_articles',
284
-								['id_objet', 'id_article', 'objet', 'article']
285
-							],
286
-							'statut'
287
-						],
288
-						'publie' => 'publie',
289
-						'previsu' => '!',
290
-						'post_date' => 'date',
291
-						'exception' => ['statut', 'lien', 'tout']
292
-					],
293
-				],
294
-				'statut_images' => [
295
-					'auteur-6forum-16.png',
296
-					'0minirezo' => 'auteur-0minirezo-16.png',
297
-					'1comite' => 'auteur-1comite-16.png',
298
-					'6forum' => 'auteur-6forum-16.png',
299
-					'5poubelle' => 'auteur-5poubelle-16.png',
300
-					'nouveau' => ''
301
-				],
302
-				'statut_titres' => [
303
-					'titre_image_visiteur',
304
-					'0minirezo' => 'titre_image_administrateur',
305
-					'1comite' => 'titre_image_redacteur_02',
306
-					'6forum' => 'titre_image_visiteur',
307
-					'5poubelle' => 'titre_image_auteur_supprime',
308
-				],
309
-				'tables_jointures' => [#'auteurs_liens' // declaration generique plus bas
310
-				],
311
-			],
312
-			'spip_rubriques' => [
313
-				'page' => 'rubrique',
314
-				'url_voir' => 'rubrique',
315
-				'url_edit' => 'rubrique_edit',
316
-				'texte_retour' => 'icone_retour',
317
-				'texte_objets' => 'public:rubriques',
318
-				'texte_objet' => 'public:rubrique',
319
-				'texte_modifier' => 'icone_modifier_rubrique',
320
-				'texte_creer' => 'icone_creer_rubrique',
321
-				'texte_ajouter' => 'titre_ajouter_une_rubrique',
322
-				'texte_creer_associer' => 'creer_et_associer_une_rubrique',
323
-				'info_aucun_objet' => 'info_aucun_rubrique',
324
-				'info_1_objet' => 'info_1_rubrique',
325
-				'info_nb_objets' => 'info_nb_rubriques',
326
-				'texte_logo_objet' => 'logo_rubrique',
327
-				'texte_langue_objet' => 'titre_langue_rubrique',
328
-				'texte_definir_comme_traduction_objet' => 'texte_definir_comme_traduction_rubrique',
329
-				'titre' => 'titre, lang',
330
-				'date' => 'date',
331
-				'principale' => 'oui',
332
-				'introduction_longueur' => '600',
333
-				'champs_editables' => ['titre', 'texte', 'descriptif', 'extra'],
334
-				'champs_versionnes' => ['titre', 'descriptif', 'texte'],
335
-				'field' => [
336
-					'id_rubrique' => 'bigint(21) NOT NULL',
337
-					'id_parent' => "bigint(21) DEFAULT '0' NOT NULL",
338
-					'titre' => "text DEFAULT '' NOT NULL",
339
-					'descriptif' => "text DEFAULT '' NOT NULL",
340
-					'texte' => "longtext DEFAULT '' NOT NULL",
341
-					'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
342
-					'maj' => 'TIMESTAMP',
343
-					'statut' => "varchar(10) DEFAULT '0' NOT NULL",
344
-					'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
345
-					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
346
-					'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
347
-					'statut_tmp' => "varchar(10) DEFAULT '0' NOT NULL",
348
-					'date_tmp' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
349
-					'profondeur' => "smallint(5) DEFAULT '0' NOT NULL"
350
-				],
351
-				'key' => [
352
-					'PRIMARY KEY' => 'id_rubrique',
353
-					'KEY lang' => 'lang',
354
-					'KEY id_parent' => 'id_parent',
355
-				],
356
-				'parent' => [
357
-					['type' => 'rubrique', 'champ' => 'id_parent']
358
-				],
359
-				'rechercher_champs' => [
360
-					'titre' => 8,
361
-					'descriptif' => 5,
362
-					'texte' => 1
363
-				],
364
-				'statut' => [
365
-					[
366
-						'champ' => 'statut',
367
-						'publie' => 'publie',
368
-						'previsu' => '!',
369
-						'exception' => ['statut', 'tout']
370
-					],
371
-				],
372
-				'tables_jointures' => [#'id_auteur' => 'auteurs_liens' // declaration generique plus bas
373
-				],
374
-			],
375
-			// toutes les tables ont le droit a une jointure sur les auteurs
376
-			['tables_jointures' => ['id_auteur' => 'auteurs_liens']]
377
-		];
378
-
379
-		// avant d'appeller les pipeline qui peuvent generer une reentrance a l'install
380
-		// initialiser la signature
381
-		$md5 = md5(serialize($infos_tables));
382
-
383
-		$GLOBALS['tables_principales'] = pipeline('declarer_tables_principales', $GLOBALS['tables_principales']);
384
-		$GLOBALS['tables_auxiliaires'] = pipeline('declarer_tables_auxiliaires', $GLOBALS['tables_auxiliaires']);
385
-		$infos_tables = pipeline('declarer_tables_objets_sql', $infos_tables);
386
-
387
-		// completer les informations manquantes ou implicites
388
-		$all = [];
389
-		foreach (array_keys($infos_tables) as $t) {
390
-			// les cles numeriques servent a declarer
391
-			// les proprietes applicables a tous les objets
392
-			// on les mets de cote
393
-			if (is_numeric($t)) {
394
-				$all = array_merge_recursive($all, $infos_tables[$t]);
395
-				unset($infos_tables[$t]);
396
-			} else {
397
-				$infos_tables[$t] = renseigner_table_objet_sql($t, $infos_tables[$t]);
398
-			}
399
-		}
400
-
401
-		// repercuter les proprietes generales communes a tous les objets
402
-		foreach (array_keys($infos_tables) as $t) {
403
-			foreach ($all as $i => $v) {
404
-				if (in_array($i, ['tables_jointures', 'champs_versionnes'])) {
405
-					$add = $all[$i];
406
-					// eviter les doublons de declaration de table jointure (ex des mots sur auteurs)
407
-					// pour les declarations generiques avec cles numeriques
408
-					if ($i == 'tables_jointures' and isset($infos_tables[$t][$i]) and count($infos_tables[$t][$i])) {
409
-						$doublons = array_intersect($infos_tables[$t][$i], $add);
410
-						foreach ($doublons as $d) {
411
-							if (
412
-								is_numeric(array_search($d, $infos_tables[$t][$i]))
413
-								and is_numeric($k = array_search($d, $add))
414
-							) {
415
-								unset($add[$k]);
416
-							}
417
-						}
418
-					}
419
-					$infos_tables[$t][$i] = array_merge(isset($infos_tables[$t][$i]) ? $infos_tables[$t][$i] : [], $add);
420
-				} else {
421
-					$infos_tables[$t][$i] = array_merge_recursive(
422
-						isset($infos_tables[$t][$i]) ? $infos_tables[$t][$i] : [],
423
-						$all[$i]
424
-					);
425
-				}
426
-			}
427
-		}
428
-
429
-		// completer les tables principales et auxiliaires
430
-		// avec celles declarees uniquement dans declarer_table_objets_sql
431
-		// pour assurer la compat en transition
432
-		foreach ($infos_tables as $table => $infos) {
433
-			$principale_ou_auxiliaire = ($infos['principale'] ? 'tables_principales' : 'tables_auxiliaires');
434
-			// memoriser des champs eventuels declares par des plugins dans le pipeline tables_xxx
435
-			// qui a ete appelle avant
436
-			$mem = (isset($GLOBALS[$principale_ou_auxiliaire][$table]) ? $GLOBALS[$principale_ou_auxiliaire][$table] : []);
437
-			// l'ajouter au tableau
438
-			$GLOBALS[$principale_ou_auxiliaire][$table] = [];
439
-			if (isset($infos['field']) and isset($infos['key'])) {
440
-				foreach (['field', 'key', 'join'] as $k) {
441
-					if (isset($infos_tables[$table][$k])) {
442
-						$GLOBALS[$principale_ou_auxiliaire][$table][$k] = &$infos_tables[$table][$k];
443
-					}
444
-				}
445
-			} else {
446
-				// ici on ne renvoie que les declarations, donc RIEN
447
-				// pour avoir la vrai description en base, il faut passer par trouver_table
448
-				$GLOBALS[$principale_ou_auxiliaire][$table] = [];
449
-			}
450
-			if (count($mem)) {
451
-				foreach (array_keys($mem) as $k) {
452
-					if (isset($GLOBALS[$principale_ou_auxiliaire][$table][$k])) {
453
-						$GLOBALS[$principale_ou_auxiliaire][$table][$k] = array_merge(
454
-							$GLOBALS[$principale_ou_auxiliaire][$table][$k],
455
-							$mem[$k]
456
-						);
457
-					} else {
458
-						$GLOBALS[$principale_ou_auxiliaire][$table][$k] = $mem[$k];
459
-					}
460
-				}
461
-			}
462
-		}
463
-
464
-		// recuperer les interfaces (table_titre, table_date)
465
-		// on ne le fait que dans un second temps pour que table_objet soit fonctionnel
466
-		// dans le pipeline de declarer_tables_interfaces
467
-		include_spip('public/interfaces');
468
-		foreach (array_keys($infos_tables) as $t) {
469
-			$infos_tables[$t] = renseigner_table_objet_interfaces($t, $infos_tables[$t]);
470
-		}
471
-
472
-		$deja_la = false;
473
-		// signature
474
-		$md5 = md5(serialize($infos_tables));
475
-	}
476
-	if ($table_sql === '::md5') {
477
-		return $md5;
478
-	}
479
-	if ($table_sql and !isset($infos_tables[$table_sql])) {
480
-		#$desc = renseigner_table_objet_sql($table_sql,$desc);
481
-		$desc = renseigner_table_objet_interfaces($table_sql, $desc);
482
-
483
-		return $desc;
484
-	}
485
-	if ($table_sql) {
486
-		return isset($infos_tables[$table_sql]) ? $infos_tables[$table_sql] : [];
487
-	}
488
-
489
-	return $infos_tables;
56
+    static $deja_la = false;
57
+    static $infos_tables = null;
58
+    static $md5 = null;
59
+    static $plugin_hash = null;
60
+
61
+    // plugins hash connu ? non si _CACHE_PLUGINS_OPT est pas encore chargé.
62
+    $_PLUGINS_HASH = defined('_PLUGINS_HASH') ? _PLUGINS_HASH : '!_CACHE_PLUGINS_OPT';
63
+
64
+    // prealablement recuperer les tables_principales
65
+    if (is_null($infos_tables) or $plugin_hash !== $_PLUGINS_HASH) {
66
+        // pas de reentrance (cas base/serial)
67
+        if ($deja_la) {
68
+            spip_log('Re-entrance anormale sur lister_tables_objets_sql : '
69
+                . var_export(debug_backtrace(), true), _LOG_CRITIQUE);
70
+
71
+            return ($table_sql === '::md5' ? $md5 : []);
72
+        }
73
+        $deja_la = true;
74
+        $plugin_hash = $_PLUGINS_HASH; // avant de lancer les pipelines
75
+
76
+        // recuperer les declarations explicites ancienne mode
77
+        // qui servent a completer declarer_tables_objets_sql
78
+        base_serial($GLOBALS['tables_principales']);
79
+        base_auxiliaires($GLOBALS['tables_auxiliaires']);
80
+        $infos_tables = [
81
+            'spip_articles' => [
82
+                'page' => 'article',
83
+                'texte_retour' => 'icone_retour_article',
84
+                'texte_modifier' => 'icone_modifier_article',
85
+                'texte_creer' => 'icone_ecrire_article',
86
+                'texte_objets' => 'public:articles',
87
+                'texte_objet' => 'public:article',
88
+                'texte_signale_edition' => 'texte_travail_article',
89
+                'info_aucun_objet' => 'info_aucun_article',
90
+                'info_1_objet' => 'info_1_article',
91
+                'info_nb_objets' => 'info_nb_articles',
92
+                'texte_logo_objet' => 'logo_article',
93
+                'texte_langue_objet' => 'titre_langue_article',
94
+                'texte_definir_comme_traduction_objet' => 'trad_lier',
95
+                'titre' => 'titre, lang',
96
+                'date' => 'date',
97
+                'principale' => 'oui',
98
+                'introduction_longueur' => '500',
99
+                'champs_editables' => [
100
+                    'surtitre',
101
+                    'titre',
102
+                    'soustitre',
103
+                    'descriptif',
104
+                    'nom_site',
105
+                    'url_site',
106
+                    'chapo',
107
+                    'texte',
108
+                    'ps',
109
+                    'virtuel'
110
+                ],
111
+                'champs_versionnes' => [
112
+                    'id_rubrique',
113
+                    'surtitre',
114
+                    'titre',
115
+                    'soustitre',
116
+                    'jointure_auteurs',
117
+                    'descriptif',
118
+                    'nom_site',
119
+                    'url_site',
120
+                    'chapo',
121
+                    'texte',
122
+                    'ps'
123
+                ],
124
+                'field' => [
125
+                    'id_article' => 'bigint(21) NOT NULL',
126
+                    'surtitre' => "text DEFAULT '' NOT NULL",
127
+                    'titre' => "text DEFAULT '' NOT NULL",
128
+                    'soustitre' => "text DEFAULT '' NOT NULL",
129
+                    'id_rubrique' => "bigint(21) DEFAULT '0' NOT NULL",
130
+                    'descriptif' => "text DEFAULT '' NOT NULL",
131
+                    'chapo' => "mediumtext DEFAULT '' NOT NULL",
132
+                    'texte' => "longtext DEFAULT '' NOT NULL",
133
+                    'ps' => "mediumtext DEFAULT '' NOT NULL",
134
+                    'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
135
+                    'statut' => "varchar(10) DEFAULT '0' NOT NULL",
136
+                    'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
137
+                    'maj' => 'TIMESTAMP',
138
+                    'export' => "VARCHAR(10) DEFAULT 'oui'",
139
+                    'date_redac' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
140
+                    'visites' => "integer DEFAULT '0' NOT NULL",
141
+                    'referers' => "integer DEFAULT '0' NOT NULL",
142
+                    'popularite' => "DOUBLE DEFAULT '0' NOT NULL",
143
+                    'accepter_forum' => "CHAR(3) DEFAULT '' NOT NULL",
144
+                    'date_modif' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
145
+                    'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
146
+                    'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
147
+                    'id_trad' => "bigint(21) DEFAULT '0' NOT NULL",
148
+                    'nom_site' => "tinytext DEFAULT '' NOT NULL",
149
+                    'url_site' => "text DEFAULT '' NOT NULL",
150
+                    'virtuel' => "text DEFAULT '' NOT NULL",
151
+                ],
152
+                'key' => [
153
+                    'PRIMARY KEY' => 'id_article',
154
+                    'KEY id_rubrique' => 'id_rubrique',
155
+                    'KEY id_secteur' => 'id_secteur',
156
+                    'KEY id_trad' => 'id_trad',
157
+                    'KEY lang' => 'lang',
158
+                    'KEY statut' => 'statut, date',
159
+                ],
160
+                'join' => [
161
+                    'id_article' => 'id_article',
162
+                    'id_rubrique' => 'id_rubrique'
163
+                ],
164
+                'parent' => [
165
+                    ['type' => 'rubrique', 'champ' => 'id_rubrique']
166
+                ],
167
+                'rechercher_champs' => [
168
+                    'surtitre' => 5,
169
+                    'titre' => 8,
170
+                    'soustitre' => 5,
171
+                    'chapo' => 3,
172
+                    'texte' => 1,
173
+                    'ps' => 1,
174
+                    'nom_site' => 1,
175
+                    'url_site' => 1,
176
+                    'descriptif' => 4
177
+                ],
178
+                'rechercher_jointures' => [
179
+                    'auteur' => ['nom' => 10],
180
+                ],
181
+                'statut' => [
182
+                    [
183
+                        'champ' => 'statut',
184
+                        'publie' => 'publie',
185
+                        'previsu' => 'publie,prop,prepa/auteur',
186
+                        'post_date' => 'date',
187
+                        'exception' => ['statut', 'tout']
188
+                    ]
189
+                ],
190
+                'statut_titres' => [
191
+                    'prepa' => 'info_article_redaction',
192
+                    'prop' => 'info_article_propose',
193
+                    'publie' => 'info_article_publie',
194
+                    'refuse' => 'info_article_refuse',
195
+                    'poubelle' => 'info_article_supprime'
196
+                ],
197
+                'statut_textes_instituer' => [
198
+                    'prepa' => 'texte_statut_en_cours_redaction',
199
+                    'prop' => 'texte_statut_propose_evaluation',
200
+                    'publie' => 'texte_statut_publie',
201
+                    'refuse' => 'texte_statut_refuse',
202
+                    'poubelle' => 'texte_statut_poubelle',
203
+                ],
204
+                'texte_changer_statut' => 'texte_article_statut',
205
+                'aide_changer_statut' => 'artstatut',
206
+                'tables_jointures' => [
207
+                    'profondeur' => 'rubriques',
208
+                    #'id_auteur' => 'auteurs_liens' // declaration generique plus bas
209
+                ],
210
+            ],
211
+            'spip_auteurs' => [
212
+                'page' => 'auteur',
213
+                'texte_retour' => 'icone_retour',
214
+                'texte_ajouter' => 'titre_ajouter_un_auteur',
215
+                'texte_modifier' => 'admin_modifier_auteur',
216
+                'texte_objets' => 'icone_auteurs',
217
+                'texte_objet' => 'public:auteur',
218
+                'info_aucun_objet' => 'info_aucun_auteur',
219
+                'info_1_objet' => 'info_1_auteur',
220
+                'info_nb_objets' => 'info_nb_auteurs',
221
+                'texte_logo_objet' => 'logo_auteur',
222
+                'texte_creer_associer' => 'creer_et_associer_un_auteur',
223
+                'titre' => "nom AS titre, '' AS lang",
224
+                'date' => 'date',
225
+                'principale' => 'oui',
226
+                'champs_editables' => ['nom', 'email', 'bio', 'nom_site', 'url_site', 'imessage', 'pgp'],
227
+                'champs_versionnes' => ['nom', 'bio', 'email', 'nom_site', 'url_site', 'login'],
228
+                'field' => [
229
+                    'id_auteur' => 'bigint(21) NOT NULL',
230
+                    'nom' => "text DEFAULT '' NOT NULL",
231
+                    'bio' => "text DEFAULT '' NOT NULL",
232
+                    'email' => "tinytext DEFAULT '' NOT NULL",
233
+                    'nom_site' => "tinytext DEFAULT '' NOT NULL",
234
+                    'url_site' => "text DEFAULT '' NOT NULL",
235
+                    'login' => 'VARCHAR(255) BINARY',
236
+                    'pass' => "tinytext DEFAULT '' NOT NULL",
237
+                    'low_sec' => "tinytext DEFAULT '' NOT NULL",
238
+                    'statut' => "varchar(255)  DEFAULT '0' NOT NULL",
239
+                    'webmestre' => "varchar(3)  DEFAULT 'non' NOT NULL",
240
+                    'maj' => 'TIMESTAMP',
241
+                    'pgp' => "TEXT DEFAULT '' NOT NULL",
242
+                    'htpass' => "tinytext DEFAULT '' NOT NULL",
243
+                    'en_ligne' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
244
+                    'alea_actuel' => 'tinytext',
245
+                    'alea_futur' => 'tinytext',
246
+                    'prefs' => 'text',
247
+                    'cookie_oubli' => 'tinytext',
248
+                    'source' => "VARCHAR(10) DEFAULT 'spip' NOT NULL",
249
+                    'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
250
+                    'imessage' => "VARCHAR(3) DEFAULT '' NOT NULL"
251
+                ],
252
+                'key' => [
253
+                    'PRIMARY KEY' => 'id_auteur',
254
+                    'KEY login' => 'login',
255
+                    'KEY statut' => 'statut',
256
+                    'KEY en_ligne' => 'en_ligne',
257
+                ],
258
+                'join' => [
259
+                    'id_auteur' => 'id_auteur',
260
+                    'login' => 'login'
261
+                ],
262
+                'rechercher_champs' => [
263
+                    'nom' => 5,
264
+                    'bio' => 1,
265
+                    'email' => 1,
266
+                    'nom_site' => 1,
267
+                    'url_site' => 1,
268
+                    'login' => 1
269
+                ],
270
+                // 2 conditions pour les auteurs : statut!=poubelle,
271
+                // et avoir des articles publies
272
+                'statut' => [
273
+                    [
274
+                        'champ' => 'statut',
275
+                        'publie' => '!5poubelle',
276
+                        'previsu' => '!5poubelle',
277
+                        'exception' => 'statut'
278
+                    ],
279
+                    [
280
+                        'champ' => [
281
+                            ['spip_auteurs_liens', 'id_auteur'],
282
+                            [
283
+                                'spip_articles',
284
+                                ['id_objet', 'id_article', 'objet', 'article']
285
+                            ],
286
+                            'statut'
287
+                        ],
288
+                        'publie' => 'publie',
289
+                        'previsu' => '!',
290
+                        'post_date' => 'date',
291
+                        'exception' => ['statut', 'lien', 'tout']
292
+                    ],
293
+                ],
294
+                'statut_images' => [
295
+                    'auteur-6forum-16.png',
296
+                    '0minirezo' => 'auteur-0minirezo-16.png',
297
+                    '1comite' => 'auteur-1comite-16.png',
298
+                    '6forum' => 'auteur-6forum-16.png',
299
+                    '5poubelle' => 'auteur-5poubelle-16.png',
300
+                    'nouveau' => ''
301
+                ],
302
+                'statut_titres' => [
303
+                    'titre_image_visiteur',
304
+                    '0minirezo' => 'titre_image_administrateur',
305
+                    '1comite' => 'titre_image_redacteur_02',
306
+                    '6forum' => 'titre_image_visiteur',
307
+                    '5poubelle' => 'titre_image_auteur_supprime',
308
+                ],
309
+                'tables_jointures' => [#'auteurs_liens' // declaration generique plus bas
310
+                ],
311
+            ],
312
+            'spip_rubriques' => [
313
+                'page' => 'rubrique',
314
+                'url_voir' => 'rubrique',
315
+                'url_edit' => 'rubrique_edit',
316
+                'texte_retour' => 'icone_retour',
317
+                'texte_objets' => 'public:rubriques',
318
+                'texte_objet' => 'public:rubrique',
319
+                'texte_modifier' => 'icone_modifier_rubrique',
320
+                'texte_creer' => 'icone_creer_rubrique',
321
+                'texte_ajouter' => 'titre_ajouter_une_rubrique',
322
+                'texte_creer_associer' => 'creer_et_associer_une_rubrique',
323
+                'info_aucun_objet' => 'info_aucun_rubrique',
324
+                'info_1_objet' => 'info_1_rubrique',
325
+                'info_nb_objets' => 'info_nb_rubriques',
326
+                'texte_logo_objet' => 'logo_rubrique',
327
+                'texte_langue_objet' => 'titre_langue_rubrique',
328
+                'texte_definir_comme_traduction_objet' => 'texte_definir_comme_traduction_rubrique',
329
+                'titre' => 'titre, lang',
330
+                'date' => 'date',
331
+                'principale' => 'oui',
332
+                'introduction_longueur' => '600',
333
+                'champs_editables' => ['titre', 'texte', 'descriptif', 'extra'],
334
+                'champs_versionnes' => ['titre', 'descriptif', 'texte'],
335
+                'field' => [
336
+                    'id_rubrique' => 'bigint(21) NOT NULL',
337
+                    'id_parent' => "bigint(21) DEFAULT '0' NOT NULL",
338
+                    'titre' => "text DEFAULT '' NOT NULL",
339
+                    'descriptif' => "text DEFAULT '' NOT NULL",
340
+                    'texte' => "longtext DEFAULT '' NOT NULL",
341
+                    'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
342
+                    'maj' => 'TIMESTAMP',
343
+                    'statut' => "varchar(10) DEFAULT '0' NOT NULL",
344
+                    'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
345
+                    'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
346
+                    'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
347
+                    'statut_tmp' => "varchar(10) DEFAULT '0' NOT NULL",
348
+                    'date_tmp' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
349
+                    'profondeur' => "smallint(5) DEFAULT '0' NOT NULL"
350
+                ],
351
+                'key' => [
352
+                    'PRIMARY KEY' => 'id_rubrique',
353
+                    'KEY lang' => 'lang',
354
+                    'KEY id_parent' => 'id_parent',
355
+                ],
356
+                'parent' => [
357
+                    ['type' => 'rubrique', 'champ' => 'id_parent']
358
+                ],
359
+                'rechercher_champs' => [
360
+                    'titre' => 8,
361
+                    'descriptif' => 5,
362
+                    'texte' => 1
363
+                ],
364
+                'statut' => [
365
+                    [
366
+                        'champ' => 'statut',
367
+                        'publie' => 'publie',
368
+                        'previsu' => '!',
369
+                        'exception' => ['statut', 'tout']
370
+                    ],
371
+                ],
372
+                'tables_jointures' => [#'id_auteur' => 'auteurs_liens' // declaration generique plus bas
373
+                ],
374
+            ],
375
+            // toutes les tables ont le droit a une jointure sur les auteurs
376
+            ['tables_jointures' => ['id_auteur' => 'auteurs_liens']]
377
+        ];
378
+
379
+        // avant d'appeller les pipeline qui peuvent generer une reentrance a l'install
380
+        // initialiser la signature
381
+        $md5 = md5(serialize($infos_tables));
382
+
383
+        $GLOBALS['tables_principales'] = pipeline('declarer_tables_principales', $GLOBALS['tables_principales']);
384
+        $GLOBALS['tables_auxiliaires'] = pipeline('declarer_tables_auxiliaires', $GLOBALS['tables_auxiliaires']);
385
+        $infos_tables = pipeline('declarer_tables_objets_sql', $infos_tables);
386
+
387
+        // completer les informations manquantes ou implicites
388
+        $all = [];
389
+        foreach (array_keys($infos_tables) as $t) {
390
+            // les cles numeriques servent a declarer
391
+            // les proprietes applicables a tous les objets
392
+            // on les mets de cote
393
+            if (is_numeric($t)) {
394
+                $all = array_merge_recursive($all, $infos_tables[$t]);
395
+                unset($infos_tables[$t]);
396
+            } else {
397
+                $infos_tables[$t] = renseigner_table_objet_sql($t, $infos_tables[$t]);
398
+            }
399
+        }
400
+
401
+        // repercuter les proprietes generales communes a tous les objets
402
+        foreach (array_keys($infos_tables) as $t) {
403
+            foreach ($all as $i => $v) {
404
+                if (in_array($i, ['tables_jointures', 'champs_versionnes'])) {
405
+                    $add = $all[$i];
406
+                    // eviter les doublons de declaration de table jointure (ex des mots sur auteurs)
407
+                    // pour les declarations generiques avec cles numeriques
408
+                    if ($i == 'tables_jointures' and isset($infos_tables[$t][$i]) and count($infos_tables[$t][$i])) {
409
+                        $doublons = array_intersect($infos_tables[$t][$i], $add);
410
+                        foreach ($doublons as $d) {
411
+                            if (
412
+                                is_numeric(array_search($d, $infos_tables[$t][$i]))
413
+                                and is_numeric($k = array_search($d, $add))
414
+                            ) {
415
+                                unset($add[$k]);
416
+                            }
417
+                        }
418
+                    }
419
+                    $infos_tables[$t][$i] = array_merge(isset($infos_tables[$t][$i]) ? $infos_tables[$t][$i] : [], $add);
420
+                } else {
421
+                    $infos_tables[$t][$i] = array_merge_recursive(
422
+                        isset($infos_tables[$t][$i]) ? $infos_tables[$t][$i] : [],
423
+                        $all[$i]
424
+                    );
425
+                }
426
+            }
427
+        }
428
+
429
+        // completer les tables principales et auxiliaires
430
+        // avec celles declarees uniquement dans declarer_table_objets_sql
431
+        // pour assurer la compat en transition
432
+        foreach ($infos_tables as $table => $infos) {
433
+            $principale_ou_auxiliaire = ($infos['principale'] ? 'tables_principales' : 'tables_auxiliaires');
434
+            // memoriser des champs eventuels declares par des plugins dans le pipeline tables_xxx
435
+            // qui a ete appelle avant
436
+            $mem = (isset($GLOBALS[$principale_ou_auxiliaire][$table]) ? $GLOBALS[$principale_ou_auxiliaire][$table] : []);
437
+            // l'ajouter au tableau
438
+            $GLOBALS[$principale_ou_auxiliaire][$table] = [];
439
+            if (isset($infos['field']) and isset($infos['key'])) {
440
+                foreach (['field', 'key', 'join'] as $k) {
441
+                    if (isset($infos_tables[$table][$k])) {
442
+                        $GLOBALS[$principale_ou_auxiliaire][$table][$k] = &$infos_tables[$table][$k];
443
+                    }
444
+                }
445
+            } else {
446
+                // ici on ne renvoie que les declarations, donc RIEN
447
+                // pour avoir la vrai description en base, il faut passer par trouver_table
448
+                $GLOBALS[$principale_ou_auxiliaire][$table] = [];
449
+            }
450
+            if (count($mem)) {
451
+                foreach (array_keys($mem) as $k) {
452
+                    if (isset($GLOBALS[$principale_ou_auxiliaire][$table][$k])) {
453
+                        $GLOBALS[$principale_ou_auxiliaire][$table][$k] = array_merge(
454
+                            $GLOBALS[$principale_ou_auxiliaire][$table][$k],
455
+                            $mem[$k]
456
+                        );
457
+                    } else {
458
+                        $GLOBALS[$principale_ou_auxiliaire][$table][$k] = $mem[$k];
459
+                    }
460
+                }
461
+            }
462
+        }
463
+
464
+        // recuperer les interfaces (table_titre, table_date)
465
+        // on ne le fait que dans un second temps pour que table_objet soit fonctionnel
466
+        // dans le pipeline de declarer_tables_interfaces
467
+        include_spip('public/interfaces');
468
+        foreach (array_keys($infos_tables) as $t) {
469
+            $infos_tables[$t] = renseigner_table_objet_interfaces($t, $infos_tables[$t]);
470
+        }
471
+
472
+        $deja_la = false;
473
+        // signature
474
+        $md5 = md5(serialize($infos_tables));
475
+    }
476
+    if ($table_sql === '::md5') {
477
+        return $md5;
478
+    }
479
+    if ($table_sql and !isset($infos_tables[$table_sql])) {
480
+        #$desc = renseigner_table_objet_sql($table_sql,$desc);
481
+        $desc = renseigner_table_objet_interfaces($table_sql, $desc);
482
+
483
+        return $desc;
484
+    }
485
+    if ($table_sql) {
486
+        return isset($infos_tables[$table_sql]) ? $infos_tables[$table_sql] : [];
487
+    }
488
+
489
+    return $infos_tables;
490 490
 }
491 491
 
492 492
 
@@ -501,27 +501,27 @@  discard block
 block discarded – undo
501 501
  **/
502 502
 function base_serial(&$tables_principales) {
503 503
 
504
-	$spip_jobs = [
505
-		'id_job' => 'bigint(21) NOT NULL',
506
-		'descriptif' => "text DEFAULT '' NOT NULL",
507
-		'fonction' => 'varchar(255) NOT NULL', //nom de la fonction
508
-		'args' => "longblob DEFAULT '' NOT NULL", // arguments
509
-		'md5args' => "char(32) NOT NULL default ''", // signature des arguments
510
-		'inclure' => 'varchar(255) NOT NULL', // fichier a inclure ou path/ pour charger_fonction
511
-		'priorite' => 'smallint(6) NOT NULL default 0',
512
-		'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // date au plus tot
513
-		'status' => 'tinyint NOT NULL default 1',
514
-	];
515
-
516
-	$spip_jobs_key = [
517
-		'PRIMARY KEY' => 'id_job',
518
-		'KEY date' => 'date',
519
-		'KEY status' => 'status',
520
-	];
521
-
522
-	/// Attention: mes_fonctions peut avoir deja defini cette variable
523
-	/// il faut donc rajouter, mais pas reinitialiser
524
-	$tables_principales['spip_jobs'] = ['field' => &$spip_jobs, 'key' => &$spip_jobs_key];
504
+    $spip_jobs = [
505
+        'id_job' => 'bigint(21) NOT NULL',
506
+        'descriptif' => "text DEFAULT '' NOT NULL",
507
+        'fonction' => 'varchar(255) NOT NULL', //nom de la fonction
508
+        'args' => "longblob DEFAULT '' NOT NULL", // arguments
509
+        'md5args' => "char(32) NOT NULL default ''", // signature des arguments
510
+        'inclure' => 'varchar(255) NOT NULL', // fichier a inclure ou path/ pour charger_fonction
511
+        'priorite' => 'smallint(6) NOT NULL default 0',
512
+        'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // date au plus tot
513
+        'status' => 'tinyint NOT NULL default 1',
514
+    ];
515
+
516
+    $spip_jobs_key = [
517
+        'PRIMARY KEY' => 'id_job',
518
+        'KEY date' => 'date',
519
+        'KEY status' => 'status',
520
+    ];
521
+
522
+    /// Attention: mes_fonctions peut avoir deja defini cette variable
523
+    /// il faut donc rajouter, mais pas reinitialiser
524
+    $tables_principales['spip_jobs'] = ['field' => &$spip_jobs, 'key' => &$spip_jobs_key];
525 525
 }
526 526
 
527 527
 
@@ -533,71 +533,71 @@  discard block
 block discarded – undo
533 533
  * @return void
534 534
  **/
535 535
 function base_auxiliaires(&$tables_auxiliaires) {
536
-	$spip_resultats = [
537
-		'recherche' => "char(16) DEFAULT '' NOT NULL",
538
-		'id' => 'INT UNSIGNED NOT NULL',
539
-		'points' => "INT UNSIGNED DEFAULT '0' NOT NULL",
540
-		'table_objet' => "varchar(30) DEFAULT '' NOT NULL",
541
-		'serveur' => "char(16) DEFAULT '' NOT NULL", // hash md5 partiel du serveur de base ('' pour le serveur principal)
542
-		'maj' => 'TIMESTAMP'
543
-	];
544
-
545
-	$spip_resultats_key = [// pas de cle ni index, ca fait des insertions plus rapides et les requetes jointes utilisees en recheche ne sont pas plus lentes ...
546
-	];
547
-
548
-	$spip_auteurs_liens = [
549
-		'id_auteur' => "bigint(21) DEFAULT '0' NOT NULL",
550
-		'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
551
-		'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
552
-		'vu' => "VARCHAR(6) DEFAULT 'non' NOT NULL"
553
-	];
554
-
555
-	$spip_auteurs_liens_key = [
556
-		'PRIMARY KEY' => 'id_auteur,id_objet,objet',
557
-		'KEY id_auteur' => 'id_auteur',
558
-		'KEY id_objet' => 'id_objet',
559
-		'KEY objet' => 'objet',
560
-	];
561
-
562
-	$spip_meta = [
563
-		'nom' => 'VARCHAR (255) NOT NULL',
564
-		'valeur' => "text DEFAULT ''",
565
-		'impt' => "ENUM('non', 'oui') DEFAULT 'oui' NOT NULL",
566
-		'maj' => 'TIMESTAMP'
567
-	];
568
-
569
-	$spip_meta_key = [
570
-		'PRIMARY KEY' => 'nom'
571
-	];
572
-
573
-	$spip_jobs_liens = [
574
-		'id_job' => "bigint(21) DEFAULT '0' NOT NULL",
575
-		'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
576
-		'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
577
-	];
578
-
579
-	$spip_jobs_liens_key = [
580
-		'PRIMARY KEY' => 'id_job,id_objet,objet',
581
-		'KEY id_job' => 'id_job'
582
-	];
583
-
584
-	$tables_auxiliaires['spip_auteurs_liens'] = [
585
-		'field' => &$spip_auteurs_liens,
586
-		'key' => &$spip_auteurs_liens_key
587
-	];
588
-
589
-	$tables_auxiliaires['spip_meta'] = [
590
-		'field' => &$spip_meta,
591
-		'key' => &$spip_meta_key
592
-	];
593
-	$tables_auxiliaires['spip_resultats'] = [
594
-		'field' => &$spip_resultats,
595
-		'key' => &$spip_resultats_key
596
-	];
597
-	$tables_auxiliaires['spip_jobs_liens'] = [
598
-		'field' => &$spip_jobs_liens,
599
-		'key' => &$spip_jobs_liens_key
600
-	];
536
+    $spip_resultats = [
537
+        'recherche' => "char(16) DEFAULT '' NOT NULL",
538
+        'id' => 'INT UNSIGNED NOT NULL',
539
+        'points' => "INT UNSIGNED DEFAULT '0' NOT NULL",
540
+        'table_objet' => "varchar(30) DEFAULT '' NOT NULL",
541
+        'serveur' => "char(16) DEFAULT '' NOT NULL", // hash md5 partiel du serveur de base ('' pour le serveur principal)
542
+        'maj' => 'TIMESTAMP'
543
+    ];
544
+
545
+    $spip_resultats_key = [// pas de cle ni index, ca fait des insertions plus rapides et les requetes jointes utilisees en recheche ne sont pas plus lentes ...
546
+    ];
547
+
548
+    $spip_auteurs_liens = [
549
+        'id_auteur' => "bigint(21) DEFAULT '0' NOT NULL",
550
+        'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
551
+        'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
552
+        'vu' => "VARCHAR(6) DEFAULT 'non' NOT NULL"
553
+    ];
554
+
555
+    $spip_auteurs_liens_key = [
556
+        'PRIMARY KEY' => 'id_auteur,id_objet,objet',
557
+        'KEY id_auteur' => 'id_auteur',
558
+        'KEY id_objet' => 'id_objet',
559
+        'KEY objet' => 'objet',
560
+    ];
561
+
562
+    $spip_meta = [
563
+        'nom' => 'VARCHAR (255) NOT NULL',
564
+        'valeur' => "text DEFAULT ''",
565
+        'impt' => "ENUM('non', 'oui') DEFAULT 'oui' NOT NULL",
566
+        'maj' => 'TIMESTAMP'
567
+    ];
568
+
569
+    $spip_meta_key = [
570
+        'PRIMARY KEY' => 'nom'
571
+    ];
572
+
573
+    $spip_jobs_liens = [
574
+        'id_job' => "bigint(21) DEFAULT '0' NOT NULL",
575
+        'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
576
+        'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
577
+    ];
578
+
579
+    $spip_jobs_liens_key = [
580
+        'PRIMARY KEY' => 'id_job,id_objet,objet',
581
+        'KEY id_job' => 'id_job'
582
+    ];
583
+
584
+    $tables_auxiliaires['spip_auteurs_liens'] = [
585
+        'field' => &$spip_auteurs_liens,
586
+        'key' => &$spip_auteurs_liens_key
587
+    ];
588
+
589
+    $tables_auxiliaires['spip_meta'] = [
590
+        'field' => &$spip_meta,
591
+        'key' => &$spip_meta_key
592
+    ];
593
+    $tables_auxiliaires['spip_resultats'] = [
594
+        'field' => &$spip_resultats,
595
+        'key' => &$spip_resultats_key
596
+    ];
597
+    $tables_auxiliaires['spip_jobs_liens'] = [
598
+        'field' => &$spip_jobs_liens,
599
+        'key' => &$spip_jobs_liens_key
600
+    ];
601 601
 }
602 602
 
603 603
 
@@ -654,129 +654,129 @@  discard block
 block discarded – undo
654 654
  * @return array
655 655
  */
656 656
 function renseigner_table_objet_sql($table_sql, &$infos) {
657
-	if (!isset($infos['type'])) {
658
-		// si on arrive de base/trouver_table, on a la cle primaire :
659
-		// s'en servir pour extrapoler le type
660
-		if (isset($infos['key']['PRIMARY KEY'])) {
661
-			$primary = $infos['key']['PRIMARY KEY'];
662
-			$primary = explode(',', $primary);
663
-			$primary = reset($primary);
664
-			$infos['type'] = preg_replace(',^spip_|^id_|s$,', '', $primary);
665
-		} else {
666
-			$infos['type'] = preg_replace(',^spip_|s$,', '', $table_sql);
667
-		}
668
-	}
669
-	if (!isset($infos['type_surnoms'])) {
670
-		$infos['type_surnoms'] = [];
671
-	}
672
-
673
-	if (!isset($infos['table_objet'])) {
674
-		$infos['table_objet'] = preg_replace(',^spip_,', '', $table_sql);
675
-	}
676
-	if (!isset($infos['table_objet_surnoms'])) {
677
-		$infos['table_objet_surnoms'] = [];
678
-	}
679
-
680
-	if (!isset($infos['principale'])) {
681
-		$infos['principale'] = (isset($GLOBALS['tables_principales'][$table_sql]) ? 'oui' : false);
682
-	}
683
-
684
-	// normaliser pour pouvoir tester en php $infos['principale']?
685
-	// et dans une boucle {principale=oui}
686
-	$infos['principale'] = (($infos['principale'] and $infos['principale'] != 'non') ? 'oui' : false);
687
-
688
-	// declarer et normaliser pour pouvoir tester en php $infos['editable']?
689
-	// et dans une boucle {editable=oui}
690
-	if (!isset($infos['editable'])) {
691
-		$infos['editable'] = 'oui';
692
-	}
693
-
694
-	$infos['editable'] = (($infos['editable'] and $infos['editable'] != 'non') ? 'oui' : false);
695
-
696
-	// les urls publiques sont par defaut page=type pour les tables principales, et rien pour les autres
697
-	// seules les exceptions sont donc a declarer
698
-	if (!isset($infos['page'])) {
699
-		$infos['page'] = ($infos['principale'] ? $infos['type'] : '');
700
-	}
701
-
702
-	if (!isset($infos['url_voir'])) {
703
-		$infos['url_voir'] = $infos['type'];
704
-	}
705
-	if (!isset($infos['url_edit'])) {
706
-		$infos['url_edit'] = $infos['url_voir'] . ($infos['editable'] ? '_edit' : '');
707
-	}
708
-	if (!isset($infos['icone_objet'])) {
709
-		$infos['icone_objet'] = $infos['type'];
710
-	}
711
-
712
-	// chaines de langue
713
-	// par defaut : objet:icone_xxx_objet
714
-	if (!isset($infos['texte_retour'])) {
715
-		$infos['texte_retour'] = 'icone_retour';
716
-	}
717
-	if (!isset($infos['texte_modifier'])) {
718
-		$infos['texte_modifier'] = $infos['type'] . ':' . 'icone_modifier_' . $infos['type'];
719
-	}
720
-	if (!isset($infos['texte_creer'])) {
721
-		$infos['texte_creer'] = $infos['type'] . ':' . 'icone_creer_' . $infos['type'];
722
-	}
723
-	if (!isset($infos['texte_creer_associer'])) {
724
-		$infos['texte_creer_associer'] = $infos['type'] . ':' . 'texte_creer_associer_' . $infos['type'];
725
-	}
726
-	if (!isset($infos['texte_ajouter'])) {
727
-		// Ajouter un X
728
-		$infos['texte_ajouter'] = $infos['type'] . ':' . 'texte_ajouter_' . $infos['type'];
729
-	}
730
-	if (!isset($infos['texte_objets'])) {
731
-		$infos['texte_objets'] = $infos['type'] . ':' . 'titre_' . $infos['table_objet'];
732
-	}
733
-	if (!isset($infos['texte_objet'])) {
734
-		$infos['texte_objet'] = $infos['type'] . ':' . 'titre_' . $infos['type'];
735
-	}
736
-	if (!isset($infos['texte_logo_objet'])) {
737
-		// objet:titre_logo_objet "Logo de ce X"
738
-		$infos['texte_logo_objet'] = $infos['type'] . ':' . 'titre_logo_' . $infos['type'];
739
-	}
740
-	if (!isset($infos['texte_langue_objet'])) {
741
-		// objet:texte_langue_objet "Langue de ce X"
742
-		$infos['texte_langue_objet'] = $infos['type'] . ':' . 'titre_langue_' . $infos['type'];
743
-	}
744
-	if (!isset($infos['texte_definir_comme_traduction_objet'])) {
745
-		// "Ce X est une traduction du X numéro :"
746
-		$infos['texte_definir_comme_traduction_objet'] = $infos['type'] . ':' . 'texte_definir_comme_traduction_' . $infos['type'];
747
-	}
748
-
749
-	// objet:info_aucun_objet
750
-	if (!isset($infos['info_aucun_objet'])) {
751
-		$infos['info_aucun_objet'] = $infos['type'] . ':' . 'info_aucun_' . $infos['type'];
752
-	}
753
-	// objet:info_1_objet
754
-	if (!isset($infos['info_1_objet'])) {
755
-		$infos['info_1_objet'] = $infos['type'] . ':' . 'info_1_' . $infos['type'];
756
-	}
757
-	// objet:info_nb_objets
758
-	if (!isset($infos['info_nb_objets'])) {
759
-		$infos['info_nb_objets'] = $infos['type'] . ':' . 'info_nb_' . $infos['table_objet'];
760
-	}
761
-
762
-	if (!isset($infos['champs_editables'])) {
763
-		$infos['champs_editables'] = [];
764
-	}
765
-	if (!isset($infos['champs_versionnes'])) {
766
-		$infos['champs_versionnes'] = [];
767
-	}
768
-	if (!isset($infos['rechercher_champs'])) {
769
-		$infos['rechercher_champs'] = [];
770
-	}
771
-	if (!isset($infos['rechercher_jointures'])) {
772
-		$infos['rechercher_jointures'] = [];
773
-	}
774
-
775
-	if (!isset($infos['modeles'])) {
776
-		$infos['modeles'] = [$infos['type']];
777
-	}
778
-
779
-	return $infos;
657
+    if (!isset($infos['type'])) {
658
+        // si on arrive de base/trouver_table, on a la cle primaire :
659
+        // s'en servir pour extrapoler le type
660
+        if (isset($infos['key']['PRIMARY KEY'])) {
661
+            $primary = $infos['key']['PRIMARY KEY'];
662
+            $primary = explode(',', $primary);
663
+            $primary = reset($primary);
664
+            $infos['type'] = preg_replace(',^spip_|^id_|s$,', '', $primary);
665
+        } else {
666
+            $infos['type'] = preg_replace(',^spip_|s$,', '', $table_sql);
667
+        }
668
+    }
669
+    if (!isset($infos['type_surnoms'])) {
670
+        $infos['type_surnoms'] = [];
671
+    }
672
+
673
+    if (!isset($infos['table_objet'])) {
674
+        $infos['table_objet'] = preg_replace(',^spip_,', '', $table_sql);
675
+    }
676
+    if (!isset($infos['table_objet_surnoms'])) {
677
+        $infos['table_objet_surnoms'] = [];
678
+    }
679
+
680
+    if (!isset($infos['principale'])) {
681
+        $infos['principale'] = (isset($GLOBALS['tables_principales'][$table_sql]) ? 'oui' : false);
682
+    }
683
+
684
+    // normaliser pour pouvoir tester en php $infos['principale']?
685
+    // et dans une boucle {principale=oui}
686
+    $infos['principale'] = (($infos['principale'] and $infos['principale'] != 'non') ? 'oui' : false);
687
+
688
+    // declarer et normaliser pour pouvoir tester en php $infos['editable']?
689
+    // et dans une boucle {editable=oui}
690
+    if (!isset($infos['editable'])) {
691
+        $infos['editable'] = 'oui';
692
+    }
693
+
694
+    $infos['editable'] = (($infos['editable'] and $infos['editable'] != 'non') ? 'oui' : false);
695
+
696
+    // les urls publiques sont par defaut page=type pour les tables principales, et rien pour les autres
697
+    // seules les exceptions sont donc a declarer
698
+    if (!isset($infos['page'])) {
699
+        $infos['page'] = ($infos['principale'] ? $infos['type'] : '');
700
+    }
701
+
702
+    if (!isset($infos['url_voir'])) {
703
+        $infos['url_voir'] = $infos['type'];
704
+    }
705
+    if (!isset($infos['url_edit'])) {
706
+        $infos['url_edit'] = $infos['url_voir'] . ($infos['editable'] ? '_edit' : '');
707
+    }
708
+    if (!isset($infos['icone_objet'])) {
709
+        $infos['icone_objet'] = $infos['type'];
710
+    }
711
+
712
+    // chaines de langue
713
+    // par defaut : objet:icone_xxx_objet
714
+    if (!isset($infos['texte_retour'])) {
715
+        $infos['texte_retour'] = 'icone_retour';
716
+    }
717
+    if (!isset($infos['texte_modifier'])) {
718
+        $infos['texte_modifier'] = $infos['type'] . ':' . 'icone_modifier_' . $infos['type'];
719
+    }
720
+    if (!isset($infos['texte_creer'])) {
721
+        $infos['texte_creer'] = $infos['type'] . ':' . 'icone_creer_' . $infos['type'];
722
+    }
723
+    if (!isset($infos['texte_creer_associer'])) {
724
+        $infos['texte_creer_associer'] = $infos['type'] . ':' . 'texte_creer_associer_' . $infos['type'];
725
+    }
726
+    if (!isset($infos['texte_ajouter'])) {
727
+        // Ajouter un X
728
+        $infos['texte_ajouter'] = $infos['type'] . ':' . 'texte_ajouter_' . $infos['type'];
729
+    }
730
+    if (!isset($infos['texte_objets'])) {
731
+        $infos['texte_objets'] = $infos['type'] . ':' . 'titre_' . $infos['table_objet'];
732
+    }
733
+    if (!isset($infos['texte_objet'])) {
734
+        $infos['texte_objet'] = $infos['type'] . ':' . 'titre_' . $infos['type'];
735
+    }
736
+    if (!isset($infos['texte_logo_objet'])) {
737
+        // objet:titre_logo_objet "Logo de ce X"
738
+        $infos['texte_logo_objet'] = $infos['type'] . ':' . 'titre_logo_' . $infos['type'];
739
+    }
740
+    if (!isset($infos['texte_langue_objet'])) {
741
+        // objet:texte_langue_objet "Langue de ce X"
742
+        $infos['texte_langue_objet'] = $infos['type'] . ':' . 'titre_langue_' . $infos['type'];
743
+    }
744
+    if (!isset($infos['texte_definir_comme_traduction_objet'])) {
745
+        // "Ce X est une traduction du X numéro :"
746
+        $infos['texte_definir_comme_traduction_objet'] = $infos['type'] . ':' . 'texte_definir_comme_traduction_' . $infos['type'];
747
+    }
748
+
749
+    // objet:info_aucun_objet
750
+    if (!isset($infos['info_aucun_objet'])) {
751
+        $infos['info_aucun_objet'] = $infos['type'] . ':' . 'info_aucun_' . $infos['type'];
752
+    }
753
+    // objet:info_1_objet
754
+    if (!isset($infos['info_1_objet'])) {
755
+        $infos['info_1_objet'] = $infos['type'] . ':' . 'info_1_' . $infos['type'];
756
+    }
757
+    // objet:info_nb_objets
758
+    if (!isset($infos['info_nb_objets'])) {
759
+        $infos['info_nb_objets'] = $infos['type'] . ':' . 'info_nb_' . $infos['table_objet'];
760
+    }
761
+
762
+    if (!isset($infos['champs_editables'])) {
763
+        $infos['champs_editables'] = [];
764
+    }
765
+    if (!isset($infos['champs_versionnes'])) {
766
+        $infos['champs_versionnes'] = [];
767
+    }
768
+    if (!isset($infos['rechercher_champs'])) {
769
+        $infos['rechercher_champs'] = [];
770
+    }
771
+    if (!isset($infos['rechercher_jointures'])) {
772
+        $infos['rechercher_jointures'] = [];
773
+    }
774
+
775
+    if (!isset($infos['modeles'])) {
776
+        $infos['modeles'] = [$infos['type']];
777
+    }
778
+
779
+    return $infos;
780 780
 }
781 781
 
782 782
 /**
@@ -793,32 +793,32 @@  discard block
 block discarded – undo
793 793
  * @return array
794 794
  */
795 795
 function renseigner_table_objet_interfaces($table_sql, &$infos) {
796
-	if (!isset($infos['titre'])) {
797
-		if (isset($infos['table_objet']) and isset($GLOBALS['table_titre'][$infos['table_objet']])) {
798
-			$infos['titre'] = $GLOBALS['table_titre'][$infos['table_objet']];
799
-		} else {
800
-			$infos['titre'] = ((isset($infos['field']['titre'])) ? 'titre,' : "'' as titre,");
801
-			$infos['titre'] .= ((isset($infos['field']['lang'])) ? 'lang' : "'' as lang");
802
-		}
803
-	}
804
-	if (!isset($infos['date'])) {
805
-		if (isset($infos['table_objet']) and isset($GLOBALS['table_date'][$infos['table_objet']])) {
806
-			$infos['date'] = $GLOBALS['table_date'][$infos['table_objet']];
807
-		} else {
808
-			$infos['date'] = ((isset($infos['field']['date'])) ? 'date' : '');
809
-		}
810
-	}
811
-	if (!isset($infos['statut'])) {
812
-		$infos['statut'] = isset($GLOBALS['table_statut'][$table_sql]) ? $GLOBALS['table_statut'][$table_sql] : '';
813
-	}
814
-	if (!isset($infos['tables_jointures'])) {
815
-		$infos['tables_jointures'] = [];
816
-	}
817
-	if (isset($GLOBALS['tables_jointures'][$table_sql])) {
818
-		$infos['tables_jointures'] = array_merge($infos['tables_jointures'], $GLOBALS['tables_jointures'][$table_sql]);
819
-	}
820
-
821
-	return $infos;
796
+    if (!isset($infos['titre'])) {
797
+        if (isset($infos['table_objet']) and isset($GLOBALS['table_titre'][$infos['table_objet']])) {
798
+            $infos['titre'] = $GLOBALS['table_titre'][$infos['table_objet']];
799
+        } else {
800
+            $infos['titre'] = ((isset($infos['field']['titre'])) ? 'titre,' : "'' as titre,");
801
+            $infos['titre'] .= ((isset($infos['field']['lang'])) ? 'lang' : "'' as lang");
802
+        }
803
+    }
804
+    if (!isset($infos['date'])) {
805
+        if (isset($infos['table_objet']) and isset($GLOBALS['table_date'][$infos['table_objet']])) {
806
+            $infos['date'] = $GLOBALS['table_date'][$infos['table_objet']];
807
+        } else {
808
+            $infos['date'] = ((isset($infos['field']['date'])) ? 'date' : '');
809
+        }
810
+    }
811
+    if (!isset($infos['statut'])) {
812
+        $infos['statut'] = isset($GLOBALS['table_statut'][$table_sql]) ? $GLOBALS['table_statut'][$table_sql] : '';
813
+    }
814
+    if (!isset($infos['tables_jointures'])) {
815
+        $infos['tables_jointures'] = [];
816
+    }
817
+    if (isset($GLOBALS['tables_jointures'][$table_sql])) {
818
+        $infos['tables_jointures'] = array_merge($infos['tables_jointures'], $GLOBALS['tables_jointures'][$table_sql]);
819
+    }
820
+
821
+    return $infos;
822 822
 }
823 823
 
824 824
 /**
@@ -829,13 +829,13 @@  discard block
 block discarded – undo
829 829
  *     Liste et descriptions des tables principales
830 830
  **/
831 831
 function lister_tables_principales() {
832
-	static $done = false;
833
-	if (!$done or !count($GLOBALS['tables_principales'])) {
834
-		lister_tables_objets_sql();
835
-		$done = true;
836
-	}
832
+    static $done = false;
833
+    if (!$done or !count($GLOBALS['tables_principales'])) {
834
+        lister_tables_objets_sql();
835
+        $done = true;
836
+    }
837 837
 
838
-	return $GLOBALS['tables_principales'];
838
+    return $GLOBALS['tables_principales'];
839 839
 }
840 840
 
841 841
 /**
@@ -846,13 +846,13 @@  discard block
 block discarded – undo
846 846
  *     Liste et descriptions des tables auxiliaires
847 847
  **/
848 848
 function lister_tables_auxiliaires() {
849
-	static $done = false;
850
-	if (!$done or !count($GLOBALS['tables_auxiliaires'])) {
851
-		lister_tables_objets_sql();
852
-		$done = true;
853
-	}
849
+    static $done = false;
850
+    if (!$done or !count($GLOBALS['tables_auxiliaires'])) {
851
+        lister_tables_objets_sql();
852
+        $done = true;
853
+    }
854 854
 
855
-	return $GLOBALS['tables_auxiliaires'];
855
+    return $GLOBALS['tables_auxiliaires'];
856 856
 }
857 857
 
858 858
 /**
@@ -861,45 +861,45 @@  discard block
 block discarded – undo
861 861
  * @return array
862 862
  */
863 863
 function lister_tables_objets_surnoms() {
864
-	static $surnoms = null;
865
-	static $md5 = null;
866
-	if (
867
-		!$surnoms
868
-		or $md5 != lister_tables_objets_sql('::md5')
869
-	) {
870
-		// passer dans un pipeline qui permet aux plugins de declarer leurs exceptions
871
-		// pour compatibilite, car il faut dorenavent utiliser
872
-		// declarer_table_objets_sql
873
-		$surnoms = pipeline(
874
-			'declarer_tables_objets_surnoms',
875
-			[
876
-				# pour les modeles
877
-				# a enlever ?
878
-				'doc' => 'documents',
879
-				'img' => 'documents',
880
-				'emb' => 'documents',
881
-			]
882
-		);
883
-		$infos_tables = lister_tables_objets_sql();
884
-		foreach ($infos_tables as $t => $infos) {
885
-			// cas de base type=>table
886
-			// et preg_replace(',^spip_|^id_|s$,',table)=>table
887
-			if ($infos['table_objet']) { // securite, si la fonction est appelee trop tot, c'est vide
888
-				// optimisations pour table_objet
889
-				//$surnoms[$infos['type']] = $infos['table_objet'];
890
-				$surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['table_objet'])] = $infos['table_objet'];
891
-				$surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['type'])] = $infos['table_objet'];
892
-				if (is_array($infos['table_objet_surnoms']) and count($infos['table_objet_surnoms'])) {
893
-					foreach ($infos['table_objet_surnoms'] as $surnom) {
894
-						$surnoms[$surnom] = $infos['table_objet'];
895
-					}
896
-				}
897
-			}
898
-		}
899
-		$md5 = lister_tables_objets_sql('::md5');
900
-	}
901
-
902
-	return $surnoms;
864
+    static $surnoms = null;
865
+    static $md5 = null;
866
+    if (
867
+        !$surnoms
868
+        or $md5 != lister_tables_objets_sql('::md5')
869
+    ) {
870
+        // passer dans un pipeline qui permet aux plugins de declarer leurs exceptions
871
+        // pour compatibilite, car il faut dorenavent utiliser
872
+        // declarer_table_objets_sql
873
+        $surnoms = pipeline(
874
+            'declarer_tables_objets_surnoms',
875
+            [
876
+                # pour les modeles
877
+                # a enlever ?
878
+                'doc' => 'documents',
879
+                'img' => 'documents',
880
+                'emb' => 'documents',
881
+            ]
882
+        );
883
+        $infos_tables = lister_tables_objets_sql();
884
+        foreach ($infos_tables as $t => $infos) {
885
+            // cas de base type=>table
886
+            // et preg_replace(',^spip_|^id_|s$,',table)=>table
887
+            if ($infos['table_objet']) { // securite, si la fonction est appelee trop tot, c'est vide
888
+                // optimisations pour table_objet
889
+                //$surnoms[$infos['type']] = $infos['table_objet'];
890
+                $surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['table_objet'])] = $infos['table_objet'];
891
+                $surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['type'])] = $infos['table_objet'];
892
+                if (is_array($infos['table_objet_surnoms']) and count($infos['table_objet_surnoms'])) {
893
+                    foreach ($infos['table_objet_surnoms'] as $surnom) {
894
+                        $surnoms[$surnom] = $infos['table_objet'];
895
+                    }
896
+                }
897
+            }
898
+        }
899
+        $md5 = lister_tables_objets_sql('::md5');
900
+    }
901
+
902
+    return $surnoms;
903 903
 }
904 904
 
905 905
 /**
@@ -908,35 +908,35 @@  discard block
 block discarded – undo
908 908
  * @return array
909 909
  */
910 910
 function lister_types_surnoms() {
911
-	static $surnoms = null;
912
-	static $md5 = null;
913
-	if (
914
-		!$surnoms
915
-		or $md5 != lister_tables_objets_sql('::md5')
916
-	) {
917
-		// passer dans un pipeline qui permet aux plugins de declarer leurs exceptions
918
-		// pour compatibilite, car il faut dorenavent utiliser
919
-		// declarer_table_objets_sql
920
-		$surnoms = pipeline('declarer_type_surnoms', ['racine-site' => 'site']);
921
-		$infos_tables = lister_tables_objets_sql();
922
-		foreach ($infos_tables as $t => $infos) {
923
-			if ($infos['type']) { // securite, si la fonction est appelee trop tot, c'est vide
924
-				// optimisations pour objet_type
925
-				//$surnoms[$infos['type']] = $infos['type'];
926
-				$surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['table_objet'])] = $infos['type'];
927
-				$surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['type'])] = $infos['type'];
928
-				// surnoms declares
929
-				if (is_array($infos['type_surnoms']) and count($infos['type_surnoms'])) {
930
-					foreach ($infos['type_surnoms'] as $surnom) {
931
-						$surnoms[$surnom] = $infos['type'];
932
-					}
933
-				}
934
-			}
935
-		}
936
-		$md5 = lister_tables_objets_sql('::md5');
937
-	}
938
-
939
-	return $surnoms;
911
+    static $surnoms = null;
912
+    static $md5 = null;
913
+    if (
914
+        !$surnoms
915
+        or $md5 != lister_tables_objets_sql('::md5')
916
+    ) {
917
+        // passer dans un pipeline qui permet aux plugins de declarer leurs exceptions
918
+        // pour compatibilite, car il faut dorenavent utiliser
919
+        // declarer_table_objets_sql
920
+        $surnoms = pipeline('declarer_type_surnoms', ['racine-site' => 'site']);
921
+        $infos_tables = lister_tables_objets_sql();
922
+        foreach ($infos_tables as $t => $infos) {
923
+            if ($infos['type']) { // securite, si la fonction est appelee trop tot, c'est vide
924
+                // optimisations pour objet_type
925
+                //$surnoms[$infos['type']] = $infos['type'];
926
+                $surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['table_objet'])] = $infos['type'];
927
+                $surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['type'])] = $infos['type'];
928
+                // surnoms declares
929
+                if (is_array($infos['type_surnoms']) and count($infos['type_surnoms'])) {
930
+                    foreach ($infos['type_surnoms'] as $surnom) {
931
+                        $surnoms[$surnom] = $infos['type'];
932
+                    }
933
+                }
934
+            }
935
+        }
936
+        $md5 = lister_tables_objets_sql('::md5');
937
+    }
938
+
939
+    return $surnoms;
940 940
 }
941 941
 
942 942
 /**
@@ -950,22 +950,22 @@  discard block
 block discarded – undo
950 950
  *     Couples (nom de la table SQL => même nom, sans 'spip_' devant)
951 951
  **/
952 952
 function lister_tables_spip($serveur = '') {
953
-	static $tables = [];
954
-	if (!isset($tables[$serveur])) {
955
-		$tables[$serveur] = [];
956
-		if (!function_exists('sql_alltable')) {
957
-			include_spip('base/abstract_sql');
958
-		}
959
-		$ts = sql_alltable(null, $serveur); // toutes les tables "spip_" (ou prefixe perso)
960
-		$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
961
-		$spip = $connexion['prefixe'] . '_';
962
-		foreach ($ts as $t) {
963
-			$t = substr($t, strlen($spip));
964
-			$tables[$serveur]["spip_$t"] = $t;
965
-		}
966
-	}
967
-
968
-	return $tables[$serveur];
953
+    static $tables = [];
954
+    if (!isset($tables[$serveur])) {
955
+        $tables[$serveur] = [];
956
+        if (!function_exists('sql_alltable')) {
957
+            include_spip('base/abstract_sql');
958
+        }
959
+        $ts = sql_alltable(null, $serveur); // toutes les tables "spip_" (ou prefixe perso)
960
+        $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
961
+        $spip = $connexion['prefixe'] . '_';
962
+        foreach ($ts as $t) {
963
+            $t = substr($t, strlen($spip));
964
+            $tables[$serveur]["spip_$t"] = $t;
965
+        }
966
+    }
967
+
968
+    return $tables[$serveur];
969 969
 }
970 970
 
971 971
 
@@ -980,18 +980,18 @@  discard block
 block discarded – undo
980 980
  *     Couples (nom de la table SQL => même nom)
981 981
  **/
982 982
 function lister_toutes_tables($serveur) {
983
-	static $tables = [];
984
-	if (!isset($tables[$serveur])) {
985
-		$tables[$serveur] = [];
986
-		if (!function_exists('sql_alltable')) {
987
-			include_spip('base/abstract_sql');
988
-		}
989
-		$ts = sql_alltable('%', $serveur); // toutes les tables
990
-		foreach ($ts as $t) {
991
-			$tables[$serveur][$t] = $t;
992
-		}
993
-	}
994
-	return $tables[$serveur];
983
+    static $tables = [];
984
+    if (!isset($tables[$serveur])) {
985
+        $tables[$serveur] = [];
986
+        if (!function_exists('sql_alltable')) {
987
+            include_spip('base/abstract_sql');
988
+        }
989
+        $ts = sql_alltable('%', $serveur); // toutes les tables
990
+        foreach ($ts as $t) {
991
+            $tables[$serveur][$t] = $t;
992
+        }
993
+    }
994
+    return $tables[$serveur];
995 995
 }
996 996
 
997 997
 /**
@@ -1011,36 +1011,36 @@  discard block
 block discarded – undo
1011 1011
  *     Nom de l'objet
1012 1012
  **/
1013 1013
 function table_objet($type, $serveur = '') {
1014
-	$surnoms = lister_tables_objets_surnoms();
1015
-	$type = preg_replace(',^spip_|^id_|s$,', '', $type);
1016
-	if (!$type) {
1017
-		return;
1018
-	}
1019
-	if (isset($surnoms[$type])) {
1020
-		return $surnoms[$type];
1021
-	}
1022
-
1023
-	if ($serveur !== false) {
1024
-		$t = lister_tables_spip($serveur);
1025
-		$trouver_table = charger_fonction('trouver_table', 'base');
1026
-		$typetrim = rtrim($type, 's') . 's';
1027
-		if (
1028
-			(isset($t[$typetrim]) or in_array($typetrim, $t))
1029
-			and ($desc = $trouver_table(rtrim($type, 's') . 's', $serveur))
1030
-		) {
1031
-			return $desc['id_table'];
1032
-		} elseif (
1033
-			(isset($t[$type]) or in_array($type, $t))
1034
-			and ($desc = $trouver_table($type, $serveur))
1035
-		) {
1036
-			return $desc['id_table'];
1037
-		}
1038
-
1039
-		spip_log('table_objet(' . $type . ') calculee sans verification');
1040
-		#spip_log(debug_backtrace(),'db');
1041
-	}
1042
-
1043
-	return rtrim($type, 's') . 's'; # cas historique ne devant plus servir, sauf si $serveur=false
1014
+    $surnoms = lister_tables_objets_surnoms();
1015
+    $type = preg_replace(',^spip_|^id_|s$,', '', $type);
1016
+    if (!$type) {
1017
+        return;
1018
+    }
1019
+    if (isset($surnoms[$type])) {
1020
+        return $surnoms[$type];
1021
+    }
1022
+
1023
+    if ($serveur !== false) {
1024
+        $t = lister_tables_spip($serveur);
1025
+        $trouver_table = charger_fonction('trouver_table', 'base');
1026
+        $typetrim = rtrim($type, 's') . 's';
1027
+        if (
1028
+            (isset($t[$typetrim]) or in_array($typetrim, $t))
1029
+            and ($desc = $trouver_table(rtrim($type, 's') . 's', $serveur))
1030
+        ) {
1031
+            return $desc['id_table'];
1032
+        } elseif (
1033
+            (isset($t[$type]) or in_array($type, $t))
1034
+            and ($desc = $trouver_table($type, $serveur))
1035
+        ) {
1036
+            return $desc['id_table'];
1037
+        }
1038
+
1039
+        spip_log('table_objet(' . $type . ') calculee sans verification');
1040
+        #spip_log(debug_backtrace(),'db');
1041
+    }
1042
+
1043
+    return rtrim($type, 's') . 's'; # cas historique ne devant plus servir, sauf si $serveur=false
1044 1044
 }
1045 1045
 
1046 1046
 /**
@@ -1061,30 +1061,30 @@  discard block
 block discarded – undo
1061 1061
  **/
1062 1062
 function table_objet_sql($type, $serveur = '') {
1063 1063
 
1064
-	$nom = table_objet($type, $serveur);
1065
-	if (!isset($GLOBALS['table_des_tables']['articles'])) {
1066
-		// eviter de multiples inclusions
1067
-		include_spip('public/interfaces');
1068
-	}
1069
-	if (isset($GLOBALS['table_des_tables'][$nom])) {
1070
-		$nom = $GLOBALS['table_des_tables'][$nom];
1071
-		$nom = "spip_$nom";
1072
-	} else {
1073
-		$infos_tables = lister_tables_objets_sql();
1074
-		if (isset($infos_tables["spip_$nom"])) {
1075
-			$nom = "spip_$nom";
1076
-		} elseif ($serveur !== false) {
1077
-			$t = lister_tables_spip($serveur);
1078
-			if (isset($t[$nom]) or in_array($nom, $t)) {
1079
-				$trouver_table = charger_fonction('trouver_table', 'base');
1080
-				if ($desc = $trouver_table($nom, $serveur)) {
1081
-					return $desc['table_sql'];
1082
-				}
1083
-			}
1084
-		}
1085
-	}
1086
-
1087
-	return $nom;
1064
+    $nom = table_objet($type, $serveur);
1065
+    if (!isset($GLOBALS['table_des_tables']['articles'])) {
1066
+        // eviter de multiples inclusions
1067
+        include_spip('public/interfaces');
1068
+    }
1069
+    if (isset($GLOBALS['table_des_tables'][$nom])) {
1070
+        $nom = $GLOBALS['table_des_tables'][$nom];
1071
+        $nom = "spip_$nom";
1072
+    } else {
1073
+        $infos_tables = lister_tables_objets_sql();
1074
+        if (isset($infos_tables["spip_$nom"])) {
1075
+            $nom = "spip_$nom";
1076
+        } elseif ($serveur !== false) {
1077
+            $t = lister_tables_spip($serveur);
1078
+            if (isset($t[$nom]) or in_array($nom, $t)) {
1079
+                $trouver_table = charger_fonction('trouver_table', 'base');
1080
+                if ($desc = $trouver_table($nom, $serveur)) {
1081
+                    return $desc['table_sql'];
1082
+                }
1083
+            }
1084
+        }
1085
+    }
1086
+
1087
+    return $nom;
1088 1088
 }
1089 1089
 
1090 1090
 /**
@@ -1103,35 +1103,35 @@  discard block
 block discarded – undo
1103 1103
  *     Nom de la clé primaire
1104 1104
  **/
1105 1105
 function id_table_objet($type, $serveur = '') {
1106
-	static $trouver_table = null;
1107
-	$type = objet_type($type, $serveur);
1108
-	if (!$type) {
1109
-		return;
1110
-	}
1111
-	$t = table_objet($type);
1112
-	if (!$trouver_table) {
1113
-		$trouver_table = charger_fonction('trouver_table', 'base');
1114
-	}
1115
-
1116
-	$ts = lister_tables_spip($serveur);
1117
-	if (
1118
-		in_array($t, $ts)
1119
-		or in_array($t, lister_toutes_tables($serveur))
1120
-	) {
1121
-		$desc = $trouver_table($t, $serveur);
1122
-		if (isset($desc['key']['PRIMARY KEY'])) {
1123
-			return $desc['key']['PRIMARY KEY'];
1124
-		}
1125
-		if (!$desc or isset($desc['field']["id_$type"])) {
1126
-			return "id_$type";
1127
-		}
1128
-		// sinon renvoyer le premier champ de la table...
1129
-		$keys = array_keys($desc['field']);
1130
-
1131
-		return array_shift($keys);
1132
-	}
1133
-
1134
-	return "id_$type";
1106
+    static $trouver_table = null;
1107
+    $type = objet_type($type, $serveur);
1108
+    if (!$type) {
1109
+        return;
1110
+    }
1111
+    $t = table_objet($type);
1112
+    if (!$trouver_table) {
1113
+        $trouver_table = charger_fonction('trouver_table', 'base');
1114
+    }
1115
+
1116
+    $ts = lister_tables_spip($serveur);
1117
+    if (
1118
+        in_array($t, $ts)
1119
+        or in_array($t, lister_toutes_tables($serveur))
1120
+    ) {
1121
+        $desc = $trouver_table($t, $serveur);
1122
+        if (isset($desc['key']['PRIMARY KEY'])) {
1123
+            return $desc['key']['PRIMARY KEY'];
1124
+        }
1125
+        if (!$desc or isset($desc['field']["id_$type"])) {
1126
+            return "id_$type";
1127
+        }
1128
+        // sinon renvoyer le premier champ de la table...
1129
+        $keys = array_keys($desc['field']);
1130
+
1131
+        return array_shift($keys);
1132
+    }
1133
+
1134
+    return "id_$type";
1135 1135
 }
1136 1136
 
1137 1137
 /**
@@ -1150,60 +1150,60 @@  discard block
 block discarded – undo
1150 1150
  *     Type de l'objet
1151 1151
  **/
1152 1152
 function objet_type($table_objet, $serveur = '') {
1153
-	if (!$table_objet) {
1154
-		return;
1155
-	}
1156
-	$surnoms = lister_types_surnoms();
1157
-
1158
-	// scenario de base
1159
-	// le type est decline a partir du nom de la table en enlevant le prefixe eventuel
1160
-	// et la marque du pluriel
1161
-	// on accepte id_xx en entree aussi
1162
-	$type = preg_replace(',^spip_|^id_|s$,', '', $table_objet);
1163
-	if (isset($surnoms[$type])) {
1164
-		return $surnoms[$type];
1165
-	}
1166
-
1167
-	// securite : eliminer les caracteres non \w
1168
-	$type = preg_replace(',[^\w-],', '', $type);
1169
-
1170
-	// si le type redonne bien la table c'est bon
1171
-	// oui si table_objet ressemblait deja a un type
1172
-	if (
1173
-		$type == $table_objet
1174
-		or (table_objet($type, $serveur) == $table_objet)
1175
-		or (table_objet_sql($type, $serveur) == $table_objet)
1176
-	) {
1177
-		return $type;
1178
-	}
1179
-
1180
-	// si on ne veut pas chercher en base
1181
-	if ($serveur === false) {
1182
-		return $type;
1183
-	}
1184
-
1185
-	// sinon on passe par la cle primaire id_xx pour trouver le type
1186
-	// car le s a la fin est incertain
1187
-	// notamment en cas de pluriel derogatoire
1188
-	// id_jeu/spip_jeux id_journal/spip_journaux qui necessitent tout deux
1189
-	// une declaration jeu => jeux, journal => journaux
1190
-	// dans le pipeline declarer_tables_objets_surnoms
1191
-	$trouver_table = charger_fonction('trouver_table', 'base');
1192
-	$ts = lister_tables_spip($serveur);
1193
-	$desc = false;
1194
-	if (in_array($table_objet, $ts)) {
1195
-		$desc = $trouver_table($table_objet);
1196
-	}
1197
-	if (!$desc and in_array($table_objet = table_objet($type, $serveur), $ts)) {
1198
-		$desc = $trouver_table($table_objet, $serveur);
1199
-	}
1200
-	// si le type est declare : bingo !
1201
-	if ($desc and isset($desc['type'])) {
1202
-		return $desc['type'];
1203
-	}
1204
-
1205
-	// on a fait ce qu'on a pu
1206
-	return $type;
1153
+    if (!$table_objet) {
1154
+        return;
1155
+    }
1156
+    $surnoms = lister_types_surnoms();
1157
+
1158
+    // scenario de base
1159
+    // le type est decline a partir du nom de la table en enlevant le prefixe eventuel
1160
+    // et la marque du pluriel
1161
+    // on accepte id_xx en entree aussi
1162
+    $type = preg_replace(',^spip_|^id_|s$,', '', $table_objet);
1163
+    if (isset($surnoms[$type])) {
1164
+        return $surnoms[$type];
1165
+    }
1166
+
1167
+    // securite : eliminer les caracteres non \w
1168
+    $type = preg_replace(',[^\w-],', '', $type);
1169
+
1170
+    // si le type redonne bien la table c'est bon
1171
+    // oui si table_objet ressemblait deja a un type
1172
+    if (
1173
+        $type == $table_objet
1174
+        or (table_objet($type, $serveur) == $table_objet)
1175
+        or (table_objet_sql($type, $serveur) == $table_objet)
1176
+    ) {
1177
+        return $type;
1178
+    }
1179
+
1180
+    // si on ne veut pas chercher en base
1181
+    if ($serveur === false) {
1182
+        return $type;
1183
+    }
1184
+
1185
+    // sinon on passe par la cle primaire id_xx pour trouver le type
1186
+    // car le s a la fin est incertain
1187
+    // notamment en cas de pluriel derogatoire
1188
+    // id_jeu/spip_jeux id_journal/spip_journaux qui necessitent tout deux
1189
+    // une declaration jeu => jeux, journal => journaux
1190
+    // dans le pipeline declarer_tables_objets_surnoms
1191
+    $trouver_table = charger_fonction('trouver_table', 'base');
1192
+    $ts = lister_tables_spip($serveur);
1193
+    $desc = false;
1194
+    if (in_array($table_objet, $ts)) {
1195
+        $desc = $trouver_table($table_objet);
1196
+    }
1197
+    if (!$desc and in_array($table_objet = table_objet($type, $serveur), $ts)) {
1198
+        $desc = $trouver_table($table_objet, $serveur);
1199
+    }
1200
+    // si le type est declare : bingo !
1201
+    if ($desc and isset($desc['type'])) {
1202
+        return $desc['type'];
1203
+    }
1204
+
1205
+    // on a fait ce qu'on a pu
1206
+    return $type;
1207 1207
 }
1208 1208
 
1209 1209
 /**
@@ -1219,62 +1219,62 @@  discard block
 block discarded – undo
1219 1219
  * @return bool
1220 1220
  */
1221 1221
 function objet_test_si_publie($objet, $id_objet, $serveur = '') {
1222
-	// voir si une fonction est definie pour faire le boulot
1223
-	// elle a la priorite dans ce cas
1224
-	if ($f = charger_fonction($objet . '_test_si_publie', 'base', true)) {
1225
-		return $f($objet, $id_objet, $serveur);
1226
-	}
1227
-
1228
-	// sinon on se fie a la declaration de l'objet si presente
1229
-	$id_table = $table_objet = table_objet($objet);
1230
-	$id_table_objet = id_table_objet($objet, $serveur);
1231
-	$trouver_table = charger_fonction('trouver_table', 'base');
1232
-	if (
1233
-		$desc = $trouver_table($table_objet, $serveur)
1234
-		and isset($desc['statut'])
1235
-		and $desc['statut']
1236
-	) {
1237
-		$boucle = new Boucle();
1238
-		$boucle->show = $desc;
1239
-		$boucle->nom = 'objet_test_si_publie';
1240
-		$boucle->id_boucle = $id_table;
1241
-		$boucle->id_table = $id_table;
1242
-		$boucle->primary = $desc['key']['PRIMARY KEY'] ?? '';
1243
-		$boucle->sql_serveur = $serveur;
1244
-		$boucle->select[] = $id_table_objet;
1245
-		$boucle->from[$table_objet] = table_objet_sql($objet, $serveur);
1246
-		$boucle->where[] = $id_table . '.' . $id_table_objet . '=' . intval($id_objet);
1247
-
1248
-		$boucle->descr['nom'] = 'objet_test_si_publie'; // eviter notice php
1249
-		$boucle->descr['sourcefile'] = 'internal';
1250
-		$boucle->descr['gram'] = 'html';
1251
-
1252
-		include_spip('public/compiler');
1253
-		include_spip('public/composer');
1254
-		instituer_boucle($boucle, false, true);
1255
-		$res = calculer_select(
1256
-			$boucle->select,
1257
-			$boucle->from,
1258
-			$boucle->from_type,
1259
-			$boucle->where,
1260
-			$boucle->join,
1261
-			$boucle->group,
1262
-			$boucle->order,
1263
-			$boucle->limit,
1264
-			$boucle->having,
1265
-			$table_objet,
1266
-			$id_table,
1267
-			$serveur
1268
-		);
1269
-		if (sql_fetch($res)) {
1270
-			return true;
1271
-		}
1272
-
1273
-		return false;
1274
-	}
1275
-
1276
-	// si pas d'info statut ni de fonction : l'objet est publie
1277
-	return true;
1222
+    // voir si une fonction est definie pour faire le boulot
1223
+    // elle a la priorite dans ce cas
1224
+    if ($f = charger_fonction($objet . '_test_si_publie', 'base', true)) {
1225
+        return $f($objet, $id_objet, $serveur);
1226
+    }
1227
+
1228
+    // sinon on se fie a la declaration de l'objet si presente
1229
+    $id_table = $table_objet = table_objet($objet);
1230
+    $id_table_objet = id_table_objet($objet, $serveur);
1231
+    $trouver_table = charger_fonction('trouver_table', 'base');
1232
+    if (
1233
+        $desc = $trouver_table($table_objet, $serveur)
1234
+        and isset($desc['statut'])
1235
+        and $desc['statut']
1236
+    ) {
1237
+        $boucle = new Boucle();
1238
+        $boucle->show = $desc;
1239
+        $boucle->nom = 'objet_test_si_publie';
1240
+        $boucle->id_boucle = $id_table;
1241
+        $boucle->id_table = $id_table;
1242
+        $boucle->primary = $desc['key']['PRIMARY KEY'] ?? '';
1243
+        $boucle->sql_serveur = $serveur;
1244
+        $boucle->select[] = $id_table_objet;
1245
+        $boucle->from[$table_objet] = table_objet_sql($objet, $serveur);
1246
+        $boucle->where[] = $id_table . '.' . $id_table_objet . '=' . intval($id_objet);
1247
+
1248
+        $boucle->descr['nom'] = 'objet_test_si_publie'; // eviter notice php
1249
+        $boucle->descr['sourcefile'] = 'internal';
1250
+        $boucle->descr['gram'] = 'html';
1251
+
1252
+        include_spip('public/compiler');
1253
+        include_spip('public/composer');
1254
+        instituer_boucle($boucle, false, true);
1255
+        $res = calculer_select(
1256
+            $boucle->select,
1257
+            $boucle->from,
1258
+            $boucle->from_type,
1259
+            $boucle->where,
1260
+            $boucle->join,
1261
+            $boucle->group,
1262
+            $boucle->order,
1263
+            $boucle->limit,
1264
+            $boucle->having,
1265
+            $table_objet,
1266
+            $id_table,
1267
+            $serveur
1268
+        );
1269
+        if (sql_fetch($res)) {
1270
+            return true;
1271
+        }
1272
+
1273
+        return false;
1274
+    }
1275
+
1276
+    // si pas d'info statut ni de fonction : l'objet est publie
1277
+    return true;
1278 1278
 }
1279 1279
 
1280 1280
 
@@ -1309,124 +1309,124 @@  discard block
 block discarded – undo
1309 1309
  *     Retourne un tableau décrivant les parents trouvés
1310 1310
  */
1311 1311
 function objet_lister_parents($objet, $id_objet, $parent_direct_seulement = false) {
1312
-	$parents = [];
1313
-
1314
-	// Si on trouve une ou des méthodes de parent
1315
-	if ($parent_methodes = objet_type_decrire_infos_parents($objet)) {
1316
-		// On identifie les informations sur l'objet source dont on cherche le parent.
1317
-		include_spip('base/abstract_sql');
1318
-		$table_objet = table_objet_sql($objet);
1319
-		$cle_objet = id_table_objet($objet);
1320
-		$id_objet = intval($id_objet);
1321
-
1322
-		// On teste chacun méthode dans l'ordre, et dès qu'on a trouvé un parent on s'arrête
1323
-		foreach ($parent_methodes as $parent_methode) {
1324
-			// Champ identifiant le parent (id et éventuellement le type)
1325
-			// -- cette identification ne dépend pas du fait que le parent soit stocké dans une table de différente
1326
-			//    de celle de l'objet source
1327
-			$select = [];
1328
-			if (isset($parent_methode['champ'])) {
1329
-				$select[] = $parent_methode['champ'];
1330
-			}
1331
-			if (isset($parent_methode['champ_type'])) {
1332
-				$select[] = $parent_methode['champ_type'];
1333
-			}
1334
-
1335
-			// Détermination de la table du parent et des conditions sur l'objet source et le parent.
1336
-			$condition_objet_invalide = false;
1337
-			$where = [];
1338
-			if (!isset($parent_methode['table'])) {
1339
-				// Le parent est stocké dans la même table que l'objet source :
1340
-				// -- toutes les conditions s'appliquent à la table source.
1341
-				$table = $table_objet;
1342
-				$where = ["$cle_objet = $id_objet"];
1343
-				// -- Condition supplémentaire sur la détection du parent
1344
-				if (isset($parent_methode['condition'])) {
1345
-					$where[] = $parent_methode['condition'];
1346
-				}
1347
-			} elseif (!$parent_direct_seulement) {
1348
-				// Le parent est stocké dans une table différente de l'objet source.
1349
-				// -- on vérifie d'emblée si il y a une condition sur l'objet source et si celle-ci est vérifiée
1350
-				//    Si non, on peut arrêter le traitement.
1351
-				if (isset($parent_methode['condition'])) {
1352
-					$where = [
1353
-						"$cle_objet = $id_objet",
1354
-						$parent_methode['condition']
1355
-					];
1356
-					if (!sql_countsel($table_objet, $where)) {
1357
-						$condition_objet_invalide = true;
1358
-					}
1359
-				}
1360
-
1361
-				// Si pas de condition sur l'objet source ou que la condition est vérifiée, on peut construire
1362
-				// la requête sur la table qui accueille le parent.
1363
-				if (!$condition_objet_invalide) {
1364
-					$table = $parent_methode['table'];
1365
-					// On construit les conditions en fonction de l'identification de l'objet source
1366
-					$where = [];
1367
-					// -- si le champ_source de l'id n'est pas précisé c'est qu'il est déjà connu et donc que c'est
1368
-					//    le même que celui de l'objet source.
1369
-					$where[] = isset($parent_methode['source_champ'])
1370
-						? "{$parent_methode['source_champ']} = $id_objet"
1371
-						: "${cle_objet} = $id_objet";
1372
-					if (isset($parent_methode['source_champ_type'])) {
1373
-						$where[] = "{$parent_methode['source_champ_type']} = " . sql_quote($objet);
1374
-					}
1375
-					// -- Condition supplémentaire sur la détection du parent
1376
-					if (isset($parent_methode['table_condition'])) {
1377
-						$where[] = $parent_methode['table_condition'];
1378
-					}
1379
-				}
1380
-			}
1381
-
1382
-			// On lance la requête de récupération du parent
1383
-			$is_table_lien = (strpos($table, '_liens') !== false and substr($table, -6) === '_liens');
1384
-			if (
1385
-				!$condition_objet_invalide
1386
-				and $where
1387
-				and ($lignes = sql_allfetsel($is_table_lien ? '*' : $select, $table, $where))
1388
-			) {
1389
-				foreach ($lignes as $ligne) {
1390
-					// Si le type est fixe
1391
-					if (isset($parent_methode['type'])) {
1392
-						$parent = [
1393
-							'objet' 	=> $parent_methode['type'],
1394
-							'id_objet'	=> intval($ligne[$parent_methode['champ']]),
1395
-							'champ' 	=> $parent_methode['champ'],
1396
-							'table'    => $table,
1397
-						];
1398
-					}
1399
-					elseif (isset($parent_methode['champ_type'])) {
1400
-						$parent = [
1401
-							'objet' 	 => $ligne[$parent_methode['champ_type']],
1402
-							'id_objet' 	 => intval($ligne[$parent_methode['champ']]),
1403
-							'champ' 	 => $parent_methode['champ'],
1404
-							'champ_type' => $parent_methode['champ_type'],
1405
-							'table'    => $table,
1406
-						];
1407
-					}
1408
-					if ($is_table_lien) {
1409
-						$parent['lien'] = $ligne;
1410
-					}
1411
-					$parents[] = $parent;
1412
-				}
1413
-			}
1414
-		}
1415
-	}
1416
-
1417
-	// On passe par un pipeline avant de retourner
1418
-	$parents = pipeline(
1419
-		'objet_lister_parents',
1420
-		[
1421
-			'args' => [
1422
-				'objet' => $objet,
1423
-				'id_objet' => $id_objet,
1424
-			],
1425
-			'data' => $parents,
1426
-		]
1427
-	);
1428
-
1429
-	return $parents;
1312
+    $parents = [];
1313
+
1314
+    // Si on trouve une ou des méthodes de parent
1315
+    if ($parent_methodes = objet_type_decrire_infos_parents($objet)) {
1316
+        // On identifie les informations sur l'objet source dont on cherche le parent.
1317
+        include_spip('base/abstract_sql');
1318
+        $table_objet = table_objet_sql($objet);
1319
+        $cle_objet = id_table_objet($objet);
1320
+        $id_objet = intval($id_objet);
1321
+
1322
+        // On teste chacun méthode dans l'ordre, et dès qu'on a trouvé un parent on s'arrête
1323
+        foreach ($parent_methodes as $parent_methode) {
1324
+            // Champ identifiant le parent (id et éventuellement le type)
1325
+            // -- cette identification ne dépend pas du fait que le parent soit stocké dans une table de différente
1326
+            //    de celle de l'objet source
1327
+            $select = [];
1328
+            if (isset($parent_methode['champ'])) {
1329
+                $select[] = $parent_methode['champ'];
1330
+            }
1331
+            if (isset($parent_methode['champ_type'])) {
1332
+                $select[] = $parent_methode['champ_type'];
1333
+            }
1334
+
1335
+            // Détermination de la table du parent et des conditions sur l'objet source et le parent.
1336
+            $condition_objet_invalide = false;
1337
+            $where = [];
1338
+            if (!isset($parent_methode['table'])) {
1339
+                // Le parent est stocké dans la même table que l'objet source :
1340
+                // -- toutes les conditions s'appliquent à la table source.
1341
+                $table = $table_objet;
1342
+                $where = ["$cle_objet = $id_objet"];
1343
+                // -- Condition supplémentaire sur la détection du parent
1344
+                if (isset($parent_methode['condition'])) {
1345
+                    $where[] = $parent_methode['condition'];
1346
+                }
1347
+            } elseif (!$parent_direct_seulement) {
1348
+                // Le parent est stocké dans une table différente de l'objet source.
1349
+                // -- on vérifie d'emblée si il y a une condition sur l'objet source et si celle-ci est vérifiée
1350
+                //    Si non, on peut arrêter le traitement.
1351
+                if (isset($parent_methode['condition'])) {
1352
+                    $where = [
1353
+                        "$cle_objet = $id_objet",
1354
+                        $parent_methode['condition']
1355
+                    ];
1356
+                    if (!sql_countsel($table_objet, $where)) {
1357
+                        $condition_objet_invalide = true;
1358
+                    }
1359
+                }
1360
+
1361
+                // Si pas de condition sur l'objet source ou que la condition est vérifiée, on peut construire
1362
+                // la requête sur la table qui accueille le parent.
1363
+                if (!$condition_objet_invalide) {
1364
+                    $table = $parent_methode['table'];
1365
+                    // On construit les conditions en fonction de l'identification de l'objet source
1366
+                    $where = [];
1367
+                    // -- si le champ_source de l'id n'est pas précisé c'est qu'il est déjà connu et donc que c'est
1368
+                    //    le même que celui de l'objet source.
1369
+                    $where[] = isset($parent_methode['source_champ'])
1370
+                        ? "{$parent_methode['source_champ']} = $id_objet"
1371
+                        : "${cle_objet} = $id_objet";
1372
+                    if (isset($parent_methode['source_champ_type'])) {
1373
+                        $where[] = "{$parent_methode['source_champ_type']} = " . sql_quote($objet);
1374
+                    }
1375
+                    // -- Condition supplémentaire sur la détection du parent
1376
+                    if (isset($parent_methode['table_condition'])) {
1377
+                        $where[] = $parent_methode['table_condition'];
1378
+                    }
1379
+                }
1380
+            }
1381
+
1382
+            // On lance la requête de récupération du parent
1383
+            $is_table_lien = (strpos($table, '_liens') !== false and substr($table, -6) === '_liens');
1384
+            if (
1385
+                !$condition_objet_invalide
1386
+                and $where
1387
+                and ($lignes = sql_allfetsel($is_table_lien ? '*' : $select, $table, $where))
1388
+            ) {
1389
+                foreach ($lignes as $ligne) {
1390
+                    // Si le type est fixe
1391
+                    if (isset($parent_methode['type'])) {
1392
+                        $parent = [
1393
+                            'objet' 	=> $parent_methode['type'],
1394
+                            'id_objet'	=> intval($ligne[$parent_methode['champ']]),
1395
+                            'champ' 	=> $parent_methode['champ'],
1396
+                            'table'    => $table,
1397
+                        ];
1398
+                    }
1399
+                    elseif (isset($parent_methode['champ_type'])) {
1400
+                        $parent = [
1401
+                            'objet' 	 => $ligne[$parent_methode['champ_type']],
1402
+                            'id_objet' 	 => intval($ligne[$parent_methode['champ']]),
1403
+                            'champ' 	 => $parent_methode['champ'],
1404
+                            'champ_type' => $parent_methode['champ_type'],
1405
+                            'table'    => $table,
1406
+                        ];
1407
+                    }
1408
+                    if ($is_table_lien) {
1409
+                        $parent['lien'] = $ligne;
1410
+                    }
1411
+                    $parents[] = $parent;
1412
+                }
1413
+            }
1414
+        }
1415
+    }
1416
+
1417
+    // On passe par un pipeline avant de retourner
1418
+    $parents = pipeline(
1419
+        'objet_lister_parents',
1420
+        [
1421
+            'args' => [
1422
+                'objet' => $objet,
1423
+                'id_objet' => $id_objet,
1424
+            ],
1425
+            'data' => $parents,
1426
+        ]
1427
+    );
1428
+
1429
+    return $parents;
1430 1430
 }
1431 1431
 
1432 1432
 /**
@@ -1438,17 +1438,17 @@  discard block
 block discarded – undo
1438 1438
  * @return array
1439 1439
  */
1440 1440
 function objet_lister_parents_par_type($objet, $id_objet) {
1441
-	$parents = objet_lister_parents($objet, $id_objet);
1441
+    $parents = objet_lister_parents($objet, $id_objet);
1442 1442
 
1443
-	$parents_par_type = [];
1444
-	foreach ($parents as $parent) {
1445
-		if (!isset($parents_par_type[$parent['objet']])) {
1446
-			$parents_par_type[$parent['objet']] = [];
1447
-		}
1448
-		$parents_par_type[$parent['objet']][] = $parent['id_objet'];
1449
-	}
1443
+    $parents_par_type = [];
1444
+    foreach ($parents as $parent) {
1445
+        if (!isset($parents_par_type[$parent['objet']])) {
1446
+            $parents_par_type[$parent['objet']] = [];
1447
+        }
1448
+        $parents_par_type[$parent['objet']][] = $parent['id_objet'];
1449
+    }
1450 1450
 
1451
-	return $parents_par_type;
1451
+    return $parents_par_type;
1452 1452
 }
1453 1453
 
1454 1454
 
@@ -1481,87 +1481,87 @@  discard block
 block discarded – undo
1481 1481
  *     Retourne un tableau de tableaux, avec comme clés les types des objets, et dans chacun un tableau des identifiants trouvés
1482 1482
  */
1483 1483
 function objet_lister_enfants($objet, $id_objet) {
1484
-	$enfants = [];
1485
-
1486
-	// Si on trouve des types d'enfants et leurs méthodes
1487
-	if ($enfants_methodes = objet_type_decrire_infos_enfants($objet)) {
1488
-		include_spip('base/abstract_sql');
1489
-		$id_objet = intval($id_objet);
1490
-
1491
-		// On parcourt tous les types d'enfants trouvés
1492
-		foreach ($enfants_methodes as $objet_enfant => $_methode_parent) {
1493
-			// On construit les conditions d'identification du parent
1494
-			$where = [];
1495
-			// -- L'identifiant du parent
1496
-			if (isset($_methode_parent['champ'])) {
1497
-				$where[] = $_methode_parent['champ'] . ' = ' . $id_objet;
1498
-			}
1499
-			// -- Si le parent est variable
1500
-			if (isset($_methode_parent['champ_type'])) {
1501
-				$where[] = $_methode_parent['champ_type'] . ' = ' . sql_quote($objet);
1502
-			}
1503
-
1504
-			// On détermine la table, le champ id des enfants et on complète éventuellement les conditions
1505
-			if (!isset($_methode_parent['table'])) {
1506
-				// Les enfants sont stockés dans la même table que l'objet parent :
1507
-				$table_enfant = table_objet_sql($objet_enfant);
1508
-				$cle_objet_enfant = id_table_objet($objet_enfant);
1509
-
1510
-				// S'il y a une condition supplémentaire
1511
-				if (isset($_methode_parent['condition'])) {
1512
-					$where[] = $_methode_parent['condition'];
1513
-				}
1514
-			} else {
1515
-				// Les enfants sont stockés dans une table différente de l'objet parent.
1516
-				$table_enfant = $_methode_parent['table'];
1517
-				$cle_objet_enfant = isset($_methode_parent['source_champ'])
1518
-					? $_methode_parent['source_champ']
1519
-					: id_table_objet($objet_enfant);
1520
-
1521
-				// S'il y a une condition supplémentaire
1522
-				if (isset($_methode_parent['table_condition'])) {
1523
-					$where[] = $_methode_parent['table_condition'];
1524
-				}
1525
-			}
1526
-
1527
-			// On lance la requête
1528
-			$is_table_lien = (strpos($table_enfant, '_liens') !== false and substr($table_enfant, -6) === '_liens');
1529
-			if ($rows = sql_allfetsel($is_table_lien ? '*' : $cle_objet_enfant, $table_enfant, $where)) {
1530
-				$enfant = [
1531
-					'objet' => $objet_enfant,
1532
-					'id_objet' => 0,
1533
-					'table' => $table_enfant
1534
-				];
1535
-				if (isset($_methode_parent['champ'])) {
1536
-					$enfant['champ'] = $_methode_parent['champ'];
1537
-				}
1538
-				if (isset($_methode_parent['champ_type'])) {
1539
-					$enfant['champ_type'] = $_methode_parent['champ_type'];
1540
-				}
1541
-				foreach ($rows as $row) {
1542
-					$enfant['id_objet'] = intval($row[$cle_objet_enfant]);
1543
-					if ($is_table_lien) {
1544
-						$enfant['lien'] = $row;
1545
-					}
1546
-					$enfants[] = $enfant;
1547
-				}
1548
-			}
1549
-		}
1550
-	}
1551
-
1552
-	// On passe par un pipeline avant de retourner
1553
-	$enfants = pipeline(
1554
-		'objet_lister_enfants',
1555
-		[
1556
-			'args' => [
1557
-				'objet' => $objet,
1558
-				'id_objet' => $id_objet,
1559
-			],
1560
-			'data' => $enfants,
1561
-		]
1562
-	);
1563
-
1564
-	return $enfants;
1484
+    $enfants = [];
1485
+
1486
+    // Si on trouve des types d'enfants et leurs méthodes
1487
+    if ($enfants_methodes = objet_type_decrire_infos_enfants($objet)) {
1488
+        include_spip('base/abstract_sql');
1489
+        $id_objet = intval($id_objet);
1490
+
1491
+        // On parcourt tous les types d'enfants trouvés
1492
+        foreach ($enfants_methodes as $objet_enfant => $_methode_parent) {
1493
+            // On construit les conditions d'identification du parent
1494
+            $where = [];
1495
+            // -- L'identifiant du parent
1496
+            if (isset($_methode_parent['champ'])) {
1497
+                $where[] = $_methode_parent['champ'] . ' = ' . $id_objet;
1498
+            }
1499
+            // -- Si le parent est variable
1500
+            if (isset($_methode_parent['champ_type'])) {
1501
+                $where[] = $_methode_parent['champ_type'] . ' = ' . sql_quote($objet);
1502
+            }
1503
+
1504
+            // On détermine la table, le champ id des enfants et on complète éventuellement les conditions
1505
+            if (!isset($_methode_parent['table'])) {
1506
+                // Les enfants sont stockés dans la même table que l'objet parent :
1507
+                $table_enfant = table_objet_sql($objet_enfant);
1508
+                $cle_objet_enfant = id_table_objet($objet_enfant);
1509
+
1510
+                // S'il y a une condition supplémentaire
1511
+                if (isset($_methode_parent['condition'])) {
1512
+                    $where[] = $_methode_parent['condition'];
1513
+                }
1514
+            } else {
1515
+                // Les enfants sont stockés dans une table différente de l'objet parent.
1516
+                $table_enfant = $_methode_parent['table'];
1517
+                $cle_objet_enfant = isset($_methode_parent['source_champ'])
1518
+                    ? $_methode_parent['source_champ']
1519
+                    : id_table_objet($objet_enfant);
1520
+
1521
+                // S'il y a une condition supplémentaire
1522
+                if (isset($_methode_parent['table_condition'])) {
1523
+                    $where[] = $_methode_parent['table_condition'];
1524
+                }
1525
+            }
1526
+
1527
+            // On lance la requête
1528
+            $is_table_lien = (strpos($table_enfant, '_liens') !== false and substr($table_enfant, -6) === '_liens');
1529
+            if ($rows = sql_allfetsel($is_table_lien ? '*' : $cle_objet_enfant, $table_enfant, $where)) {
1530
+                $enfant = [
1531
+                    'objet' => $objet_enfant,
1532
+                    'id_objet' => 0,
1533
+                    'table' => $table_enfant
1534
+                ];
1535
+                if (isset($_methode_parent['champ'])) {
1536
+                    $enfant['champ'] = $_methode_parent['champ'];
1537
+                }
1538
+                if (isset($_methode_parent['champ_type'])) {
1539
+                    $enfant['champ_type'] = $_methode_parent['champ_type'];
1540
+                }
1541
+                foreach ($rows as $row) {
1542
+                    $enfant['id_objet'] = intval($row[$cle_objet_enfant]);
1543
+                    if ($is_table_lien) {
1544
+                        $enfant['lien'] = $row;
1545
+                    }
1546
+                    $enfants[] = $enfant;
1547
+                }
1548
+            }
1549
+        }
1550
+    }
1551
+
1552
+    // On passe par un pipeline avant de retourner
1553
+    $enfants = pipeline(
1554
+        'objet_lister_enfants',
1555
+        [
1556
+            'args' => [
1557
+                'objet' => $objet,
1558
+                'id_objet' => $id_objet,
1559
+            ],
1560
+            'data' => $enfants,
1561
+        ]
1562
+    );
1563
+
1564
+    return $enfants;
1565 1565
 }
1566 1566
 
1567 1567
 /**
@@ -1573,17 +1573,17 @@  discard block
 block discarded – undo
1573 1573
  * @return array
1574 1574
  */
1575 1575
 function objet_lister_enfants_par_type($objet, $id_objet) {
1576
-	$enfants = objet_lister_enfants($objet, $id_objet);
1576
+    $enfants = objet_lister_enfants($objet, $id_objet);
1577 1577
 
1578
-	$enfants_par_type = [];
1579
-	foreach ($enfants as $enfant) {
1580
-		if (!isset($enfants_par_type[$enfant['objet']])) {
1581
-			$enfants_par_type[$enfant['objet']] = [];
1582
-		}
1583
-		$enfants_par_type[$enfant['objet']][] = $enfant['id_objet'];
1584
-	}
1578
+    $enfants_par_type = [];
1579
+    foreach ($enfants as $enfant) {
1580
+        if (!isset($enfants_par_type[$enfant['objet']])) {
1581
+            $enfants_par_type[$enfant['objet']] = [];
1582
+        }
1583
+        $enfants_par_type[$enfant['objet']][] = $enfant['id_objet'];
1584
+    }
1585 1585
 
1586
-	return $enfants_par_type;
1586
+    return $enfants_par_type;
1587 1587
 }
1588 1588
 
1589 1589
 /**
@@ -1595,35 +1595,35 @@  discard block
 block discarded – undo
1595 1595
  *     Retourne un tableau de tableau contenant les informations de type et de champ pour trouver le parent ou false sinon
1596 1596
  */
1597 1597
 function objet_type_decrire_infos_parents($objet) {
1598
-	static $parents = [];
1599
-
1600
-	// Si on ne l'a pas encore cherché pour cet objet
1601
-	if (!isset($parents[$objet])) {
1602
-		$parents[$objet] = false;
1603
-		$table = table_objet_sql($objet);
1604
-
1605
-		// Si on trouve bien la description de cet objet
1606
-		if ($infos = lister_tables_objets_sql($table)) {
1607
-			if (isset($infos['parent']) and is_array($infos['parent'])) {
1608
-				// S'il y a une description explicite de parent, c'est prioritaire
1609
-				// -- on traite les cas où il y a une ou plusieurs description mais on renvoie toujours un tableau
1610
-				//    de description
1611
-				if (!isset($infos['parent'][0])) {
1612
-					$parents[$objet] = [$infos['parent']];
1613
-				} else {
1614
-					$parents[$objet] = $infos['parent'];
1615
-				}
1616
-			} elseif (isset($infos['field']['id_rubrique'])) {
1617
-				// Sinon on cherche des cas courants connus magiquement, à commencer par id_rubrique
1618
-				$parents[$objet] = [['type' => 'rubrique', 'champ' => 'id_rubrique']];
1619
-			} elseif (isset($infos['field']['id_parent'])) {
1620
-				// Sinon on cherche un champ id_parent, ce qui signifie que l'objet est parent de lui-même
1621
-				$parents[$objet] = [['type' => $objet, 'champ' => 'id_parent']];
1622
-			}
1623
-		}
1624
-	}
1625
-
1626
-	return $parents[$objet];
1598
+    static $parents = [];
1599
+
1600
+    // Si on ne l'a pas encore cherché pour cet objet
1601
+    if (!isset($parents[$objet])) {
1602
+        $parents[$objet] = false;
1603
+        $table = table_objet_sql($objet);
1604
+
1605
+        // Si on trouve bien la description de cet objet
1606
+        if ($infos = lister_tables_objets_sql($table)) {
1607
+            if (isset($infos['parent']) and is_array($infos['parent'])) {
1608
+                // S'il y a une description explicite de parent, c'est prioritaire
1609
+                // -- on traite les cas où il y a une ou plusieurs description mais on renvoie toujours un tableau
1610
+                //    de description
1611
+                if (!isset($infos['parent'][0])) {
1612
+                    $parents[$objet] = [$infos['parent']];
1613
+                } else {
1614
+                    $parents[$objet] = $infos['parent'];
1615
+                }
1616
+            } elseif (isset($infos['field']['id_rubrique'])) {
1617
+                // Sinon on cherche des cas courants connus magiquement, à commencer par id_rubrique
1618
+                $parents[$objet] = [['type' => 'rubrique', 'champ' => 'id_rubrique']];
1619
+            } elseif (isset($infos['field']['id_parent'])) {
1620
+                // Sinon on cherche un champ id_parent, ce qui signifie que l'objet est parent de lui-même
1621
+                $parents[$objet] = [['type' => $objet, 'champ' => 'id_parent']];
1622
+            }
1623
+        }
1624
+    }
1625
+
1626
+    return $parents[$objet];
1627 1627
 }
1628 1628
 
1629 1629
 /**
@@ -1635,36 +1635,36 @@  discard block
 block discarded – undo
1635 1635
  *     Retourne un tableau de tableaux contenant chacun les informations d'un type d'enfant
1636 1636
  */
1637 1637
 function objet_type_decrire_infos_enfants($objet) {
1638
-	static $enfants = [];
1639
-
1640
-	// Si on a déjà fait la recherche pour ce type d'objet
1641
-	if (!isset($enfants[$objet])) {
1642
-		$enfants[$objet] = [];
1643
-		$tables = lister_tables_objets_sql();
1644
-
1645
-		// On parcourt toutes les tables d'objet, et on cherche si chacune peut être enfant
1646
-		foreach ($tables as $table => $infos) {
1647
-			$objet_enfant = objet_type($table);
1648
-
1649
-			// On ne va pas refaire les tests des différents cas, on réutilise
1650
-			if ($parent_methodes = objet_type_decrire_infos_parents($objet_enfant)) {
1651
-				// On parcourt les différents cas possible, si certains peuvent concerner l'objet demandé
1652
-				foreach ($parent_methodes as $parent_methode) {
1653
-					// Si la méthode qu'on teste n'exclut pas le parent demandé
1654
-					if (!isset($parent_methode['exclus']) or !in_array($objet, $parent_methode['exclus'])) {
1655
-						// Si le type du parent est fixe et directement l'objet demandé
1656
-						if (isset($parent_methode['type']) and isset($parent_methode['champ']) and $parent_methode['type'] == $objet) {
1657
-							$enfants[$objet][$objet_enfant] = $parent_methode;
1658
-						}
1659
-						// Si le type est variable, alors l'objet demandé peut forcément être parent
1660
-						elseif (isset($parent_methode['champ_type']) and isset($parent_methode['champ'])) {
1661
-							$enfants[$objet][$objet_enfant] = $parent_methode;
1662
-						}
1663
-					}
1664
-				}
1665
-			}
1666
-		}
1667
-	}
1668
-
1669
-	return $enfants[$objet];
1638
+    static $enfants = [];
1639
+
1640
+    // Si on a déjà fait la recherche pour ce type d'objet
1641
+    if (!isset($enfants[$objet])) {
1642
+        $enfants[$objet] = [];
1643
+        $tables = lister_tables_objets_sql();
1644
+
1645
+        // On parcourt toutes les tables d'objet, et on cherche si chacune peut être enfant
1646
+        foreach ($tables as $table => $infos) {
1647
+            $objet_enfant = objet_type($table);
1648
+
1649
+            // On ne va pas refaire les tests des différents cas, on réutilise
1650
+            if ($parent_methodes = objet_type_decrire_infos_parents($objet_enfant)) {
1651
+                // On parcourt les différents cas possible, si certains peuvent concerner l'objet demandé
1652
+                foreach ($parent_methodes as $parent_methode) {
1653
+                    // Si la méthode qu'on teste n'exclut pas le parent demandé
1654
+                    if (!isset($parent_methode['exclus']) or !in_array($objet, $parent_methode['exclus'])) {
1655
+                        // Si le type du parent est fixe et directement l'objet demandé
1656
+                        if (isset($parent_methode['type']) and isset($parent_methode['champ']) and $parent_methode['type'] == $objet) {
1657
+                            $enfants[$objet][$objet_enfant] = $parent_methode;
1658
+                        }
1659
+                        // Si le type est variable, alors l'objet demandé peut forcément être parent
1660
+                        elseif (isset($parent_methode['champ_type']) and isset($parent_methode['champ'])) {
1661
+                            $enfants[$objet][$objet_enfant] = $parent_methode;
1662
+                        }
1663
+                    }
1664
+                }
1665
+            }
1666
+        }
1667
+    }
1668
+
1669
+    return $enfants[$objet];
1670 1670
 }
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -703,7 +703,7 @@  discard block
 block discarded – undo
703 703
 		$infos['url_voir'] = $infos['type'];
704 704
 	}
705 705
 	if (!isset($infos['url_edit'])) {
706
-		$infos['url_edit'] = $infos['url_voir'] . ($infos['editable'] ? '_edit' : '');
706
+		$infos['url_edit'] = $infos['url_voir'].($infos['editable'] ? '_edit' : '');
707 707
 	}
708 708
 	if (!isset($infos['icone_objet'])) {
709 709
 		$infos['icone_objet'] = $infos['type'];
@@ -715,48 +715,48 @@  discard block
 block discarded – undo
715 715
 		$infos['texte_retour'] = 'icone_retour';
716 716
 	}
717 717
 	if (!isset($infos['texte_modifier'])) {
718
-		$infos['texte_modifier'] = $infos['type'] . ':' . 'icone_modifier_' . $infos['type'];
718
+		$infos['texte_modifier'] = $infos['type'].':'.'icone_modifier_'.$infos['type'];
719 719
 	}
720 720
 	if (!isset($infos['texte_creer'])) {
721
-		$infos['texte_creer'] = $infos['type'] . ':' . 'icone_creer_' . $infos['type'];
721
+		$infos['texte_creer'] = $infos['type'].':'.'icone_creer_'.$infos['type'];
722 722
 	}
723 723
 	if (!isset($infos['texte_creer_associer'])) {
724
-		$infos['texte_creer_associer'] = $infos['type'] . ':' . 'texte_creer_associer_' . $infos['type'];
724
+		$infos['texte_creer_associer'] = $infos['type'].':'.'texte_creer_associer_'.$infos['type'];
725 725
 	}
726 726
 	if (!isset($infos['texte_ajouter'])) {
727 727
 		// Ajouter un X
728
-		$infos['texte_ajouter'] = $infos['type'] . ':' . 'texte_ajouter_' . $infos['type'];
728
+		$infos['texte_ajouter'] = $infos['type'].':'.'texte_ajouter_'.$infos['type'];
729 729
 	}
730 730
 	if (!isset($infos['texte_objets'])) {
731
-		$infos['texte_objets'] = $infos['type'] . ':' . 'titre_' . $infos['table_objet'];
731
+		$infos['texte_objets'] = $infos['type'].':'.'titre_'.$infos['table_objet'];
732 732
 	}
733 733
 	if (!isset($infos['texte_objet'])) {
734
-		$infos['texte_objet'] = $infos['type'] . ':' . 'titre_' . $infos['type'];
734
+		$infos['texte_objet'] = $infos['type'].':'.'titre_'.$infos['type'];
735 735
 	}
736 736
 	if (!isset($infos['texte_logo_objet'])) {
737 737
 		// objet:titre_logo_objet "Logo de ce X"
738
-		$infos['texte_logo_objet'] = $infos['type'] . ':' . 'titre_logo_' . $infos['type'];
738
+		$infos['texte_logo_objet'] = $infos['type'].':'.'titre_logo_'.$infos['type'];
739 739
 	}
740 740
 	if (!isset($infos['texte_langue_objet'])) {
741 741
 		// objet:texte_langue_objet "Langue de ce X"
742
-		$infos['texte_langue_objet'] = $infos['type'] . ':' . 'titre_langue_' . $infos['type'];
742
+		$infos['texte_langue_objet'] = $infos['type'].':'.'titre_langue_'.$infos['type'];
743 743
 	}
744 744
 	if (!isset($infos['texte_definir_comme_traduction_objet'])) {
745 745
 		// "Ce X est une traduction du X numéro :"
746
-		$infos['texte_definir_comme_traduction_objet'] = $infos['type'] . ':' . 'texte_definir_comme_traduction_' . $infos['type'];
746
+		$infos['texte_definir_comme_traduction_objet'] = $infos['type'].':'.'texte_definir_comme_traduction_'.$infos['type'];
747 747
 	}
748 748
 
749 749
 	// objet:info_aucun_objet
750 750
 	if (!isset($infos['info_aucun_objet'])) {
751
-		$infos['info_aucun_objet'] = $infos['type'] . ':' . 'info_aucun_' . $infos['type'];
751
+		$infos['info_aucun_objet'] = $infos['type'].':'.'info_aucun_'.$infos['type'];
752 752
 	}
753 753
 	// objet:info_1_objet
754 754
 	if (!isset($infos['info_1_objet'])) {
755
-		$infos['info_1_objet'] = $infos['type'] . ':' . 'info_1_' . $infos['type'];
755
+		$infos['info_1_objet'] = $infos['type'].':'.'info_1_'.$infos['type'];
756 756
 	}
757 757
 	// objet:info_nb_objets
758 758
 	if (!isset($infos['info_nb_objets'])) {
759
-		$infos['info_nb_objets'] = $infos['type'] . ':' . 'info_nb_' . $infos['table_objet'];
759
+		$infos['info_nb_objets'] = $infos['type'].':'.'info_nb_'.$infos['table_objet'];
760 760
 	}
761 761
 
762 762
 	if (!isset($infos['champs_editables'])) {
@@ -958,7 +958,7 @@  discard block
 block discarded – undo
958 958
 		}
959 959
 		$ts = sql_alltable(null, $serveur); // toutes les tables "spip_" (ou prefixe perso)
960 960
 		$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
961
-		$spip = $connexion['prefixe'] . '_';
961
+		$spip = $connexion['prefixe'].'_';
962 962
 		foreach ($ts as $t) {
963 963
 			$t = substr($t, strlen($spip));
964 964
 			$tables[$serveur]["spip_$t"] = $t;
@@ -1023,10 +1023,10 @@  discard block
 block discarded – undo
1023 1023
 	if ($serveur !== false) {
1024 1024
 		$t = lister_tables_spip($serveur);
1025 1025
 		$trouver_table = charger_fonction('trouver_table', 'base');
1026
-		$typetrim = rtrim($type, 's') . 's';
1026
+		$typetrim = rtrim($type, 's').'s';
1027 1027
 		if (
1028 1028
 			(isset($t[$typetrim]) or in_array($typetrim, $t))
1029
-			and ($desc = $trouver_table(rtrim($type, 's') . 's', $serveur))
1029
+			and ($desc = $trouver_table(rtrim($type, 's').'s', $serveur))
1030 1030
 		) {
1031 1031
 			return $desc['id_table'];
1032 1032
 		} elseif (
@@ -1036,11 +1036,11 @@  discard block
 block discarded – undo
1036 1036
 			return $desc['id_table'];
1037 1037
 		}
1038 1038
 
1039
-		spip_log('table_objet(' . $type . ') calculee sans verification');
1039
+		spip_log('table_objet('.$type.') calculee sans verification');
1040 1040
 		#spip_log(debug_backtrace(),'db');
1041 1041
 	}
1042 1042
 
1043
-	return rtrim($type, 's') . 's'; # cas historique ne devant plus servir, sauf si $serveur=false
1043
+	return rtrim($type, 's').'s'; # cas historique ne devant plus servir, sauf si $serveur=false
1044 1044
 }
1045 1045
 
1046 1046
 /**
@@ -1221,7 +1221,7 @@  discard block
 block discarded – undo
1221 1221
 function objet_test_si_publie($objet, $id_objet, $serveur = '') {
1222 1222
 	// voir si une fonction est definie pour faire le boulot
1223 1223
 	// elle a la priorite dans ce cas
1224
-	if ($f = charger_fonction($objet . '_test_si_publie', 'base', true)) {
1224
+	if ($f = charger_fonction($objet.'_test_si_publie', 'base', true)) {
1225 1225
 		return $f($objet, $id_objet, $serveur);
1226 1226
 	}
1227 1227
 
@@ -1243,7 +1243,7 @@  discard block
 block discarded – undo
1243 1243
 		$boucle->sql_serveur = $serveur;
1244 1244
 		$boucle->select[] = $id_table_objet;
1245 1245
 		$boucle->from[$table_objet] = table_objet_sql($objet, $serveur);
1246
-		$boucle->where[] = $id_table . '.' . $id_table_objet . '=' . intval($id_objet);
1246
+		$boucle->where[] = $id_table.'.'.$id_table_objet.'='.intval($id_objet);
1247 1247
 
1248 1248
 		$boucle->descr['nom'] = 'objet_test_si_publie'; // eviter notice php
1249 1249
 		$boucle->descr['sourcefile'] = 'internal';
@@ -1370,7 +1370,7 @@  discard block
 block discarded – undo
1370 1370
 						? "{$parent_methode['source_champ']} = $id_objet"
1371 1371
 						: "${cle_objet} = $id_objet";
1372 1372
 					if (isset($parent_methode['source_champ_type'])) {
1373
-						$where[] = "{$parent_methode['source_champ_type']} = " . sql_quote($objet);
1373
+						$where[] = "{$parent_methode['source_champ_type']} = ".sql_quote($objet);
1374 1374
 					}
1375 1375
 					// -- Condition supplémentaire sur la détection du parent
1376 1376
 					if (isset($parent_methode['table_condition'])) {
@@ -1494,11 +1494,11 @@  discard block
 block discarded – undo
1494 1494
 			$where = [];
1495 1495
 			// -- L'identifiant du parent
1496 1496
 			if (isset($_methode_parent['champ'])) {
1497
-				$where[] = $_methode_parent['champ'] . ' = ' . $id_objet;
1497
+				$where[] = $_methode_parent['champ'].' = '.$id_objet;
1498 1498
 			}
1499 1499
 			// -- Si le parent est variable
1500 1500
 			if (isset($_methode_parent['champ_type'])) {
1501
-				$where[] = $_methode_parent['champ_type'] . ' = ' . sql_quote($objet);
1501
+				$where[] = $_methode_parent['champ_type'].' = '.sql_quote($objet);
1502 1502
 			}
1503 1503
 
1504 1504
 			// On détermine la table, le champ id des enfants et on complète éventuellement les conditions
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -1395,8 +1395,7 @@
 block discarded – undo
1395 1395
 							'champ' 	=> $parent_methode['champ'],
1396 1396
 							'table'    => $table,
1397 1397
 						];
1398
-					}
1399
-					elseif (isset($parent_methode['champ_type'])) {
1398
+					} elseif (isset($parent_methode['champ_type'])) {
1400 1399
 						$parent = [
1401 1400
 							'objet' 	 => $ligne[$parent_methode['champ_type']],
1402 1401
 							'id_objet' 	 => intval($ligne[$parent_methode['champ']]),
Please login to merge, or discard this patch.