Completed
Push — master ( 495b69...46b1b0 )
by cam
01:05
created
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/objets.php 3 patches
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.
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'])) {
@@ -956,7 +956,7 @@  discard block
 block discarded – undo
956 956
 		}
957 957
 		$ts = sql_alltable(null, $serveur); // toutes les tables "spip_" (ou prefixe perso)
958 958
 		$connexion = $GLOBALS['connexions'][$serveur ?: 0];
959
-		$spip = $connexion['prefixe'] . '_';
959
+		$spip = $connexion['prefixe'].'_';
960 960
 		foreach ($ts as $t) {
961 961
 			$t = substr($t, strlen($spip));
962 962
 			$tables[$serveur]["spip_$t"] = $t;
@@ -1025,10 +1025,10 @@  discard block
 block discarded – undo
1025 1025
 	if ($serveur !== false) {
1026 1026
 		$t = lister_tables_spip($serveur);
1027 1027
 		$trouver_table = charger_fonction('trouver_table', 'base');
1028
-		$typetrim = rtrim($type, 's') . 's';
1028
+		$typetrim = rtrim($type, 's').'s';
1029 1029
 		if (
1030 1030
 			(isset($t[$typetrim]) or in_array($typetrim, $t))
1031
-			and ($desc = $trouver_table(rtrim($type, 's') . 's', $serveur))
1031
+			and ($desc = $trouver_table(rtrim($type, 's').'s', $serveur))
1032 1032
 		) {
1033 1033
 			return $desc['id_table'];
1034 1034
 		} elseif (
@@ -1038,11 +1038,11 @@  discard block
 block discarded – undo
1038 1038
 			return $desc['id_table'];
1039 1039
 		}
1040 1040
 
1041
-		spip_log('table_objet(' . $type . ') calculee sans verification');
1041
+		spip_log('table_objet('.$type.') calculee sans verification');
1042 1042
 		#spip_log(debug_backtrace(),'db');
1043 1043
 	}
1044 1044
 
1045
-	return rtrim($type, 's') . 's'; # cas historique ne devant plus servir, sauf si $serveur=false
1045
+	return rtrim($type, 's').'s'; # cas historique ne devant plus servir, sauf si $serveur=false
1046 1046
 }
1047 1047
 
1048 1048
 /**
@@ -1226,7 +1226,7 @@  discard block
 block discarded – undo
1226 1226
 function objet_test_si_publie($objet, $id_objet, $serveur = '') {
1227 1227
 	// voir si une fonction est definie pour faire le boulot
1228 1228
 	// elle a la priorite dans ce cas
1229
-	if ($f = charger_fonction($objet . '_test_si_publie', 'base', true)) {
1229
+	if ($f = charger_fonction($objet.'_test_si_publie', 'base', true)) {
1230 1230
 		return $f($objet, $id_objet, $serveur);
1231 1231
 	}
1232 1232
 
@@ -1248,7 +1248,7 @@  discard block
 block discarded – undo
1248 1248
 		$boucle->sql_serveur = $serveur;
1249 1249
 		$boucle->select[] = $id_table_objet;
1250 1250
 		$boucle->from[$table_objet] = table_objet_sql($objet, $serveur);
1251
-		$boucle->where[] = $id_table . '.' . $id_table_objet . '=' . intval($id_objet);
1251
+		$boucle->where[] = $id_table.'.'.$id_table_objet.'='.intval($id_objet);
1252 1252
 
1253 1253
 		$boucle->descr['nom'] = 'objet_test_si_publie'; // eviter notice php
1254 1254
 		$boucle->descr['sourcefile'] = 'internal';
@@ -1375,7 +1375,7 @@  discard block
 block discarded – undo
1375 1375
 						? "{$parent_methode['source_champ']} = $id_objet"
1376 1376
 						: "${cle_objet} = $id_objet";
1377 1377
 					if (isset($parent_methode['source_champ_type'])) {
1378
-						$where[] = "{$parent_methode['source_champ_type']} = " . sql_quote($objet);
1378
+						$where[] = "{$parent_methode['source_champ_type']} = ".sql_quote($objet);
1379 1379
 					}
1380 1380
 					// -- Condition supplémentaire sur la détection du parent
1381 1381
 					if (isset($parent_methode['table_condition'])) {
@@ -1499,11 +1499,11 @@  discard block
 block discarded – undo
1499 1499
 			$where = [];
1500 1500
 			// -- L'identifiant du parent
1501 1501
 			if (isset($_methode_parent['champ'])) {
1502
-				$where[] = $_methode_parent['champ'] . ' = ' . $id_objet;
1502
+				$where[] = $_methode_parent['champ'].' = '.$id_objet;
1503 1503
 			}
1504 1504
 			// -- Si le parent est variable
1505 1505
 			if (isset($_methode_parent['champ_type'])) {
1506
-				$where[] = $_methode_parent['champ_type'] . ' = ' . sql_quote($objet);
1506
+				$where[] = $_methode_parent['champ_type'].' = '.sql_quote($objet);
1507 1507
 			}
1508 1508
 
1509 1509
 			// 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.
Indentation   +1256 added lines, -1256 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
 /**
@@ -55,440 +55,440 @@  discard block
 block discarded – undo
55 55
  *   - string (interne) si table '::md5' retourne un hash
56 56
  */
57 57
 function lister_tables_objets_sql(?string $table_sql = null, $desc = []) {
58
-	static $deja_la = false;
59
-	static $infos_tables = null;
60
-	static $md5 = null;
61
-	static $plugin_hash = null;
62
-
63
-	// plugins hash connu ? non si _CACHE_PLUGINS_OPT est pas encore chargé.
64
-	$_PLUGINS_HASH = defined('_PLUGINS_HASH') ? _PLUGINS_HASH : '!_CACHE_PLUGINS_OPT';
65
-
66
-	// prealablement recuperer les tables_principales
67
-	if (is_null($infos_tables) or $plugin_hash !== $_PLUGINS_HASH) {
68
-		// pas de reentrance (cas base/serial)
69
-		if ($deja_la) {
70
-			spip_log('Re-entrance anormale sur lister_tables_objets_sql : '
71
-				. var_export(debug_backtrace(), true), _LOG_CRITIQUE);
72
-
73
-			return ($table_sql === '::md5' ? $md5 : []);
74
-		}
75
-		$deja_la = true;
76
-		$plugin_hash = $_PLUGINS_HASH; // avant de lancer les pipelines
77
-
78
-		// recuperer les declarations explicites ancienne mode
79
-		// qui servent a completer declarer_tables_objets_sql
80
-		base_serial($GLOBALS['tables_principales']);
81
-		base_auxiliaires($GLOBALS['tables_auxiliaires']);
82
-		$infos_tables = [
83
-			'spip_articles' => [
84
-				'page' => 'article',
85
-				'texte_retour' => 'icone_retour_article',
86
-				'texte_modifier' => 'icone_modifier_article',
87
-				'texte_creer' => 'icone_ecrire_article',
88
-				'texte_objets' => 'public:articles',
89
-				'texte_objet' => 'public:article',
90
-				'texte_signale_edition' => 'texte_travail_article',
91
-				'info_aucun_objet' => 'info_aucun_article',
92
-				'info_1_objet' => 'info_1_article',
93
-				'info_nb_objets' => 'info_nb_articles',
94
-				'texte_logo_objet' => 'logo_article',
95
-				'texte_langue_objet' => 'titre_langue_article',
96
-				'texte_definir_comme_traduction_objet' => 'trad_lier',
97
-				'titre' => 'titre, lang',
98
-				'date' => 'date',
99
-				'principale' => 'oui',
100
-				'introduction_longueur' => '500',
101
-				'champs_editables' => [
102
-					'surtitre',
103
-					'titre',
104
-					'soustitre',
105
-					'descriptif',
106
-					'nom_site',
107
-					'url_site',
108
-					'chapo',
109
-					'texte',
110
-					'ps',
111
-					'virtuel'
112
-				],
113
-				'champs_versionnes' => [
114
-					'id_rubrique',
115
-					'surtitre',
116
-					'titre',
117
-					'soustitre',
118
-					'jointure_auteurs',
119
-					'descriptif',
120
-					'nom_site',
121
-					'url_site',
122
-					'chapo',
123
-					'texte',
124
-					'ps'
125
-				],
126
-				'field' => [
127
-					'id_article' => 'bigint(21) NOT NULL',
128
-					'surtitre' => "text DEFAULT '' NOT NULL",
129
-					'titre' => "text DEFAULT '' NOT NULL",
130
-					'soustitre' => "text DEFAULT '' NOT NULL",
131
-					'id_rubrique' => "bigint(21) DEFAULT '0' NOT NULL",
132
-					'descriptif' => "text DEFAULT '' NOT NULL",
133
-					'chapo' => "mediumtext DEFAULT '' NOT NULL",
134
-					'texte' => "longtext DEFAULT '' NOT NULL",
135
-					'ps' => "mediumtext DEFAULT '' NOT NULL",
136
-					'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
137
-					'statut' => "varchar(10) DEFAULT '0' NOT NULL",
138
-					'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
139
-					'maj' => 'TIMESTAMP',
140
-					'export' => "VARCHAR(10) DEFAULT 'oui'",
141
-					'date_redac' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
142
-					'visites' => "integer DEFAULT '0' NOT NULL",
143
-					'referers' => "integer DEFAULT '0' NOT NULL",
144
-					'popularite' => "DOUBLE DEFAULT '0' NOT NULL",
145
-					'accepter_forum' => "CHAR(3) DEFAULT '' NOT NULL",
146
-					'date_modif' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
147
-					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
148
-					'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
149
-					'id_trad' => "bigint(21) DEFAULT '0' NOT NULL",
150
-					'nom_site' => "tinytext DEFAULT '' NOT NULL",
151
-					'url_site' => "text DEFAULT '' NOT NULL",
152
-					'virtuel' => "text DEFAULT '' NOT NULL",
153
-				],
154
-				'key' => [
155
-					'PRIMARY KEY' => 'id_article',
156
-					'KEY id_rubrique' => 'id_rubrique',
157
-					'KEY id_secteur' => 'id_secteur',
158
-					'KEY id_trad' => 'id_trad',
159
-					'KEY lang' => 'lang',
160
-					'KEY statut' => 'statut, date',
161
-				],
162
-				'join' => [
163
-					'id_article' => 'id_article',
164
-					'id_rubrique' => 'id_rubrique'
165
-				],
166
-				'parent' => [
167
-					['type' => 'rubrique', 'champ' => 'id_rubrique']
168
-				],
169
-				'rechercher_champs' => [
170
-					'surtitre' => 5,
171
-					'titre' => 8,
172
-					'soustitre' => 5,
173
-					'chapo' => 3,
174
-					'texte' => 1,
175
-					'ps' => 1,
176
-					'nom_site' => 1,
177
-					'url_site' => 1,
178
-					'descriptif' => 4
179
-				],
180
-				'rechercher_jointures' => [
181
-					'auteur' => ['nom' => 10],
182
-				],
183
-				'statut' => [
184
-					[
185
-						'champ' => 'statut',
186
-						'publie' => 'publie',
187
-						'previsu' => 'publie,prop,prepa/auteur',
188
-						'post_date' => 'date',
189
-						'exception' => ['statut', 'tout']
190
-					]
191
-				],
192
-				'statut_titres' => [
193
-					'prepa' => 'info_article_redaction',
194
-					'prop' => 'info_article_propose',
195
-					'publie' => 'info_article_publie',
196
-					'refuse' => 'info_article_refuse',
197
-					'poubelle' => 'info_article_supprime'
198
-				],
199
-				'statut_textes_instituer' => [
200
-					'prepa' => 'texte_statut_en_cours_redaction',
201
-					'prop' => 'texte_statut_propose_evaluation',
202
-					'publie' => 'texte_statut_publie',
203
-					'refuse' => 'texte_statut_refuse',
204
-					'poubelle' => 'texte_statut_poubelle',
205
-				],
206
-				'texte_changer_statut' => 'texte_article_statut',
207
-				'aide_changer_statut' => 'artstatut',
208
-				'tables_jointures' => [
209
-					'profondeur' => 'rubriques',
210
-					#'id_auteur' => 'auteurs_liens' // declaration generique plus bas
211
-				],
212
-			],
213
-			'spip_auteurs' => [
214
-				'page' => 'auteur',
215
-				'texte_retour' => 'icone_retour',
216
-				'texte_ajouter' => 'titre_ajouter_un_auteur',
217
-				'texte_modifier' => 'admin_modifier_auteur',
218
-				'texte_objets' => 'icone_auteurs',
219
-				'texte_objet' => 'public:auteur',
220
-				'info_aucun_objet' => 'info_aucun_auteur',
221
-				'info_1_objet' => 'info_1_auteur',
222
-				'info_nb_objets' => 'info_nb_auteurs',
223
-				'texte_logo_objet' => 'logo_auteur',
224
-				'texte_creer_associer' => 'creer_et_associer_un_auteur',
225
-				'titre' => "nom AS titre, '' AS lang",
226
-				'date' => 'date',
227
-				'principale' => 'oui',
228
-				'champs_editables' => ['nom', 'email', 'bio', 'nom_site', 'url_site', 'imessage', 'pgp'],
229
-				'champs_versionnes' => ['nom', 'bio', 'email', 'nom_site', 'url_site', 'login'],
230
-				'field' => [
231
-					'id_auteur' => 'bigint(21) NOT NULL',
232
-					'nom' => "text DEFAULT '' NOT NULL",
233
-					'bio' => "text DEFAULT '' NOT NULL",
234
-					'email' => "tinytext DEFAULT '' NOT NULL",
235
-					'nom_site' => "tinytext DEFAULT '' NOT NULL",
236
-					'url_site' => "text DEFAULT '' NOT NULL",
237
-					'login' => 'VARCHAR(255) BINARY',
238
-					'pass' => "tinytext DEFAULT '' NOT NULL",
239
-					'low_sec' => "tinytext DEFAULT '' NOT NULL",
240
-					'statut' => "varchar(255)  DEFAULT '0' NOT NULL",
241
-					'webmestre' => "varchar(3)  DEFAULT 'non' NOT NULL",
242
-					'maj' => 'TIMESTAMP',
243
-					'pgp' => "TEXT DEFAULT '' NOT NULL",
244
-					'htpass' => "tinytext DEFAULT '' NOT NULL",
245
-					'en_ligne' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
246
-					'alea_actuel' => 'tinytext',
247
-					'alea_futur' => 'tinytext',
248
-					'prefs' => 'text',
249
-					'cookie_oubli' => 'tinytext',
250
-					'source' => "VARCHAR(10) DEFAULT 'spip' NOT NULL",
251
-					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
252
-					'imessage' => "VARCHAR(3) DEFAULT '' NOT NULL"
253
-				],
254
-				'key' => [
255
-					'PRIMARY KEY' => 'id_auteur',
256
-					'KEY login' => 'login',
257
-					'KEY statut' => 'statut',
258
-					'KEY en_ligne' => 'en_ligne',
259
-				],
260
-				'join' => [
261
-					'id_auteur' => 'id_auteur',
262
-					'login' => 'login'
263
-				],
264
-				'rechercher_champs' => [
265
-					'nom' => 5,
266
-					'bio' => 1,
267
-					'email' => 1,
268
-					'nom_site' => 1,
269
-					'url_site' => 1,
270
-					'login' => 1
271
-				],
272
-				// 2 conditions pour les auteurs : statut!=poubelle,
273
-				// et avoir des articles publies
274
-				'statut' => [
275
-					[
276
-						'champ' => 'statut',
277
-						'publie' => '!5poubelle',
278
-						'previsu' => '!5poubelle',
279
-						'exception' => 'statut'
280
-					],
281
-					[
282
-						'champ' => [
283
-							['spip_auteurs_liens', 'id_auteur'],
284
-							[
285
-								'spip_articles',
286
-								['id_objet', 'id_article', 'objet', 'article']
287
-							],
288
-							'statut'
289
-						],
290
-						'publie' => 'publie',
291
-						'previsu' => '!',
292
-						'post_date' => 'date',
293
-						'exception' => ['statut', 'lien', 'tout']
294
-					],
295
-				],
296
-				'statut_images' => [
297
-					'auteur-6forum-16.png',
298
-					'0minirezo' => 'auteur-0minirezo-16.png',
299
-					'1comite' => 'auteur-1comite-16.png',
300
-					'6forum' => 'auteur-6forum-16.png',
301
-					'5poubelle' => 'auteur-5poubelle-16.png',
302
-					'nouveau' => ''
303
-				],
304
-				'statut_titres' => [
305
-					'titre_image_visiteur',
306
-					'0minirezo' => 'titre_image_administrateur',
307
-					'1comite' => 'titre_image_redacteur_02',
308
-					'6forum' => 'titre_image_visiteur',
309
-					'5poubelle' => 'titre_image_auteur_supprime',
310
-				],
311
-				'tables_jointures' => [#'auteurs_liens' // declaration generique plus bas
312
-				],
313
-			],
314
-			'spip_rubriques' => [
315
-				'page' => 'rubrique',
316
-				'url_voir' => 'rubrique',
317
-				'url_edit' => 'rubrique_edit',
318
-				'texte_retour' => 'icone_retour',
319
-				'texte_objets' => 'public:rubriques',
320
-				'texte_objet' => 'public:rubrique',
321
-				'texte_modifier' => 'icone_modifier_rubrique',
322
-				'texte_creer' => 'icone_creer_rubrique',
323
-				'texte_ajouter' => 'titre_ajouter_une_rubrique',
324
-				'texte_creer_associer' => 'creer_et_associer_une_rubrique',
325
-				'info_aucun_objet' => 'info_aucun_rubrique',
326
-				'info_1_objet' => 'info_1_rubrique',
327
-				'info_nb_objets' => 'info_nb_rubriques',
328
-				'texte_logo_objet' => 'logo_rubrique',
329
-				'texte_langue_objet' => 'titre_langue_rubrique',
330
-				'texte_definir_comme_traduction_objet' => 'texte_definir_comme_traduction_rubrique',
331
-				'titre' => 'titre, lang',
332
-				'date' => 'date',
333
-				'principale' => 'oui',
334
-				'introduction_longueur' => '600',
335
-				'champs_editables' => ['titre', 'texte', 'descriptif', 'extra'],
336
-				'champs_versionnes' => ['titre', 'descriptif', 'texte'],
337
-				'field' => [
338
-					'id_rubrique' => 'bigint(21) NOT NULL',
339
-					'id_parent' => "bigint(21) DEFAULT '0' NOT NULL",
340
-					'titre' => "text DEFAULT '' NOT NULL",
341
-					'descriptif' => "text DEFAULT '' NOT NULL",
342
-					'texte' => "longtext DEFAULT '' NOT NULL",
343
-					'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
344
-					'maj' => 'TIMESTAMP',
345
-					'statut' => "varchar(10) DEFAULT '0' NOT NULL",
346
-					'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
347
-					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
348
-					'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
349
-					'statut_tmp' => "varchar(10) DEFAULT '0' NOT NULL",
350
-					'date_tmp' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
351
-					'profondeur' => "smallint(5) DEFAULT '0' NOT NULL"
352
-				],
353
-				'key' => [
354
-					'PRIMARY KEY' => 'id_rubrique',
355
-					'KEY lang' => 'lang',
356
-					'KEY id_parent' => 'id_parent',
357
-				],
358
-				'parent' => [
359
-					['type' => 'rubrique', 'champ' => 'id_parent']
360
-				],
361
-				'rechercher_champs' => [
362
-					'titre' => 8,
363
-					'descriptif' => 5,
364
-					'texte' => 1
365
-				],
366
-				'statut' => [
367
-					[
368
-						'champ' => 'statut',
369
-						'publie' => 'publie',
370
-						'previsu' => '!',
371
-						'exception' => ['statut', 'tout']
372
-					],
373
-				],
374
-				'tables_jointures' => [#'id_auteur' => 'auteurs_liens' // declaration generique plus bas
375
-				],
376
-			],
377
-			// toutes les tables ont le droit a une jointure sur les auteurs
378
-			['tables_jointures' => ['id_auteur' => 'auteurs_liens']]
379
-		];
380
-
381
-		// avant d'appeller les pipeline qui peuvent generer une reentrance a l'install
382
-		// initialiser la signature
383
-		$md5 = md5(serialize($infos_tables));
384
-
385
-		$GLOBALS['tables_principales'] = pipeline('declarer_tables_principales', $GLOBALS['tables_principales']);
386
-		$GLOBALS['tables_auxiliaires'] = pipeline('declarer_tables_auxiliaires', $GLOBALS['tables_auxiliaires']);
387
-		$infos_tables = pipeline('declarer_tables_objets_sql', $infos_tables);
388
-
389
-		// completer les informations manquantes ou implicites
390
-		$all = [];
391
-		foreach (array_keys($infos_tables) as $t) {
392
-			// les cles numeriques servent a declarer
393
-			// les proprietes applicables a tous les objets
394
-			// on les mets de cote
395
-			if (is_numeric($t)) {
396
-				$all = array_merge_recursive($all, $infos_tables[$t]);
397
-				unset($infos_tables[$t]);
398
-			} else {
399
-				$infos_tables[$t] = renseigner_table_objet_sql($t, $infos_tables[$t]);
400
-			}
401
-		}
402
-
403
-		// repercuter les proprietes generales communes a tous les objets
404
-		foreach (array_keys($infos_tables) as $t) {
405
-			foreach ($all as $i => $v) {
406
-				if (in_array($i, ['tables_jointures', 'champs_versionnes'])) {
407
-					$add = $all[$i];
408
-					// eviter les doublons de declaration de table jointure (ex des mots sur auteurs)
409
-					// pour les declarations generiques avec cles numeriques
410
-					if ($i == 'tables_jointures' and isset($infos_tables[$t][$i]) and is_countable($infos_tables[$t][$i]) ? count($infos_tables[$t][$i]) : 0) {
411
-						$doublons = array_intersect($infos_tables[$t][$i], $add);
412
-						foreach ($doublons as $d) {
413
-							if (
414
-								is_numeric(array_search($d, $infos_tables[$t][$i]))
415
-								and is_numeric($k = array_search($d, $add))
416
-							) {
417
-								unset($add[$k]);
418
-							}
419
-						}
420
-					}
421
-					$infos_tables[$t][$i] = array_merge($infos_tables[$t][$i] ?? [], $add);
422
-				} else {
423
-					$infos_tables[$t][$i] = array_merge_recursive(
424
-						$infos_tables[$t][$i] ?? [],
425
-						$all[$i]
426
-					);
427
-				}
428
-			}
429
-		}
430
-
431
-		// completer les tables principales et auxiliaires
432
-		// avec celles declarees uniquement dans declarer_table_objets_sql
433
-		// pour assurer la compat en transition
434
-		foreach ($infos_tables as $table => $infos) {
435
-			$principale_ou_auxiliaire = ($infos['principale'] ? 'tables_principales' : 'tables_auxiliaires');
436
-			// memoriser des champs eventuels declares par des plugins dans le pipeline tables_xxx
437
-			// qui a ete appelle avant
438
-			$mem = ($GLOBALS[$principale_ou_auxiliaire][$table] ?? []);
439
-			// l'ajouter au tableau
440
-			$GLOBALS[$principale_ou_auxiliaire][$table] = [];
441
-			if (isset($infos['field']) and isset($infos['key'])) {
442
-				foreach (['field', 'key', 'join'] as $k) {
443
-					if (isset($infos_tables[$table][$k])) {
444
-						$GLOBALS[$principale_ou_auxiliaire][$table][$k] = &$infos_tables[$table][$k];
445
-					}
446
-				}
447
-			} else {
448
-				// ici on ne renvoie que les declarations, donc RIEN
449
-				// pour avoir la vrai description en base, il faut passer par trouver_table
450
-				$GLOBALS[$principale_ou_auxiliaire][$table] = [];
451
-			}
452
-			if (is_countable($mem) ? count($mem) : 0) {
453
-				foreach (array_keys($mem) as $k) {
454
-					if (isset($GLOBALS[$principale_ou_auxiliaire][$table][$k])) {
455
-						$GLOBALS[$principale_ou_auxiliaire][$table][$k] = array_merge(
456
-							$GLOBALS[$principale_ou_auxiliaire][$table][$k],
457
-							$mem[$k]
458
-						);
459
-					} else {
460
-						$GLOBALS[$principale_ou_auxiliaire][$table][$k] = $mem[$k];
461
-					}
462
-				}
463
-			}
464
-		}
465
-
466
-		// recuperer les interfaces (table_titre, table_date)
467
-		// on ne le fait que dans un second temps pour que table_objet soit fonctionnel
468
-		// dans le pipeline de declarer_tables_interfaces
469
-		include_spip('public/interfaces');
470
-		foreach (array_keys($infos_tables) as $t) {
471
-			$infos_tables[$t] = renseigner_table_objet_interfaces($t, $infos_tables[$t]);
472
-		}
473
-
474
-		$deja_la = false;
475
-		// signature
476
-		$md5 = md5(serialize($infos_tables));
477
-	}
478
-	if ($table_sql === '::md5') {
479
-		return $md5;
480
-	}
481
-	if ($table_sql and !isset($infos_tables[$table_sql])) {
482
-		#$desc = renseigner_table_objet_sql($table_sql,$desc);
483
-		$desc = renseigner_table_objet_interfaces($table_sql, $desc);
484
-
485
-		return $desc;
486
-	}
487
-	if ($table_sql) {
488
-		return $infos_tables[$table_sql] ?? [];
489
-	}
490
-
491
-	return $infos_tables;
58
+    static $deja_la = false;
59
+    static $infos_tables = null;
60
+    static $md5 = null;
61
+    static $plugin_hash = null;
62
+
63
+    // plugins hash connu ? non si _CACHE_PLUGINS_OPT est pas encore chargé.
64
+    $_PLUGINS_HASH = defined('_PLUGINS_HASH') ? _PLUGINS_HASH : '!_CACHE_PLUGINS_OPT';
65
+
66
+    // prealablement recuperer les tables_principales
67
+    if (is_null($infos_tables) or $plugin_hash !== $_PLUGINS_HASH) {
68
+        // pas de reentrance (cas base/serial)
69
+        if ($deja_la) {
70
+            spip_log('Re-entrance anormale sur lister_tables_objets_sql : '
71
+                . var_export(debug_backtrace(), true), _LOG_CRITIQUE);
72
+
73
+            return ($table_sql === '::md5' ? $md5 : []);
74
+        }
75
+        $deja_la = true;
76
+        $plugin_hash = $_PLUGINS_HASH; // avant de lancer les pipelines
77
+
78
+        // recuperer les declarations explicites ancienne mode
79
+        // qui servent a completer declarer_tables_objets_sql
80
+        base_serial($GLOBALS['tables_principales']);
81
+        base_auxiliaires($GLOBALS['tables_auxiliaires']);
82
+        $infos_tables = [
83
+            'spip_articles' => [
84
+                'page' => 'article',
85
+                'texte_retour' => 'icone_retour_article',
86
+                'texte_modifier' => 'icone_modifier_article',
87
+                'texte_creer' => 'icone_ecrire_article',
88
+                'texte_objets' => 'public:articles',
89
+                'texte_objet' => 'public:article',
90
+                'texte_signale_edition' => 'texte_travail_article',
91
+                'info_aucun_objet' => 'info_aucun_article',
92
+                'info_1_objet' => 'info_1_article',
93
+                'info_nb_objets' => 'info_nb_articles',
94
+                'texte_logo_objet' => 'logo_article',
95
+                'texte_langue_objet' => 'titre_langue_article',
96
+                'texte_definir_comme_traduction_objet' => 'trad_lier',
97
+                'titre' => 'titre, lang',
98
+                'date' => 'date',
99
+                'principale' => 'oui',
100
+                'introduction_longueur' => '500',
101
+                'champs_editables' => [
102
+                    'surtitre',
103
+                    'titre',
104
+                    'soustitre',
105
+                    'descriptif',
106
+                    'nom_site',
107
+                    'url_site',
108
+                    'chapo',
109
+                    'texte',
110
+                    'ps',
111
+                    'virtuel'
112
+                ],
113
+                'champs_versionnes' => [
114
+                    'id_rubrique',
115
+                    'surtitre',
116
+                    'titre',
117
+                    'soustitre',
118
+                    'jointure_auteurs',
119
+                    'descriptif',
120
+                    'nom_site',
121
+                    'url_site',
122
+                    'chapo',
123
+                    'texte',
124
+                    'ps'
125
+                ],
126
+                'field' => [
127
+                    'id_article' => 'bigint(21) NOT NULL',
128
+                    'surtitre' => "text DEFAULT '' NOT NULL",
129
+                    'titre' => "text DEFAULT '' NOT NULL",
130
+                    'soustitre' => "text DEFAULT '' NOT NULL",
131
+                    'id_rubrique' => "bigint(21) DEFAULT '0' NOT NULL",
132
+                    'descriptif' => "text DEFAULT '' NOT NULL",
133
+                    'chapo' => "mediumtext DEFAULT '' NOT NULL",
134
+                    'texte' => "longtext DEFAULT '' NOT NULL",
135
+                    'ps' => "mediumtext DEFAULT '' NOT NULL",
136
+                    'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
137
+                    'statut' => "varchar(10) DEFAULT '0' NOT NULL",
138
+                    'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
139
+                    'maj' => 'TIMESTAMP',
140
+                    'export' => "VARCHAR(10) DEFAULT 'oui'",
141
+                    'date_redac' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
142
+                    'visites' => "integer DEFAULT '0' NOT NULL",
143
+                    'referers' => "integer DEFAULT '0' NOT NULL",
144
+                    'popularite' => "DOUBLE DEFAULT '0' NOT NULL",
145
+                    'accepter_forum' => "CHAR(3) DEFAULT '' NOT NULL",
146
+                    'date_modif' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
147
+                    'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
148
+                    'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
149
+                    'id_trad' => "bigint(21) DEFAULT '0' NOT NULL",
150
+                    'nom_site' => "tinytext DEFAULT '' NOT NULL",
151
+                    'url_site' => "text DEFAULT '' NOT NULL",
152
+                    'virtuel' => "text DEFAULT '' NOT NULL",
153
+                ],
154
+                'key' => [
155
+                    'PRIMARY KEY' => 'id_article',
156
+                    'KEY id_rubrique' => 'id_rubrique',
157
+                    'KEY id_secteur' => 'id_secteur',
158
+                    'KEY id_trad' => 'id_trad',
159
+                    'KEY lang' => 'lang',
160
+                    'KEY statut' => 'statut, date',
161
+                ],
162
+                'join' => [
163
+                    'id_article' => 'id_article',
164
+                    'id_rubrique' => 'id_rubrique'
165
+                ],
166
+                'parent' => [
167
+                    ['type' => 'rubrique', 'champ' => 'id_rubrique']
168
+                ],
169
+                'rechercher_champs' => [
170
+                    'surtitre' => 5,
171
+                    'titre' => 8,
172
+                    'soustitre' => 5,
173
+                    'chapo' => 3,
174
+                    'texte' => 1,
175
+                    'ps' => 1,
176
+                    'nom_site' => 1,
177
+                    'url_site' => 1,
178
+                    'descriptif' => 4
179
+                ],
180
+                'rechercher_jointures' => [
181
+                    'auteur' => ['nom' => 10],
182
+                ],
183
+                'statut' => [
184
+                    [
185
+                        'champ' => 'statut',
186
+                        'publie' => 'publie',
187
+                        'previsu' => 'publie,prop,prepa/auteur',
188
+                        'post_date' => 'date',
189
+                        'exception' => ['statut', 'tout']
190
+                    ]
191
+                ],
192
+                'statut_titres' => [
193
+                    'prepa' => 'info_article_redaction',
194
+                    'prop' => 'info_article_propose',
195
+                    'publie' => 'info_article_publie',
196
+                    'refuse' => 'info_article_refuse',
197
+                    'poubelle' => 'info_article_supprime'
198
+                ],
199
+                'statut_textes_instituer' => [
200
+                    'prepa' => 'texte_statut_en_cours_redaction',
201
+                    'prop' => 'texte_statut_propose_evaluation',
202
+                    'publie' => 'texte_statut_publie',
203
+                    'refuse' => 'texte_statut_refuse',
204
+                    'poubelle' => 'texte_statut_poubelle',
205
+                ],
206
+                'texte_changer_statut' => 'texte_article_statut',
207
+                'aide_changer_statut' => 'artstatut',
208
+                'tables_jointures' => [
209
+                    'profondeur' => 'rubriques',
210
+                    #'id_auteur' => 'auteurs_liens' // declaration generique plus bas
211
+                ],
212
+            ],
213
+            'spip_auteurs' => [
214
+                'page' => 'auteur',
215
+                'texte_retour' => 'icone_retour',
216
+                'texte_ajouter' => 'titre_ajouter_un_auteur',
217
+                'texte_modifier' => 'admin_modifier_auteur',
218
+                'texte_objets' => 'icone_auteurs',
219
+                'texte_objet' => 'public:auteur',
220
+                'info_aucun_objet' => 'info_aucun_auteur',
221
+                'info_1_objet' => 'info_1_auteur',
222
+                'info_nb_objets' => 'info_nb_auteurs',
223
+                'texte_logo_objet' => 'logo_auteur',
224
+                'texte_creer_associer' => 'creer_et_associer_un_auteur',
225
+                'titre' => "nom AS titre, '' AS lang",
226
+                'date' => 'date',
227
+                'principale' => 'oui',
228
+                'champs_editables' => ['nom', 'email', 'bio', 'nom_site', 'url_site', 'imessage', 'pgp'],
229
+                'champs_versionnes' => ['nom', 'bio', 'email', 'nom_site', 'url_site', 'login'],
230
+                'field' => [
231
+                    'id_auteur' => 'bigint(21) NOT NULL',
232
+                    'nom' => "text DEFAULT '' NOT NULL",
233
+                    'bio' => "text DEFAULT '' NOT NULL",
234
+                    'email' => "tinytext DEFAULT '' NOT NULL",
235
+                    'nom_site' => "tinytext DEFAULT '' NOT NULL",
236
+                    'url_site' => "text DEFAULT '' NOT NULL",
237
+                    'login' => 'VARCHAR(255) BINARY',
238
+                    'pass' => "tinytext DEFAULT '' NOT NULL",
239
+                    'low_sec' => "tinytext DEFAULT '' NOT NULL",
240
+                    'statut' => "varchar(255)  DEFAULT '0' NOT NULL",
241
+                    'webmestre' => "varchar(3)  DEFAULT 'non' NOT NULL",
242
+                    'maj' => 'TIMESTAMP',
243
+                    'pgp' => "TEXT DEFAULT '' NOT NULL",
244
+                    'htpass' => "tinytext DEFAULT '' NOT NULL",
245
+                    'en_ligne' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
246
+                    'alea_actuel' => 'tinytext',
247
+                    'alea_futur' => 'tinytext',
248
+                    'prefs' => 'text',
249
+                    'cookie_oubli' => 'tinytext',
250
+                    'source' => "VARCHAR(10) DEFAULT 'spip' NOT NULL",
251
+                    'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
252
+                    'imessage' => "VARCHAR(3) DEFAULT '' NOT NULL"
253
+                ],
254
+                'key' => [
255
+                    'PRIMARY KEY' => 'id_auteur',
256
+                    'KEY login' => 'login',
257
+                    'KEY statut' => 'statut',
258
+                    'KEY en_ligne' => 'en_ligne',
259
+                ],
260
+                'join' => [
261
+                    'id_auteur' => 'id_auteur',
262
+                    'login' => 'login'
263
+                ],
264
+                'rechercher_champs' => [
265
+                    'nom' => 5,
266
+                    'bio' => 1,
267
+                    'email' => 1,
268
+                    'nom_site' => 1,
269
+                    'url_site' => 1,
270
+                    'login' => 1
271
+                ],
272
+                // 2 conditions pour les auteurs : statut!=poubelle,
273
+                // et avoir des articles publies
274
+                'statut' => [
275
+                    [
276
+                        'champ' => 'statut',
277
+                        'publie' => '!5poubelle',
278
+                        'previsu' => '!5poubelle',
279
+                        'exception' => 'statut'
280
+                    ],
281
+                    [
282
+                        'champ' => [
283
+                            ['spip_auteurs_liens', 'id_auteur'],
284
+                            [
285
+                                'spip_articles',
286
+                                ['id_objet', 'id_article', 'objet', 'article']
287
+                            ],
288
+                            'statut'
289
+                        ],
290
+                        'publie' => 'publie',
291
+                        'previsu' => '!',
292
+                        'post_date' => 'date',
293
+                        'exception' => ['statut', 'lien', 'tout']
294
+                    ],
295
+                ],
296
+                'statut_images' => [
297
+                    'auteur-6forum-16.png',
298
+                    '0minirezo' => 'auteur-0minirezo-16.png',
299
+                    '1comite' => 'auteur-1comite-16.png',
300
+                    '6forum' => 'auteur-6forum-16.png',
301
+                    '5poubelle' => 'auteur-5poubelle-16.png',
302
+                    'nouveau' => ''
303
+                ],
304
+                'statut_titres' => [
305
+                    'titre_image_visiteur',
306
+                    '0minirezo' => 'titre_image_administrateur',
307
+                    '1comite' => 'titre_image_redacteur_02',
308
+                    '6forum' => 'titre_image_visiteur',
309
+                    '5poubelle' => 'titre_image_auteur_supprime',
310
+                ],
311
+                'tables_jointures' => [#'auteurs_liens' // declaration generique plus bas
312
+                ],
313
+            ],
314
+            'spip_rubriques' => [
315
+                'page' => 'rubrique',
316
+                'url_voir' => 'rubrique',
317
+                'url_edit' => 'rubrique_edit',
318
+                'texte_retour' => 'icone_retour',
319
+                'texte_objets' => 'public:rubriques',
320
+                'texte_objet' => 'public:rubrique',
321
+                'texte_modifier' => 'icone_modifier_rubrique',
322
+                'texte_creer' => 'icone_creer_rubrique',
323
+                'texte_ajouter' => 'titre_ajouter_une_rubrique',
324
+                'texte_creer_associer' => 'creer_et_associer_une_rubrique',
325
+                'info_aucun_objet' => 'info_aucun_rubrique',
326
+                'info_1_objet' => 'info_1_rubrique',
327
+                'info_nb_objets' => 'info_nb_rubriques',
328
+                'texte_logo_objet' => 'logo_rubrique',
329
+                'texte_langue_objet' => 'titre_langue_rubrique',
330
+                'texte_definir_comme_traduction_objet' => 'texte_definir_comme_traduction_rubrique',
331
+                'titre' => 'titre, lang',
332
+                'date' => 'date',
333
+                'principale' => 'oui',
334
+                'introduction_longueur' => '600',
335
+                'champs_editables' => ['titre', 'texte', 'descriptif', 'extra'],
336
+                'champs_versionnes' => ['titre', 'descriptif', 'texte'],
337
+                'field' => [
338
+                    'id_rubrique' => 'bigint(21) NOT NULL',
339
+                    'id_parent' => "bigint(21) DEFAULT '0' NOT NULL",
340
+                    'titre' => "text DEFAULT '' NOT NULL",
341
+                    'descriptif' => "text DEFAULT '' NOT NULL",
342
+                    'texte' => "longtext DEFAULT '' NOT NULL",
343
+                    'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
344
+                    'maj' => 'TIMESTAMP',
345
+                    'statut' => "varchar(10) DEFAULT '0' NOT NULL",
346
+                    'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
347
+                    'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
348
+                    'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
349
+                    'statut_tmp' => "varchar(10) DEFAULT '0' NOT NULL",
350
+                    'date_tmp' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
351
+                    'profondeur' => "smallint(5) DEFAULT '0' NOT NULL"
352
+                ],
353
+                'key' => [
354
+                    'PRIMARY KEY' => 'id_rubrique',
355
+                    'KEY lang' => 'lang',
356
+                    'KEY id_parent' => 'id_parent',
357
+                ],
358
+                'parent' => [
359
+                    ['type' => 'rubrique', 'champ' => 'id_parent']
360
+                ],
361
+                'rechercher_champs' => [
362
+                    'titre' => 8,
363
+                    'descriptif' => 5,
364
+                    'texte' => 1
365
+                ],
366
+                'statut' => [
367
+                    [
368
+                        'champ' => 'statut',
369
+                        'publie' => 'publie',
370
+                        'previsu' => '!',
371
+                        'exception' => ['statut', 'tout']
372
+                    ],
373
+                ],
374
+                'tables_jointures' => [#'id_auteur' => 'auteurs_liens' // declaration generique plus bas
375
+                ],
376
+            ],
377
+            // toutes les tables ont le droit a une jointure sur les auteurs
378
+            ['tables_jointures' => ['id_auteur' => 'auteurs_liens']]
379
+        ];
380
+
381
+        // avant d'appeller les pipeline qui peuvent generer une reentrance a l'install
382
+        // initialiser la signature
383
+        $md5 = md5(serialize($infos_tables));
384
+
385
+        $GLOBALS['tables_principales'] = pipeline('declarer_tables_principales', $GLOBALS['tables_principales']);
386
+        $GLOBALS['tables_auxiliaires'] = pipeline('declarer_tables_auxiliaires', $GLOBALS['tables_auxiliaires']);
387
+        $infos_tables = pipeline('declarer_tables_objets_sql', $infos_tables);
388
+
389
+        // completer les informations manquantes ou implicites
390
+        $all = [];
391
+        foreach (array_keys($infos_tables) as $t) {
392
+            // les cles numeriques servent a declarer
393
+            // les proprietes applicables a tous les objets
394
+            // on les mets de cote
395
+            if (is_numeric($t)) {
396
+                $all = array_merge_recursive($all, $infos_tables[$t]);
397
+                unset($infos_tables[$t]);
398
+            } else {
399
+                $infos_tables[$t] = renseigner_table_objet_sql($t, $infos_tables[$t]);
400
+            }
401
+        }
402
+
403
+        // repercuter les proprietes generales communes a tous les objets
404
+        foreach (array_keys($infos_tables) as $t) {
405
+            foreach ($all as $i => $v) {
406
+                if (in_array($i, ['tables_jointures', 'champs_versionnes'])) {
407
+                    $add = $all[$i];
408
+                    // eviter les doublons de declaration de table jointure (ex des mots sur auteurs)
409
+                    // pour les declarations generiques avec cles numeriques
410
+                    if ($i == 'tables_jointures' and isset($infos_tables[$t][$i]) and is_countable($infos_tables[$t][$i]) ? count($infos_tables[$t][$i]) : 0) {
411
+                        $doublons = array_intersect($infos_tables[$t][$i], $add);
412
+                        foreach ($doublons as $d) {
413
+                            if (
414
+                                is_numeric(array_search($d, $infos_tables[$t][$i]))
415
+                                and is_numeric($k = array_search($d, $add))
416
+                            ) {
417
+                                unset($add[$k]);
418
+                            }
419
+                        }
420
+                    }
421
+                    $infos_tables[$t][$i] = array_merge($infos_tables[$t][$i] ?? [], $add);
422
+                } else {
423
+                    $infos_tables[$t][$i] = array_merge_recursive(
424
+                        $infos_tables[$t][$i] ?? [],
425
+                        $all[$i]
426
+                    );
427
+                }
428
+            }
429
+        }
430
+
431
+        // completer les tables principales et auxiliaires
432
+        // avec celles declarees uniquement dans declarer_table_objets_sql
433
+        // pour assurer la compat en transition
434
+        foreach ($infos_tables as $table => $infos) {
435
+            $principale_ou_auxiliaire = ($infos['principale'] ? 'tables_principales' : 'tables_auxiliaires');
436
+            // memoriser des champs eventuels declares par des plugins dans le pipeline tables_xxx
437
+            // qui a ete appelle avant
438
+            $mem = ($GLOBALS[$principale_ou_auxiliaire][$table] ?? []);
439
+            // l'ajouter au tableau
440
+            $GLOBALS[$principale_ou_auxiliaire][$table] = [];
441
+            if (isset($infos['field']) and isset($infos['key'])) {
442
+                foreach (['field', 'key', 'join'] as $k) {
443
+                    if (isset($infos_tables[$table][$k])) {
444
+                        $GLOBALS[$principale_ou_auxiliaire][$table][$k] = &$infos_tables[$table][$k];
445
+                    }
446
+                }
447
+            } else {
448
+                // ici on ne renvoie que les declarations, donc RIEN
449
+                // pour avoir la vrai description en base, il faut passer par trouver_table
450
+                $GLOBALS[$principale_ou_auxiliaire][$table] = [];
451
+            }
452
+            if (is_countable($mem) ? count($mem) : 0) {
453
+                foreach (array_keys($mem) as $k) {
454
+                    if (isset($GLOBALS[$principale_ou_auxiliaire][$table][$k])) {
455
+                        $GLOBALS[$principale_ou_auxiliaire][$table][$k] = array_merge(
456
+                            $GLOBALS[$principale_ou_auxiliaire][$table][$k],
457
+                            $mem[$k]
458
+                        );
459
+                    } else {
460
+                        $GLOBALS[$principale_ou_auxiliaire][$table][$k] = $mem[$k];
461
+                    }
462
+                }
463
+            }
464
+        }
465
+
466
+        // recuperer les interfaces (table_titre, table_date)
467
+        // on ne le fait que dans un second temps pour que table_objet soit fonctionnel
468
+        // dans le pipeline de declarer_tables_interfaces
469
+        include_spip('public/interfaces');
470
+        foreach (array_keys($infos_tables) as $t) {
471
+            $infos_tables[$t] = renseigner_table_objet_interfaces($t, $infos_tables[$t]);
472
+        }
473
+
474
+        $deja_la = false;
475
+        // signature
476
+        $md5 = md5(serialize($infos_tables));
477
+    }
478
+    if ($table_sql === '::md5') {
479
+        return $md5;
480
+    }
481
+    if ($table_sql and !isset($infos_tables[$table_sql])) {
482
+        #$desc = renseigner_table_objet_sql($table_sql,$desc);
483
+        $desc = renseigner_table_objet_interfaces($table_sql, $desc);
484
+
485
+        return $desc;
486
+    }
487
+    if ($table_sql) {
488
+        return $infos_tables[$table_sql] ?? [];
489
+    }
490
+
491
+    return $infos_tables;
492 492
 }
493 493
 
494 494
 
@@ -503,27 +503,27 @@  discard block
 block discarded – undo
503 503
  **/
504 504
 function base_serial(&$tables_principales) {
505 505
 
506
-	$spip_jobs = [
507
-		'id_job' => 'bigint(21) NOT NULL',
508
-		'descriptif' => "text DEFAULT '' NOT NULL",
509
-		'fonction' => 'varchar(255) NOT NULL', //nom de la fonction
510
-		'args' => "longblob DEFAULT '' NOT NULL", // arguments
511
-		'md5args' => "char(32) NOT NULL default ''", // signature des arguments
512
-		'inclure' => 'varchar(255) NOT NULL', // fichier a inclure ou path/ pour charger_fonction
513
-		'priorite' => 'smallint(6) NOT NULL default 0',
514
-		'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // date au plus tot
515
-		'status' => 'tinyint NOT NULL default 1',
516
-	];
517
-
518
-	$spip_jobs_key = [
519
-		'PRIMARY KEY' => 'id_job',
520
-		'KEY date' => 'date',
521
-		'KEY status' => 'status',
522
-	];
523
-
524
-	/// Attention: mes_fonctions peut avoir deja defini cette variable
525
-	/// il faut donc rajouter, mais pas reinitialiser
526
-	$tables_principales['spip_jobs'] = ['field' => &$spip_jobs, 'key' => &$spip_jobs_key];
506
+    $spip_jobs = [
507
+        'id_job' => 'bigint(21) NOT NULL',
508
+        'descriptif' => "text DEFAULT '' NOT NULL",
509
+        'fonction' => 'varchar(255) NOT NULL', //nom de la fonction
510
+        'args' => "longblob DEFAULT '' NOT NULL", // arguments
511
+        'md5args' => "char(32) NOT NULL default ''", // signature des arguments
512
+        'inclure' => 'varchar(255) NOT NULL', // fichier a inclure ou path/ pour charger_fonction
513
+        'priorite' => 'smallint(6) NOT NULL default 0',
514
+        'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // date au plus tot
515
+        'status' => 'tinyint NOT NULL default 1',
516
+    ];
517
+
518
+    $spip_jobs_key = [
519
+        'PRIMARY KEY' => 'id_job',
520
+        'KEY date' => 'date',
521
+        'KEY status' => 'status',
522
+    ];
523
+
524
+    /// Attention: mes_fonctions peut avoir deja defini cette variable
525
+    /// il faut donc rajouter, mais pas reinitialiser
526
+    $tables_principales['spip_jobs'] = ['field' => &$spip_jobs, 'key' => &$spip_jobs_key];
527 527
 }
528 528
 
529 529
 
@@ -535,71 +535,71 @@  discard block
 block discarded – undo
535 535
  * @return void
536 536
  **/
537 537
 function base_auxiliaires(&$tables_auxiliaires) {
538
-	$spip_resultats = [
539
-		'recherche' => "char(16) DEFAULT '' NOT NULL",
540
-		'id' => 'INT UNSIGNED NOT NULL',
541
-		'points' => "INT UNSIGNED DEFAULT '0' NOT NULL",
542
-		'table_objet' => "varchar(30) DEFAULT '' NOT NULL",
543
-		'serveur' => "char(16) DEFAULT '' NOT NULL", // hash md5 partiel du serveur de base ('' pour le serveur principal)
544
-		'maj' => 'TIMESTAMP'
545
-	];
546
-
547
-	$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 ...
548
-	];
549
-
550
-	$spip_auteurs_liens = [
551
-		'id_auteur' => "bigint(21) DEFAULT '0' NOT NULL",
552
-		'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
553
-		'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
554
-		'vu' => "VARCHAR(6) DEFAULT 'non' NOT NULL"
555
-	];
556
-
557
-	$spip_auteurs_liens_key = [
558
-		'PRIMARY KEY' => 'id_auteur,id_objet,objet',
559
-		'KEY id_auteur' => 'id_auteur',
560
-		'KEY id_objet' => 'id_objet',
561
-		'KEY objet' => 'objet',
562
-	];
563
-
564
-	$spip_meta = [
565
-		'nom' => 'VARCHAR (255) NOT NULL',
566
-		'valeur' => "text DEFAULT ''",
567
-		'impt' => "ENUM('non', 'oui') DEFAULT 'oui' NOT NULL",
568
-		'maj' => 'TIMESTAMP'
569
-	];
570
-
571
-	$spip_meta_key = [
572
-		'PRIMARY KEY' => 'nom'
573
-	];
574
-
575
-	$spip_jobs_liens = [
576
-		'id_job' => "bigint(21) DEFAULT '0' NOT NULL",
577
-		'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
578
-		'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
579
-	];
580
-
581
-	$spip_jobs_liens_key = [
582
-		'PRIMARY KEY' => 'id_job,id_objet,objet',
583
-		'KEY id_job' => 'id_job'
584
-	];
585
-
586
-	$tables_auxiliaires['spip_auteurs_liens'] = [
587
-		'field' => &$spip_auteurs_liens,
588
-		'key' => &$spip_auteurs_liens_key
589
-	];
590
-
591
-	$tables_auxiliaires['spip_meta'] = [
592
-		'field' => &$spip_meta,
593
-		'key' => &$spip_meta_key
594
-	];
595
-	$tables_auxiliaires['spip_resultats'] = [
596
-		'field' => &$spip_resultats,
597
-		'key' => &$spip_resultats_key
598
-	];
599
-	$tables_auxiliaires['spip_jobs_liens'] = [
600
-		'field' => &$spip_jobs_liens,
601
-		'key' => &$spip_jobs_liens_key
602
-	];
538
+    $spip_resultats = [
539
+        'recherche' => "char(16) DEFAULT '' NOT NULL",
540
+        'id' => 'INT UNSIGNED NOT NULL',
541
+        'points' => "INT UNSIGNED DEFAULT '0' NOT NULL",
542
+        'table_objet' => "varchar(30) DEFAULT '' NOT NULL",
543
+        'serveur' => "char(16) DEFAULT '' NOT NULL", // hash md5 partiel du serveur de base ('' pour le serveur principal)
544
+        'maj' => 'TIMESTAMP'
545
+    ];
546
+
547
+    $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 ...
548
+    ];
549
+
550
+    $spip_auteurs_liens = [
551
+        'id_auteur' => "bigint(21) DEFAULT '0' NOT NULL",
552
+        'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
553
+        'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
554
+        'vu' => "VARCHAR(6) DEFAULT 'non' NOT NULL"
555
+    ];
556
+
557
+    $spip_auteurs_liens_key = [
558
+        'PRIMARY KEY' => 'id_auteur,id_objet,objet',
559
+        'KEY id_auteur' => 'id_auteur',
560
+        'KEY id_objet' => 'id_objet',
561
+        'KEY objet' => 'objet',
562
+    ];
563
+
564
+    $spip_meta = [
565
+        'nom' => 'VARCHAR (255) NOT NULL',
566
+        'valeur' => "text DEFAULT ''",
567
+        'impt' => "ENUM('non', 'oui') DEFAULT 'oui' NOT NULL",
568
+        'maj' => 'TIMESTAMP'
569
+    ];
570
+
571
+    $spip_meta_key = [
572
+        'PRIMARY KEY' => 'nom'
573
+    ];
574
+
575
+    $spip_jobs_liens = [
576
+        'id_job' => "bigint(21) DEFAULT '0' NOT NULL",
577
+        'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
578
+        'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
579
+    ];
580
+
581
+    $spip_jobs_liens_key = [
582
+        'PRIMARY KEY' => 'id_job,id_objet,objet',
583
+        'KEY id_job' => 'id_job'
584
+    ];
585
+
586
+    $tables_auxiliaires['spip_auteurs_liens'] = [
587
+        'field' => &$spip_auteurs_liens,
588
+        'key' => &$spip_auteurs_liens_key
589
+    ];
590
+
591
+    $tables_auxiliaires['spip_meta'] = [
592
+        'field' => &$spip_meta,
593
+        'key' => &$spip_meta_key
594
+    ];
595
+    $tables_auxiliaires['spip_resultats'] = [
596
+        'field' => &$spip_resultats,
597
+        'key' => &$spip_resultats_key
598
+    ];
599
+    $tables_auxiliaires['spip_jobs_liens'] = [
600
+        'field' => &$spip_jobs_liens,
601
+        'key' => &$spip_jobs_liens_key
602
+    ];
603 603
 }
604 604
 
605 605
 
@@ -656,129 +656,129 @@  discard block
 block discarded – undo
656 656
  * @return array
657 657
  */
658 658
 function renseigner_table_objet_sql($table_sql, &$infos) {
659
-	if (!isset($infos['type'])) {
660
-		// si on arrive de base/trouver_table, on a la cle primaire :
661
-		// s'en servir pour extrapoler le type
662
-		if (isset($infos['key']['PRIMARY KEY'])) {
663
-			$primary = $infos['key']['PRIMARY KEY'];
664
-			$primary = explode(',', $primary);
665
-			$primary = reset($primary);
666
-			$infos['type'] = preg_replace(',^spip_|^id_|s$,', '', $primary);
667
-		} else {
668
-			$infos['type'] = preg_replace(',^spip_|s$,', '', $table_sql);
669
-		}
670
-	}
671
-	if (!isset($infos['type_surnoms'])) {
672
-		$infos['type_surnoms'] = [];
673
-	}
674
-
675
-	if (!isset($infos['table_objet'])) {
676
-		$infos['table_objet'] = preg_replace(',^spip_,', '', $table_sql);
677
-	}
678
-	if (!isset($infos['table_objet_surnoms'])) {
679
-		$infos['table_objet_surnoms'] = [];
680
-	}
681
-
682
-	if (!isset($infos['principale'])) {
683
-		$infos['principale'] = (isset($GLOBALS['tables_principales'][$table_sql]) ? 'oui' : false);
684
-	}
685
-
686
-	// normaliser pour pouvoir tester en php $infos['principale']?
687
-	// et dans une boucle {principale=oui}
688
-	$infos['principale'] = (($infos['principale'] and $infos['principale'] != 'non') ? 'oui' : false);
689
-
690
-	// declarer et normaliser pour pouvoir tester en php $infos['editable']?
691
-	// et dans une boucle {editable=oui}
692
-	if (!isset($infos['editable'])) {
693
-		$infos['editable'] = 'oui';
694
-	}
695
-
696
-	$infos['editable'] = (($infos['editable'] and $infos['editable'] != 'non') ? 'oui' : false);
697
-
698
-	// les urls publiques sont par defaut page=type pour les tables principales, et rien pour les autres
699
-	// seules les exceptions sont donc a declarer
700
-	if (!isset($infos['page'])) {
701
-		$infos['page'] = ($infos['principale'] ? $infos['type'] : '');
702
-	}
703
-
704
-	if (!isset($infos['url_voir'])) {
705
-		$infos['url_voir'] = $infos['type'];
706
-	}
707
-	if (!isset($infos['url_edit'])) {
708
-		$infos['url_edit'] = $infos['url_voir'] . ($infos['editable'] ? '_edit' : '');
709
-	}
710
-	if (!isset($infos['icone_objet'])) {
711
-		$infos['icone_objet'] = $infos['type'];
712
-	}
713
-
714
-	// chaines de langue
715
-	// par defaut : objet:icone_xxx_objet
716
-	if (!isset($infos['texte_retour'])) {
717
-		$infos['texte_retour'] = 'icone_retour';
718
-	}
719
-	if (!isset($infos['texte_modifier'])) {
720
-		$infos['texte_modifier'] = $infos['type'] . ':' . 'icone_modifier_' . $infos['type'];
721
-	}
722
-	if (!isset($infos['texte_creer'])) {
723
-		$infos['texte_creer'] = $infos['type'] . ':' . 'icone_creer_' . $infos['type'];
724
-	}
725
-	if (!isset($infos['texte_creer_associer'])) {
726
-		$infos['texte_creer_associer'] = $infos['type'] . ':' . 'texte_creer_associer_' . $infos['type'];
727
-	}
728
-	if (!isset($infos['texte_ajouter'])) {
729
-		// Ajouter un X
730
-		$infos['texte_ajouter'] = $infos['type'] . ':' . 'texte_ajouter_' . $infos['type'];
731
-	}
732
-	if (!isset($infos['texte_objets'])) {
733
-		$infos['texte_objets'] = $infos['type'] . ':' . 'titre_' . $infos['table_objet'];
734
-	}
735
-	if (!isset($infos['texte_objet'])) {
736
-		$infos['texte_objet'] = $infos['type'] . ':' . 'titre_' . $infos['type'];
737
-	}
738
-	if (!isset($infos['texte_logo_objet'])) {
739
-		// objet:titre_logo_objet "Logo de ce X"
740
-		$infos['texte_logo_objet'] = $infos['type'] . ':' . 'titre_logo_' . $infos['type'];
741
-	}
742
-	if (!isset($infos['texte_langue_objet'])) {
743
-		// objet:texte_langue_objet "Langue de ce X"
744
-		$infos['texte_langue_objet'] = $infos['type'] . ':' . 'titre_langue_' . $infos['type'];
745
-	}
746
-	if (!isset($infos['texte_definir_comme_traduction_objet'])) {
747
-		// "Ce X est une traduction du X numéro :"
748
-		$infos['texte_definir_comme_traduction_objet'] = $infos['type'] . ':' . 'texte_definir_comme_traduction_' . $infos['type'];
749
-	}
750
-
751
-	// objet:info_aucun_objet
752
-	if (!isset($infos['info_aucun_objet'])) {
753
-		$infos['info_aucun_objet'] = $infos['type'] . ':' . 'info_aucun_' . $infos['type'];
754
-	}
755
-	// objet:info_1_objet
756
-	if (!isset($infos['info_1_objet'])) {
757
-		$infos['info_1_objet'] = $infos['type'] . ':' . 'info_1_' . $infos['type'];
758
-	}
759
-	// objet:info_nb_objets
760
-	if (!isset($infos['info_nb_objets'])) {
761
-		$infos['info_nb_objets'] = $infos['type'] . ':' . 'info_nb_' . $infos['table_objet'];
762
-	}
763
-
764
-	if (!isset($infos['champs_editables'])) {
765
-		$infos['champs_editables'] = [];
766
-	}
767
-	if (!isset($infos['champs_versionnes'])) {
768
-		$infos['champs_versionnes'] = [];
769
-	}
770
-	if (!isset($infos['rechercher_champs'])) {
771
-		$infos['rechercher_champs'] = [];
772
-	}
773
-	if (!isset($infos['rechercher_jointures'])) {
774
-		$infos['rechercher_jointures'] = [];
775
-	}
776
-
777
-	if (!isset($infos['modeles'])) {
778
-		$infos['modeles'] = [$infos['type']];
779
-	}
780
-
781
-	return $infos;
659
+    if (!isset($infos['type'])) {
660
+        // si on arrive de base/trouver_table, on a la cle primaire :
661
+        // s'en servir pour extrapoler le type
662
+        if (isset($infos['key']['PRIMARY KEY'])) {
663
+            $primary = $infos['key']['PRIMARY KEY'];
664
+            $primary = explode(',', $primary);
665
+            $primary = reset($primary);
666
+            $infos['type'] = preg_replace(',^spip_|^id_|s$,', '', $primary);
667
+        } else {
668
+            $infos['type'] = preg_replace(',^spip_|s$,', '', $table_sql);
669
+        }
670
+    }
671
+    if (!isset($infos['type_surnoms'])) {
672
+        $infos['type_surnoms'] = [];
673
+    }
674
+
675
+    if (!isset($infos['table_objet'])) {
676
+        $infos['table_objet'] = preg_replace(',^spip_,', '', $table_sql);
677
+    }
678
+    if (!isset($infos['table_objet_surnoms'])) {
679
+        $infos['table_objet_surnoms'] = [];
680
+    }
681
+
682
+    if (!isset($infos['principale'])) {
683
+        $infos['principale'] = (isset($GLOBALS['tables_principales'][$table_sql]) ? 'oui' : false);
684
+    }
685
+
686
+    // normaliser pour pouvoir tester en php $infos['principale']?
687
+    // et dans une boucle {principale=oui}
688
+    $infos['principale'] = (($infos['principale'] and $infos['principale'] != 'non') ? 'oui' : false);
689
+
690
+    // declarer et normaliser pour pouvoir tester en php $infos['editable']?
691
+    // et dans une boucle {editable=oui}
692
+    if (!isset($infos['editable'])) {
693
+        $infos['editable'] = 'oui';
694
+    }
695
+
696
+    $infos['editable'] = (($infos['editable'] and $infos['editable'] != 'non') ? 'oui' : false);
697
+
698
+    // les urls publiques sont par defaut page=type pour les tables principales, et rien pour les autres
699
+    // seules les exceptions sont donc a declarer
700
+    if (!isset($infos['page'])) {
701
+        $infos['page'] = ($infos['principale'] ? $infos['type'] : '');
702
+    }
703
+
704
+    if (!isset($infos['url_voir'])) {
705
+        $infos['url_voir'] = $infos['type'];
706
+    }
707
+    if (!isset($infos['url_edit'])) {
708
+        $infos['url_edit'] = $infos['url_voir'] . ($infos['editable'] ? '_edit' : '');
709
+    }
710
+    if (!isset($infos['icone_objet'])) {
711
+        $infos['icone_objet'] = $infos['type'];
712
+    }
713
+
714
+    // chaines de langue
715
+    // par defaut : objet:icone_xxx_objet
716
+    if (!isset($infos['texte_retour'])) {
717
+        $infos['texte_retour'] = 'icone_retour';
718
+    }
719
+    if (!isset($infos['texte_modifier'])) {
720
+        $infos['texte_modifier'] = $infos['type'] . ':' . 'icone_modifier_' . $infos['type'];
721
+    }
722
+    if (!isset($infos['texte_creer'])) {
723
+        $infos['texte_creer'] = $infos['type'] . ':' . 'icone_creer_' . $infos['type'];
724
+    }
725
+    if (!isset($infos['texte_creer_associer'])) {
726
+        $infos['texte_creer_associer'] = $infos['type'] . ':' . 'texte_creer_associer_' . $infos['type'];
727
+    }
728
+    if (!isset($infos['texte_ajouter'])) {
729
+        // Ajouter un X
730
+        $infos['texte_ajouter'] = $infos['type'] . ':' . 'texte_ajouter_' . $infos['type'];
731
+    }
732
+    if (!isset($infos['texte_objets'])) {
733
+        $infos['texte_objets'] = $infos['type'] . ':' . 'titre_' . $infos['table_objet'];
734
+    }
735
+    if (!isset($infos['texte_objet'])) {
736
+        $infos['texte_objet'] = $infos['type'] . ':' . 'titre_' . $infos['type'];
737
+    }
738
+    if (!isset($infos['texte_logo_objet'])) {
739
+        // objet:titre_logo_objet "Logo de ce X"
740
+        $infos['texte_logo_objet'] = $infos['type'] . ':' . 'titre_logo_' . $infos['type'];
741
+    }
742
+    if (!isset($infos['texte_langue_objet'])) {
743
+        // objet:texte_langue_objet "Langue de ce X"
744
+        $infos['texte_langue_objet'] = $infos['type'] . ':' . 'titre_langue_' . $infos['type'];
745
+    }
746
+    if (!isset($infos['texte_definir_comme_traduction_objet'])) {
747
+        // "Ce X est une traduction du X numéro :"
748
+        $infos['texte_definir_comme_traduction_objet'] = $infos['type'] . ':' . 'texte_definir_comme_traduction_' . $infos['type'];
749
+    }
750
+
751
+    // objet:info_aucun_objet
752
+    if (!isset($infos['info_aucun_objet'])) {
753
+        $infos['info_aucun_objet'] = $infos['type'] . ':' . 'info_aucun_' . $infos['type'];
754
+    }
755
+    // objet:info_1_objet
756
+    if (!isset($infos['info_1_objet'])) {
757
+        $infos['info_1_objet'] = $infos['type'] . ':' . 'info_1_' . $infos['type'];
758
+    }
759
+    // objet:info_nb_objets
760
+    if (!isset($infos['info_nb_objets'])) {
761
+        $infos['info_nb_objets'] = $infos['type'] . ':' . 'info_nb_' . $infos['table_objet'];
762
+    }
763
+
764
+    if (!isset($infos['champs_editables'])) {
765
+        $infos['champs_editables'] = [];
766
+    }
767
+    if (!isset($infos['champs_versionnes'])) {
768
+        $infos['champs_versionnes'] = [];
769
+    }
770
+    if (!isset($infos['rechercher_champs'])) {
771
+        $infos['rechercher_champs'] = [];
772
+    }
773
+    if (!isset($infos['rechercher_jointures'])) {
774
+        $infos['rechercher_jointures'] = [];
775
+    }
776
+
777
+    if (!isset($infos['modeles'])) {
778
+        $infos['modeles'] = [$infos['type']];
779
+    }
780
+
781
+    return $infos;
782 782
 }
783 783
 
784 784
 /**
@@ -795,30 +795,30 @@  discard block
 block discarded – undo
795 795
  * @return array
796 796
  */
797 797
 function renseigner_table_objet_interfaces($table_sql, &$infos) {
798
-	if (!isset($infos['titre'])) {
799
-		if (isset($infos['table_objet']) and isset($GLOBALS['table_titre'][$infos['table_objet']])) {
800
-			$infos['titre'] = $GLOBALS['table_titre'][$infos['table_objet']];
801
-		} else {
802
-			$infos['titre'] = ((isset($infos['field']['titre'])) ? 'titre,' : "'' as titre,");
803
-			$infos['titre'] .= ((isset($infos['field']['lang'])) ? 'lang' : "'' as lang");
804
-		}
805
-	}
806
-	if (!isset($infos['date'])) {
807
-		if (isset($infos['table_objet']) and isset($GLOBALS['table_date'][$infos['table_objet']])) {
808
-			$infos['date'] = $GLOBALS['table_date'][$infos['table_objet']];
809
-		} else {
810
-			$infos['date'] = ((isset($infos['field']['date'])) ? 'date' : '');
811
-		}
812
-	}
813
-
814
-	$infos['statut'] ??= $GLOBALS['table_statut'][$table_sql] ?? '';
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;
798
+    if (!isset($infos['titre'])) {
799
+        if (isset($infos['table_objet']) and isset($GLOBALS['table_titre'][$infos['table_objet']])) {
800
+            $infos['titre'] = $GLOBALS['table_titre'][$infos['table_objet']];
801
+        } else {
802
+            $infos['titre'] = ((isset($infos['field']['titre'])) ? 'titre,' : "'' as titre,");
803
+            $infos['titre'] .= ((isset($infos['field']['lang'])) ? 'lang' : "'' as lang");
804
+        }
805
+    }
806
+    if (!isset($infos['date'])) {
807
+        if (isset($infos['table_objet']) and isset($GLOBALS['table_date'][$infos['table_objet']])) {
808
+            $infos['date'] = $GLOBALS['table_date'][$infos['table_objet']];
809
+        } else {
810
+            $infos['date'] = ((isset($infos['field']['date'])) ? 'date' : '');
811
+        }
812
+    }
813
+
814
+    $infos['statut'] ??= $GLOBALS['table_statut'][$table_sql] ?? '';
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 !(is_countable($GLOBALS['tables_principales']) ? count($GLOBALS['tables_principales']) : 0)) {
834
-		lister_tables_objets_sql();
835
-		$done = true;
836
-	}
832
+    static $done = false;
833
+    if (!$done or !(is_countable($GLOBALS['tables_principales']) ? count($GLOBALS['tables_principales']) : 0)) {
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 !(is_countable($GLOBALS['tables_auxiliaires']) ? count($GLOBALS['tables_auxiliaires']) : 0)) {
851
-		lister_tables_objets_sql();
852
-		$done = true;
853
-	}
849
+    static $done = false;
850
+    if (!$done or !(is_countable($GLOBALS['tables_auxiliaires']) ? count($GLOBALS['tables_auxiliaires']) : 0)) {
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 ?: 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 ?: 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
 /**
@@ -1012,39 +1012,39 @@  discard block
 block discarded – undo
1012 1012
  **/
1013 1013
 function table_objet(string $type, string $serveur = ''): string {
1014 1014
 
1015
-	if ($type) {
1016
-		$type = preg_replace(',^spip_|^id_|s$,', '', $type);
1017
-	}
1018
-	if (!strlen($type)) {
1019
-		return '';
1020
-	}
1021
-
1022
-	$surnoms = lister_tables_objets_surnoms();
1023
-	if (isset($surnoms[$type])) {
1024
-		return $surnoms[$type];
1025
-	}
1026
-
1027
-	if ($serveur !== false) {
1028
-		$t = lister_tables_spip($serveur);
1029
-		$trouver_table = charger_fonction('trouver_table', 'base');
1030
-		$typetrim = rtrim($type, 's') . 's';
1031
-		if (
1032
-			(isset($t[$typetrim]) or in_array($typetrim, $t))
1033
-			and ($desc = $trouver_table(rtrim($type, 's') . 's', $serveur))
1034
-		) {
1035
-			return $desc['id_table'];
1036
-		} elseif (
1037
-			(isset($t[$type]) or in_array($type, $t))
1038
-			and ($desc = $trouver_table($type, $serveur))
1039
-		) {
1040
-			return $desc['id_table'];
1041
-		}
1042
-
1043
-		spip_log('table_objet(' . $type . ') calculee sans verification');
1044
-		#spip_log(debug_backtrace(),'db');
1045
-	}
1046
-
1047
-	return rtrim($type, 's') . 's'; # cas historique ne devant plus servir, sauf si $serveur=false
1015
+    if ($type) {
1016
+        $type = preg_replace(',^spip_|^id_|s$,', '', $type);
1017
+    }
1018
+    if (!strlen($type)) {
1019
+        return '';
1020
+    }
1021
+
1022
+    $surnoms = lister_tables_objets_surnoms();
1023
+    if (isset($surnoms[$type])) {
1024
+        return $surnoms[$type];
1025
+    }
1026
+
1027
+    if ($serveur !== false) {
1028
+        $t = lister_tables_spip($serveur);
1029
+        $trouver_table = charger_fonction('trouver_table', 'base');
1030
+        $typetrim = rtrim($type, 's') . 's';
1031
+        if (
1032
+            (isset($t[$typetrim]) or in_array($typetrim, $t))
1033
+            and ($desc = $trouver_table(rtrim($type, 's') . 's', $serveur))
1034
+        ) {
1035
+            return $desc['id_table'];
1036
+        } elseif (
1037
+            (isset($t[$type]) or in_array($type, $t))
1038
+            and ($desc = $trouver_table($type, $serveur))
1039
+        ) {
1040
+            return $desc['id_table'];
1041
+        }
1042
+
1043
+        spip_log('table_objet(' . $type . ') calculee sans verification');
1044
+        #spip_log(debug_backtrace(),'db');
1045
+    }
1046
+
1047
+    return rtrim($type, 's') . 's'; # cas historique ne devant plus servir, sauf si $serveur=false
1048 1048
 }
1049 1049
 
1050 1050
 /**
@@ -1065,33 +1065,33 @@  discard block
 block discarded – undo
1065 1065
  **/
1066 1066
 function table_objet_sql(string $type, string $serveur = ''): string {
1067 1067
 
1068
-	$nom = table_objet($type, $serveur);
1069
-	if (!strlen($nom)) {
1070
-		return '';
1071
-	}
1072
-	if (!isset($GLOBALS['table_des_tables']['articles'])) {
1073
-		// eviter de multiples inclusions
1074
-		include_spip('public/interfaces');
1075
-	}
1076
-	if (isset($GLOBALS['table_des_tables'][$nom])) {
1077
-		$nom = $GLOBALS['table_des_tables'][$nom];
1078
-		$nom = "spip_$nom";
1079
-	} else {
1080
-		$infos_tables = lister_tables_objets_sql();
1081
-		if (isset($infos_tables["spip_$nom"])) {
1082
-			$nom = "spip_$nom";
1083
-		} elseif ($serveur !== false) {
1084
-			$t = lister_tables_spip($serveur);
1085
-			if (isset($t[$nom]) or in_array($nom, $t)) {
1086
-				$trouver_table = charger_fonction('trouver_table', 'base');
1087
-				if ($desc = $trouver_table($nom, $serveur)) {
1088
-					return $desc['table_sql'];
1089
-				}
1090
-			}
1091
-		}
1092
-	}
1093
-
1094
-	return $nom;
1068
+    $nom = table_objet($type, $serveur);
1069
+    if (!strlen($nom)) {
1070
+        return '';
1071
+    }
1072
+    if (!isset($GLOBALS['table_des_tables']['articles'])) {
1073
+        // eviter de multiples inclusions
1074
+        include_spip('public/interfaces');
1075
+    }
1076
+    if (isset($GLOBALS['table_des_tables'][$nom])) {
1077
+        $nom = $GLOBALS['table_des_tables'][$nom];
1078
+        $nom = "spip_$nom";
1079
+    } else {
1080
+        $infos_tables = lister_tables_objets_sql();
1081
+        if (isset($infos_tables["spip_$nom"])) {
1082
+            $nom = "spip_$nom";
1083
+        } elseif ($serveur !== false) {
1084
+            $t = lister_tables_spip($serveur);
1085
+            if (isset($t[$nom]) or in_array($nom, $t)) {
1086
+                $trouver_table = charger_fonction('trouver_table', 'base');
1087
+                if ($desc = $trouver_table($nom, $serveur)) {
1088
+                    return $desc['table_sql'];
1089
+                }
1090
+            }
1091
+        }
1092
+    }
1093
+
1094
+    return $nom;
1095 1095
 }
1096 1096
 
1097 1097
 /**
@@ -1110,35 +1110,35 @@  discard block
 block discarded – undo
1110 1110
  *     Nom de la clé primaire
1111 1111
  **/
1112 1112
 function id_table_objet($type, $serveur = '') {
1113
-	static $trouver_table = null;
1114
-	$type = objet_type($type, $serveur);
1115
-	if (!$type) {
1116
-		return null;
1117
-	}
1118
-	$t = table_objet($type);
1119
-	if (!$trouver_table) {
1120
-		$trouver_table = charger_fonction('trouver_table', 'base');
1121
-	}
1122
-
1123
-	$ts = lister_tables_spip($serveur);
1124
-	if (
1125
-		in_array($t, $ts)
1126
-		or in_array($t, lister_toutes_tables($serveur))
1127
-	) {
1128
-		$desc = $trouver_table($t, $serveur);
1129
-		if (isset($desc['key']['PRIMARY KEY'])) {
1130
-			return $desc['key']['PRIMARY KEY'];
1131
-		}
1132
-		if (!$desc or isset($desc['field']["id_$type"])) {
1133
-			return "id_$type";
1134
-		}
1135
-		// sinon renvoyer le premier champ de la table...
1136
-		$keys = array_keys($desc['field']);
1137
-
1138
-		return array_shift($keys);
1139
-	}
1140
-
1141
-	return "id_$type";
1113
+    static $trouver_table = null;
1114
+    $type = objet_type($type, $serveur);
1115
+    if (!$type) {
1116
+        return null;
1117
+    }
1118
+    $t = table_objet($type);
1119
+    if (!$trouver_table) {
1120
+        $trouver_table = charger_fonction('trouver_table', 'base');
1121
+    }
1122
+
1123
+    $ts = lister_tables_spip($serveur);
1124
+    if (
1125
+        in_array($t, $ts)
1126
+        or in_array($t, lister_toutes_tables($serveur))
1127
+    ) {
1128
+        $desc = $trouver_table($t, $serveur);
1129
+        if (isset($desc['key']['PRIMARY KEY'])) {
1130
+            return $desc['key']['PRIMARY KEY'];
1131
+        }
1132
+        if (!$desc or isset($desc['field']["id_$type"])) {
1133
+            return "id_$type";
1134
+        }
1135
+        // sinon renvoyer le premier champ de la table...
1136
+        $keys = array_keys($desc['field']);
1137
+
1138
+        return array_shift($keys);
1139
+    }
1140
+
1141
+    return "id_$type";
1142 1142
 }
1143 1143
 
1144 1144
 /**
@@ -1157,60 +1157,60 @@  discard block
 block discarded – undo
1157 1157
  *     Type de l'objet
1158 1158
  **/
1159 1159
 function objet_type(string $table_objet, string $serveur = ''): ?string {
1160
-	if (!$table_objet) {
1161
-		return null;
1162
-	}
1163
-	$surnoms = lister_types_surnoms();
1164
-
1165
-	// scenario de base
1166
-	// le type est decline a partir du nom de la table en enlevant le prefixe eventuel
1167
-	// et la marque du pluriel
1168
-	// on accepte id_xx en entree aussi
1169
-	$type = preg_replace(',^spip_|^id_|s$,', '', $table_objet);
1170
-	if (isset($surnoms[$type])) {
1171
-		return $surnoms[$type];
1172
-	}
1173
-
1174
-	// securite : eliminer les caracteres non \w
1175
-	$type = preg_replace(',[^\w-],', '', $type);
1176
-
1177
-	// si le type redonne bien la table c'est bon
1178
-	// oui si table_objet ressemblait deja a un type
1179
-	if (
1180
-		$type == $table_objet
1181
-		or (table_objet($type, $serveur) == $table_objet)
1182
-		or (table_objet_sql($type, $serveur) == $table_objet)
1183
-	) {
1184
-		return $type;
1185
-	}
1186
-
1187
-	// si on ne veut pas chercher en base
1188
-	if ($serveur === false) {
1189
-		return $type;
1190
-	}
1191
-
1192
-	// sinon on passe par la cle primaire id_xx pour trouver le type
1193
-	// car le s a la fin est incertain
1194
-	// notamment en cas de pluriel derogatoire
1195
-	// id_jeu/spip_jeux id_journal/spip_journaux qui necessitent tout deux
1196
-	// une declaration jeu => jeux, journal => journaux
1197
-	// dans le pipeline declarer_tables_objets_surnoms
1198
-	$trouver_table = charger_fonction('trouver_table', 'base');
1199
-	$ts = lister_tables_spip($serveur);
1200
-	$desc = false;
1201
-	if (in_array($table_objet, $ts)) {
1202
-		$desc = $trouver_table($table_objet);
1203
-	}
1204
-	if (!$desc and in_array($table_objet = table_objet($type, $serveur), $ts)) {
1205
-		$desc = $trouver_table($table_objet, $serveur);
1206
-	}
1207
-	// si le type est declare : bingo !
1208
-	if ($desc and isset($desc['type'])) {
1209
-		return $desc['type'];
1210
-	}
1211
-
1212
-	// on a fait ce qu'on a pu
1213
-	return $type;
1160
+    if (!$table_objet) {
1161
+        return null;
1162
+    }
1163
+    $surnoms = lister_types_surnoms();
1164
+
1165
+    // scenario de base
1166
+    // le type est decline a partir du nom de la table en enlevant le prefixe eventuel
1167
+    // et la marque du pluriel
1168
+    // on accepte id_xx en entree aussi
1169
+    $type = preg_replace(',^spip_|^id_|s$,', '', $table_objet);
1170
+    if (isset($surnoms[$type])) {
1171
+        return $surnoms[$type];
1172
+    }
1173
+
1174
+    // securite : eliminer les caracteres non \w
1175
+    $type = preg_replace(',[^\w-],', '', $type);
1176
+
1177
+    // si le type redonne bien la table c'est bon
1178
+    // oui si table_objet ressemblait deja a un type
1179
+    if (
1180
+        $type == $table_objet
1181
+        or (table_objet($type, $serveur) == $table_objet)
1182
+        or (table_objet_sql($type, $serveur) == $table_objet)
1183
+    ) {
1184
+        return $type;
1185
+    }
1186
+
1187
+    // si on ne veut pas chercher en base
1188
+    if ($serveur === false) {
1189
+        return $type;
1190
+    }
1191
+
1192
+    // sinon on passe par la cle primaire id_xx pour trouver le type
1193
+    // car le s a la fin est incertain
1194
+    // notamment en cas de pluriel derogatoire
1195
+    // id_jeu/spip_jeux id_journal/spip_journaux qui necessitent tout deux
1196
+    // une declaration jeu => jeux, journal => journaux
1197
+    // dans le pipeline declarer_tables_objets_surnoms
1198
+    $trouver_table = charger_fonction('trouver_table', 'base');
1199
+    $ts = lister_tables_spip($serveur);
1200
+    $desc = false;
1201
+    if (in_array($table_objet, $ts)) {
1202
+        $desc = $trouver_table($table_objet);
1203
+    }
1204
+    if (!$desc and in_array($table_objet = table_objet($type, $serveur), $ts)) {
1205
+        $desc = $trouver_table($table_objet, $serveur);
1206
+    }
1207
+    // si le type est declare : bingo !
1208
+    if ($desc and isset($desc['type'])) {
1209
+        return $desc['type'];
1210
+    }
1211
+
1212
+    // on a fait ce qu'on a pu
1213
+    return $type;
1214 1214
 }
1215 1215
 
1216 1216
 /**
@@ -1226,62 +1226,62 @@  discard block
 block discarded – undo
1226 1226
  * @return bool
1227 1227
  */
1228 1228
 function objet_test_si_publie($objet, $id_objet, $serveur = '') {
1229
-	// voir si une fonction est definie pour faire le boulot
1230
-	// elle a la priorite dans ce cas
1231
-	if ($f = charger_fonction($objet . '_test_si_publie', 'base', true)) {
1232
-		return $f($objet, $id_objet, $serveur);
1233
-	}
1234
-
1235
-	// sinon on se fie a la declaration de l'objet si presente
1236
-	$id_table = $table_objet = table_objet($objet);
1237
-	$id_table_objet = id_table_objet($objet, $serveur);
1238
-	$trouver_table = charger_fonction('trouver_table', 'base');
1239
-	if (
1240
-		$desc = $trouver_table($table_objet, $serveur)
1241
-		and isset($desc['statut'])
1242
-		and $desc['statut']
1243
-	) {
1244
-		$boucle = new Boucle();
1245
-		$boucle->show = $desc;
1246
-		$boucle->nom = 'objet_test_si_publie';
1247
-		$boucle->id_boucle = $id_table;
1248
-		$boucle->id_table = $id_table;
1249
-		$boucle->primary = $desc['key']['PRIMARY KEY'] ?? '';
1250
-		$boucle->sql_serveur = $serveur;
1251
-		$boucle->select[] = $id_table_objet;
1252
-		$boucle->from[$table_objet] = table_objet_sql($objet, $serveur);
1253
-		$boucle->where[] = $id_table . '.' . $id_table_objet . '=' . intval($id_objet);
1254
-
1255
-		$boucle->descr['nom'] = 'objet_test_si_publie'; // eviter notice php
1256
-		$boucle->descr['sourcefile'] = 'internal';
1257
-		$boucle->descr['gram'] = 'html';
1258
-
1259
-		include_spip('public/compiler');
1260
-		include_spip('public/composer');
1261
-		instituer_boucle($boucle, false, true);
1262
-		$res = calculer_select(
1263
-			$boucle->select,
1264
-			$boucle->from,
1265
-			$boucle->from_type,
1266
-			$boucle->where,
1267
-			$boucle->join,
1268
-			$boucle->group,
1269
-			$boucle->order,
1270
-			$boucle->limit,
1271
-			$boucle->having,
1272
-			$table_objet,
1273
-			$id_table,
1274
-			$serveur
1275
-		);
1276
-		if (sql_fetch($res)) {
1277
-			return true;
1278
-		}
1279
-
1280
-		return false;
1281
-	}
1282
-
1283
-	// si pas d'info statut ni de fonction : l'objet est publie
1284
-	return true;
1229
+    // voir si une fonction est definie pour faire le boulot
1230
+    // elle a la priorite dans ce cas
1231
+    if ($f = charger_fonction($objet . '_test_si_publie', 'base', true)) {
1232
+        return $f($objet, $id_objet, $serveur);
1233
+    }
1234
+
1235
+    // sinon on se fie a la declaration de l'objet si presente
1236
+    $id_table = $table_objet = table_objet($objet);
1237
+    $id_table_objet = id_table_objet($objet, $serveur);
1238
+    $trouver_table = charger_fonction('trouver_table', 'base');
1239
+    if (
1240
+        $desc = $trouver_table($table_objet, $serveur)
1241
+        and isset($desc['statut'])
1242
+        and $desc['statut']
1243
+    ) {
1244
+        $boucle = new Boucle();
1245
+        $boucle->show = $desc;
1246
+        $boucle->nom = 'objet_test_si_publie';
1247
+        $boucle->id_boucle = $id_table;
1248
+        $boucle->id_table = $id_table;
1249
+        $boucle->primary = $desc['key']['PRIMARY KEY'] ?? '';
1250
+        $boucle->sql_serveur = $serveur;
1251
+        $boucle->select[] = $id_table_objet;
1252
+        $boucle->from[$table_objet] = table_objet_sql($objet, $serveur);
1253
+        $boucle->where[] = $id_table . '.' . $id_table_objet . '=' . intval($id_objet);
1254
+
1255
+        $boucle->descr['nom'] = 'objet_test_si_publie'; // eviter notice php
1256
+        $boucle->descr['sourcefile'] = 'internal';
1257
+        $boucle->descr['gram'] = 'html';
1258
+
1259
+        include_spip('public/compiler');
1260
+        include_spip('public/composer');
1261
+        instituer_boucle($boucle, false, true);
1262
+        $res = calculer_select(
1263
+            $boucle->select,
1264
+            $boucle->from,
1265
+            $boucle->from_type,
1266
+            $boucle->where,
1267
+            $boucle->join,
1268
+            $boucle->group,
1269
+            $boucle->order,
1270
+            $boucle->limit,
1271
+            $boucle->having,
1272
+            $table_objet,
1273
+            $id_table,
1274
+            $serveur
1275
+        );
1276
+        if (sql_fetch($res)) {
1277
+            return true;
1278
+        }
1279
+
1280
+        return false;
1281
+    }
1282
+
1283
+    // si pas d'info statut ni de fonction : l'objet est publie
1284
+    return true;
1285 1285
 }
1286 1286
 
1287 1287
 
@@ -1316,124 +1316,124 @@  discard block
 block discarded – undo
1316 1316
  *     Retourne un tableau décrivant les parents trouvés
1317 1317
  */
1318 1318
 function objet_lister_parents($objet, $id_objet, $parent_direct_seulement = false) {
1319
-	$parents = [];
1320
-
1321
-	// Si on trouve une ou des méthodes de parent
1322
-	if ($parent_methodes = objet_type_decrire_infos_parents($objet)) {
1323
-		// On identifie les informations sur l'objet source dont on cherche le parent.
1324
-		include_spip('base/abstract_sql');
1325
-		$table_objet = table_objet_sql($objet);
1326
-		$cle_objet = id_table_objet($objet);
1327
-		$id_objet = intval($id_objet);
1328
-
1329
-		// On teste chacun méthode dans l'ordre, et dès qu'on a trouvé un parent on s'arrête
1330
-		foreach ($parent_methodes as $parent_methode) {
1331
-			// Champ identifiant le parent (id et éventuellement le type)
1332
-			// -- cette identification ne dépend pas du fait que le parent soit stocké dans une table de différente
1333
-			//    de celle de l'objet source
1334
-			$select = [];
1335
-			if (isset($parent_methode['champ'])) {
1336
-				$select[] = $parent_methode['champ'];
1337
-			}
1338
-			if (isset($parent_methode['champ_type'])) {
1339
-				$select[] = $parent_methode['champ_type'];
1340
-			}
1341
-
1342
-			// Détermination de la table du parent et des conditions sur l'objet source et le parent.
1343
-			$condition_objet_invalide = false;
1344
-			$where = [];
1345
-			if (!isset($parent_methode['table'])) {
1346
-				// Le parent est stocké dans la même table que l'objet source :
1347
-				// -- toutes les conditions s'appliquent à la table source.
1348
-				$table = $table_objet;
1349
-				$where = ["$cle_objet = $id_objet"];
1350
-				// -- Condition supplémentaire sur la détection du parent
1351
-				if (isset($parent_methode['condition'])) {
1352
-					$where[] = $parent_methode['condition'];
1353
-				}
1354
-			} elseif (!$parent_direct_seulement) {
1355
-				// Le parent est stocké dans une table différente de l'objet source.
1356
-				// -- on vérifie d'emblée si il y a une condition sur l'objet source et si celle-ci est vérifiée
1357
-				//    Si non, on peut arrêter le traitement.
1358
-				if (isset($parent_methode['condition'])) {
1359
-					$where = [
1360
-						"$cle_objet = $id_objet",
1361
-						$parent_methode['condition']
1362
-					];
1363
-					if (!sql_countsel($table_objet, $where)) {
1364
-						$condition_objet_invalide = true;
1365
-					}
1366
-				}
1367
-
1368
-				// Si pas de condition sur l'objet source ou que la condition est vérifiée, on peut construire
1369
-				// la requête sur la table qui accueille le parent.
1370
-				if (!$condition_objet_invalide) {
1371
-					$table = $parent_methode['table'];
1372
-					// On construit les conditions en fonction de l'identification de l'objet source
1373
-					$where = [];
1374
-					// -- 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
1375
-					//    le même que celui de l'objet source.
1376
-					$where[] = isset($parent_methode['source_champ'])
1377
-						? "{$parent_methode['source_champ']} = $id_objet"
1378
-						: "${cle_objet} = $id_objet";
1379
-					if (isset($parent_methode['source_champ_type'])) {
1380
-						$where[] = "{$parent_methode['source_champ_type']} = " . sql_quote($objet);
1381
-					}
1382
-					// -- Condition supplémentaire sur la détection du parent
1383
-					if (isset($parent_methode['table_condition'])) {
1384
-						$where[] = $parent_methode['table_condition'];
1385
-					}
1386
-				}
1387
-			}
1388
-
1389
-			// On lance la requête de récupération du parent
1390
-			$is_table_lien = (strpos($table, '_liens') !== false and substr($table, -6) === '_liens');
1391
-			if (
1392
-				!$condition_objet_invalide
1393
-				and $where
1394
-				and ($lignes = sql_allfetsel($is_table_lien ? '*' : $select, $table, $where))
1395
-			) {
1396
-				foreach ($lignes as $ligne) {
1397
-					// Si le type est fixe
1398
-					if (isset($parent_methode['type'])) {
1399
-						$parent = [
1400
-							'objet' 	=> $parent_methode['type'],
1401
-							'id_objet'	=> intval($ligne[$parent_methode['champ']]),
1402
-							'champ' 	=> $parent_methode['champ'],
1403
-							'table'    => $table,
1404
-						];
1405
-					}
1406
-					elseif (isset($parent_methode['champ_type'])) {
1407
-						$parent = [
1408
-							'objet' 	 => $ligne[$parent_methode['champ_type']],
1409
-							'id_objet' 	 => intval($ligne[$parent_methode['champ']]),
1410
-							'champ' 	 => $parent_methode['champ'],
1411
-							'champ_type' => $parent_methode['champ_type'],
1412
-							'table'    => $table,
1413
-						];
1414
-					}
1415
-					if ($is_table_lien) {
1416
-						$parent['lien'] = $ligne;
1417
-					}
1418
-					$parents[] = $parent;
1419
-				}
1420
-			}
1421
-		}
1422
-	}
1423
-
1424
-	// On passe par un pipeline avant de retourner
1425
-	$parents = pipeline(
1426
-		'objet_lister_parents',
1427
-		[
1428
-			'args' => [
1429
-				'objet' => $objet,
1430
-				'id_objet' => $id_objet,
1431
-			],
1432
-			'data' => $parents,
1433
-		]
1434
-	);
1435
-
1436
-	return $parents;
1319
+    $parents = [];
1320
+
1321
+    // Si on trouve une ou des méthodes de parent
1322
+    if ($parent_methodes = objet_type_decrire_infos_parents($objet)) {
1323
+        // On identifie les informations sur l'objet source dont on cherche le parent.
1324
+        include_spip('base/abstract_sql');
1325
+        $table_objet = table_objet_sql($objet);
1326
+        $cle_objet = id_table_objet($objet);
1327
+        $id_objet = intval($id_objet);
1328
+
1329
+        // On teste chacun méthode dans l'ordre, et dès qu'on a trouvé un parent on s'arrête
1330
+        foreach ($parent_methodes as $parent_methode) {
1331
+            // Champ identifiant le parent (id et éventuellement le type)
1332
+            // -- cette identification ne dépend pas du fait que le parent soit stocké dans une table de différente
1333
+            //    de celle de l'objet source
1334
+            $select = [];
1335
+            if (isset($parent_methode['champ'])) {
1336
+                $select[] = $parent_methode['champ'];
1337
+            }
1338
+            if (isset($parent_methode['champ_type'])) {
1339
+                $select[] = $parent_methode['champ_type'];
1340
+            }
1341
+
1342
+            // Détermination de la table du parent et des conditions sur l'objet source et le parent.
1343
+            $condition_objet_invalide = false;
1344
+            $where = [];
1345
+            if (!isset($parent_methode['table'])) {
1346
+                // Le parent est stocké dans la même table que l'objet source :
1347
+                // -- toutes les conditions s'appliquent à la table source.
1348
+                $table = $table_objet;
1349
+                $where = ["$cle_objet = $id_objet"];
1350
+                // -- Condition supplémentaire sur la détection du parent
1351
+                if (isset($parent_methode['condition'])) {
1352
+                    $where[] = $parent_methode['condition'];
1353
+                }
1354
+            } elseif (!$parent_direct_seulement) {
1355
+                // Le parent est stocké dans une table différente de l'objet source.
1356
+                // -- on vérifie d'emblée si il y a une condition sur l'objet source et si celle-ci est vérifiée
1357
+                //    Si non, on peut arrêter le traitement.
1358
+                if (isset($parent_methode['condition'])) {
1359
+                    $where = [
1360
+                        "$cle_objet = $id_objet",
1361
+                        $parent_methode['condition']
1362
+                    ];
1363
+                    if (!sql_countsel($table_objet, $where)) {
1364
+                        $condition_objet_invalide = true;
1365
+                    }
1366
+                }
1367
+
1368
+                // Si pas de condition sur l'objet source ou que la condition est vérifiée, on peut construire
1369
+                // la requête sur la table qui accueille le parent.
1370
+                if (!$condition_objet_invalide) {
1371
+                    $table = $parent_methode['table'];
1372
+                    // On construit les conditions en fonction de l'identification de l'objet source
1373
+                    $where = [];
1374
+                    // -- 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
1375
+                    //    le même que celui de l'objet source.
1376
+                    $where[] = isset($parent_methode['source_champ'])
1377
+                        ? "{$parent_methode['source_champ']} = $id_objet"
1378
+                        : "${cle_objet} = $id_objet";
1379
+                    if (isset($parent_methode['source_champ_type'])) {
1380
+                        $where[] = "{$parent_methode['source_champ_type']} = " . sql_quote($objet);
1381
+                    }
1382
+                    // -- Condition supplémentaire sur la détection du parent
1383
+                    if (isset($parent_methode['table_condition'])) {
1384
+                        $where[] = $parent_methode['table_condition'];
1385
+                    }
1386
+                }
1387
+            }
1388
+
1389
+            // On lance la requête de récupération du parent
1390
+            $is_table_lien = (strpos($table, '_liens') !== false and substr($table, -6) === '_liens');
1391
+            if (
1392
+                !$condition_objet_invalide
1393
+                and $where
1394
+                and ($lignes = sql_allfetsel($is_table_lien ? '*' : $select, $table, $where))
1395
+            ) {
1396
+                foreach ($lignes as $ligne) {
1397
+                    // Si le type est fixe
1398
+                    if (isset($parent_methode['type'])) {
1399
+                        $parent = [
1400
+                            'objet' 	=> $parent_methode['type'],
1401
+                            'id_objet'	=> intval($ligne[$parent_methode['champ']]),
1402
+                            'champ' 	=> $parent_methode['champ'],
1403
+                            'table'    => $table,
1404
+                        ];
1405
+                    }
1406
+                    elseif (isset($parent_methode['champ_type'])) {
1407
+                        $parent = [
1408
+                            'objet' 	 => $ligne[$parent_methode['champ_type']],
1409
+                            'id_objet' 	 => intval($ligne[$parent_methode['champ']]),
1410
+                            'champ' 	 => $parent_methode['champ'],
1411
+                            'champ_type' => $parent_methode['champ_type'],
1412
+                            'table'    => $table,
1413
+                        ];
1414
+                    }
1415
+                    if ($is_table_lien) {
1416
+                        $parent['lien'] = $ligne;
1417
+                    }
1418
+                    $parents[] = $parent;
1419
+                }
1420
+            }
1421
+        }
1422
+    }
1423
+
1424
+    // On passe par un pipeline avant de retourner
1425
+    $parents = pipeline(
1426
+        'objet_lister_parents',
1427
+        [
1428
+            'args' => [
1429
+                'objet' => $objet,
1430
+                'id_objet' => $id_objet,
1431
+            ],
1432
+            'data' => $parents,
1433
+        ]
1434
+    );
1435
+
1436
+    return $parents;
1437 1437
 }
1438 1438
 
1439 1439
 /**
@@ -1445,17 +1445,17 @@  discard block
 block discarded – undo
1445 1445
  * @return array
1446 1446
  */
1447 1447
 function objet_lister_parents_par_type($objet, $id_objet) {
1448
-	$parents = objet_lister_parents($objet, $id_objet);
1448
+    $parents = objet_lister_parents($objet, $id_objet);
1449 1449
 
1450
-	$parents_par_type = [];
1451
-	foreach ($parents as $parent) {
1452
-		if (!isset($parents_par_type[$parent['objet']])) {
1453
-			$parents_par_type[$parent['objet']] = [];
1454
-		}
1455
-		$parents_par_type[$parent['objet']][] = $parent['id_objet'];
1456
-	}
1450
+    $parents_par_type = [];
1451
+    foreach ($parents as $parent) {
1452
+        if (!isset($parents_par_type[$parent['objet']])) {
1453
+            $parents_par_type[$parent['objet']] = [];
1454
+        }
1455
+        $parents_par_type[$parent['objet']][] = $parent['id_objet'];
1456
+    }
1457 1457
 
1458
-	return $parents_par_type;
1458
+    return $parents_par_type;
1459 1459
 }
1460 1460
 
1461 1461
 
@@ -1488,85 +1488,85 @@  discard block
 block discarded – undo
1488 1488
  *     Retourne un tableau de tableaux, avec comme clés les types des objets, et dans chacun un tableau des identifiants trouvés
1489 1489
  */
1490 1490
 function objet_lister_enfants($objet, $id_objet) {
1491
-	$enfants = [];
1492
-
1493
-	// Si on trouve des types d'enfants et leurs méthodes
1494
-	if ($enfants_methodes = objet_type_decrire_infos_enfants($objet)) {
1495
-		include_spip('base/abstract_sql');
1496
-		$id_objet = intval($id_objet);
1497
-
1498
-		// On parcourt tous les types d'enfants trouvés
1499
-		foreach ($enfants_methodes as $objet_enfant => $_methode_parent) {
1500
-			// On construit les conditions d'identification du parent
1501
-			$where = [];
1502
-			// -- L'identifiant du parent
1503
-			if (isset($_methode_parent['champ'])) {
1504
-				$where[] = $_methode_parent['champ'] . ' = ' . $id_objet;
1505
-			}
1506
-			// -- Si le parent est variable
1507
-			if (isset($_methode_parent['champ_type'])) {
1508
-				$where[] = $_methode_parent['champ_type'] . ' = ' . sql_quote($objet);
1509
-			}
1510
-
1511
-			// On détermine la table, le champ id des enfants et on complète éventuellement les conditions
1512
-			if (!isset($_methode_parent['table'])) {
1513
-				// Les enfants sont stockés dans la même table que l'objet parent :
1514
-				$table_enfant = table_objet_sql($objet_enfant);
1515
-				$cle_objet_enfant = id_table_objet($objet_enfant);
1516
-
1517
-				// S'il y a une condition supplémentaire
1518
-				if (isset($_methode_parent['condition'])) {
1519
-					$where[] = $_methode_parent['condition'];
1520
-				}
1521
-			} else {
1522
-				// Les enfants sont stockés dans une table différente de l'objet parent.
1523
-				$table_enfant = $_methode_parent['table'];
1524
-				$cle_objet_enfant = $_methode_parent['source_champ'] ?? id_table_objet($objet_enfant);
1525
-
1526
-				// S'il y a une condition supplémentaire
1527
-				if (isset($_methode_parent['table_condition'])) {
1528
-					$where[] = $_methode_parent['table_condition'];
1529
-				}
1530
-			}
1531
-
1532
-			// On lance la requête
1533
-			$is_table_lien = (strpos($table_enfant, '_liens') !== false and substr($table_enfant, -6) === '_liens');
1534
-			if ($rows = sql_allfetsel($is_table_lien ? '*' : $cle_objet_enfant, $table_enfant, $where)) {
1535
-				$enfant = [
1536
-					'objet' => $objet_enfant,
1537
-					'id_objet' => 0,
1538
-					'table' => $table_enfant
1539
-				];
1540
-				if (isset($_methode_parent['champ'])) {
1541
-					$enfant['champ'] = $_methode_parent['champ'];
1542
-				}
1543
-				if (isset($_methode_parent['champ_type'])) {
1544
-					$enfant['champ_type'] = $_methode_parent['champ_type'];
1545
-				}
1546
-				foreach ($rows as $row) {
1547
-					$enfant['id_objet'] = intval($row[$cle_objet_enfant]);
1548
-					if ($is_table_lien) {
1549
-						$enfant['lien'] = $row;
1550
-					}
1551
-					$enfants[] = $enfant;
1552
-				}
1553
-			}
1554
-		}
1555
-	}
1556
-
1557
-	// On passe par un pipeline avant de retourner
1558
-	$enfants = pipeline(
1559
-		'objet_lister_enfants',
1560
-		[
1561
-			'args' => [
1562
-				'objet' => $objet,
1563
-				'id_objet' => $id_objet,
1564
-			],
1565
-			'data' => $enfants,
1566
-		]
1567
-	);
1568
-
1569
-	return $enfants;
1491
+    $enfants = [];
1492
+
1493
+    // Si on trouve des types d'enfants et leurs méthodes
1494
+    if ($enfants_methodes = objet_type_decrire_infos_enfants($objet)) {
1495
+        include_spip('base/abstract_sql');
1496
+        $id_objet = intval($id_objet);
1497
+
1498
+        // On parcourt tous les types d'enfants trouvés
1499
+        foreach ($enfants_methodes as $objet_enfant => $_methode_parent) {
1500
+            // On construit les conditions d'identification du parent
1501
+            $where = [];
1502
+            // -- L'identifiant du parent
1503
+            if (isset($_methode_parent['champ'])) {
1504
+                $where[] = $_methode_parent['champ'] . ' = ' . $id_objet;
1505
+            }
1506
+            // -- Si le parent est variable
1507
+            if (isset($_methode_parent['champ_type'])) {
1508
+                $where[] = $_methode_parent['champ_type'] . ' = ' . sql_quote($objet);
1509
+            }
1510
+
1511
+            // On détermine la table, le champ id des enfants et on complète éventuellement les conditions
1512
+            if (!isset($_methode_parent['table'])) {
1513
+                // Les enfants sont stockés dans la même table que l'objet parent :
1514
+                $table_enfant = table_objet_sql($objet_enfant);
1515
+                $cle_objet_enfant = id_table_objet($objet_enfant);
1516
+
1517
+                // S'il y a une condition supplémentaire
1518
+                if (isset($_methode_parent['condition'])) {
1519
+                    $where[] = $_methode_parent['condition'];
1520
+                }
1521
+            } else {
1522
+                // Les enfants sont stockés dans une table différente de l'objet parent.
1523
+                $table_enfant = $_methode_parent['table'];
1524
+                $cle_objet_enfant = $_methode_parent['source_champ'] ?? id_table_objet($objet_enfant);
1525
+
1526
+                // S'il y a une condition supplémentaire
1527
+                if (isset($_methode_parent['table_condition'])) {
1528
+                    $where[] = $_methode_parent['table_condition'];
1529
+                }
1530
+            }
1531
+
1532
+            // On lance la requête
1533
+            $is_table_lien = (strpos($table_enfant, '_liens') !== false and substr($table_enfant, -6) === '_liens');
1534
+            if ($rows = sql_allfetsel($is_table_lien ? '*' : $cle_objet_enfant, $table_enfant, $where)) {
1535
+                $enfant = [
1536
+                    'objet' => $objet_enfant,
1537
+                    'id_objet' => 0,
1538
+                    'table' => $table_enfant
1539
+                ];
1540
+                if (isset($_methode_parent['champ'])) {
1541
+                    $enfant['champ'] = $_methode_parent['champ'];
1542
+                }
1543
+                if (isset($_methode_parent['champ_type'])) {
1544
+                    $enfant['champ_type'] = $_methode_parent['champ_type'];
1545
+                }
1546
+                foreach ($rows as $row) {
1547
+                    $enfant['id_objet'] = intval($row[$cle_objet_enfant]);
1548
+                    if ($is_table_lien) {
1549
+                        $enfant['lien'] = $row;
1550
+                    }
1551
+                    $enfants[] = $enfant;
1552
+                }
1553
+            }
1554
+        }
1555
+    }
1556
+
1557
+    // On passe par un pipeline avant de retourner
1558
+    $enfants = pipeline(
1559
+        'objet_lister_enfants',
1560
+        [
1561
+            'args' => [
1562
+                'objet' => $objet,
1563
+                'id_objet' => $id_objet,
1564
+            ],
1565
+            'data' => $enfants,
1566
+        ]
1567
+    );
1568
+
1569
+    return $enfants;
1570 1570
 }
1571 1571
 
1572 1572
 /**
@@ -1578,17 +1578,17 @@  discard block
 block discarded – undo
1578 1578
  * @return array
1579 1579
  */
1580 1580
 function objet_lister_enfants_par_type($objet, $id_objet) {
1581
-	$enfants = objet_lister_enfants($objet, $id_objet);
1581
+    $enfants = objet_lister_enfants($objet, $id_objet);
1582 1582
 
1583
-	$enfants_par_type = [];
1584
-	foreach ($enfants as $enfant) {
1585
-		if (!isset($enfants_par_type[$enfant['objet']])) {
1586
-			$enfants_par_type[$enfant['objet']] = [];
1587
-		}
1588
-		$enfants_par_type[$enfant['objet']][] = $enfant['id_objet'];
1589
-	}
1583
+    $enfants_par_type = [];
1584
+    foreach ($enfants as $enfant) {
1585
+        if (!isset($enfants_par_type[$enfant['objet']])) {
1586
+            $enfants_par_type[$enfant['objet']] = [];
1587
+        }
1588
+        $enfants_par_type[$enfant['objet']][] = $enfant['id_objet'];
1589
+    }
1590 1590
 
1591
-	return $enfants_par_type;
1591
+    return $enfants_par_type;
1592 1592
 }
1593 1593
 
1594 1594
 /**
@@ -1600,35 +1600,35 @@  discard block
 block discarded – undo
1600 1600
  *     Retourne un tableau de tableau contenant les informations de type et de champ pour trouver le parent ou false sinon
1601 1601
  */
1602 1602
 function objet_type_decrire_infos_parents($objet) {
1603
-	static $parents = [];
1604
-
1605
-	// Si on ne l'a pas encore cherché pour cet objet
1606
-	if (!isset($parents[$objet])) {
1607
-		$parents[$objet] = false;
1608
-		$table = table_objet_sql($objet);
1609
-
1610
-		// Si on trouve bien la description de cet objet
1611
-		if ($infos = lister_tables_objets_sql($table)) {
1612
-			if (isset($infos['parent']) and is_array($infos['parent'])) {
1613
-				// S'il y a une description explicite de parent, c'est prioritaire
1614
-				// -- on traite les cas où il y a une ou plusieurs description mais on renvoie toujours un tableau
1615
-				//    de description
1616
-				if (!isset($infos['parent'][0])) {
1617
-					$parents[$objet] = [$infos['parent']];
1618
-				} else {
1619
-					$parents[$objet] = $infos['parent'];
1620
-				}
1621
-			} elseif (isset($infos['field']['id_rubrique'])) {
1622
-				// Sinon on cherche des cas courants connus magiquement, à commencer par id_rubrique
1623
-				$parents[$objet] = [['type' => 'rubrique', 'champ' => 'id_rubrique']];
1624
-			} elseif (isset($infos['field']['id_parent'])) {
1625
-				// Sinon on cherche un champ id_parent, ce qui signifie que l'objet est parent de lui-même
1626
-				$parents[$objet] = [['type' => $objet, 'champ' => 'id_parent']];
1627
-			}
1628
-		}
1629
-	}
1630
-
1631
-	return $parents[$objet];
1603
+    static $parents = [];
1604
+
1605
+    // Si on ne l'a pas encore cherché pour cet objet
1606
+    if (!isset($parents[$objet])) {
1607
+        $parents[$objet] = false;
1608
+        $table = table_objet_sql($objet);
1609
+
1610
+        // Si on trouve bien la description de cet objet
1611
+        if ($infos = lister_tables_objets_sql($table)) {
1612
+            if (isset($infos['parent']) and is_array($infos['parent'])) {
1613
+                // S'il y a une description explicite de parent, c'est prioritaire
1614
+                // -- on traite les cas où il y a une ou plusieurs description mais on renvoie toujours un tableau
1615
+                //    de description
1616
+                if (!isset($infos['parent'][0])) {
1617
+                    $parents[$objet] = [$infos['parent']];
1618
+                } else {
1619
+                    $parents[$objet] = $infos['parent'];
1620
+                }
1621
+            } elseif (isset($infos['field']['id_rubrique'])) {
1622
+                // Sinon on cherche des cas courants connus magiquement, à commencer par id_rubrique
1623
+                $parents[$objet] = [['type' => 'rubrique', 'champ' => 'id_rubrique']];
1624
+            } elseif (isset($infos['field']['id_parent'])) {
1625
+                // Sinon on cherche un champ id_parent, ce qui signifie que l'objet est parent de lui-même
1626
+                $parents[$objet] = [['type' => $objet, 'champ' => 'id_parent']];
1627
+            }
1628
+        }
1629
+    }
1630
+
1631
+    return $parents[$objet];
1632 1632
 }
1633 1633
 
1634 1634
 /**
@@ -1640,36 +1640,36 @@  discard block
 block discarded – undo
1640 1640
  *     Retourne un tableau de tableaux contenant chacun les informations d'un type d'enfant
1641 1641
  */
1642 1642
 function objet_type_decrire_infos_enfants($objet) {
1643
-	static $enfants = [];
1644
-
1645
-	// Si on a déjà fait la recherche pour ce type d'objet
1646
-	if (!isset($enfants[$objet])) {
1647
-		$enfants[$objet] = [];
1648
-		$tables = lister_tables_objets_sql();
1649
-
1650
-		// On parcourt toutes les tables d'objet, et on cherche si chacune peut être enfant
1651
-		foreach ($tables as $table => $infos) {
1652
-			$objet_enfant = objet_type($table);
1653
-
1654
-			// On ne va pas refaire les tests des différents cas, on réutilise
1655
-			if ($parent_methodes = objet_type_decrire_infos_parents($objet_enfant)) {
1656
-				// On parcourt les différents cas possible, si certains peuvent concerner l'objet demandé
1657
-				foreach ($parent_methodes as $parent_methode) {
1658
-					// Si la méthode qu'on teste n'exclut pas le parent demandé
1659
-					if (!isset($parent_methode['exclus']) or !in_array($objet, $parent_methode['exclus'])) {
1660
-						// Si le type du parent est fixe et directement l'objet demandé
1661
-						if (isset($parent_methode['type']) and isset($parent_methode['champ']) and $parent_methode['type'] == $objet) {
1662
-							$enfants[$objet][$objet_enfant] = $parent_methode;
1663
-						}
1664
-						// Si le type est variable, alors l'objet demandé peut forcément être parent
1665
-						elseif (isset($parent_methode['champ_type']) and isset($parent_methode['champ'])) {
1666
-							$enfants[$objet][$objet_enfant] = $parent_methode;
1667
-						}
1668
-					}
1669
-				}
1670
-			}
1671
-		}
1672
-	}
1673
-
1674
-	return $enfants[$objet];
1643
+    static $enfants = [];
1644
+
1645
+    // Si on a déjà fait la recherche pour ce type d'objet
1646
+    if (!isset($enfants[$objet])) {
1647
+        $enfants[$objet] = [];
1648
+        $tables = lister_tables_objets_sql();
1649
+
1650
+        // On parcourt toutes les tables d'objet, et on cherche si chacune peut être enfant
1651
+        foreach ($tables as $table => $infos) {
1652
+            $objet_enfant = objet_type($table);
1653
+
1654
+            // On ne va pas refaire les tests des différents cas, on réutilise
1655
+            if ($parent_methodes = objet_type_decrire_infos_parents($objet_enfant)) {
1656
+                // On parcourt les différents cas possible, si certains peuvent concerner l'objet demandé
1657
+                foreach ($parent_methodes as $parent_methode) {
1658
+                    // Si la méthode qu'on teste n'exclut pas le parent demandé
1659
+                    if (!isset($parent_methode['exclus']) or !in_array($objet, $parent_methode['exclus'])) {
1660
+                        // Si le type du parent est fixe et directement l'objet demandé
1661
+                        if (isset($parent_methode['type']) and isset($parent_methode['champ']) and $parent_methode['type'] == $objet) {
1662
+                            $enfants[$objet][$objet_enfant] = $parent_methode;
1663
+                        }
1664
+                        // Si le type est variable, alors l'objet demandé peut forcément être parent
1665
+                        elseif (isset($parent_methode['champ_type']) and isset($parent_methode['champ'])) {
1666
+                            $enfants[$objet][$objet_enfant] = $parent_methode;
1667
+                        }
1668
+                    }
1669
+                }
1670
+            }
1671
+        }
1672
+    }
1673
+
1674
+    return $enfants[$objet];
1675 1675
 }
Please login to merge, or discard this patch.
ecrire/index.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -35,7 +35,7 @@  discard block
 block discarded – undo
35 35
 // Determiner l'action demandee
36 36
 //
37 37
 
38
-$exec = (string)_request('exec');
38
+$exec = (string) _request('exec');
39 39
 $reinstall = (!is_null(_request('reinstall'))) ? _request('reinstall') : ($exec == 'install' ? 'oui' : null);
40 40
 //
41 41
 // Les scripts d'insallation n'authentifient pas, forcement,
@@ -121,9 +121,9 @@  discard block
 block discarded – undo
121 121
 			or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo')
122 122
 		)
123 123
 	) {
124
-		spip_log('Quand la meta admin vaut ' .
125
-			$GLOBALS['meta']['admin'] .
126
-			' seul un admin peut se connecter et sans AJAX.' .
124
+		spip_log('Quand la meta admin vaut '.
125
+			$GLOBALS['meta']['admin'].
126
+			' seul un admin peut se connecter et sans AJAX.'.
127 127
 			' En cas de probleme, detruire cette meta.');
128 128
 		die(_T('info_travaux_texte'));
129 129
 	}
Please login to merge, or discard this patch.
Indentation   +77 added lines, -77 removed lines patch added patch discarded remove patch
@@ -19,14 +19,14 @@  discard block
 block discarded – undo
19 19
 /** Drapeau indiquant que l'on est dans l'espace privé */
20 20
 define('_ESPACE_PRIVE', true);
21 21
 if (!defined('_ECRIRE_INC_VERSION')) {
22
-	include 'inc_version.php';
22
+    include 'inc_version.php';
23 23
 }
24 24
 
25 25
 // Verification anti magic_quotes_sybase, pour qui addslashes("'") = "''"
26 26
 // On prefere la faire ici plutot que dans inc_version, c'est moins souvent et
27 27
 // si le reglage est modifie sur un site en prod, ca fait moins mal
28 28
 if (addslashes("'") !== "\\'") {
29
-	die('SPIP incompatible magic_quotes_sybase');
29
+    die('SPIP incompatible magic_quotes_sybase');
30 30
 }
31 31
 
32 32
 include_spip('inc/cookie');
@@ -42,18 +42,18 @@  discard block
 block discarded – undo
42 42
 // alors il faut blinder les variables d'URL
43 43
 //
44 44
 if (autoriser_sans_cookie($exec, false)) {
45
-	if (!isset($reinstall)) {
46
-		$reinstall = 'non';
47
-	}
48
-	$var_auth = true;
45
+    if (!isset($reinstall)) {
46
+        $reinstall = 'non';
47
+    }
48
+    $var_auth = true;
49 49
 } else {
50
-	// Authentification, redefinissable
51
-	$auth = charger_fonction('auth', 'inc');
52
-	$var_auth = $auth();
53
-	if ($var_auth) {
54
-		echo auth_echec($var_auth);
55
-		exit;
56
-	}
50
+    // Authentification, redefinissable
51
+    $auth = charger_fonction('auth', 'inc');
52
+    $var_auth = $auth();
53
+    if ($var_auth) {
54
+        echo auth_echec($var_auth);
55
+        exit;
56
+    }
57 57
 }
58 58
 
59 59
 // initialiser a la langue par defaut
@@ -64,29 +64,29 @@  discard block
 block discarded – undo
64 64
 
65 65
 
66 66
 if (_request('action') or _request('var_ajax') or _request('formulaire_action')) {
67
-	if (!autoriser_sans_cookie($exec)) {
68
-		// Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires
69
-		include_spip('public/aiguiller');
70
-		if (
71
-			// cas des appels actions ?action=xxx
72
-			traiter_appels_actions()
73
-			or
74
-			// cas des hits ajax sur les inclusions ajax
75
-			traiter_appels_inclusions_ajax()
76
-			or
77
-			// cas des formulaires charger/verifier/traiter
78
-			traiter_formulaires_dynamiques()
79
-		) {
80
-			exit;
81
-		} // le hit est fini !
82
-	}
67
+    if (!autoriser_sans_cookie($exec)) {
68
+        // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires
69
+        include_spip('public/aiguiller');
70
+        if (
71
+            // cas des appels actions ?action=xxx
72
+            traiter_appels_actions()
73
+            or
74
+            // cas des hits ajax sur les inclusions ajax
75
+            traiter_appels_inclusions_ajax()
76
+            or
77
+            // cas des formulaires charger/verifier/traiter
78
+            traiter_formulaires_dynamiques()
79
+        ) {
80
+            exit;
81
+        } // le hit est fini !
82
+    }
83 83
 }
84 84
 // securiser les redirect du back-office
85 85
 if (_request('redirect')) {
86
-	if (!function_exists('securiser_redirect_action')) {
87
-		include_spip('public/aiguiller');
88
-	}
89
-	set_request('redirect', securiser_redirect_action(_request('redirect')));
86
+    if (!function_exists('securiser_redirect_action')) {
87
+        include_spip('public/aiguiller');
88
+    }
89
+    set_request('redirect', securiser_redirect_action(_request('redirect')));
90 90
 }
91 91
 
92 92
 
@@ -96,12 +96,12 @@  discard block
 block discarded – undo
96 96
 
97 97
 // Controle de la version, sauf si on est deja en train de s'en occuper
98 98
 if (
99
-	!$reinstall == 'oui'
100
-	and !_AJAX
101
-	and isset($GLOBALS['meta']['version_installee'])
102
-	and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee'])))
99
+    !$reinstall == 'oui'
100
+    and !_AJAX
101
+    and isset($GLOBALS['meta']['version_installee'])
102
+    and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee'])))
103 103
 ) {
104
-	$exec = 'demande_mise_a_jour';
104
+    $exec = 'demande_mise_a_jour';
105 105
 }
106 106
 
107 107
 // Quand une action d'administration est en cours (meta "admin"),
@@ -111,39 +111,39 @@  discard block
 block discarded – undo
111 111
 // sinon c'est qu'elle a ete interrompue et il faut la reprendre
112 112
 
113 113
 elseif (isset($GLOBALS['meta']['admin'])) {
114
-	if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']['admin'], $l)) {
115
-		[, $var_f, $n] = $l;
116
-	}
117
-	if (
118
-		_AJAX
119
-		or !(
120
-			isset($_COOKIE['spip_admin'])
121
-			or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo')
122
-		)
123
-	) {
124
-		spip_log('Quand la meta admin vaut ' .
125
-			$GLOBALS['meta']['admin'] .
126
-			' seul un admin peut se connecter et sans AJAX.' .
127
-			' En cas de probleme, detruire cette meta.');
128
-		die(_T('info_travaux_texte'));
129
-	}
130
-	if ($n) {
131
-		[, $var_f, $n] = $l;
132
-		if (tester_url_ecrire("base_$var_f")) {
133
-			$var_f = "base_$var_f";
134
-		}
135
-		if ($var_f != $exec) {
136
-			spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec");
137
-			$exec = $var_f;
138
-			set_request('exec', $exec);
139
-		}
140
-	}
114
+    if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']['admin'], $l)) {
115
+        [, $var_f, $n] = $l;
116
+    }
117
+    if (
118
+        _AJAX
119
+        or !(
120
+            isset($_COOKIE['spip_admin'])
121
+            or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo')
122
+        )
123
+    ) {
124
+        spip_log('Quand la meta admin vaut ' .
125
+            $GLOBALS['meta']['admin'] .
126
+            ' seul un admin peut se connecter et sans AJAX.' .
127
+            ' En cas de probleme, detruire cette meta.');
128
+        die(_T('info_travaux_texte'));
129
+    }
130
+    if ($n) {
131
+        [, $var_f, $n] = $l;
132
+        if (tester_url_ecrire("base_$var_f")) {
133
+            $var_f = "base_$var_f";
134
+        }
135
+        if ($var_f != $exec) {
136
+            spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec");
137
+            $exec = $var_f;
138
+            set_request('exec', $exec);
139
+        }
140
+    }
141 141
 }
142 142
 // si nom pas plausible, prendre le script par defaut
143 143
 // attention aux deux cas 404/403 qui commencent par un 4 !
144 144
 elseif (!preg_match(',^[a-z4_][0-9a-z_-]*$,i', $exec)) {
145
-	$exec = 'accueil';
146
-	set_request('exec', $exec);
145
+    $exec = 'accueil';
146
+    set_request('exec', $exec);
147 147
 }
148 148
 
149 149
 // compatibilite ascendante : obsolete, ne plus utiliser
@@ -155,19 +155,19 @@  discard block
 block discarded – undo
155 155
 // on appelle directement la fonction, car un appel d'action peut conduire a une boucle infinie
156 156
 // si le cookie n'est pas pose correctement dans l'action
157 157
 if (
158
-	!$var_auth and isset($_COOKIE['spip_lang_ecrire'])
159
-	and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang']
158
+    !$var_auth and isset($_COOKIE['spip_lang_ecrire'])
159
+    and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang']
160 160
 ) {
161
-	include_spip('action/converser');
162
-	action_converser_post($GLOBALS['visiteur_session']['lang'], true);
161
+    include_spip('action/converser');
162
+    action_converser_post($GLOBALS['visiteur_session']['lang'], true);
163 163
 }
164 164
 
165 165
 if ($var_f = tester_url_ecrire($exec)) {
166
-	$var_f = charger_fonction($var_f);
167
-	$var_f(); // at last
166
+    $var_f = charger_fonction($var_f);
167
+    $var_f(); // at last
168 168
 } else {
169
-	// Rien de connu: rerouter vers exec=404 au lieu d'echouer
170
-	// ce qui permet de laisser la main a un plugin
171
-	$var_f = charger_fonction('404');
172
-	$var_f($exec);
169
+    // Rien de connu: rerouter vers exec=404 au lieu d'echouer
170
+    // ce qui permet de laisser la main a un plugin
171
+    $var_f = charger_fonction('404');
172
+    $var_f($exec);
173 173
 }
Please login to merge, or discard this patch.
ecrire/iterateur/php.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
 
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 
@@ -36,22 +36,22 @@  discard block
 block discarded – undo
36 36
  *     Description de la boucle complétée des champs
37 37
  */
38 38
 function iterateur_php_dist($b, $iteratorName) {
39
-	$b->iterateur = $iteratorName; # designe la classe d'iterateur
40
-	$b->show = [
41
-		'field' => [
42
-			'cle' => 'STRING',
43
-			'valeur' => 'STRING',
44
-		]
45
-	];
46
-	foreach (get_class_methods($iteratorName) as $method) {
47
-		$b->show['field'][strtolower($method)] = 'METHOD';
48
-	}
49
-
50
-	/*
39
+    $b->iterateur = $iteratorName; # designe la classe d'iterateur
40
+    $b->show = [
41
+        'field' => [
42
+            'cle' => 'STRING',
43
+            'valeur' => 'STRING',
44
+        ]
45
+    ];
46
+    foreach (get_class_methods($iteratorName) as $method) {
47
+        $b->show['field'][strtolower($method)] = 'METHOD';
48
+    }
49
+
50
+    /*
51 51
 	foreach (get_class_vars($iteratorName) as $property) {
52 52
 		$b->show['field'][ strtolower($property) ] = 'PROPERTY';
53 53
 	}
54 54
 	*/
55 55
 
56
-	return $b;
56
+    return $b;
57 57
 }
Please login to merge, or discard this patch.
ecrire/iterateur/pour.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('iterateur/data');
@@ -39,13 +39,13 @@  discard block
 block discarded – undo
39 39
  *     Description de la boucle complétée des champs
40 40
  */
41 41
 function iterateur_POUR_dist($b) {
42
-	$b->iterateur = 'DATA'; # designe la classe d'iterateur
43
-	$b->show = [
44
-		'field' => [
45
-			'cle' => 'STRING',
46
-			'valeur' => 'STRING',
47
-		]
48
-	];
42
+    $b->iterateur = 'DATA'; # designe la classe d'iterateur
43
+    $b->show = [
44
+        'field' => [
45
+            'cle' => 'STRING',
46
+            'valeur' => 'STRING',
47
+        ]
48
+    ];
49 49
 
50
-	return $b;
50
+    return $b;
51 51
 }
Please login to merge, or discard this patch.
ecrire/iterateur/condition.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('iterateur/data');
@@ -35,12 +35,12 @@  discard block
 block discarded – undo
35 35
  *     Description de la boucle complétée des champs
36 36
  */
37 37
 function iterateur_CONDITION_dist($b) {
38
-	$b->iterateur = 'CONDITION'; # designe la classe d'iterateur
39
-	$b->show = [
40
-		'field' => []
41
-	];
38
+    $b->iterateur = 'CONDITION'; # designe la classe d'iterateur
39
+    $b->show = [
40
+        'field' => []
41
+    ];
42 42
 
43
-	return $b;
43
+    return $b;
44 44
 }
45 45
 
46 46
 /**
@@ -49,12 +49,12 @@  discard block
 block discarded – undo
49 49
  * La boucle condition n'a toujours qu'un seul élément.
50 50
  */
51 51
 class IterateurCONDITION extends IterateurData {
52
-	/**
53
-	 * Obtenir les données de la boucle CONDITION
54
-	 *
55
-	 * @param array $command
56
-	 **/
57
-	protected function select($command) {
58
-		$this->tableau = [0 => 1];
59
-	}
52
+    /**
53
+     * Obtenir les données de la boucle CONDITION
54
+     *
55
+     * @param array $command
56
+     **/
57
+    protected function select($command) {
58
+        $this->tableau = [0 => 1];
59
+    }
60 60
 }
Please login to merge, or discard this patch.
ecrire/install/etape_ldap1.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -58,11 +58,11 @@  discard block
 block discarded – undo
58 58
 					'valeur' => $adresse_ldap
59 59
 				],
60 60
 				'port_ldap' => [
61
-					'label' => _T('entree_port_annuaire') . '<br />' . _T('texte_port_annuaire'),
61
+					'label' => _T('entree_port_annuaire').'<br />'._T('texte_port_annuaire'),
62 62
 					'valeur' => $port_ldap
63 63
 				],
64 64
 				'tls_ldap' => [
65
-					'label' => '<b>' . _T('tls_ldap') . '</b>',
65
+					'label' => '<b>'._T('tls_ldap').'</b>',
66 66
 					'valeur' => $tls_ldap,
67 67
 					'alternatives' => [
68 68
 						'non' => _T('item_non'),
@@ -80,7 +80,7 @@  discard block
 block discarded – undo
80 80
 			]
81 81
 		)
82 82
 
83
-		. "\n<p>" . _T('texte_acces_ldap_anonyme_1') . '</p>'
83
+		. "\n<p>"._T('texte_acces_ldap_anonyme_1').'</p>'
84 84
 		. fieldset(
85 85
 			_T('connexion_ldap'),
86 86
 			[
Please login to merge, or discard this patch.
Indentation   +71 added lines, -71 removed lines patch added patch discarded remove patch
@@ -11,88 +11,88 @@
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 function install_etape_ldap1_dist() {
18
-	$adresse_ldap = defined('_INSTALL_HOST_LDAP')
19
-		? _INSTALL_HOST_LDAP
20
-		: 'localhost';
18
+    $adresse_ldap = defined('_INSTALL_HOST_LDAP')
19
+        ? _INSTALL_HOST_LDAP
20
+        : 'localhost';
21 21
 
22
-	$port_ldap = defined('_INSTALL_PORT_LDAP')
23
-		? _INSTALL_PORT_LDAP
24
-		: 389;
22
+    $port_ldap = defined('_INSTALL_PORT_LDAP')
23
+        ? _INSTALL_PORT_LDAP
24
+        : 389;
25 25
 
26
-	$tls_ldap = defined('_INSTALL_TLS_LDAP')
27
-		? _INSTALL_TLS_LDAP
28
-		: 'non';
26
+    $tls_ldap = defined('_INSTALL_TLS_LDAP')
27
+        ? _INSTALL_TLS_LDAP
28
+        : 'non';
29 29
 
30
-	$protocole_ldap = defined('_INSTALL_PROTOCOLE_LDAP')
31
-		? _INSTALL_PROTOCOLE_LDAP
32
-		: 3; // on essaie 2 en cas d'echec
30
+    $protocole_ldap = defined('_INSTALL_PROTOCOLE_LDAP')
31
+        ? _INSTALL_PROTOCOLE_LDAP
32
+        : 3; // on essaie 2 en cas d'echec
33 33
 
34
-	$login_ldap = defined('_INSTALL_USER_LDAP')
35
-		? _INSTALL_USER_LDAP
36
-		: '';
34
+    $login_ldap = defined('_INSTALL_USER_LDAP')
35
+        ? _INSTALL_USER_LDAP
36
+        : '';
37 37
 
38
-	$pass_ldap = defined('_INSTALL_PASS_LDAP')
39
-		? _INSTALL_PASS_LDAP
40
-		: '';
38
+    $pass_ldap = defined('_INSTALL_PASS_LDAP')
39
+        ? _INSTALL_PASS_LDAP
40
+        : '';
41 41
 
42
-	echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
42
+    echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
43 43
 
44
-	echo info_etape(
45
-		_T('titre_connexion_ldap'),
46
-		info_progression_etape(1, 'etape_ldap', 'install/')
47
-	);
44
+    echo info_etape(
45
+        _T('titre_connexion_ldap'),
46
+        info_progression_etape(1, 'etape_ldap', 'install/')
47
+    );
48 48
 
49
-	echo generer_form_ecrire('install', (
50
-		"\n<input type='hidden' name='etape' value='ldap2' />"
51
-		. fieldset(
52
-			_T('entree_adresse_annuaire'),
53
-			[
54
-				'adresse_ldap' => [
55
-					'label' => _T('texte_adresse_annuaire_1'),
56
-					'valeur' => $adresse_ldap
57
-				],
58
-				'port_ldap' => [
59
-					'label' => _T('entree_port_annuaire') . '<br />' . _T('texte_port_annuaire'),
60
-					'valeur' => $port_ldap
61
-				],
62
-				'tls_ldap' => [
63
-					'label' => '<b>' . _T('tls_ldap') . '</b>',
64
-					'valeur' => $tls_ldap,
65
-					'alternatives' => [
66
-						'non' => _T('item_non'),
67
-						'oui' => _T('item_oui')
68
-					]
69
-				],
70
-				'protocole_ldap' => [
71
-					'label' => _T('protocole_ldap'),
72
-					'valeur' => $protocole_ldap,
73
-					'alternatives' => [
74
-						'3' => '3',
75
-						'2' => '2'
76
-					]
77
-				]
78
-			]
79
-		)
49
+    echo generer_form_ecrire('install', (
50
+        "\n<input type='hidden' name='etape' value='ldap2' />"
51
+        . fieldset(
52
+            _T('entree_adresse_annuaire'),
53
+            [
54
+                'adresse_ldap' => [
55
+                    'label' => _T('texte_adresse_annuaire_1'),
56
+                    'valeur' => $adresse_ldap
57
+                ],
58
+                'port_ldap' => [
59
+                    'label' => _T('entree_port_annuaire') . '<br />' . _T('texte_port_annuaire'),
60
+                    'valeur' => $port_ldap
61
+                ],
62
+                'tls_ldap' => [
63
+                    'label' => '<b>' . _T('tls_ldap') . '</b>',
64
+                    'valeur' => $tls_ldap,
65
+                    'alternatives' => [
66
+                        'non' => _T('item_non'),
67
+                        'oui' => _T('item_oui')
68
+                    ]
69
+                ],
70
+                'protocole_ldap' => [
71
+                    'label' => _T('protocole_ldap'),
72
+                    'valeur' => $protocole_ldap,
73
+                    'alternatives' => [
74
+                        '3' => '3',
75
+                        '2' => '2'
76
+                    ]
77
+                ]
78
+            ]
79
+        )
80 80
 
81
-		. "\n<p>" . _T('texte_acces_ldap_anonyme_1') . '</p>'
82
-		. fieldset(
83
-			_T('connexion_ldap'),
84
-			[
85
-				'login_ldap' => [
86
-					'label' => _T('texte_login_ldap_1'),
87
-					'valeur' => $login_ldap
88
-				],
89
-				'pass_ldap' => [
90
-					'label' => _T('entree_passe_ldap'),
91
-					'valeur' => $pass_ldap
92
-				]
93
-			]
94
-		)
95
-		. bouton_suivant()));
81
+        . "\n<p>" . _T('texte_acces_ldap_anonyme_1') . '</p>'
82
+        . fieldset(
83
+            _T('connexion_ldap'),
84
+            [
85
+                'login_ldap' => [
86
+                    'label' => _T('texte_login_ldap_1'),
87
+                    'valeur' => $login_ldap
88
+                ],
89
+                'pass_ldap' => [
90
+                    'label' => _T('entree_passe_ldap'),
91
+                    'valeur' => $pass_ldap
92
+                ]
93
+            ]
94
+        )
95
+        . bouton_suivant()));
96 96
 
97
-	echo install_fin_html();
97
+    echo install_fin_html();
98 98
 }
Please login to merge, or discard this patch.
ecrire/install/etape_chmod.php 2 patches
Spacing   +15 added lines, -16 removed lines patch added patch discarded remove patch
@@ -81,7 +81,7 @@  discard block
 block discarded – undo
81 81
 			$test_dir .= '/';
82 82
 		}
83 83
 		if (!in_array($test_dir, $GLOBALS['test_dirs'])) {
84
-			$GLOBALS['test_dirs'][] = _DIR_RACINE . $test_dir;
84
+			$GLOBALS['test_dirs'][] = _DIR_RACINE.$test_dir;
85 85
 		}
86 86
 	} else {
87 87
 		if (!_FILE_CONNECT) {
@@ -96,11 +96,11 @@  discard block
 block discarded – undo
96 96
 	foreach ($GLOBALS['test_dirs'] as $i => $my_dir) {
97 97
 		$test = test_ecrire($my_dir);
98 98
 		if (!$test) {
99
-			$m = preg_replace(',^' . _DIR_RACINE . ',', '', $my_dir);
99
+			$m = preg_replace(',^'._DIR_RACINE.',', '', $my_dir);
100 100
 			if (@file_exists($my_dir)) {
101
-				$bad_dirs['<li>' . $m . '</li>'] = 1;
101
+				$bad_dirs['<li>'.$m.'</li>'] = 1;
102 102
 			} else {
103
-				$absent_dirs['<li>' . $m . '</li>'] = 1;
103
+				$absent_dirs['<li>'.$m.'</li>'] = 1;
104 104
 			}
105 105
 		} else {
106 106
 			$chmod = max($chmod, $test);
@@ -110,21 +110,21 @@  discard block
 block discarded – undo
110 110
 	if ($bad_dirs or $absent_dirs) {
111 111
 		if (!_FILE_CONNECT) {
112 112
 			$titre = _T('dirs_preliminaire');
113
-			$continuer = ' ' . _T('dirs_commencer') . '.';
113
+			$continuer = ' '._T('dirs_commencer').'.';
114 114
 		} else {
115 115
 			$titre = _T('dirs_probleme_droits');
116 116
 		}
117 117
 
118 118
 
119
-		$res = "<div align='right'>" . menu_langues('var_lang_ecrire') . "</div>\n";
119
+		$res = "<div align='right'>".menu_langues('var_lang_ecrire')."</div>\n";
120 120
 
121 121
 		if ($bad_dirs) {
122 122
 			$res .=
123 123
 				_T(
124 124
 					'dirs_repertoires_suivants',
125 125
 					['bad_dirs' => join("\n", array_keys($bad_dirs))]
126
-				) .
127
-				'<b>' . _T('login_recharger') . '</b>.';
126
+				).
127
+				'<b>'._T('login_recharger').'</b>.';
128 128
 		}
129 129
 
130 130
 		if ($absent_dirs) {
@@ -132,22 +132,21 @@  discard block
 block discarded – undo
132 132
 				_T(
133 133
 					'dirs_repertoires_absents',
134 134
 					['bad_dirs' => join("\n", array_keys($absent_dirs))]
135
-				) .
136
-				'<b>' . _T('login_recharger') . '</b>.';
135
+				).
136
+				'<b>'._T('login_recharger').'</b>.';
137 137
 		}
138
-		$res = '<p>' . $continuer . $res . aider('install0', true) . '</p>';
138
+		$res = '<p>'.$continuer.$res.aider('install0', true).'</p>';
139 139
 
140 140
 		$t = _T('login_recharger');
141
-		$t = (!$test_dir ? '' :
142
-				"<input type='hidden' name='test_dir' value='" . spip_htmlspecialchars($test_dir, ENT_QUOTES) . "' />")
141
+		$t = (!$test_dir ? '' : "<input type='hidden' name='test_dir' value='".spip_htmlspecialchars($test_dir, ENT_QUOTES)."' />")
143 142
 			. "<input type='hidden' name='etape' value='chmod' />"
144
-			. "<div style='text-align: right'><input type='submit' value='" . attribut_html($t) . "' /></div>";
143
+			. "<div style='text-align: right'><input type='submit' value='".attribut_html($t)."' /></div>";
145 144
 
146
-		echo minipres($titre, $res . generer_form_ecrire('install', $t));
145
+		echo minipres($titre, $res.generer_form_ecrire('install', $t));
147 146
 	} else {
148 147
 		$deja = (_FILE_CONNECT and analyse_fichier_connection(_FILE_CONNECT));
149 148
 		if (!$deja) {
150
-			redirige_url_ecrire('install', 'etape=1&chmod=' . $chmod);
149
+			redirige_url_ecrire('install', 'etape=1&chmod='.$chmod);
151 150
 		} else {
152 151
 			redirige_url_ecrire();
153 152
 		}
Please login to merge, or discard this patch.
Indentation   +118 added lines, -118 removed lines patch added patch discarded remove patch
@@ -11,11 +11,11 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 if (defined('_TEST_DIRS')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 define('_TEST_DIRS', '1');
21 21
 
@@ -26,42 +26,42 @@  discard block
 block discarded – undo
26 26
 // Tente d'ecrire
27 27
 //
28 28
 function test_ecrire($my_dir) {
29
-	static $chmod = 0;
30
-
31
-	$ok = false;
32
-	$script = @file_exists('spip_loader.php') ? 'spip_loader.php' : $_SERVER['PHP_SELF'];
33
-	$self = basename($script);
34
-	$uid = @fileowner('.');
35
-	$uid2 = @fileowner($self);
36
-	$gid = @filegroup('.');
37
-	$gid2 = @filegroup($self);
38
-	$perms = @fileperms($self);
39
-
40
-	// Comparer l'appartenance d'un fichier cree par PHP
41
-	// avec celle du script et du repertoire courant
42
-	if (!$chmod) {
43
-		@rmdir('test');
44
-		spip_unlink('test'); // effacer au cas ou
45
-		@touch('test');
46
-		if ($uid > 0 && $uid == $uid2 && @fileowner('test') == $uid) {
47
-			$chmod = 0700;
48
-		} else {
49
-			if ($gid > 0 && $gid == $gid2 && @filegroup('test') == $gid) {
50
-				$chmod = 0770;
51
-			} else {
52
-				$chmod = 0777;
53
-			}
54
-		}
55
-		// Appliquer de plus les droits d'acces du script
56
-		if ($perms > 0) {
57
-			$perms = ($perms & 0777) | (($perms & 0444) >> 2);
58
-			$chmod |= $perms;
59
-		}
60
-		spip_unlink('test');
61
-	}
62
-	$ok = is_dir($my_dir) && is_writable($my_dir);
63
-
64
-	return $ok ? $chmod : false;
29
+    static $chmod = 0;
30
+
31
+    $ok = false;
32
+    $script = @file_exists('spip_loader.php') ? 'spip_loader.php' : $_SERVER['PHP_SELF'];
33
+    $self = basename($script);
34
+    $uid = @fileowner('.');
35
+    $uid2 = @fileowner($self);
36
+    $gid = @filegroup('.');
37
+    $gid2 = @filegroup($self);
38
+    $perms = @fileperms($self);
39
+
40
+    // Comparer l'appartenance d'un fichier cree par PHP
41
+    // avec celle du script et du repertoire courant
42
+    if (!$chmod) {
43
+        @rmdir('test');
44
+        spip_unlink('test'); // effacer au cas ou
45
+        @touch('test');
46
+        if ($uid > 0 && $uid == $uid2 && @fileowner('test') == $uid) {
47
+            $chmod = 0700;
48
+        } else {
49
+            if ($gid > 0 && $gid == $gid2 && @filegroup('test') == $gid) {
50
+                $chmod = 0770;
51
+            } else {
52
+                $chmod = 0777;
53
+            }
54
+        }
55
+        // Appliquer de plus les droits d'acces du script
56
+        if ($perms > 0) {
57
+            $perms = ($perms & 0777) | (($perms & 0444) >> 2);
58
+            $chmod |= $perms;
59
+        }
60
+        spip_unlink('test');
61
+    }
62
+    $ok = is_dir($my_dir) && is_writable($my_dir);
63
+
64
+    return $ok ? $chmod : false;
65 65
 }
66 66
 
67 67
 //
@@ -71,84 +71,84 @@  discard block
 block discarded – undo
71 71
 
72 72
 function install_etape_chmod_dist() {
73 73
 
74
-	$continuer = null;
75
-	$test_dir = _request('test_dir');
76
-	$chmod = 0;
77
-
78
-	if ($test_dir) {
79
-		if (substr($test_dir, -1) !== '/') {
80
-			$test_dir .= '/';
81
-		}
82
-		if (!in_array($test_dir, $GLOBALS['test_dirs'])) {
83
-			$GLOBALS['test_dirs'][] = _DIR_RACINE . $test_dir;
84
-		}
85
-	} else {
86
-		if (!_FILE_CONNECT) {
87
-			$GLOBALS['test_dirs'][] = _DIR_CONNECT;
88
-			$GLOBALS['test_dirs'][] = _DIR_CHMOD;
89
-		}
90
-	}
91
-
92
-	$bad_dirs = [];
93
-	$absent_dirs = [];
94
-
95
-	foreach ($GLOBALS['test_dirs'] as $i => $my_dir) {
96
-		$test = test_ecrire($my_dir);
97
-		if (!$test) {
98
-			$m = preg_replace(',^' . _DIR_RACINE . ',', '', $my_dir);
99
-			if (@file_exists($my_dir)) {
100
-				$bad_dirs['<li>' . $m . '</li>'] = 1;
101
-			} else {
102
-				$absent_dirs['<li>' . $m . '</li>'] = 1;
103
-			}
104
-		} else {
105
-			$chmod = max($chmod, $test);
106
-		}
107
-	}
108
-
109
-	if ($bad_dirs or $absent_dirs) {
110
-		if (!_FILE_CONNECT) {
111
-			$titre = _T('dirs_preliminaire');
112
-			$continuer = ' ' . _T('dirs_commencer') . '.';
113
-		} else {
114
-			$titre = _T('dirs_probleme_droits');
115
-		}
116
-
117
-
118
-		$res = "<div align='right'>" . menu_langues('var_lang_ecrire') . "</div>\n";
119
-
120
-		if ($bad_dirs) {
121
-			$res .=
122
-				_T(
123
-					'dirs_repertoires_suivants',
124
-					['bad_dirs' => join("\n", array_keys($bad_dirs))]
125
-				) .
126
-				'<b>' . _T('login_recharger') . '</b>.';
127
-		}
128
-
129
-		if ($absent_dirs) {
130
-			$res .=
131
-				_T(
132
-					'dirs_repertoires_absents',
133
-					['bad_dirs' => join("\n", array_keys($absent_dirs))]
134
-				) .
135
-				'<b>' . _T('login_recharger') . '</b>.';
136
-		}
137
-		$res = '<p>' . $continuer . $res . aider('install0', true) . '</p>';
138
-
139
-		$t = _T('login_recharger');
140
-		$t = (!$test_dir ? '' :
141
-				"<input type='hidden' name='test_dir' value='" . spip_htmlspecialchars($test_dir, ENT_QUOTES) . "' />")
142
-			. "<input type='hidden' name='etape' value='chmod' />"
143
-			. "<div style='text-align: right'><input type='submit' value='" . attribut_html($t) . "' /></div>";
144
-
145
-		echo minipres($titre, $res . generer_form_ecrire('install', $t));
146
-	} else {
147
-		$deja = (_FILE_CONNECT and analyse_fichier_connection(_FILE_CONNECT));
148
-		if (!$deja) {
149
-			redirige_url_ecrire('install', 'etape=1&chmod=' . $chmod);
150
-		} else {
151
-			redirige_url_ecrire();
152
-		}
153
-	}
74
+    $continuer = null;
75
+    $test_dir = _request('test_dir');
76
+    $chmod = 0;
77
+
78
+    if ($test_dir) {
79
+        if (substr($test_dir, -1) !== '/') {
80
+            $test_dir .= '/';
81
+        }
82
+        if (!in_array($test_dir, $GLOBALS['test_dirs'])) {
83
+            $GLOBALS['test_dirs'][] = _DIR_RACINE . $test_dir;
84
+        }
85
+    } else {
86
+        if (!_FILE_CONNECT) {
87
+            $GLOBALS['test_dirs'][] = _DIR_CONNECT;
88
+            $GLOBALS['test_dirs'][] = _DIR_CHMOD;
89
+        }
90
+    }
91
+
92
+    $bad_dirs = [];
93
+    $absent_dirs = [];
94
+
95
+    foreach ($GLOBALS['test_dirs'] as $i => $my_dir) {
96
+        $test = test_ecrire($my_dir);
97
+        if (!$test) {
98
+            $m = preg_replace(',^' . _DIR_RACINE . ',', '', $my_dir);
99
+            if (@file_exists($my_dir)) {
100
+                $bad_dirs['<li>' . $m . '</li>'] = 1;
101
+            } else {
102
+                $absent_dirs['<li>' . $m . '</li>'] = 1;
103
+            }
104
+        } else {
105
+            $chmod = max($chmod, $test);
106
+        }
107
+    }
108
+
109
+    if ($bad_dirs or $absent_dirs) {
110
+        if (!_FILE_CONNECT) {
111
+            $titre = _T('dirs_preliminaire');
112
+            $continuer = ' ' . _T('dirs_commencer') . '.';
113
+        } else {
114
+            $titre = _T('dirs_probleme_droits');
115
+        }
116
+
117
+
118
+        $res = "<div align='right'>" . menu_langues('var_lang_ecrire') . "</div>\n";
119
+
120
+        if ($bad_dirs) {
121
+            $res .=
122
+                _T(
123
+                    'dirs_repertoires_suivants',
124
+                    ['bad_dirs' => join("\n", array_keys($bad_dirs))]
125
+                ) .
126
+                '<b>' . _T('login_recharger') . '</b>.';
127
+        }
128
+
129
+        if ($absent_dirs) {
130
+            $res .=
131
+                _T(
132
+                    'dirs_repertoires_absents',
133
+                    ['bad_dirs' => join("\n", array_keys($absent_dirs))]
134
+                ) .
135
+                '<b>' . _T('login_recharger') . '</b>.';
136
+        }
137
+        $res = '<p>' . $continuer . $res . aider('install0', true) . '</p>';
138
+
139
+        $t = _T('login_recharger');
140
+        $t = (!$test_dir ? '' :
141
+                "<input type='hidden' name='test_dir' value='" . spip_htmlspecialchars($test_dir, ENT_QUOTES) . "' />")
142
+            . "<input type='hidden' name='etape' value='chmod' />"
143
+            . "<div style='text-align: right'><input type='submit' value='" . attribut_html($t) . "' /></div>";
144
+
145
+        echo minipres($titre, $res . generer_form_ecrire('install', $t));
146
+    } else {
147
+        $deja = (_FILE_CONNECT and analyse_fichier_connection(_FILE_CONNECT));
148
+        if (!$deja) {
149
+            redirige_url_ecrire('install', 'etape=1&chmod=' . $chmod);
150
+        } else {
151
+            redirige_url_ecrire();
152
+        }
153
+    }
154 154
 }
Please login to merge, or discard this patch.