Completed
Push — spip-3.0 ( 484b62...e817f1 )
by cam
34:33
created
ecrire/maj/v014.php 1 patch
Indentation   +298 added lines, -298 removed lines patch added patch discarded remove patch
@@ -16,312 +16,312 @@
 block discarded – undo
16 16
 
17 17
 function maj_v014_dist($version_installee, $version_cible)
18 18
 {
19
-	if (upgrade_vers(1.404, $version_installee, $version_cible)) {
20
-		spip_query("UPDATE spip_mots SET type='Mots sans groupe...' WHERE type=''");
21
-
22
-		$result = spip_query("SELECT * FROM spip_mots GROUP BY type");
23
-		while($row = sql_fetch($result)) {
24
-				$type = addslashes($row['type']);
25
-				// Old style, doit echouer
26
-				spip_log('ne pas tenir compte de l erreur spip_groupes_mots ci-dessous:', 'mysql');
27
-				spip_query("INSERT INTO spip_groupes_mots 					(titre, unseul, obligatoire, articles, breves, rubriques, syndic, 0minirezo, 1comite, 6forum)					VALUES (\"$type\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')");
28
-				// New style, devrait marcher
29
-				spip_query("INSERT INTO spip_groupes_mots 					(titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum)					VALUES (\"$type\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')");
30
-		}
31
-		sql_delete("spip_mots", "titre='kawax'");
32
-		maj_version (1.404);
33
-	}
34
-
35
-	if (upgrade_vers(1.405, $version_installee, $version_cible)) {
36
-		spip_query("ALTER TABLE spip_mots ADD id_groupe bigint(21) NOT NULL");
19
+    if (upgrade_vers(1.404, $version_installee, $version_cible)) {
20
+        spip_query("UPDATE spip_mots SET type='Mots sans groupe...' WHERE type=''");
21
+
22
+        $result = spip_query("SELECT * FROM spip_mots GROUP BY type");
23
+        while($row = sql_fetch($result)) {
24
+                $type = addslashes($row['type']);
25
+                // Old style, doit echouer
26
+                spip_log('ne pas tenir compte de l erreur spip_groupes_mots ci-dessous:', 'mysql');
27
+                spip_query("INSERT INTO spip_groupes_mots 					(titre, unseul, obligatoire, articles, breves, rubriques, syndic, 0minirezo, 1comite, 6forum)					VALUES (\"$type\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')");
28
+                // New style, devrait marcher
29
+                spip_query("INSERT INTO spip_groupes_mots 					(titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum)					VALUES (\"$type\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')");
30
+        }
31
+        sql_delete("spip_mots", "titre='kawax'");
32
+        maj_version (1.404);
33
+    }
34
+
35
+    if (upgrade_vers(1.405, $version_installee, $version_cible)) {
36
+        spip_query("ALTER TABLE spip_mots ADD id_groupe bigint(21) NOT NULL");
37 37
 	
38
-		$result = spip_query("SELECT * FROM spip_groupes_mots");
39
-		while($row = sql_fetch($result)) {
40
-				$id_groupe = addslashes($row['id_groupe']);
41
-				$type = addslashes($row['titre']);
42
-				spip_query("UPDATE spip_mots SET id_groupe = '$id_groupe' WHERE type='$type'");
43
-		}
44
-		maj_version (1.405);
45
-	}
46
-
47
-	if (upgrade_vers(1.408, $version_installee, $version_cible)) {
48
-		// Images articles passent dans spip_documents
49
-		$result = spip_query("SELECT id_article, images FROM spip_articles WHERE LENGTH(images) > 0");
50
-
51
-
52
-		$types = array('jpg' => 1, 'png' => 2, 'gif' => 3);
53
-
54
-		while ($row = @sql_fetch($result)) {
55
-			$id_article = $row['id_article'];
56
-			$images = $row['images'];
57
-			$images = explode(",", $images);
58
-			reset($images);
59
-			$replace = '_orig_';
60
-			foreach ($images as $val) {
61
-				$image = explode("|", $val);
62
-				$fichier = $image[0];
63
-				$largeur = $image[1];
64
-				$hauteur = $image[2];
65
-				preg_match(",-([0-9]+)\.(gif|jpg|png)$,i", $fichier, $match);
66
-				$id_type = intval($types[$match[2]]);
67
-				$num_img = $match[1];
68
-				$fichier = _DIR_IMG . $fichier;
69
-				$taille = @filesize($fichier);
70
-				// ici on n'a pas les fonctions absctract !
71
-				$s = spip_query("INSERT INTO spip_documents (titre, id_type, fichier, mode, largeur, hauteur, taille) VALUES ('image $largeur x $hauteur', $id_type, '$fichier', 'vignette', '$largeur', '$hauteur', '$taille')");
72
-				$id_document = mysql_insert_id($s);
73
-				if ($id_document > 0) {
74
-					spip_query("INSERT INTO spip_documents_articles (id_document, id_article) VALUES ($id_document, $id_article)");
75
-					$replace = "REPLACE($replace, '<IMG$num_img|', '<IM_$id_document|')";
76
-				} else {
77
-					echo _T('texte_erreur_mise_niveau_base', array('fichier' => $fichier, 'id_article' => $id_article));
78
-					exit;
79
-				}
80
-			}
81
-			$replace = "REPLACE($replace, '<IM_', '<IMG')";
82
-			$replace_chapo = str_replace('_orig_', 'chapo', $replace);
83
-			$replace_descriptif = str_replace('_orig_', 'descriptif', $replace);
84
-			$replace_texte = str_replace('_orig_', 'texte', $replace);
85
-			$replace_ps = str_replace('_orig_', 'ps', $replace);
86
-			spip_query("UPDATE spip_articles SET chapo=$replace_chapo, descriptif=$replace_descriptif, texte=$replace_texte, ps=$replace_ps WHERE id_article=$id_article");
87
-
88
-		}
89
-		spip_query("ALTER TABLE spip_articles DROP images");
90
-		maj_version (1.408);
91
-	}
92
-
93
-	if (upgrade_vers(1.414, $version_installee, $version_cible)) {
94
-		// Forum par defaut "en dur" dans les spip_articles
95
-		// -> non, prio (priori), pos (posteriori), abo (abonnement)
96
-		$accepter_forum = substr($GLOBALS['meta']["forums_publics"],0,3) ;
97
-		$result = spip_query("ALTER TABLE spip_articles CHANGE accepter_forum accepter_forum CHAR(3) NOT NULL");
98
-
99
-		$result = spip_query("UPDATE spip_articles SET accepter_forum='$accepter_forum' WHERE accepter_forum != 'non'");
100
-
101
-		maj_version (1.414);
102
-	}
103
-
104
-	/*
38
+        $result = spip_query("SELECT * FROM spip_groupes_mots");
39
+        while($row = sql_fetch($result)) {
40
+                $id_groupe = addslashes($row['id_groupe']);
41
+                $type = addslashes($row['titre']);
42
+                spip_query("UPDATE spip_mots SET id_groupe = '$id_groupe' WHERE type='$type'");
43
+        }
44
+        maj_version (1.405);
45
+    }
46
+
47
+    if (upgrade_vers(1.408, $version_installee, $version_cible)) {
48
+        // Images articles passent dans spip_documents
49
+        $result = spip_query("SELECT id_article, images FROM spip_articles WHERE LENGTH(images) > 0");
50
+
51
+
52
+        $types = array('jpg' => 1, 'png' => 2, 'gif' => 3);
53
+
54
+        while ($row = @sql_fetch($result)) {
55
+            $id_article = $row['id_article'];
56
+            $images = $row['images'];
57
+            $images = explode(",", $images);
58
+            reset($images);
59
+            $replace = '_orig_';
60
+            foreach ($images as $val) {
61
+                $image = explode("|", $val);
62
+                $fichier = $image[0];
63
+                $largeur = $image[1];
64
+                $hauteur = $image[2];
65
+                preg_match(",-([0-9]+)\.(gif|jpg|png)$,i", $fichier, $match);
66
+                $id_type = intval($types[$match[2]]);
67
+                $num_img = $match[1];
68
+                $fichier = _DIR_IMG . $fichier;
69
+                $taille = @filesize($fichier);
70
+                // ici on n'a pas les fonctions absctract !
71
+                $s = spip_query("INSERT INTO spip_documents (titre, id_type, fichier, mode, largeur, hauteur, taille) VALUES ('image $largeur x $hauteur', $id_type, '$fichier', 'vignette', '$largeur', '$hauteur', '$taille')");
72
+                $id_document = mysql_insert_id($s);
73
+                if ($id_document > 0) {
74
+                    spip_query("INSERT INTO spip_documents_articles (id_document, id_article) VALUES ($id_document, $id_article)");
75
+                    $replace = "REPLACE($replace, '<IMG$num_img|', '<IM_$id_document|')";
76
+                } else {
77
+                    echo _T('texte_erreur_mise_niveau_base', array('fichier' => $fichier, 'id_article' => $id_article));
78
+                    exit;
79
+                }
80
+            }
81
+            $replace = "REPLACE($replace, '<IM_', '<IMG')";
82
+            $replace_chapo = str_replace('_orig_', 'chapo', $replace);
83
+            $replace_descriptif = str_replace('_orig_', 'descriptif', $replace);
84
+            $replace_texte = str_replace('_orig_', 'texte', $replace);
85
+            $replace_ps = str_replace('_orig_', 'ps', $replace);
86
+            spip_query("UPDATE spip_articles SET chapo=$replace_chapo, descriptif=$replace_descriptif, texte=$replace_texte, ps=$replace_ps WHERE id_article=$id_article");
87
+
88
+        }
89
+        spip_query("ALTER TABLE spip_articles DROP images");
90
+        maj_version (1.408);
91
+    }
92
+
93
+    if (upgrade_vers(1.414, $version_installee, $version_cible)) {
94
+        // Forum par defaut "en dur" dans les spip_articles
95
+        // -> non, prio (priori), pos (posteriori), abo (abonnement)
96
+        $accepter_forum = substr($GLOBALS['meta']["forums_publics"],0,3) ;
97
+        $result = spip_query("ALTER TABLE spip_articles CHANGE accepter_forum accepter_forum CHAR(3) NOT NULL");
98
+
99
+        $result = spip_query("UPDATE spip_articles SET accepter_forum='$accepter_forum' WHERE accepter_forum != 'non'");
100
+
101
+        maj_version (1.414);
102
+    }
103
+
104
+    /*
105 105
 	if ($version_installee == 1.415) {
106 106
 		spip_query("ALTER TABLE spip_documents DROP inclus");
107 107
 		maj_version (1.415);
108 108
 	}
109 109
 	*/
110 110
 
111
-	if (upgrade_vers(1.417, $version_installee, $version_cible)) {
112
-		spip_query("ALTER TABLE spip_syndic_articles DROP date_index");
113
-		maj_version (1.417);
114
-	}
115
-
116
-	if (upgrade_vers(1.418, $version_installee, $version_cible)) {
117
-		$result = spip_query("SELECT * FROM spip_auteurs WHERE statut = '0minirezo' AND email != '' ORDER BY id_auteur LIMIT 1");
118
-
119
-		if ($webmaster = sql_fetch($result)) {
120
-			ecrire_meta('email_webmaster', $webmaster['email']);
121
-		}
122
-		maj_version (1.418);
123
-	}
124
-
125
-	if (upgrade_vers(1.419, $version_installee, $version_cible)) {
126
-		spip_query("ALTER TABLE spip_auteurs ADD alea_actuel TINYTEXT DEFAULT ''");
127
-		spip_query("ALTER TABLE spip_auteurs ADD alea_futur TINYTEXT DEFAULT ''");
128
-		spip_query("UPDATE spip_auteurs SET alea_futur = FLOOR(32000*RAND())");
129
-		maj_version (1.419);
130
-	}
131
-
132
-	if (upgrade_vers(1.420, $version_installee, $version_cible)) {
133
-		spip_query("UPDATE spip_auteurs SET alea_actuel='' WHERE statut='nouveau'");
134
-		maj_version (1.420);
135
-	}
111
+    if (upgrade_vers(1.417, $version_installee, $version_cible)) {
112
+        spip_query("ALTER TABLE spip_syndic_articles DROP date_index");
113
+        maj_version (1.417);
114
+    }
115
+
116
+    if (upgrade_vers(1.418, $version_installee, $version_cible)) {
117
+        $result = spip_query("SELECT * FROM spip_auteurs WHERE statut = '0minirezo' AND email != '' ORDER BY id_auteur LIMIT 1");
118
+
119
+        if ($webmaster = sql_fetch($result)) {
120
+            ecrire_meta('email_webmaster', $webmaster['email']);
121
+        }
122
+        maj_version (1.418);
123
+    }
124
+
125
+    if (upgrade_vers(1.419, $version_installee, $version_cible)) {
126
+        spip_query("ALTER TABLE spip_auteurs ADD alea_actuel TINYTEXT DEFAULT ''");
127
+        spip_query("ALTER TABLE spip_auteurs ADD alea_futur TINYTEXT DEFAULT ''");
128
+        spip_query("UPDATE spip_auteurs SET alea_futur = FLOOR(32000*RAND())");
129
+        maj_version (1.419);
130
+    }
131
+
132
+    if (upgrade_vers(1.420, $version_installee, $version_cible)) {
133
+        spip_query("UPDATE spip_auteurs SET alea_actuel='' WHERE statut='nouveau'");
134
+        maj_version (1.420);
135
+    }
136 136
 	
137
-	if (upgrade_vers(1.421, $version_installee, $version_cible)) {
138
-		spip_query("ALTER TABLE spip_articles ADD auteur_modif bigint(21) DEFAULT '0' NOT NULL");
139
-		spip_query("ALTER TABLE spip_articles ADD date_modif datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
140
-		maj_version (1.421);
141
-	}
142
-
143
-	if (upgrade_vers(1.432, $version_installee, $version_cible)) {
144
-		spip_query("ALTER TABLE spip_articles DROP referers");
145
-		spip_query("ALTER TABLE spip_articles ADD referers INTEGER DEFAULT '0' NOT NULL");
146
-		spip_query("ALTER TABLE spip_articles ADD popularite INTEGER DEFAULT '0' NOT NULL");
147
-		maj_version (1.432);
148
-	}
149
-
150
-	if (upgrade_vers(1.436, $version_installee, $version_cible)) {
151
-		spip_query("ALTER TABLE spip_documents ADD date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
152
-		maj_version (1.436);
153
-	}
154
-
155
-	if (upgrade_vers(1.437, $version_installee, $version_cible)) {
156
-		spip_query("ALTER TABLE spip_visites ADD maj TIMESTAMP");
157
-		spip_query("ALTER TABLE spip_visites_referers ADD maj TIMESTAMP");
158
-		maj_version (1.437);
159
-	}
160
-
161
-	if (upgrade_vers(1.438, $version_installee, $version_cible)) {
162
-		spip_query("ALTER TABLE spip_articles ADD INDEX id_secteur (id_secteur)");
163
-		spip_query("ALTER TABLE spip_articles ADD INDEX statut (statut, date)");
164
-		maj_version (1.438);
165
-	}
166
-
167
-	if (upgrade_vers(1.439, $version_installee, $version_cible)) {
168
-		spip_query("ALTER TABLE spip_syndic ADD INDEX statut (statut, date_syndic)");
169
-		spip_query("ALTER TABLE spip_syndic_articles ADD INDEX statut (statut)");
170
-		spip_query("ALTER TABLE spip_syndic_articles CHANGE url url VARCHAR(255) NOT NULL");
171
-		spip_query("ALTER TABLE spip_syndic_articles ADD INDEX url (url)");
172
-		maj_version (1.439);
173
-	}
174
-
175
-	if (upgrade_vers(1.440, $version_installee, $version_cible)) {
176
-		spip_query("ALTER TABLE spip_visites_temp CHANGE ip ip INTEGER UNSIGNED NOT NULL");
177
-		maj_version (1.440);
178
-	}
179
-
180
-	if (upgrade_vers(1.441, $version_installee, $version_cible)) {
181
-		spip_query("ALTER TABLE spip_visites_temp CHANGE date date DATE NOT NULL");
182
-		spip_query("ALTER TABLE spip_visites CHANGE date date DATE NOT NULL");
183
-		spip_query("ALTER TABLE spip_visites_referers CHANGE date date DATE NOT NULL");
184
-		maj_version (1.441);
185
-	}
186
-
187
-	if (upgrade_vers(1.442, $version_installee, $version_cible)) {
188
-		spip_query("ALTER TABLE spip_auteurs ADD prefs TINYTEXT NOT NULL");
189
-		maj_version (1.442);
190
-	}
191
-
192
-	if (upgrade_vers(1.443, $version_installee, $version_cible)) {
193
-		spip_query("ALTER TABLE spip_auteurs CHANGE login login VARCHAR(255) BINARY NOT NULL");
194
-		spip_query("ALTER TABLE spip_auteurs CHANGE statut statut VARCHAR(255) NOT NULL");
195
-		spip_query("ALTER TABLE spip_auteurs ADD INDEX login (login)");
196
-		spip_query("ALTER TABLE spip_auteurs ADD INDEX statut (statut)");
197
-		maj_version (1.443);
198
-	}
199
-
200
-	if (upgrade_vers(1.444, $version_installee, $version_cible)) {
201
-		spip_query("ALTER TABLE spip_syndic ADD moderation VARCHAR(3) NOT NULL");
202
-		maj_version (1.444);
203
-	}
204
-
205
-	if (upgrade_vers(1.457, $version_installee, $version_cible)) {
206
-		spip_query("DROP TABLE spip_visites");
207
-		spip_query("DROP TABLE spip_visites_temp");
208
-		spip_query("DROP TABLE spip_visites_referers");
209
-		creer_base(); // crade, a ameliorer :-((
210
-		maj_version (1.457);
211
-	}
212
-
213
-	if (upgrade_vers(1.458, $version_installee, $version_cible)) {
214
-		spip_query("ALTER TABLE spip_auteurs ADD cookie_oubli TINYTEXT NOT NULL");
215
-		maj_version (1.458);
216
-	}
217
-
218
-	if (upgrade_vers(1.459, $version_installee, $version_cible)) {
219
-		$result = spip_query("SELECT type FROM spip_mots GROUP BY type");
220
-		while ($row = sql_fetch($result)) {
221
-			$type = addslashes($row['type']);
222
-			$res = spip_query("SELECT * FROM spip_groupes_mots WHERE titre='$type'");
223
-			if (sql_count($res) == 0) {
224
-				$s = spip_query("INSERT INTO spip_groupes_mots (titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum) VALUES ('$type', 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')");
225
-			  if ($id_groupe = mysql_insert_id($s))
226
-					spip_query("UPDATE spip_mots SET id_groupe = '$id_groupe' WHERE type='$type'");
227
-			}
228
-		}
229
-		spip_query("UPDATE spip_articles SET popularite=0");
230
-		maj_version (1.459);
231
-	}
232
-
233
-	if (upgrade_vers(1.460, $version_installee, $version_cible)) {
234
-		// remettre les mots dans les groupes dupliques par erreur
235
-		// dans la precedente version du paragraphe de maj 1.459
236
-		// et supprimer ceux-ci
237
-		$result = spip_query("SELECT * FROM spip_groupes_mots ORDER BY id_groupe");
238
-		while ($row = sql_fetch($result)) {
239
-			$titre = addslashes($row['titre']);
240
-			if (! $vu[$titre] ) {
241
-				$vu[$titre] = true;
242
-				$id_groupe = $row['id_groupe'];
243
-				spip_query("UPDATE spip_mots SET id_groupe=$id_groupe WHERE type='$titre'");
244
-				sql_delete("spip_groupes_mots", "titre='$titre' AND id_groupe<>$id_groupe");
245
-			}
246
-		}
247
-		maj_version (1.460);
248
-	}
249
-
250
-	if (upgrade_vers(1.462, $version_installee, $version_cible)) {
251
-		spip_query("UPDATE spip_types_documents SET inclus='embed' WHERE inclus!='non' AND extension IN ('aiff', 'asf', 'avi', 'mid', 'mov', 'mp3', 'mpg', 'ogg', 'qt', 'ra', 'ram', 'rm', 'swf', 'wav', 'wmv')");
252
-		maj_version (1.462);
253
-	}
254
-
255
-	if (upgrade_vers(1.463, $version_installee, $version_cible)) {
256
-		spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE");
257
-		spip_query("ALTER TABLE spip_visites_temp ADD maj TIMESTAMP");
258
-		spip_query("ALTER TABLE spip_referers_temp ADD maj TIMESTAMP");
259
-		maj_version (1.463);
260
-	}
261
-
262
-	// l'upgrade < 1.462 ci-dessus etait fausse, d'ou correctif
263
-	if (upgrade_vers(1.464, $version_installee, $version_cible) AND ($version_installee >= 1.462)) {
264
-		$res = spip_query("SELECT id_type, extension FROM spip_types_documents WHERE id_type NOT IN (1,2,3)");
265
-		while ($row = sql_fetch($res)) {
266
-			$extension = $row['extension'];
267
-			$id_type = $row['id_type'];
268
-			spip_query("UPDATE spip_documents SET id_type=$id_type	WHERE fichier like '%.$extension'");
269
-		}
270
-		maj_version (1.464);
271
-	}
272
-
273
-	if (upgrade_vers(1.465, $version_installee, $version_cible)) {
274
-		spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE NOT NULL");
275
-		maj_version (1.465);
276
-	}
277
-
278
-	if (upgrade_vers(1.466, $version_installee, $version_cible)) {
279
-		spip_query("ALTER TABLE spip_auteurs ADD source VARCHAR(10) DEFAULT 'spip' NOT NULL");
280
-		maj_version (1.466);
281
-	}
282
-
283
-	if (upgrade_vers(1.468, $version_installee, $version_cible)) {
284
-		spip_query("ALTER TABLE spip_auteurs ADD INDEX en_ligne (en_ligne)");
285
-		spip_query("ALTER TABLE spip_forum ADD INDEX statut (statut, date_heure)");
286
-		maj_version (1.468);
287
-	}
288
-
289
-	if (upgrade_vers(1.470, $version_installee, $version_cible)) {
290
-		if ($version_installee >= 1.467) {	// annule les "listes de diff"
291
-			spip_query("DROP TABLE spip_listes");
292
-			spip_query("ALTER TABLE spip_auteurs DROP abonne");
293
-			spip_query("ALTER TABLE spip_auteurs DROP abonne_pass");
294
-		}
295
-		maj_version (1.470);
296
-	}
297
-
298
-	if (upgrade_vers(1.471, $version_installee, $version_cible)) {
299
-		if ($version_installee >= 1.470) {	// annule les "maj"
300
-			spip_query("ALTER TABLE spip_auteurs_articles DROP maj TIMESTAMP");
301
-			spip_query("ALTER TABLE spip_auteurs_rubriques DROP maj TIMESTAMP");
302
-			spip_query("ALTER TABLE spip_auteurs_messages DROP maj TIMESTAMP");
303
-			spip_query("ALTER TABLE spip_documents_articles DROP maj TIMESTAMP");
304
-			spip_query("ALTER TABLE spip_documents_rubriques DROP maj TIMESTAMP");
305
-			spip_query("ALTER TABLE spip_documents_breves DROP maj TIMESTAMP");
306
-			spip_query("ALTER TABLE spip_mots_articles DROP maj TIMESTAMP");
307
-			spip_query("ALTER TABLE spip_mots_breves DROP maj TIMESTAMP");
308
-			spip_query("ALTER TABLE spip_mots_rubriques DROP maj TIMESTAMP");
309
-			spip_query("ALTER TABLE spip_mots_syndic DROP maj TIMESTAMP");
310
-			spip_query("ALTER TABLE spip_mots_forum DROP maj TIMESTAMP");
311
-		}
312
-		maj_version (1.471);
313
-	}
314
-
315
-	if (upgrade_vers(1.472, $version_installee, $version_cible)) {
316
-		spip_query("ALTER TABLE spip_referers ADD visites_jour INTEGER UNSIGNED NOT NULL");
317
-		maj_version (1.472);
318
-	}
319
-
320
-	if (upgrade_vers(1.473, $version_installee, $version_cible)) {
321
-		spip_query("UPDATE spip_syndic_articles SET url = REPLACE(url, '&amp;', '&')");
322
-		spip_query("UPDATE spip_syndic SET url_site = REPLACE(url_site, '&amp;', '&')");
323
-		maj_version (1.473);
324
-	}
137
+    if (upgrade_vers(1.421, $version_installee, $version_cible)) {
138
+        spip_query("ALTER TABLE spip_articles ADD auteur_modif bigint(21) DEFAULT '0' NOT NULL");
139
+        spip_query("ALTER TABLE spip_articles ADD date_modif datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
140
+        maj_version (1.421);
141
+    }
142
+
143
+    if (upgrade_vers(1.432, $version_installee, $version_cible)) {
144
+        spip_query("ALTER TABLE spip_articles DROP referers");
145
+        spip_query("ALTER TABLE spip_articles ADD referers INTEGER DEFAULT '0' NOT NULL");
146
+        spip_query("ALTER TABLE spip_articles ADD popularite INTEGER DEFAULT '0' NOT NULL");
147
+        maj_version (1.432);
148
+    }
149
+
150
+    if (upgrade_vers(1.436, $version_installee, $version_cible)) {
151
+        spip_query("ALTER TABLE spip_documents ADD date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
152
+        maj_version (1.436);
153
+    }
154
+
155
+    if (upgrade_vers(1.437, $version_installee, $version_cible)) {
156
+        spip_query("ALTER TABLE spip_visites ADD maj TIMESTAMP");
157
+        spip_query("ALTER TABLE spip_visites_referers ADD maj TIMESTAMP");
158
+        maj_version (1.437);
159
+    }
160
+
161
+    if (upgrade_vers(1.438, $version_installee, $version_cible)) {
162
+        spip_query("ALTER TABLE spip_articles ADD INDEX id_secteur (id_secteur)");
163
+        spip_query("ALTER TABLE spip_articles ADD INDEX statut (statut, date)");
164
+        maj_version (1.438);
165
+    }
166
+
167
+    if (upgrade_vers(1.439, $version_installee, $version_cible)) {
168
+        spip_query("ALTER TABLE spip_syndic ADD INDEX statut (statut, date_syndic)");
169
+        spip_query("ALTER TABLE spip_syndic_articles ADD INDEX statut (statut)");
170
+        spip_query("ALTER TABLE spip_syndic_articles CHANGE url url VARCHAR(255) NOT NULL");
171
+        spip_query("ALTER TABLE spip_syndic_articles ADD INDEX url (url)");
172
+        maj_version (1.439);
173
+    }
174
+
175
+    if (upgrade_vers(1.440, $version_installee, $version_cible)) {
176
+        spip_query("ALTER TABLE spip_visites_temp CHANGE ip ip INTEGER UNSIGNED NOT NULL");
177
+        maj_version (1.440);
178
+    }
179
+
180
+    if (upgrade_vers(1.441, $version_installee, $version_cible)) {
181
+        spip_query("ALTER TABLE spip_visites_temp CHANGE date date DATE NOT NULL");
182
+        spip_query("ALTER TABLE spip_visites CHANGE date date DATE NOT NULL");
183
+        spip_query("ALTER TABLE spip_visites_referers CHANGE date date DATE NOT NULL");
184
+        maj_version (1.441);
185
+    }
186
+
187
+    if (upgrade_vers(1.442, $version_installee, $version_cible)) {
188
+        spip_query("ALTER TABLE spip_auteurs ADD prefs TINYTEXT NOT NULL");
189
+        maj_version (1.442);
190
+    }
191
+
192
+    if (upgrade_vers(1.443, $version_installee, $version_cible)) {
193
+        spip_query("ALTER TABLE spip_auteurs CHANGE login login VARCHAR(255) BINARY NOT NULL");
194
+        spip_query("ALTER TABLE spip_auteurs CHANGE statut statut VARCHAR(255) NOT NULL");
195
+        spip_query("ALTER TABLE spip_auteurs ADD INDEX login (login)");
196
+        spip_query("ALTER TABLE spip_auteurs ADD INDEX statut (statut)");
197
+        maj_version (1.443);
198
+    }
199
+
200
+    if (upgrade_vers(1.444, $version_installee, $version_cible)) {
201
+        spip_query("ALTER TABLE spip_syndic ADD moderation VARCHAR(3) NOT NULL");
202
+        maj_version (1.444);
203
+    }
204
+
205
+    if (upgrade_vers(1.457, $version_installee, $version_cible)) {
206
+        spip_query("DROP TABLE spip_visites");
207
+        spip_query("DROP TABLE spip_visites_temp");
208
+        spip_query("DROP TABLE spip_visites_referers");
209
+        creer_base(); // crade, a ameliorer :-((
210
+        maj_version (1.457);
211
+    }
212
+
213
+    if (upgrade_vers(1.458, $version_installee, $version_cible)) {
214
+        spip_query("ALTER TABLE spip_auteurs ADD cookie_oubli TINYTEXT NOT NULL");
215
+        maj_version (1.458);
216
+    }
217
+
218
+    if (upgrade_vers(1.459, $version_installee, $version_cible)) {
219
+        $result = spip_query("SELECT type FROM spip_mots GROUP BY type");
220
+        while ($row = sql_fetch($result)) {
221
+            $type = addslashes($row['type']);
222
+            $res = spip_query("SELECT * FROM spip_groupes_mots WHERE titre='$type'");
223
+            if (sql_count($res) == 0) {
224
+                $s = spip_query("INSERT INTO spip_groupes_mots (titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum) VALUES ('$type', 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')");
225
+                if ($id_groupe = mysql_insert_id($s))
226
+                    spip_query("UPDATE spip_mots SET id_groupe = '$id_groupe' WHERE type='$type'");
227
+            }
228
+        }
229
+        spip_query("UPDATE spip_articles SET popularite=0");
230
+        maj_version (1.459);
231
+    }
232
+
233
+    if (upgrade_vers(1.460, $version_installee, $version_cible)) {
234
+        // remettre les mots dans les groupes dupliques par erreur
235
+        // dans la precedente version du paragraphe de maj 1.459
236
+        // et supprimer ceux-ci
237
+        $result = spip_query("SELECT * FROM spip_groupes_mots ORDER BY id_groupe");
238
+        while ($row = sql_fetch($result)) {
239
+            $titre = addslashes($row['titre']);
240
+            if (! $vu[$titre] ) {
241
+                $vu[$titre] = true;
242
+                $id_groupe = $row['id_groupe'];
243
+                spip_query("UPDATE spip_mots SET id_groupe=$id_groupe WHERE type='$titre'");
244
+                sql_delete("spip_groupes_mots", "titre='$titre' AND id_groupe<>$id_groupe");
245
+            }
246
+        }
247
+        maj_version (1.460);
248
+    }
249
+
250
+    if (upgrade_vers(1.462, $version_installee, $version_cible)) {
251
+        spip_query("UPDATE spip_types_documents SET inclus='embed' WHERE inclus!='non' AND extension IN ('aiff', 'asf', 'avi', 'mid', 'mov', 'mp3', 'mpg', 'ogg', 'qt', 'ra', 'ram', 'rm', 'swf', 'wav', 'wmv')");
252
+        maj_version (1.462);
253
+    }
254
+
255
+    if (upgrade_vers(1.463, $version_installee, $version_cible)) {
256
+        spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE");
257
+        spip_query("ALTER TABLE spip_visites_temp ADD maj TIMESTAMP");
258
+        spip_query("ALTER TABLE spip_referers_temp ADD maj TIMESTAMP");
259
+        maj_version (1.463);
260
+    }
261
+
262
+    // l'upgrade < 1.462 ci-dessus etait fausse, d'ou correctif
263
+    if (upgrade_vers(1.464, $version_installee, $version_cible) AND ($version_installee >= 1.462)) {
264
+        $res = spip_query("SELECT id_type, extension FROM spip_types_documents WHERE id_type NOT IN (1,2,3)");
265
+        while ($row = sql_fetch($res)) {
266
+            $extension = $row['extension'];
267
+            $id_type = $row['id_type'];
268
+            spip_query("UPDATE spip_documents SET id_type=$id_type	WHERE fichier like '%.$extension'");
269
+        }
270
+        maj_version (1.464);
271
+    }
272
+
273
+    if (upgrade_vers(1.465, $version_installee, $version_cible)) {
274
+        spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE NOT NULL");
275
+        maj_version (1.465);
276
+    }
277
+
278
+    if (upgrade_vers(1.466, $version_installee, $version_cible)) {
279
+        spip_query("ALTER TABLE spip_auteurs ADD source VARCHAR(10) DEFAULT 'spip' NOT NULL");
280
+        maj_version (1.466);
281
+    }
282
+
283
+    if (upgrade_vers(1.468, $version_installee, $version_cible)) {
284
+        spip_query("ALTER TABLE spip_auteurs ADD INDEX en_ligne (en_ligne)");
285
+        spip_query("ALTER TABLE spip_forum ADD INDEX statut (statut, date_heure)");
286
+        maj_version (1.468);
287
+    }
288
+
289
+    if (upgrade_vers(1.470, $version_installee, $version_cible)) {
290
+        if ($version_installee >= 1.467) {	// annule les "listes de diff"
291
+            spip_query("DROP TABLE spip_listes");
292
+            spip_query("ALTER TABLE spip_auteurs DROP abonne");
293
+            spip_query("ALTER TABLE spip_auteurs DROP abonne_pass");
294
+        }
295
+        maj_version (1.470);
296
+    }
297
+
298
+    if (upgrade_vers(1.471, $version_installee, $version_cible)) {
299
+        if ($version_installee >= 1.470) {	// annule les "maj"
300
+            spip_query("ALTER TABLE spip_auteurs_articles DROP maj TIMESTAMP");
301
+            spip_query("ALTER TABLE spip_auteurs_rubriques DROP maj TIMESTAMP");
302
+            spip_query("ALTER TABLE spip_auteurs_messages DROP maj TIMESTAMP");
303
+            spip_query("ALTER TABLE spip_documents_articles DROP maj TIMESTAMP");
304
+            spip_query("ALTER TABLE spip_documents_rubriques DROP maj TIMESTAMP");
305
+            spip_query("ALTER TABLE spip_documents_breves DROP maj TIMESTAMP");
306
+            spip_query("ALTER TABLE spip_mots_articles DROP maj TIMESTAMP");
307
+            spip_query("ALTER TABLE spip_mots_breves DROP maj TIMESTAMP");
308
+            spip_query("ALTER TABLE spip_mots_rubriques DROP maj TIMESTAMP");
309
+            spip_query("ALTER TABLE spip_mots_syndic DROP maj TIMESTAMP");
310
+            spip_query("ALTER TABLE spip_mots_forum DROP maj TIMESTAMP");
311
+        }
312
+        maj_version (1.471);
313
+    }
314
+
315
+    if (upgrade_vers(1.472, $version_installee, $version_cible)) {
316
+        spip_query("ALTER TABLE spip_referers ADD visites_jour INTEGER UNSIGNED NOT NULL");
317
+        maj_version (1.472);
318
+    }
319
+
320
+    if (upgrade_vers(1.473, $version_installee, $version_cible)) {
321
+        spip_query("UPDATE spip_syndic_articles SET url = REPLACE(url, '&amp;', '&')");
322
+        spip_query("UPDATE spip_syndic SET url_site = REPLACE(url_site, '&amp;', '&')");
323
+        maj_version (1.473);
324
+    }
325 325
 }
326 326
 
327 327
 
Please login to merge, or discard this patch.
ecrire/maj/v019_pre193.php 1 patch
Indentation   +232 added lines, -232 removed lines patch added patch discarded remove patch
@@ -14,58 +14,58 @@  discard block
 block discarded – undo
14 14
 
15 15
 function v019_pre193($version_installee, $version_cible)
16 16
 {
17
-	// Syndication : ajout de l'option resume=oui/non et de la langue
18
-	if (upgrade_vers(1.901, $version_installee, $version_cible)) {
19
-		spip_query("ALTER TABLE spip_syndic ADD `resume` VARCHAR(3) DEFAULT 'oui'");
20
-		spip_query("ALTER TABLE spip_syndic_articles ADD `lang` VARCHAR(10) DEFAULT '' NOT NULL");
21
-		maj_version(1.901);
22
-	}
17
+    // Syndication : ajout de l'option resume=oui/non et de la langue
18
+    if (upgrade_vers(1.901, $version_installee, $version_cible)) {
19
+        spip_query("ALTER TABLE spip_syndic ADD `resume` VARCHAR(3) DEFAULT 'oui'");
20
+        spip_query("ALTER TABLE spip_syndic_articles ADD `lang` VARCHAR(10) DEFAULT '' NOT NULL");
21
+        maj_version(1.901);
22
+    }
23 23
 
24
-	// Syndication : ajout de source, url_source, tags
25
-	if (upgrade_vers(1.902, $version_installee, $version_cible)) {
26
-		spip_query("ALTER TABLE spip_syndic_articles ADD `url_source` TINYTEXT DEFAULT '' NOT NULL");
27
-		spip_query("ALTER TABLE spip_syndic_articles ADD `source` TINYTEXT DEFAULT '' NOT NULL");
28
-		spip_query("ALTER TABLE spip_syndic_articles ADD `tags` TEXT DEFAULT '' NOT NULL");
29
-		maj_version(1.902);
30
-	}
24
+    // Syndication : ajout de source, url_source, tags
25
+    if (upgrade_vers(1.902, $version_installee, $version_cible)) {
26
+        spip_query("ALTER TABLE spip_syndic_articles ADD `url_source` TINYTEXT DEFAULT '' NOT NULL");
27
+        spip_query("ALTER TABLE spip_syndic_articles ADD `source` TINYTEXT DEFAULT '' NOT NULL");
28
+        spip_query("ALTER TABLE spip_syndic_articles ADD `tags` TEXT DEFAULT '' NOT NULL");
29
+        maj_version(1.902);
30
+    }
31 31
 
32
-	// URLs propres des sites (sait-on jamais)
33
-	// + oubli des KEY url_propre sur les auteurs si installation neuve
34
-	if (upgrade_vers(1.903, $version_installee, $version_cible)) {
35
-		spip_query("ALTER TABLE spip_syndic ADD `url_propre` VARCHAR(255) NOT NULL");
36
-		spip_query("ALTER TABLE spip_syndic ADD INDEX `url_propre` (`url_propre`)");
37
-		spip_query("ALTER TABLE spip_auteurs ADD INDEX `url_propre` (`url_propre`)");
38
-		maj_version(1.903);
39
-	}
32
+    // URLs propres des sites (sait-on jamais)
33
+    // + oubli des KEY url_propre sur les auteurs si installation neuve
34
+    if (upgrade_vers(1.903, $version_installee, $version_cible)) {
35
+        spip_query("ALTER TABLE spip_syndic ADD `url_propre` VARCHAR(255) NOT NULL");
36
+        spip_query("ALTER TABLE spip_syndic ADD INDEX `url_propre` (`url_propre`)");
37
+        spip_query("ALTER TABLE spip_auteurs ADD INDEX `url_propre` (`url_propre`)");
38
+        maj_version(1.903);
39
+    }
40 40
 
41
-	// suppression des anciennes tables temporaires des visites
42
-	// (maintenant stockees sous forme de fichiers)
43
-	if (upgrade_vers(1.904, $version_installee, $version_cible)) {
44
-		spip_query("DROP TABLE IF EXISTS spip_visites_temp");
45
-		spip_query("DROP TABLE IF EXISTS spip_referers_temp");
46
-		maj_version(1.904);
47
-	}
41
+    // suppression des anciennes tables temporaires des visites
42
+    // (maintenant stockees sous forme de fichiers)
43
+    if (upgrade_vers(1.904, $version_installee, $version_cible)) {
44
+        spip_query("DROP TABLE IF EXISTS spip_visites_temp");
45
+        spip_query("DROP TABLE IF EXISTS spip_referers_temp");
46
+        maj_version(1.904);
47
+    }
48 48
 
49
-	// fusion des 10 tables index en une seule
50
-	// pour fonctions futures evoluees du moteur de recherche
51
-	if (upgrade_vers(1.905, $version_installee, $version_cible)) {
52
-		// agrandir le champ "valeur" de spip_meta pour pouvoir y stocker
53
-		// des choses plus sympa
54
-		spip_query("ALTER TABLE spip_meta DROP INDEX `valeur`");
55
-		spip_query("ALTER TABLE spip_meta CHANGE `valeur` `valeur` TEXT");
56
-		// table des correspondances table->id_table
57
-		$liste_tables = array();
58
-		$liste_tables[1]='spip_articles';
59
-		$liste_tables[2]='spip_auteurs';
60
-		$liste_tables[3]='spip_breves';
61
-		$liste_tables[4]='spip_documents';
62
-		$liste_tables[5]='spip_forum';
63
-		$liste_tables[6]='spip_mots';
64
-		$liste_tables[7]='spip_rubriques';
65
-		$liste_tables[8]='spip_signatures';
66
-		$liste_tables[9]='spip_syndic';
49
+    // fusion des 10 tables index en une seule
50
+    // pour fonctions futures evoluees du moteur de recherche
51
+    if (upgrade_vers(1.905, $version_installee, $version_cible)) {
52
+        // agrandir le champ "valeur" de spip_meta pour pouvoir y stocker
53
+        // des choses plus sympa
54
+        spip_query("ALTER TABLE spip_meta DROP INDEX `valeur`");
55
+        spip_query("ALTER TABLE spip_meta CHANGE `valeur` `valeur` TEXT");
56
+        // table des correspondances table->id_table
57
+        $liste_tables = array();
58
+        $liste_tables[1]='spip_articles';
59
+        $liste_tables[2]='spip_auteurs';
60
+        $liste_tables[3]='spip_breves';
61
+        $liste_tables[4]='spip_documents';
62
+        $liste_tables[5]='spip_forum';
63
+        $liste_tables[6]='spip_mots';
64
+        $liste_tables[7]='spip_rubriques';
65
+        $liste_tables[8]='spip_signatures';
66
+        $liste_tables[9]='spip_syndic';
67 67
 
68
-		ecrire_meta('index_table', serialize($liste_tables));
68
+        ecrire_meta('index_table', serialize($liste_tables));
69 69
 
70 70
 ## devenu inutile car suppression totale de l'indexation
71 71
 /*
@@ -96,207 +96,207 @@  discard block
 block discarded – undo
96 96
 		spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_syndic` as id_objet,'9' as `id_table FROM spip_index_syndic");
97 97
 		spip_query("DROP TABLE IF EXISTS spip_index_syndic");
98 98
 */
99
-		maj_version(1.905);
100
-	}
99
+        maj_version(1.905);
100
+    }
101 101
 
102 102
 
103
-	// cette table est desormais geree par le plugin "podcast_client", on la
104
-	// supprime si le plugin n'est pas active ; risque inherent a l'utilisation
105
-	// de versions alpha :-)
106
-	if (upgrade_vers(1.906, $version_installee, $version_cible)) {
107
-		if (!@in_array('podcast_client', $GLOBALS['plugins'])) {
108
-			spip_query("DROP TABLE spip_documents_syndic");
109
-		}
110
-		maj_version(1.906);
111
-	}
112
-	if (upgrade_vers(1.907, $version_installee, $version_cible)) {
113
-		spip_query("ALTER TABLE spip_forum ADD INDEX `idx` (`idx`)");
114
-		maj_version(1.907);
115
-	}
116
-	// Oups ! on stockait les tags de syndication sous la forme rel="category"
117
-	// au lieu de rel="directory" - http://microformats.org/wiki/rel-directory
118
-	if (upgrade_vers(1.908, $version_installee, $version_cible)) {
119
-		spip_query("UPDATE spip_syndic_articles SET `tags` = REPLACE(`tags`, 'rel=\"category\">', 'rel=\"directory\">') WHERE `tags` like '%category%'");
120
-		maj_version(1.908);
121
-	}
122
-	if (upgrade_vers(1.909, $version_installee, $version_cible)) {
123
-		spip_query("ALTER IGNORE TABLE spip_mots_articles ADD PRIMARY KEY (`id_article`, `id_mot`)");
124
-		spip_query("ALTER IGNORE TABLE spip_mots_breves ADD PRIMARY KEY (`id_breve`, `id_mot`)");
125
-		spip_query("ALTER IGNORE TABLE spip_mots_rubriques ADD PRIMARY KEY (`id_rubrique`, `id_mot`)");
126
-		spip_query("ALTER IGNORE TABLE spip_mots_syndic ADD PRIMARY KEY (`id_syndic`, `id_mot`)");
127
-		spip_query("ALTER IGNORE TABLE spip_mots_documents ADD PRIMARY KEY (`id_document`, `id_mot`)");
128
-		spip_query("ALTER IGNORE TABLE spip_mots_forum ADD PRIMARY KEY (`id_forum`, `id_mot`)");
129
-		maj_version(1.909);
130
-	}
103
+    // cette table est desormais geree par le plugin "podcast_client", on la
104
+    // supprime si le plugin n'est pas active ; risque inherent a l'utilisation
105
+    // de versions alpha :-)
106
+    if (upgrade_vers(1.906, $version_installee, $version_cible)) {
107
+        if (!@in_array('podcast_client', $GLOBALS['plugins'])) {
108
+            spip_query("DROP TABLE spip_documents_syndic");
109
+        }
110
+        maj_version(1.906);
111
+    }
112
+    if (upgrade_vers(1.907, $version_installee, $version_cible)) {
113
+        spip_query("ALTER TABLE spip_forum ADD INDEX `idx` (`idx`)");
114
+        maj_version(1.907);
115
+    }
116
+    // Oups ! on stockait les tags de syndication sous la forme rel="category"
117
+    // au lieu de rel="directory" - http://microformats.org/wiki/rel-directory
118
+    if (upgrade_vers(1.908, $version_installee, $version_cible)) {
119
+        spip_query("UPDATE spip_syndic_articles SET `tags` = REPLACE(`tags`, 'rel=\"category\">', 'rel=\"directory\">') WHERE `tags` like '%category%'");
120
+        maj_version(1.908);
121
+    }
122
+    if (upgrade_vers(1.909, $version_installee, $version_cible)) {
123
+        spip_query("ALTER IGNORE TABLE spip_mots_articles ADD PRIMARY KEY (`id_article`, `id_mot`)");
124
+        spip_query("ALTER IGNORE TABLE spip_mots_breves ADD PRIMARY KEY (`id_breve`, `id_mot`)");
125
+        spip_query("ALTER IGNORE TABLE spip_mots_rubriques ADD PRIMARY KEY (`id_rubrique`, `id_mot`)");
126
+        spip_query("ALTER IGNORE TABLE spip_mots_syndic ADD PRIMARY KEY (`id_syndic`, `id_mot`)");
127
+        spip_query("ALTER IGNORE TABLE spip_mots_documents ADD PRIMARY KEY (`id_document`, `id_mot`)");
128
+        spip_query("ALTER IGNORE TABLE spip_mots_forum ADD PRIMARY KEY (`id_forum`, `id_mot`)");
129
+        maj_version(1.909);
130
+    }
131 131
 
132
-	if (upgrade_vers(1.910, $version_installee, $version_cible)) {
133
-		spip_query("ALTER IGNORE TABLE spip_auteurs_articles ADD PRIMARY KEY (`id_auteur`, `id_article`)");
134
-		spip_query("ALTER IGNORE TABLE spip_auteurs_rubriques ADD PRIMARY KEY (`id_auteur`, `id_rubrique`)");
135
-		spip_query("ALTER IGNORE TABLE spip_auteurs_messages ADD PRIMARY KEY (`id_auteur`, `id_message`)");
136
-		maj_version(1.910);
137
-	}
132
+    if (upgrade_vers(1.910, $version_installee, $version_cible)) {
133
+        spip_query("ALTER IGNORE TABLE spip_auteurs_articles ADD PRIMARY KEY (`id_auteur`, `id_article`)");
134
+        spip_query("ALTER IGNORE TABLE spip_auteurs_rubriques ADD PRIMARY KEY (`id_auteur`, `id_rubrique`)");
135
+        spip_query("ALTER IGNORE TABLE spip_auteurs_messages ADD PRIMARY KEY (`id_auteur`, `id_message`)");
136
+        maj_version(1.910);
137
+    }
138 138
 
139
-	if (upgrade_vers(1.911, $version_installee, $version_cible)) {
139
+    if (upgrade_vers(1.911, $version_installee, $version_cible)) {
140 140
 
141
-		spip_query("ALTER IGNORE TABLE spip_auteurs_articles DROP INDEX `id_auteur`");
142
-		spip_query("ALTER IGNORE TABLE spip_auteurs_rubriques DROP INDEX `id_auteur`");
143
-		spip_query("ALTER IGNORE TABLE spip_auteurs_messages DROP INDEX `id_auteur`");
144
-		spip_query("ALTER IGNORE TABLE spip_mots_articles DROP INDEX `id_article`");
145
-		spip_query("ALTER IGNORE TABLE spip_mots_breves DROP INDEX `id_breve`");
146
-		spip_query("ALTER IGNORE TABLE spip_mots_rubriques DROP INDEX `id_rubrique`");
147
-		spip_query("ALTER IGNORE TABLE spip_mots_syndic DROP INDEX `id_syndic`");
148
-		spip_query("ALTER IGNORE TABLE spip_mots_forum DROP INDEX `id_forum`");
149
-		spip_query("ALTER IGNORE TABLE spip_mots_documents DROP INDEX `id_document`");
141
+        spip_query("ALTER IGNORE TABLE spip_auteurs_articles DROP INDEX `id_auteur`");
142
+        spip_query("ALTER IGNORE TABLE spip_auteurs_rubriques DROP INDEX `id_auteur`");
143
+        spip_query("ALTER IGNORE TABLE spip_auteurs_messages DROP INDEX `id_auteur`");
144
+        spip_query("ALTER IGNORE TABLE spip_mots_articles DROP INDEX `id_article`");
145
+        spip_query("ALTER IGNORE TABLE spip_mots_breves DROP INDEX `id_breve`");
146
+        spip_query("ALTER IGNORE TABLE spip_mots_rubriques DROP INDEX `id_rubrique`");
147
+        spip_query("ALTER IGNORE TABLE spip_mots_syndic DROP INDEX `id_syndic`");
148
+        spip_query("ALTER IGNORE TABLE spip_mots_forum DROP INDEX `id_forum`");
149
+        spip_query("ALTER IGNORE TABLE spip_mots_documents DROP INDEX `id_document`");
150 150
 # 18 juillet 2007: table depreciee
151 151
 #		spip_query("ALTER IGNORE TABLE spip_caches DROP	INDEX fichier");
152
-		maj_version(1.911);
153
-	}
152
+        maj_version(1.911);
153
+    }
154 154
 
155
-	// Le logo du site n'est plus le logo par defaut des rubriques
156
-	// mais pour assurer la compatibilite ascendante, on le duplique
157
-	if (upgrade_vers(1.912, $version_installee, $version_cible)) {
158
-		@copy(_DIR_LOGOS.'rubon0.gif', _DIR_LOGOS.'siteon0.gif');
159
-		@copy(_DIR_LOGOS.'ruboff0.gif', _DIR_LOGOS.'siteoff0.gif');
160
-		@copy(_DIR_LOGOS.'rubon0.jpg', _DIR_LOGOS.'siteon0.jpg');
161
-		@copy(_DIR_LOGOS.'ruboff0.jpg', _DIR_LOGOS.'siteoff0.jpg');
162
-		@copy(_DIR_LOGOS.'rubon0.png', _DIR_LOGOS.'siteon0.png');
163
-		@copy(_DIR_LOGOS.'ruboff0.png', _DIR_LOGOS.'siteoff0.png');
164
-		maj_version(1.912);
165
-	}
155
+    // Le logo du site n'est plus le logo par defaut des rubriques
156
+    // mais pour assurer la compatibilite ascendante, on le duplique
157
+    if (upgrade_vers(1.912, $version_installee, $version_cible)) {
158
+        @copy(_DIR_LOGOS.'rubon0.gif', _DIR_LOGOS.'siteon0.gif');
159
+        @copy(_DIR_LOGOS.'ruboff0.gif', _DIR_LOGOS.'siteoff0.gif');
160
+        @copy(_DIR_LOGOS.'rubon0.jpg', _DIR_LOGOS.'siteon0.jpg');
161
+        @copy(_DIR_LOGOS.'ruboff0.jpg', _DIR_LOGOS.'siteoff0.jpg');
162
+        @copy(_DIR_LOGOS.'rubon0.png', _DIR_LOGOS.'siteon0.png');
163
+        @copy(_DIR_LOGOS.'ruboff0.png', _DIR_LOGOS.'siteoff0.png');
164
+        maj_version(1.912);
165
+    }
166 166
 
167
-	// suppression de auteur_modif qui n'est plus utilise nulle part
168
-	if (upgrade_vers(1.913, $version_installee, $version_cible)) {
169
-		spip_query("ALTER TABLE spip_articles DROP `auteur_modif`");
170
-		maj_version(1.913);
171
-	}
167
+    // suppression de auteur_modif qui n'est plus utilise nulle part
168
+    if (upgrade_vers(1.913, $version_installee, $version_cible)) {
169
+        spip_query("ALTER TABLE spip_articles DROP `auteur_modif`");
170
+        maj_version(1.913);
171
+    }
172 172
 
173
-	// Ajout de SVG
174
-	if (upgrade_vers(1.914, $version_installee, $version_cible)) {
175
-		spip_query("INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('svg', 'Scalable Vector Graphics', 'embed')");
176
-		spip_query("UPDATE spip_types_documents SET `mime_type`='image/svg+xml' WHERE `extension`='svg'");
177
-		maj_version(1.914);
178
-	}
173
+    // Ajout de SVG
174
+    if (upgrade_vers(1.914, $version_installee, $version_cible)) {
175
+        spip_query("INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('svg', 'Scalable Vector Graphics', 'embed')");
176
+        spip_query("UPDATE spip_types_documents SET `mime_type`='image/svg+xml' WHERE `extension`='svg'");
177
+        maj_version(1.914);
178
+    }
179 179
 
180
-	// Ajout de plein de type mime
181
-	if (upgrade_vers(1.915, $version_installee, $version_cible)) {
182
-		maj_version(1.915);
183
-	}
184
-	// refaire l'upgrade 1.905 qui a pu foirer en partie a cause de la requete ALTER sur spip_meta
185
-	if (upgrade_vers(1.916, $version_installee, $version_cible)) {
186
-		// agrandir le champ "valeur" de spip_meta pour pouvoir y stocker
187
-		// des choses plus sympa
188
-		spip_query("ALTER TABLE spip_meta DROP INDEX `valeur`");
189
-		spip_query("ALTER TABLE spip_meta CHANGE `valeur` `valeur` TEXT");
180
+    // Ajout de plein de type mime
181
+    if (upgrade_vers(1.915, $version_installee, $version_cible)) {
182
+        maj_version(1.915);
183
+    }
184
+    // refaire l'upgrade 1.905 qui a pu foirer en partie a cause de la requete ALTER sur spip_meta
185
+    if (upgrade_vers(1.916, $version_installee, $version_cible)) {
186
+        // agrandir le champ "valeur" de spip_meta pour pouvoir y stocker
187
+        // des choses plus sympa
188
+        spip_query("ALTER TABLE spip_meta DROP INDEX `valeur`");
189
+        spip_query("ALTER TABLE spip_meta CHANGE `valeur` `valeur` TEXT");
190 190
 #8/08/07  plus d'indexation dans le core
191
-		//include_spip('inc/indexation'); 
192
-		//update_index_tables();
193
-		maj_version(1.916);
194
-	}
195
-	if (upgrade_vers(1.917, $version_installee, $version_cible)) {
196
-		spip_query("ALTER TABLE spip_documents DROP `inclus`");
197
-		maj_version(1.917);
198
-	}
191
+        //include_spip('inc/indexation'); 
192
+        //update_index_tables();
193
+        maj_version(1.916);
194
+    }
195
+    if (upgrade_vers(1.917, $version_installee, $version_cible)) {
196
+        spip_query("ALTER TABLE spip_documents DROP `inclus`");
197
+        maj_version(1.917);
198
+    }
199 199
 
200
-	// Permettre d'enregistrer un numero IP dans les revisions d'articles
201
-	// a la place de l'id_auteur
202
-	if (upgrade_vers(1.918, $version_installee, $version_cible)) {
203
-		spip_query("ALTER TABLE spip_versions CHANGE `id_auteur` `id_auteur` VARCHAR(23)");
204
-		maj_version(1.918);
205
-	}
200
+    // Permettre d'enregistrer un numero IP dans les revisions d'articles
201
+    // a la place de l'id_auteur
202
+    if (upgrade_vers(1.918, $version_installee, $version_cible)) {
203
+        spip_query("ALTER TABLE spip_versions CHANGE `id_auteur` `id_auteur` VARCHAR(23)");
204
+        maj_version(1.918);
205
+    }
206 206
 
207
-	if (upgrade_vers(1.919, $version_installee, $version_cible)) {
208
-		spip_query("ALTER TABLE spip_ajax_fonc DROP `id_auteur`");
209
-		maj_version('1.919');
210
-	}
207
+    if (upgrade_vers(1.919, $version_installee, $version_cible)) {
208
+        spip_query("ALTER TABLE spip_ajax_fonc DROP `id_auteur`");
209
+        maj_version('1.919');
210
+    }
211 211
 
212
-	if (upgrade_vers(1.920, $version_installee, $version_cible)) {
213
-		spip_query("ALTER IGNORE TABLE spip_documents_articles ADD PRIMARY KEY (`id_article`, `id_document`)");
214
-		spip_query("ALTER IGNORE TABLE spip_documents_breves ADD PRIMARY KEY (`id_breve`, `id_document`)");
215
-		spip_query("ALTER IGNORE TABLE spip_documents_rubriques ADD PRIMARY KEY (`id_rubrique`, `id_document`)");
216
-		spip_query("ALTER IGNORE TABLE spip_documents_articles DROP INDEX `id_article`");
217
-		spip_query("ALTER IGNORE TABLE spip_documents_breves DROP INDEX `id_breve`");
218
-		spip_query("ALTER IGNORE TABLE spip_documents_rubriques DROP INDEX `id_rubrique`");
219
-		maj_version('1.920');
220
-	}
221
-	if (upgrade_vers(1.922, $version_installee, $version_cible)) {
222
-		spip_query("ALTER TABLE spip_meta ADD `impt` ENUM('non', 'oui') DEFAULT 'oui' NOT NULL AFTER `valeur`");
223
-		$meta_serveur = array('version_installee','adresse_site','alea_ephemere_ancien','alea_ephemere','alea_ephemere_date','langue_site','langues_proposees','date_calcul_rubriques','derniere_modif','optimiser_table','drapeau_edition','creer_preview','taille_preview','creer_htpasswd','creer_htaccess','gd_formats_read','gd_formats',
224
-		'netpbm_formats','formats_graphiques','image_process','plugin_header','plugin');
225
-		foreach($meta_serveur as $nom)
226
-			spip_query("UPDATE spip_meta SET `impt`='non' WHERE `nom`="._q($nom));
227
-		maj_version('1.922');
228
-	}
229
-	if (upgrade_vers(1.923, $version_installee, $version_cible)) {
230
-		if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])){
231
-			$IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']);
232
-			foreach ($IMPORT_tables_noimport as $key=>$table)
233
-				if ($table=='spip_meta') unset($IMPORT_tables_noimport[$key]);
234
-			ecrire_meta('IMPORT_tables_noimport',serialize($IMPORT_tables_noimport),'non');
235
-		}
236
-		maj_version('1.923');
237
-	}
212
+    if (upgrade_vers(1.920, $version_installee, $version_cible)) {
213
+        spip_query("ALTER IGNORE TABLE spip_documents_articles ADD PRIMARY KEY (`id_article`, `id_document`)");
214
+        spip_query("ALTER IGNORE TABLE spip_documents_breves ADD PRIMARY KEY (`id_breve`, `id_document`)");
215
+        spip_query("ALTER IGNORE TABLE spip_documents_rubriques ADD PRIMARY KEY (`id_rubrique`, `id_document`)");
216
+        spip_query("ALTER IGNORE TABLE spip_documents_articles DROP INDEX `id_article`");
217
+        spip_query("ALTER IGNORE TABLE spip_documents_breves DROP INDEX `id_breve`");
218
+        spip_query("ALTER IGNORE TABLE spip_documents_rubriques DROP INDEX `id_rubrique`");
219
+        maj_version('1.920');
220
+    }
221
+    if (upgrade_vers(1.922, $version_installee, $version_cible)) {
222
+        spip_query("ALTER TABLE spip_meta ADD `impt` ENUM('non', 'oui') DEFAULT 'oui' NOT NULL AFTER `valeur`");
223
+        $meta_serveur = array('version_installee','adresse_site','alea_ephemere_ancien','alea_ephemere','alea_ephemere_date','langue_site','langues_proposees','date_calcul_rubriques','derniere_modif','optimiser_table','drapeau_edition','creer_preview','taille_preview','creer_htpasswd','creer_htaccess','gd_formats_read','gd_formats',
224
+        'netpbm_formats','formats_graphiques','image_process','plugin_header','plugin');
225
+        foreach($meta_serveur as $nom)
226
+            spip_query("UPDATE spip_meta SET `impt`='non' WHERE `nom`="._q($nom));
227
+        maj_version('1.922');
228
+    }
229
+    if (upgrade_vers(1.923, $version_installee, $version_cible)) {
230
+        if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])){
231
+            $IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']);
232
+            foreach ($IMPORT_tables_noimport as $key=>$table)
233
+                if ($table=='spip_meta') unset($IMPORT_tables_noimport[$key]);
234
+            ecrire_meta('IMPORT_tables_noimport',serialize($IMPORT_tables_noimport),'non');
235
+        }
236
+        maj_version('1.923');
237
+    }
238 238
 
239
-	if (upgrade_vers(1.924, $version_installee, $version_cible)) {
240
-		spip_query('DROP TABLE spip_ajax_fonc');
241
-		maj_version('1.924');
242
-	}
239
+    if (upgrade_vers(1.924, $version_installee, $version_cible)) {
240
+        spip_query('DROP TABLE spip_ajax_fonc');
241
+        maj_version('1.924');
242
+    }
243 243
 
244
-	if (upgrade_vers(1.925, $version_installee, $version_cible)) {
245
-		include_spip('inc/flock');
246
-		/* deplacement des sessions */
247
-		$f_session = preg_files('data', 'session_');
248
-		$repertoire = _DIR_SESSIONS;
249
-		if(!@file_exists($repertoire)) {
250
-			$repertoire = preg_replace(','._DIR_TMP.',', '', $repertoire);
251
-			$repertoire = sous_repertoire(_DIR_TMP, $repertoire);
252
-		}
253
-		foreach($f_session as $f) {
254
-			$d = basename($f);
255
-			@copy($f, $repertoire.$d);
256
-		}
257
-		/* deplacement des visites */
258
-		$f_visites = preg_files('data/visites');
259
-		$repertoire = sous_repertoire(_DIR_TMP, 'visites');
260
-		foreach($f_visites as $f) {
261
-			$d = basename($f);
262
-			@copy($f, $repertoire.$d);
263
-		}
264
-		/* deplacement des upload */
265
-		$auteurs = array();
266
-		$req = spip_query("SELECT `login` FROM spip_auteurs WHERE `statut` = '0minirezo'");
267
-		while($row = sql_fetch($req))
268
-			$auteurs[] = $row['login']; 
269
-		$f_upload = preg_files('upload', -1, 10000, $auteurs);
270
-		$repertoire = _DIR_TRANSFERT;
271
-		if(!@file_exists($repertoire)) {
272
-			$repertoire = preg_replace(','._DIR_TMP.',', '', $repertoire);
273
-			$repertoire = sous_repertoire(_DIR_TMP, $repertoire);
274
-		}
275
-		foreach($auteurs as $login) {
276
-			if(is_dir('upload/'.$login))
277
-				$sous_repertoire = sous_repertoire(_DIR_TRANSFERT, $login);
278
-		}
279
-		foreach($f_upload as $f) {
280
-			@copy($f, _DIR_TMP.$f);
281
-		}
282
-		/* deplacement des dumps */
283
-		$f_session = preg_files('data', 'dump');
284
-		$repertoire = _DIR_DUMP;
285
-		if(!@file_exists($repertoire)) {
286
-			$repertoire = preg_replace(','._DIR_TMP.',', '', $repertoire);
287
-			$repertoire = sous_repertoire(_DIR_TMP, $repertoire);
288
-		}
289
-		foreach($f_session as $f) {
290
-			$d = basename($f);
291
-			@copy($f, $repertoire.$d);
292
-		}
293
-		maj_version('1.925');
294
-	}
295
-	// Ajout de MP4
296
-	if (upgrade_vers(1.926, $version_installee, $version_cible)) {
297
-		spip_query("INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mp4', 'MPEG4', 'embed')");
298
-		spip_query("UPDATE spip_types_documents SET `mime_type`='application/mp4' WHERE `extension`='mp4'");
299
-		maj_version('1.926');
300
-	}
244
+    if (upgrade_vers(1.925, $version_installee, $version_cible)) {
245
+        include_spip('inc/flock');
246
+        /* deplacement des sessions */
247
+        $f_session = preg_files('data', 'session_');
248
+        $repertoire = _DIR_SESSIONS;
249
+        if(!@file_exists($repertoire)) {
250
+            $repertoire = preg_replace(','._DIR_TMP.',', '', $repertoire);
251
+            $repertoire = sous_repertoire(_DIR_TMP, $repertoire);
252
+        }
253
+        foreach($f_session as $f) {
254
+            $d = basename($f);
255
+            @copy($f, $repertoire.$d);
256
+        }
257
+        /* deplacement des visites */
258
+        $f_visites = preg_files('data/visites');
259
+        $repertoire = sous_repertoire(_DIR_TMP, 'visites');
260
+        foreach($f_visites as $f) {
261
+            $d = basename($f);
262
+            @copy($f, $repertoire.$d);
263
+        }
264
+        /* deplacement des upload */
265
+        $auteurs = array();
266
+        $req = spip_query("SELECT `login` FROM spip_auteurs WHERE `statut` = '0minirezo'");
267
+        while($row = sql_fetch($req))
268
+            $auteurs[] = $row['login']; 
269
+        $f_upload = preg_files('upload', -1, 10000, $auteurs);
270
+        $repertoire = _DIR_TRANSFERT;
271
+        if(!@file_exists($repertoire)) {
272
+            $repertoire = preg_replace(','._DIR_TMP.',', '', $repertoire);
273
+            $repertoire = sous_repertoire(_DIR_TMP, $repertoire);
274
+        }
275
+        foreach($auteurs as $login) {
276
+            if(is_dir('upload/'.$login))
277
+                $sous_repertoire = sous_repertoire(_DIR_TRANSFERT, $login);
278
+        }
279
+        foreach($f_upload as $f) {
280
+            @copy($f, _DIR_TMP.$f);
281
+        }
282
+        /* deplacement des dumps */
283
+        $f_session = preg_files('data', 'dump');
284
+        $repertoire = _DIR_DUMP;
285
+        if(!@file_exists($repertoire)) {
286
+            $repertoire = preg_replace(','._DIR_TMP.',', '', $repertoire);
287
+            $repertoire = sous_repertoire(_DIR_TMP, $repertoire);
288
+        }
289
+        foreach($f_session as $f) {
290
+            $d = basename($f);
291
+            @copy($f, $repertoire.$d);
292
+        }
293
+        maj_version('1.925');
294
+    }
295
+    // Ajout de MP4
296
+    if (upgrade_vers(1.926, $version_installee, $version_cible)) {
297
+        spip_query("INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mp4', 'MPEG4', 'embed')");
298
+        spip_query("UPDATE spip_types_documents SET `mime_type`='application/mp4' WHERE `extension`='mp4'");
299
+        maj_version('1.926');
300
+    }
301 301
 }
302 302
 ?>
Please login to merge, or discard this patch.
ecrire/maj/v018.php 1 patch
Indentation   +203 added lines, -203 removed lines patch added patch discarded remove patch
@@ -14,210 +14,210 @@
 block discarded – undo
14 14
 
15 15
 function maj_v018_dist($version_installee, $version_cible)
16 16
 {
17
-	if (upgrade_vers(1.801, $version_installee, $version_cible)) {
18
-		spip_query("ALTER TABLE spip_rubriques	ADD statut_tmp VARCHAR(10) NOT NULL,	ADD date_tmp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
19
-		include_spip('inc/rubriques');
20
-		calculer_rubriques();
21
-		maj_version(1.801);
22
-	}
23
-
24
-	// Nouvelles tables d'invalidation
25
-	if (upgrade_vers(1.802, $version_installee, $version_cible)) {
26
-		spip_query("DROP TABLE spip_id_article_caches");
27
-		spip_query("DROP TABLE spip_id_auteur_caches");
28
-		spip_query("DROP TABLE spip_id_breve_caches");
29
-		spip_query("DROP TABLE spip_id_document_caches");
30
-		spip_query("DROP TABLE spip_id_forum_caches");
31
-		spip_query("DROP TABLE spip_id_groupe_caches");
32
-		spip_query("DROP TABLE spip_id_message_caches");
33
-		spip_query("DROP TABLE spip_id_mot_caches");
34
-		spip_query("DROP TABLE spip_id_rubrique_caches");
35
-		spip_query("DROP TABLE spip_id_signature_caches");
36
-		spip_query("DROP TABLE spip_id_syndic_article_caches");
37
-		spip_query("DROP TABLE spip_id_syndic_caches");
38
-		spip_query("DROP TABLE spip_id_type_caches");
39
-		spip_query("DROP TABLE spip_inclure_caches");
40
-		maj_version(1.802);
41
-	}
42
-	if (upgrade_vers(1.803, $version_installee, $version_cible)) {
43
-
44
-	#	27 AOUT 2004 : conservons cette table pour autoriser les retours
45
-	#	de SPIP 1.8a6 CVS vers 1.7.2
46
-	#	spip_query("DROP TABLE spip_forum_cache");
47
-
48
-		spip_query("DROP TABLE spip_inclure_caches");
49
-		maj_version(1.803);
50
-	}
51
-	if (upgrade_vers(1.804, $version_installee, $version_cible)) {
52
-		// recreer la table spip_caches
53
-		spip_query("DROP TABLE spip_caches");
54
-		creer_base();
55
-		maj_version(1.804);
56
-	}
57
-
58
-	//
59
-	// Recalculer tous les threads
60
-	// function du plugin forum recopiee ici pour assurer la montee de version dans tous les cas de figure
61
-	function maj_v018_calculer_threads() {
62
-		// fixer les id_thread des debuts de discussion
63
-		sql_update('spip_forum', array('id_thread'=>'id_forum'), "id_parent=0");
64
-		// reparer les messages qui n'ont pas l'id_secteur de leur parent
65
-		do {
66
-			$discussion = "0";
67
-			$precedent = 0;
68
-			$r = sql_select("fille.id_forum AS id,	maman.id_thread AS thread", 'spip_forum AS fille, spip_forum AS maman', "fille.id_parent = maman.id_forum AND fille.id_thread <> maman.id_thread",'', "thread");
69
-			while ($row = sql_fetch($r)) {
70
-				if ($row['thread'] == $precedent)
71
-					$discussion .= "," . $row['id'];
72
-				else {
73
-					if ($precedent)
74
-						sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ($discussion)");
75
-					$precedent = $row['thread'];
76
-					$discussion = $row['id'];
77
-				}
78
-			}
79
-			sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ($discussion)");
80
-		} while ($discussion != "0");
81
-	}
82
-	if (upgrade_vers(1.805, $version_installee, $version_cible)) {
83
-		spip_query("ALTER TABLE spip_forum ADD id_thread bigint(21) DEFAULT '0' NOT NULL");
84
-		maj_v018_calculer_threads();
85
-		maj_version(1.805);
86
-	}
87
-
88
-	// tables d'orthographe
89
-	#if ($version_installee < 1.806)
90
-	#	maj_version(1.806);
91
-
92
-	// URLs propres (inc_version = 0.12)
93
-	if (upgrade_vers(1.807, $version_installee, $version_cible)) {
94
-		foreach (array('articles', 'breves', 'rubriques', 'mots') as $objets) {
95
-			spip_query("ALTER TABLE spip_$objets ADD url_propre VARCHAR(255) NOT NULL");
96
-			spip_query("ALTER TABLE spip_$objets ADD INDEX url_propre (url_propre)");
97
-		}
98
-		maj_version(1.807);
99
-	}
100
-
101
-	// referers de la veille
102
-	if (upgrade_vers(1.808, $version_installee, $version_cible)) {
103
-		spip_query("ALTER TABLE spip_referers ADD visites_veille INT UNSIGNED NOT NULL");
104
-		maj_version(1.808);
105
-	}
106
-
107
-
108
-	// corrections diverses
109
-	if (upgrade_vers(1.809, $version_installee, $version_cible)) {
110
-		// plus de retour possible vers 1.7.2
111
-		spip_query("DROP TABLE spip_forum_cache");
112
-
113
-		// les requetes ci-dessous ne s'appliqueront que si on est passe
114
-		// par une certaine version de developpement - oublie de le faire
115
-		// plus tot, car le code d'alors recreait purement et simplement
116
-		// cette table
117
-		spip_query("ALTER TABLE spip_versions DROP chapo");
118
-		spip_query("ALTER TABLE spip_versions DROP texte");
119
-		spip_query("ALTER TABLE spip_versions DROP ps");
120
-		spip_query("ALTER TABLE spip_versions DROP extra");
121
-		spip_query("ALTER TABLE spip_versions ADD champs text NOT NULL");
122
-
123
-		maj_version(1.809);
124
-	}
125
-
126
-	// Annuler les brouillons de forum jamais valides
127
-	if (upgrade_vers(1.810, $version_installee, $version_cible)) {
128
-		sql_delete("spip_forum", "statut='redac'");
129
-		maj_version(1.810);
130
-	}
131
-
132
-	if (upgrade_vers(1.811, $version_installee, $version_cible)) {
133
-		spip_query("ALTER TABLE spip_syndic ADD extra longblob NULL");
134
-		maj_version(1.811);
135
-	}
17
+    if (upgrade_vers(1.801, $version_installee, $version_cible)) {
18
+        spip_query("ALTER TABLE spip_rubriques	ADD statut_tmp VARCHAR(10) NOT NULL,	ADD date_tmp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
19
+        include_spip('inc/rubriques');
20
+        calculer_rubriques();
21
+        maj_version(1.801);
22
+    }
23
+
24
+    // Nouvelles tables d'invalidation
25
+    if (upgrade_vers(1.802, $version_installee, $version_cible)) {
26
+        spip_query("DROP TABLE spip_id_article_caches");
27
+        spip_query("DROP TABLE spip_id_auteur_caches");
28
+        spip_query("DROP TABLE spip_id_breve_caches");
29
+        spip_query("DROP TABLE spip_id_document_caches");
30
+        spip_query("DROP TABLE spip_id_forum_caches");
31
+        spip_query("DROP TABLE spip_id_groupe_caches");
32
+        spip_query("DROP TABLE spip_id_message_caches");
33
+        spip_query("DROP TABLE spip_id_mot_caches");
34
+        spip_query("DROP TABLE spip_id_rubrique_caches");
35
+        spip_query("DROP TABLE spip_id_signature_caches");
36
+        spip_query("DROP TABLE spip_id_syndic_article_caches");
37
+        spip_query("DROP TABLE spip_id_syndic_caches");
38
+        spip_query("DROP TABLE spip_id_type_caches");
39
+        spip_query("DROP TABLE spip_inclure_caches");
40
+        maj_version(1.802);
41
+    }
42
+    if (upgrade_vers(1.803, $version_installee, $version_cible)) {
43
+
44
+    #	27 AOUT 2004 : conservons cette table pour autoriser les retours
45
+    #	de SPIP 1.8a6 CVS vers 1.7.2
46
+    #	spip_query("DROP TABLE spip_forum_cache");
47
+
48
+        spip_query("DROP TABLE spip_inclure_caches");
49
+        maj_version(1.803);
50
+    }
51
+    if (upgrade_vers(1.804, $version_installee, $version_cible)) {
52
+        // recreer la table spip_caches
53
+        spip_query("DROP TABLE spip_caches");
54
+        creer_base();
55
+        maj_version(1.804);
56
+    }
57
+
58
+    //
59
+    // Recalculer tous les threads
60
+    // function du plugin forum recopiee ici pour assurer la montee de version dans tous les cas de figure
61
+    function maj_v018_calculer_threads() {
62
+        // fixer les id_thread des debuts de discussion
63
+        sql_update('spip_forum', array('id_thread'=>'id_forum'), "id_parent=0");
64
+        // reparer les messages qui n'ont pas l'id_secteur de leur parent
65
+        do {
66
+            $discussion = "0";
67
+            $precedent = 0;
68
+            $r = sql_select("fille.id_forum AS id,	maman.id_thread AS thread", 'spip_forum AS fille, spip_forum AS maman', "fille.id_parent = maman.id_forum AND fille.id_thread <> maman.id_thread",'', "thread");
69
+            while ($row = sql_fetch($r)) {
70
+                if ($row['thread'] == $precedent)
71
+                    $discussion .= "," . $row['id'];
72
+                else {
73
+                    if ($precedent)
74
+                        sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ($discussion)");
75
+                    $precedent = $row['thread'];
76
+                    $discussion = $row['id'];
77
+                }
78
+            }
79
+            sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ($discussion)");
80
+        } while ($discussion != "0");
81
+    }
82
+    if (upgrade_vers(1.805, $version_installee, $version_cible)) {
83
+        spip_query("ALTER TABLE spip_forum ADD id_thread bigint(21) DEFAULT '0' NOT NULL");
84
+        maj_v018_calculer_threads();
85
+        maj_version(1.805);
86
+    }
87
+
88
+    // tables d'orthographe
89
+    #if ($version_installee < 1.806)
90
+    #	maj_version(1.806);
91
+
92
+    // URLs propres (inc_version = 0.12)
93
+    if (upgrade_vers(1.807, $version_installee, $version_cible)) {
94
+        foreach (array('articles', 'breves', 'rubriques', 'mots') as $objets) {
95
+            spip_query("ALTER TABLE spip_$objets ADD url_propre VARCHAR(255) NOT NULL");
96
+            spip_query("ALTER TABLE spip_$objets ADD INDEX url_propre (url_propre)");
97
+        }
98
+        maj_version(1.807);
99
+    }
100
+
101
+    // referers de la veille
102
+    if (upgrade_vers(1.808, $version_installee, $version_cible)) {
103
+        spip_query("ALTER TABLE spip_referers ADD visites_veille INT UNSIGNED NOT NULL");
104
+        maj_version(1.808);
105
+    }
106
+
107
+
108
+    // corrections diverses
109
+    if (upgrade_vers(1.809, $version_installee, $version_cible)) {
110
+        // plus de retour possible vers 1.7.2
111
+        spip_query("DROP TABLE spip_forum_cache");
112
+
113
+        // les requetes ci-dessous ne s'appliqueront que si on est passe
114
+        // par une certaine version de developpement - oublie de le faire
115
+        // plus tot, car le code d'alors recreait purement et simplement
116
+        // cette table
117
+        spip_query("ALTER TABLE spip_versions DROP chapo");
118
+        spip_query("ALTER TABLE spip_versions DROP texte");
119
+        spip_query("ALTER TABLE spip_versions DROP ps");
120
+        spip_query("ALTER TABLE spip_versions DROP extra");
121
+        spip_query("ALTER TABLE spip_versions ADD champs text NOT NULL");
122
+
123
+        maj_version(1.809);
124
+    }
125
+
126
+    // Annuler les brouillons de forum jamais valides
127
+    if (upgrade_vers(1.810, $version_installee, $version_cible)) {
128
+        sql_delete("spip_forum", "statut='redac'");
129
+        maj_version(1.810);
130
+    }
131
+
132
+    if (upgrade_vers(1.811, $version_installee, $version_cible)) {
133
+        spip_query("ALTER TABLE spip_syndic ADD extra longblob NULL");
134
+        maj_version(1.811);
135
+    }
136 136
 	
137
-	if (upgrade_vers(1.812, $version_installee, $version_cible)) {
138
-		spip_query("ALTER TABLE spip_documents ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL");
139
-		maj_version(1.812);
140
-	}
141
-
142
-	// Mise a jour des types MIME
143
-	if (upgrade_vers(1.813, $version_installee, $version_cible)) {
144
-		# rien a faire car c'est creer_base() qui s'en charge
145
-		maj_version(1.813);
146
-	}
147
-
148
-	// URLs propres auteurs
149
-	if (upgrade_vers(1.814, $version_installee, $version_cible)) {
150
-		spip_query("ALTER TABLE spip_auteurs ADD url_propre VARCHAR(255) NOT NULL");
151
-		spip_query("ALTER TABLE spip_auteurs ADD INDEX url_propre (url_propre)");
152
-		maj_version(1.814);
153
-	}
154
-
155
-	// Mots-cles sur les documents
156
-	// + liens documents <-> sites et articles syndiques (podcasting)
157
-	if (upgrade_vers(1.815, $version_installee, $version_cible)) {
158
-		spip_query("ALTER TABLE spip_documents	ADD distant VARCHAR(3) DEFAULT 'non'");
159
-		maj_version(1.815);
160
-	}
161
-
162
-	// Indexation des documents (rien a faire sauf reinstaller inc_auxbase)
163
-	if (upgrade_vers(1.816, $version_installee, $version_cible)) {
164
-		maj_version(1.816);
165
-	}
166
-
167
-	// Texte et descriptif des groupes de mots-cles
168
-	if (upgrade_vers(1.817, $version_installee, $version_cible)) {
169
-		spip_query("ALTER TABLE spip_groupes_mots ADD descriptif text NOT NULL AFTER titre");
170
-		spip_query("ALTER TABLE spip_groupes_mots ADD COLUMN texte longblob NOT NULL AFTER descriptif");
171
-		maj_version(1.817);
172
-	}
173
-
174
-	// Conformite des noms de certains champs (0minirezo => minirezo)
175
-	if (upgrade_vers(1.818, $version_installee, $version_cible)) {
176
-		spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 0minirezo minirezo char(3) NOT NULL");
177
-		spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 1comite comite char(3) NOT NULL");
178
-		spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 6forum forum char(3) NOT NULL");
179
-		maj_version(1.818);
180
-	}
181
-
182
-	// Options de syndication : miroir + oubli
183
-	if (upgrade_vers(1.819, $version_installee, $version_cible)) {
184
-		spip_query("ALTER TABLE spip_syndic ADD miroir VARCHAR(3) DEFAULT 'non'");
185
-		spip_query("ALTER TABLE spip_syndic ADD oubli VARCHAR(3) DEFAULT 'non'");
186
-		maj_version(1.819);
187
-	}
188
-
189
-	// Un bug dans les 1.730 (il manquait le "ADD")
190
-	if (upgrade_vers(1.820, $version_installee, $version_cible)) {
191
-		spip_query("ALTER TABLE spip_articles ADD INDEX idx (idx)");
192
-		spip_query("ALTER TABLE spip_auteurs ADD INDEX idx (idx)");
193
-		spip_query("ALTER TABLE spip_breves ADD INDEX idx (idx)");
194
-		spip_query("ALTER TABLE spip_mots ADD INDEX idx (idx)");
195
-		spip_query("ALTER TABLE spip_rubriques ADD INDEX idx (idx)");
196
-		spip_query("ALTER TABLE spip_syndic ADD INDEX idx (idx)");
197
-		spip_query("ALTER TABLE spip_forum ADD INDEX idx (idx)");
198
-		spip_query("ALTER TABLE spip_signatures ADD INDEX idx (idx)");
199
-		maj_version(1.820);
200
-	}
201
-
202
-	// reindexer les articles (on avait oublie les auteurs)
203
-	if (upgrade_vers(1.821, $version_installee, $version_cible)) {
204
-		spip_query("UPDATE spip_articles SET idx='1' WHERE idx='oui'");
205
-		maj_version(1.821);
206
-	}
207
-	// le 'type' des mots doit etre du texte, sinon on depasse en champ multi
208
-	if (upgrade_vers(1.822, $version_installee, $version_cible)) {
209
-		spip_query("ALTER TABLE spip_mots DROP INDEX type");
210
-		spip_query("ALTER TABLE spip_mots CHANGE type type TEXT NOT NULL");
211
-		maj_version(1.822);
212
-	}
213
-	// ajouter une table de fonctions pour ajax
214
-	if (upgrade_vers(1.825, $version_installee, $version_cible)) {
215
-		maj_version(1.825);
216
-	}
217
-	if (upgrade_vers(1.826, $version_installee, $version_cible)) {
218
-		spip_query("ALTER TABLE spip_ajax_fonc DROP fonction");
219
-		maj_version(1.826);
220
-	}
137
+    if (upgrade_vers(1.812, $version_installee, $version_cible)) {
138
+        spip_query("ALTER TABLE spip_documents ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL");
139
+        maj_version(1.812);
140
+    }
141
+
142
+    // Mise a jour des types MIME
143
+    if (upgrade_vers(1.813, $version_installee, $version_cible)) {
144
+        # rien a faire car c'est creer_base() qui s'en charge
145
+        maj_version(1.813);
146
+    }
147
+
148
+    // URLs propres auteurs
149
+    if (upgrade_vers(1.814, $version_installee, $version_cible)) {
150
+        spip_query("ALTER TABLE spip_auteurs ADD url_propre VARCHAR(255) NOT NULL");
151
+        spip_query("ALTER TABLE spip_auteurs ADD INDEX url_propre (url_propre)");
152
+        maj_version(1.814);
153
+    }
154
+
155
+    // Mots-cles sur les documents
156
+    // + liens documents <-> sites et articles syndiques (podcasting)
157
+    if (upgrade_vers(1.815, $version_installee, $version_cible)) {
158
+        spip_query("ALTER TABLE spip_documents	ADD distant VARCHAR(3) DEFAULT 'non'");
159
+        maj_version(1.815);
160
+    }
161
+
162
+    // Indexation des documents (rien a faire sauf reinstaller inc_auxbase)
163
+    if (upgrade_vers(1.816, $version_installee, $version_cible)) {
164
+        maj_version(1.816);
165
+    }
166
+
167
+    // Texte et descriptif des groupes de mots-cles
168
+    if (upgrade_vers(1.817, $version_installee, $version_cible)) {
169
+        spip_query("ALTER TABLE spip_groupes_mots ADD descriptif text NOT NULL AFTER titre");
170
+        spip_query("ALTER TABLE spip_groupes_mots ADD COLUMN texte longblob NOT NULL AFTER descriptif");
171
+        maj_version(1.817);
172
+    }
173
+
174
+    // Conformite des noms de certains champs (0minirezo => minirezo)
175
+    if (upgrade_vers(1.818, $version_installee, $version_cible)) {
176
+        spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 0minirezo minirezo char(3) NOT NULL");
177
+        spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 1comite comite char(3) NOT NULL");
178
+        spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 6forum forum char(3) NOT NULL");
179
+        maj_version(1.818);
180
+    }
181
+
182
+    // Options de syndication : miroir + oubli
183
+    if (upgrade_vers(1.819, $version_installee, $version_cible)) {
184
+        spip_query("ALTER TABLE spip_syndic ADD miroir VARCHAR(3) DEFAULT 'non'");
185
+        spip_query("ALTER TABLE spip_syndic ADD oubli VARCHAR(3) DEFAULT 'non'");
186
+        maj_version(1.819);
187
+    }
188
+
189
+    // Un bug dans les 1.730 (il manquait le "ADD")
190
+    if (upgrade_vers(1.820, $version_installee, $version_cible)) {
191
+        spip_query("ALTER TABLE spip_articles ADD INDEX idx (idx)");
192
+        spip_query("ALTER TABLE spip_auteurs ADD INDEX idx (idx)");
193
+        spip_query("ALTER TABLE spip_breves ADD INDEX idx (idx)");
194
+        spip_query("ALTER TABLE spip_mots ADD INDEX idx (idx)");
195
+        spip_query("ALTER TABLE spip_rubriques ADD INDEX idx (idx)");
196
+        spip_query("ALTER TABLE spip_syndic ADD INDEX idx (idx)");
197
+        spip_query("ALTER TABLE spip_forum ADD INDEX idx (idx)");
198
+        spip_query("ALTER TABLE spip_signatures ADD INDEX idx (idx)");
199
+        maj_version(1.820);
200
+    }
201
+
202
+    // reindexer les articles (on avait oublie les auteurs)
203
+    if (upgrade_vers(1.821, $version_installee, $version_cible)) {
204
+        spip_query("UPDATE spip_articles SET idx='1' WHERE idx='oui'");
205
+        maj_version(1.821);
206
+    }
207
+    // le 'type' des mots doit etre du texte, sinon on depasse en champ multi
208
+    if (upgrade_vers(1.822, $version_installee, $version_cible)) {
209
+        spip_query("ALTER TABLE spip_mots DROP INDEX type");
210
+        spip_query("ALTER TABLE spip_mots CHANGE type type TEXT NOT NULL");
211
+        maj_version(1.822);
212
+    }
213
+    // ajouter une table de fonctions pour ajax
214
+    if (upgrade_vers(1.825, $version_installee, $version_cible)) {
215
+        maj_version(1.825);
216
+    }
217
+    if (upgrade_vers(1.826, $version_installee, $version_cible)) {
218
+        spip_query("ALTER TABLE spip_ajax_fonc DROP fonction");
219
+        maj_version(1.826);
220
+    }
221 221
 }
222 222
 
223 223
 
Please login to merge, or discard this patch.
ecrire/maj/v010.php 1 patch
Indentation   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -15,31 +15,31 @@
 block discarded – undo
15 15
 function maj_v010_dist($version_installee, $version_cible)
16 16
 {
17 17
 	
18
-	if (upgrade_vers(1.01, $version_installee, $version_cible)) {
19
-		spip_query("UPDATE spip_forum SET statut='publie' WHERE statut=''");
20
-		maj_version (1.01);
21
-	}
18
+    if (upgrade_vers(1.01, $version_installee, $version_cible)) {
19
+        spip_query("UPDATE spip_forum SET statut='publie' WHERE statut=''");
20
+        maj_version (1.01);
21
+    }
22 22
 	
23
-	if (upgrade_vers(1.02, $version_installee, $version_cible)) {
24
-		spip_query("ALTER TABLE spip_forum ADD id_auteur BIGINT DEFAULT '0' NOT NULL");
25
-		maj_version (1.02);
26
-	}
27
-
28
-	if (upgrade_vers(1.03, $version_installee, $version_cible)) {
29
-		spip_query("DROP TABLE spip_maj");
30
-		maj_version (1.03);
31
-	}
32
-
33
-	if (upgrade_vers(1.04, $version_installee, $version_cible)) {
34
-		spip_query("ALTER TABLE spip_articles ADD accepter_forum VARCHAR(3)");
35
-		maj_version (1.04);
36
-	}
37
-
38
-	if (upgrade_vers(1.05, $version_installee, $version_cible)) {
39
-		spip_query("DROP TABLE spip_petition");
40
-		spip_query("DROP TABLE spip_signatures_petition");
41
-		maj_version (1.05);
42
-	}
23
+    if (upgrade_vers(1.02, $version_installee, $version_cible)) {
24
+        spip_query("ALTER TABLE spip_forum ADD id_auteur BIGINT DEFAULT '0' NOT NULL");
25
+        maj_version (1.02);
26
+    }
27
+
28
+    if (upgrade_vers(1.03, $version_installee, $version_cible)) {
29
+        spip_query("DROP TABLE spip_maj");
30
+        maj_version (1.03);
31
+    }
32
+
33
+    if (upgrade_vers(1.04, $version_installee, $version_cible)) {
34
+        spip_query("ALTER TABLE spip_articles ADD accepter_forum VARCHAR(3)");
35
+        maj_version (1.04);
36
+    }
37
+
38
+    if (upgrade_vers(1.05, $version_installee, $version_cible)) {
39
+        spip_query("DROP TABLE spip_petition");
40
+        spip_query("DROP TABLE spip_signatures_petition");
41
+        maj_version (1.05);
42
+    }
43 43
 }
44 44
 
45 45
 
Please login to merge, or discard this patch.
ecrire/auth/sha256.inc.php 1 patch
Indentation   +111 added lines, -111 removed lines patch added patch discarded remove patch
@@ -73,7 +73,7 @@  discard block
 block discarded – undo
73 73
         // php 4 - 5 compatable class properties
74 74
         var     $toUpper;
75 75
         var     $platform;
76
-				var		  $bytesString = 16;
76
+                var		  $bytesString = 16;
77 77
 
78 78
         // Php 4 - 6 compatable constructor
79 79
         function nanoSha2($toUpper = false) {
@@ -144,94 +144,94 @@  discard block
 block discarded – undo
144 144
         function sigma_1($x) { return (int) ($this->ROTR($x, 17)^$this->ROTR($x, 19)^$this->SHR($x, 10)); }
145 145
 
146 146
 
147
-				function string2ordUTF8($s,&$byteSize){
148
-					$chars = array();
149
-					// par defaut sur 8bits
150
-					$byteSize = 8;
151
-					$i = 0;
152
-					while ($i<strlen($s)){
153
-						$chars[] = $this->ordUTF8($s, $i, $bytes);
154
-						$i+=$bytes;
155
-						// mais si un char necessite 16bits, on passe tout sur 16
156
-						// sinon on ne concorde pas avec le lecture de la chaine en js
157
-						// et le sha256 js
158
-						if ($bytes>1) $byteSize = 16;
159
-					}
160
-					return $chars;
161
-				}
162
-
163
-				function ordUTF8($c, $index = 0, &$bytes)
164
-				{
165
-					$len = strlen($c);
166
-					$bytes = 0;
167
-
168
-					if ($index >= $len)
169
-						return false;
170
-
171
-					$h = ord($c{$index});
172
-
173
-					if ($h <= 0x7F) {
174
-						$bytes = 1;
175
-						return $h;
176
-					}
177
-					else if ($h < 0xC2){
178
-						// pas utf mais renvoyer quand meme ce qu'on a
179
-						$bytes = 1;
180
-						return $h;
181
-					}
182
-					else if ($h <= 0xDF && $index < $len - 1) {
183
-						$bytes = 2;
184
-						return ($h & 0x1F) <<  6 | (ord($c{$index + 1}) & 0x3F);
185
-					}
186
-					else if ($h <= 0xEF && $index < $len - 2) {
187
-						$bytes = 3;
188
-						return ($h & 0x0F) << 12 | (ord($c{$index + 1}) & 0x3F) << 6
189
-																		 | (ord($c{$index + 2}) & 0x3F);
190
-					}
191
-					else if ($h <= 0xF4 && $index < $len - 3) {
192
-						$bytes = 4;
193
-						return ($h & 0x0F) << 18 | (ord($c{$index + 1}) & 0x3F) << 12
194
-																		 | (ord($c{$index + 2}) & 0x3F) << 6
195
-																		 | (ord($c{$index + 3}) & 0x3F);
196
-					}
197
-					else {
198
-						// pas utf mais renvoyer quand meme ce qu'on a
199
-						$bytes = 1;
200
-						return $h;
201
-					}
202
-				}
203
-
204
-				function string2binint ($str,$npad=512) {
205
-					$bin = array();
206
-					$ords = $this->string2ordUTF8($str,$this->bytesString);
207
-					$npad = $npad/$this->bytesString;
208
-					$length = count($ords);
209
-					$ords[] = 0x80; // append the "1" bit followed by 7 0's
210
-					$pad = ceil(($length+1+32/$this->bytesString)/$npad)*$npad-32/$this->bytesString;
211
-					$ords = array_pad($ords,$pad,0);
212
-					$mask = (1 << $this->bytesString) - 1;
213
-					for($i = 0; $i < count($ords) * $this->bytesString; $i += $this->bytesString) {
214
-						if (!isset($bin[$i>>5])) { $bin[$i>>5] = 0; } // pour eviter des notices.
215
-						$bin[$i>>5] |= ($ords[$i / $this->bytesString] & $mask) << (24 - $i%32);
216
-					}
217
-					$bin[] = $length*$this->bytesString;
218
-					return $bin;
219
-				}
220
-
221
-				function array_split($a, $n) {
222
-					$split = array();
223
-					while (count($a)>$n) {
224
-						$s = array();
225
-						for($i = 0;$i<$n;$i++)
226
-							$s[] = array_shift($a);
227
-						$split[] = $s;
228
-					}
229
-					if (count($a)){
230
-						$a = array_pad($a,$n,0);
231
-						$split[] = $a;
232
-					}
233
-					return $split;
234
-				}
147
+                function string2ordUTF8($s,&$byteSize){
148
+                    $chars = array();
149
+                    // par defaut sur 8bits
150
+                    $byteSize = 8;
151
+                    $i = 0;
152
+                    while ($i<strlen($s)){
153
+                        $chars[] = $this->ordUTF8($s, $i, $bytes);
154
+                        $i+=$bytes;
155
+                        // mais si un char necessite 16bits, on passe tout sur 16
156
+                        // sinon on ne concorde pas avec le lecture de la chaine en js
157
+                        // et le sha256 js
158
+                        if ($bytes>1) $byteSize = 16;
159
+                    }
160
+                    return $chars;
161
+                }
162
+
163
+                function ordUTF8($c, $index = 0, &$bytes)
164
+                {
165
+                    $len = strlen($c);
166
+                    $bytes = 0;
167
+
168
+                    if ($index >= $len)
169
+                        return false;
170
+
171
+                    $h = ord($c{$index});
172
+
173
+                    if ($h <= 0x7F) {
174
+                        $bytes = 1;
175
+                        return $h;
176
+                    }
177
+                    else if ($h < 0xC2){
178
+                        // pas utf mais renvoyer quand meme ce qu'on a
179
+                        $bytes = 1;
180
+                        return $h;
181
+                    }
182
+                    else if ($h <= 0xDF && $index < $len - 1) {
183
+                        $bytes = 2;
184
+                        return ($h & 0x1F) <<  6 | (ord($c{$index + 1}) & 0x3F);
185
+                    }
186
+                    else if ($h <= 0xEF && $index < $len - 2) {
187
+                        $bytes = 3;
188
+                        return ($h & 0x0F) << 12 | (ord($c{$index + 1}) & 0x3F) << 6
189
+                                                                            | (ord($c{$index + 2}) & 0x3F);
190
+                    }
191
+                    else if ($h <= 0xF4 && $index < $len - 3) {
192
+                        $bytes = 4;
193
+                        return ($h & 0x0F) << 18 | (ord($c{$index + 1}) & 0x3F) << 12
194
+                                                                            | (ord($c{$index + 2}) & 0x3F) << 6
195
+                                                                            | (ord($c{$index + 3}) & 0x3F);
196
+                    }
197
+                    else {
198
+                        // pas utf mais renvoyer quand meme ce qu'on a
199
+                        $bytes = 1;
200
+                        return $h;
201
+                    }
202
+                }
203
+
204
+                function string2binint ($str,$npad=512) {
205
+                    $bin = array();
206
+                    $ords = $this->string2ordUTF8($str,$this->bytesString);
207
+                    $npad = $npad/$this->bytesString;
208
+                    $length = count($ords);
209
+                    $ords[] = 0x80; // append the "1" bit followed by 7 0's
210
+                    $pad = ceil(($length+1+32/$this->bytesString)/$npad)*$npad-32/$this->bytesString;
211
+                    $ords = array_pad($ords,$pad,0);
212
+                    $mask = (1 << $this->bytesString) - 1;
213
+                    for($i = 0; $i < count($ords) * $this->bytesString; $i += $this->bytesString) {
214
+                        if (!isset($bin[$i>>5])) { $bin[$i>>5] = 0; } // pour eviter des notices.
215
+                        $bin[$i>>5] |= ($ords[$i / $this->bytesString] & $mask) << (24 - $i%32);
216
+                    }
217
+                    $bin[] = $length*$this->bytesString;
218
+                    return $bin;
219
+                }
220
+
221
+                function array_split($a, $n) {
222
+                    $split = array();
223
+                    while (count($a)>$n) {
224
+                        $s = array();
225
+                        for($i = 0;$i<$n;$i++)
226
+                            $s[] = array_shift($a);
227
+                        $split[] = $s;
228
+                    }
229
+                    if (count($a)){
230
+                        $a = array_pad($a,$n,0);
231
+                        $split[] = $a;
232
+                    }
233
+                    return $split;
234
+                }
235 235
 
236 236
         /**
237 237
          * Process and return the hash.
@@ -261,27 +261,27 @@  discard block
 block discarded – undo
261 261
              *  of the first sixtyfour prime numbers.
262 262
              */
263 263
             $K = array((int)0x428a2f98, (int)0x71374491, (int)0xb5c0fbcf,
264
-                       (int)0xe9b5dba5, (int)0x3956c25b, (int)0x59f111f1,
265
-                       (int)0x923f82a4, (int)0xab1c5ed5, (int)0xd807aa98,
266
-                       (int)0x12835b01, (int)0x243185be, (int)0x550c7dc3,
267
-                       (int)0x72be5d74, (int)0x80deb1fe, (int)0x9bdc06a7,
268
-                       (int)0xc19bf174, (int)0xe49b69c1, (int)0xefbe4786,
269
-                       (int)0x0fc19dc6, (int)0x240ca1cc, (int)0x2de92c6f,
270
-                       (int)0x4a7484aa, (int)0x5cb0a9dc, (int)0x76f988da,
271
-                       (int)0x983e5152, (int)0xa831c66d, (int)0xb00327c8,
272
-                       (int)0xbf597fc7, (int)0xc6e00bf3, (int)0xd5a79147,
273
-                       (int)0x06ca6351, (int)0x14292967, (int)0x27b70a85,
274
-                       (int)0x2e1b2138, (int)0x4d2c6dfc, (int)0x53380d13,
275
-                       (int)0x650a7354, (int)0x766a0abb, (int)0x81c2c92e,
276
-                       (int)0x92722c85, (int)0xa2bfe8a1, (int)0xa81a664b,
277
-                       (int)0xc24b8b70, (int)0xc76c51a3, (int)0xd192e819,
278
-                       (int)0xd6990624, (int)0xf40e3585, (int)0x106aa070,
279
-                       (int)0x19a4c116, (int)0x1e376c08, (int)0x2748774c,
280
-                       (int)0x34b0bcb5, (int)0x391c0cb3, (int)0x4ed8aa4a,
281
-                       (int)0x5b9cca4f, (int)0x682e6ff3, (int)0x748f82ee,
282
-                       (int)0x78a5636f, (int)0x84c87814, (int)0x8cc70208,
283
-                       (int)0x90befffa, (int)0xa4506ceb, (int)0xbef9a3f7,
284
-                       (int)0xc67178f2);
264
+                        (int)0xe9b5dba5, (int)0x3956c25b, (int)0x59f111f1,
265
+                        (int)0x923f82a4, (int)0xab1c5ed5, (int)0xd807aa98,
266
+                        (int)0x12835b01, (int)0x243185be, (int)0x550c7dc3,
267
+                        (int)0x72be5d74, (int)0x80deb1fe, (int)0x9bdc06a7,
268
+                        (int)0xc19bf174, (int)0xe49b69c1, (int)0xefbe4786,
269
+                        (int)0x0fc19dc6, (int)0x240ca1cc, (int)0x2de92c6f,
270
+                        (int)0x4a7484aa, (int)0x5cb0a9dc, (int)0x76f988da,
271
+                        (int)0x983e5152, (int)0xa831c66d, (int)0xb00327c8,
272
+                        (int)0xbf597fc7, (int)0xc6e00bf3, (int)0xd5a79147,
273
+                        (int)0x06ca6351, (int)0x14292967, (int)0x27b70a85,
274
+                        (int)0x2e1b2138, (int)0x4d2c6dfc, (int)0x53380d13,
275
+                        (int)0x650a7354, (int)0x766a0abb, (int)0x81c2c92e,
276
+                        (int)0x92722c85, (int)0xa2bfe8a1, (int)0xa81a664b,
277
+                        (int)0xc24b8b70, (int)0xc76c51a3, (int)0xd192e819,
278
+                        (int)0xd6990624, (int)0xf40e3585, (int)0x106aa070,
279
+                        (int)0x19a4c116, (int)0x1e376c08, (int)0x2748774c,
280
+                        (int)0x34b0bcb5, (int)0x391c0cb3, (int)0x4ed8aa4a,
281
+                        (int)0x5b9cca4f, (int)0x682e6ff3, (int)0x748f82ee,
282
+                        (int)0x78a5636f, (int)0x84c87814, (int)0x8cc70208,
283
+                        (int)0x90befffa, (int)0xa4506ceb, (int)0xbef9a3f7,
284
+                        (int)0xc67178f2);
285 285
 
286 286
             // Pre-processing: Padding the string
287 287
             $binStr = $this->string2binint($str,512);
@@ -382,7 +382,7 @@  discard block
 block discarded – undo
382 382
      */
383 383
     function str_split($string, $split_length = 1)
384 384
     {
385
-	      $result = array();
385
+            $result = array();
386 386
         $sign = ($split_length < 0) ? -1 : 1;
387 387
         $strlen = strlen($string);
388 388
         $split_length = abs($split_length);
Please login to merge, or discard this patch.
ecrire/auth/ldap.php 1 patch
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -17,11 +17,11 @@  discard block
 block discarded – undo
17 17
 // Attributs LDAP correspondants a ceux de SPIP, notamment pour le login
18 18
 // ne pas ecraser une definition perso dans mes_options
19 19
 if (!isset($GLOBALS['ldap_attributes']) OR !is_array($GLOBALS['ldap_attributes'])){
20
-	$GLOBALS['ldap_attributes'] = array(
21
-		'login' => array('sAMAccountName', 'uid', 'login', 'userid', 'cn','sn'),
22
-		'nom' => "cn",
23
-		'email' => "mail",
24
-		'bio' => "description");
20
+    $GLOBALS['ldap_attributes'] = array(
21
+        'login' => array('sAMAccountName', 'uid', 'login', 'userid', 'cn','sn'),
22
+        'nom' => "cn",
23
+        'email' => "mail",
24
+        'bio' => "description");
25 25
 }
26 26
 
27 27
 /**
@@ -48,42 +48,42 @@  discard block
 block discarded – undo
48 48
 // http://doc.spip.org/@inc_auth_ldap_dist
49 49
 function auth_ldap_dist ($login, $pass, $serveur='', $phpauth=false) {
50 50
 
51
-	#spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent"));
51
+    #spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent"));
52 52
 
53
-	// Utilisateur connu ?
54
-	// si http auth, inutile de reauthentifier: cela
55
- 	// ne marchera pas avec auth http autre que basic.
56
-	$checkpass = isset($_SERVER["REMOTE_USER"])?false:true;
57
-	if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) return array();
58
-	$credentials_ldap = array('ldap_dn' => $dn, 'ldap_password' => $pass);
53
+    // Utilisateur connu ?
54
+    // si http auth, inutile de reauthentifier: cela
55
+        // ne marchera pas avec auth http autre que basic.
56
+    $checkpass = isset($_SERVER["REMOTE_USER"])?false:true;
57
+    if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) return array();
58
+    $credentials_ldap = array('ldap_dn' => $dn, 'ldap_password' => $pass);
59 59
 
60
-	// Si l'utilisateur figure deja dans la base, y recuperer les infos
61
-	$r = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='ldap'",'','','','',$serveur);
60
+    // Si l'utilisateur figure deja dans la base, y recuperer les infos
61
+    $r = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='ldap'",'','','','',$serveur);
62 62
 
63
-	if ($r) return array_merge($r, $credentials_ldap);
63
+    if ($r) return array_merge($r, $credentials_ldap);
64 64
 
65
-	// sinon importer les infos depuis LDAP, 
65
+    // sinon importer les infos depuis LDAP, 
66 66
 
67
-	if ($GLOBALS['meta']["ldap_statut_import"]
68
-	AND $desc = auth_ldap_retrouver($dn, array(), $serveur)) {
69
-	  // rajouter le statut indique  a l'install
70
-		$desc['statut'] = $GLOBALS['meta']["ldap_statut_import"];
71
-		$desc['login'] = $login;
72
-		$desc['source'] = 'ldap';
73
-		$desc['pass'] = '';
67
+    if ($GLOBALS['meta']["ldap_statut_import"]
68
+    AND $desc = auth_ldap_retrouver($dn, array(), $serveur)) {
69
+        // rajouter le statut indique  a l'install
70
+        $desc['statut'] = $GLOBALS['meta']["ldap_statut_import"];
71
+        $desc['login'] = $login;
72
+        $desc['source'] = 'ldap';
73
+        $desc['pass'] = '';
74 74
 
75
-		$r = sql_insertq('spip_auteurs', $desc,'',$serveur);
76
-	}				
75
+        $r = sql_insertq('spip_auteurs', $desc,'',$serveur);
76
+    }				
77 77
 
78
-	if ($r)
79
-		return array_merge(
80
-			$credentials_ldap,
81
-			sql_fetsel("*", "spip_auteurs", "id_auteur=".intval($r),'','','','',$serveur)
82
-			);
78
+    if ($r)
79
+        return array_merge(
80
+            $credentials_ldap,
81
+            sql_fetsel("*", "spip_auteurs", "id_auteur=".intval($r),'','','','',$serveur)
82
+            );
83 83
 
84
-	// sinon echec
85
-	spip_log("Creation de l'auteur '$login' impossible");
86
-	return array();
84
+    // sinon echec
85
+    spip_log("Creation de l'auteur '$login' impossible");
86
+    return array();
87 87
 }
88 88
 
89 89
 /**
@@ -96,24 +96,24 @@  discard block
 block discarded – undo
96 96
  * @return string
97 97
  */
98 98
 function auth_ldap_connect($serveur='') {
99
-	include_spip('base/connect_sql');
100
-	static $connexions_ldap = array();
101
-	if (isset($connexions_ldap[$serveur])) return $connexions_ldap[$serveur]; 
102
-	$connexion = spip_connect($serveur);
103
-	if (!is_array($connexion['ldap'])) {
104
-		if ($connexion['authentification']['ldap']) {
105
-			$f =  _DIR_CONNECT . $connexion['authentification']['ldap'];
106
-			unset($GLOBALS['ldap_link']);
107
-			if (is_readable($f)) { include_once($f); };
108
-			if (isset($GLOBALS['ldap_link']))
109
-				$connexion['ldap'] = array('link' => $GLOBALS['ldap_link'],
110
-					'base' => $GLOBALS['ldap_base']);
111
-			else spip_log("connection LDAP $serveur mal definie dans $f");
112
-			if (isset($GLOBALS['ldap_champs']))
113
-				$connexion['ldap']['attributes'] = $GLOBALS['ldap_champs'];
114
-		} else spip_log("connection LDAP $serveur inconnue");
115
-	}
116
-	return $connexions_ldap[$serveur]=$connexion['ldap'];
99
+    include_spip('base/connect_sql');
100
+    static $connexions_ldap = array();
101
+    if (isset($connexions_ldap[$serveur])) return $connexions_ldap[$serveur]; 
102
+    $connexion = spip_connect($serveur);
103
+    if (!is_array($connexion['ldap'])) {
104
+        if ($connexion['authentification']['ldap']) {
105
+            $f =  _DIR_CONNECT . $connexion['authentification']['ldap'];
106
+            unset($GLOBALS['ldap_link']);
107
+            if (is_readable($f)) { include_once($f); };
108
+            if (isset($GLOBALS['ldap_link']))
109
+                $connexion['ldap'] = array('link' => $GLOBALS['ldap_link'],
110
+                    'base' => $GLOBALS['ldap_base']);
111
+            else spip_log("connection LDAP $serveur mal definie dans $f");
112
+            if (isset($GLOBALS['ldap_champs']))
113
+                $connexion['ldap']['attributes'] = $GLOBALS['ldap_champs'];
114
+        } else spip_log("connection LDAP $serveur inconnue");
115
+    }
116
+    return $connexions_ldap[$serveur]=$connexion['ldap'];
117 117
 }
118 118
 
119 119
 /**
@@ -127,44 +127,44 @@  discard block
 block discarded – undo
127 127
  *	le login trouve ou chaine vide si non trouve
128 128
  */
129 129
 function auth_ldap_search($login, $pass, $checkpass=true, $serveur=''){
130
-	// Securite anti-injection et contre un serveur LDAP laxiste
131
-	$login_search = preg_replace("/[^-@._\s\d\w]/", "", $login); 
132
-	if (!strlen($login_search) OR ($checkpass AND !strlen($pass)) )
133
-		return '';
134
-
135
-	// verifier la connexion
136
-	if (!$ldap = auth_ldap_connect($serveur))
137
-		return '';
138
-
139
-	$ldap_link = isset($ldap['link']) ? $ldap['link'] : null;
140
-	$ldap_base = isset($ldap['base']) ? $ldap['base'] : null;
141
-	$desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
142
-
143
-	$logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']);
144
-
145
-	// Tenter une recherche pour essayer de retrouver le DN
146
-	foreach($logins as $att) {
147
-		$result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
148
-		$info = @ldap_get_entries($ldap_link, $result);
149
-			// Ne pas accepter les resultats si plus d'une entree
150
-			// (on veut un attribut unique)
151
-
152
-		if (is_array($info) AND $info['count'] == 1) {
153
-			$dn = $info[0]['dn'];
154
-			if (!$checkpass) return $dn;
155
-			if (@ldap_bind($ldap_link, $dn, $pass)) return $dn;
156
-		}
157
-	}
158
-
159
-	if ($checkpass AND !isset($dn)) {
160
-		// Si echec, essayer de deviner le DN
161
-		foreach($logins as $att) {
162
-			$dn = "$att=$login_search, $ldap_base";
163
-			if (@ldap_bind($ldap_link, $dn, $pass))
164
-				return "$att=$login_search, $ldap_base";
165
-		}
166
-	}
167
-	return '';
130
+    // Securite anti-injection et contre un serveur LDAP laxiste
131
+    $login_search = preg_replace("/[^-@._\s\d\w]/", "", $login); 
132
+    if (!strlen($login_search) OR ($checkpass AND !strlen($pass)) )
133
+        return '';
134
+
135
+    // verifier la connexion
136
+    if (!$ldap = auth_ldap_connect($serveur))
137
+        return '';
138
+
139
+    $ldap_link = isset($ldap['link']) ? $ldap['link'] : null;
140
+    $ldap_base = isset($ldap['base']) ? $ldap['base'] : null;
141
+    $desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
142
+
143
+    $logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']);
144
+
145
+    // Tenter une recherche pour essayer de retrouver le DN
146
+    foreach($logins as $att) {
147
+        $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
148
+        $info = @ldap_get_entries($ldap_link, $result);
149
+            // Ne pas accepter les resultats si plus d'une entree
150
+            // (on veut un attribut unique)
151
+
152
+        if (is_array($info) AND $info['count'] == 1) {
153
+            $dn = $info[0]['dn'];
154
+            if (!$checkpass) return $dn;
155
+            if (@ldap_bind($ldap_link, $dn, $pass)) return $dn;
156
+        }
157
+    }
158
+
159
+    if ($checkpass AND !isset($dn)) {
160
+        // Si echec, essayer de deviner le DN
161
+        foreach($logins as $att) {
162
+            $dn = "$att=$login_search, $ldap_base";
163
+            if (@ldap_bind($ldap_link, $dn, $pass))
164
+                return "$att=$login_search, $ldap_base";
165
+        }
166
+    }
167
+    return '';
168 168
 }
169 169
 
170 170
 /**
@@ -176,33 +176,33 @@  discard block
 block discarded – undo
176 176
  */
177 177
 function auth_ldap_retrouver($dn, $desc=array(), $serveur='')
178 178
 {
179
-	// Lire les infos sur l'utilisateur a partir de son DN depuis LDAP
179
+    // Lire les infos sur l'utilisateur a partir de son DN depuis LDAP
180 180
 
181
-	if (!$ldap = spip_connect_ldap($serveur)) {
182
-		spip_log("ldap $serveur injoignable");
183
-		return array();
184
-	}
181
+    if (!$ldap = spip_connect_ldap($serveur)) {
182
+        spip_log("ldap $serveur injoignable");
183
+        return array();
184
+    }
185 185
 
186
-	$ldap_link = $ldap['link'];
187
-	if (!$desc) {
188
-		$desc = $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
189
-		unset($desc['login']);
190
-	}
191
-	$result = @ldap_read($ldap_link, $dn, "objectClass=*", array_values($desc));
186
+    $ldap_link = $ldap['link'];
187
+    if (!$desc) {
188
+        $desc = $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
189
+        unset($desc['login']);
190
+    }
191
+    $result = @ldap_read($ldap_link, $dn, "objectClass=*", array_values($desc));
192 192
 
193
-	if (!$result) return array();
193
+    if (!$result) return array();
194 194
 
195
-	// Recuperer les donnees du premier (unique?) compte de l'auteur
196
-	$val = @ldap_get_entries($ldap_link, $result);
197
-	if (!is_array($val) OR !is_array($val[0])) return array();
198
-	$val = $val[0];
195
+    // Recuperer les donnees du premier (unique?) compte de l'auteur
196
+    $val = @ldap_get_entries($ldap_link, $result);
197
+    if (!is_array($val) OR !is_array($val[0])) return array();
198
+    $val = $val[0];
199 199
 
200
-	// Convertir depuis UTF-8 (jeu de caracteres par defaut)
201
-	include_spip('inc/charsets');
200
+    // Convertir depuis UTF-8 (jeu de caracteres par defaut)
201
+    include_spip('inc/charsets');
202 202
 
203
-	foreach ($desc as $k => $v)
204
-		$desc[$k] = importer_charset($val[strtolower($v)][0], 'utf-8');
205
-	return $desc;
203
+    foreach ($desc as $k => $v)
204
+        $desc[$k] = importer_charset($val[strtolower($v)][0], 'utf-8');
205
+    return $desc;
206 206
 }
207 207
 
208 208
 
@@ -215,7 +215,7 @@  discard block
 block discarded – undo
215 215
  */
216 216
 function auth_ldap_retrouver_login($login, $serveur='')
217 217
 {
218
-	return auth_ldap_search($login, '', false, $serveur) ? $login : '';
218
+    return auth_ldap_search($login, '', false, $serveur) ? $login : '';
219 219
 }
220 220
 
221 221
 /**
@@ -274,7 +274,7 @@  discard block
 block discarded – undo
274 274
         return false;
275 275
     }
276 276
     if (!$ldap = auth_ldap_connect($serveur))
277
-       return '';
277
+        return '';
278 278
     $link = $ldap['link'];
279 279
     include_spip("inc/session");
280 280
     $dn = session_get('ldap_dn');
@@ -282,7 +282,7 @@  discard block
 block discarded – undo
282 282
         return false;
283 283
     }
284 284
     if (!ldap_bind($link, $dn, session_get('ldap_password'))) {
285
-       return false;
285
+        return false;
286 286
     }
287 287
     $encoded_pass = "{MD5}".base64_encode(pack("H*",md5($new_pass)));
288 288
     $success = ldap_mod_replace($link, $dn, array('userPassword' => $encoded_pass));
Please login to merge, or discard this patch.
ecrire/auth/spip.php 1 patch
Indentation   +213 added lines, -213 removed lines patch added patch discarded remove patch
@@ -24,62 +24,62 @@  discard block
 block discarded – undo
24 24
  */
25 25
 function auth_spip_dist ($login, $pass, $serveur='', $phpauth=false) {
26 26
 
27
-	// retrouver le login
28
-	$login = auth_spip_retrouver_login($login);
29
-	// login inconnu, n'allons pas plus loin
30
-	if (!$login) return array();
31
-
32
-	$md5pass = "";
33
-	$shapass = $shanext = "";
34
-
35
-	if (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64})\}$,i",$pass,$regs)){
36
-		$shapass = $regs[1];
37
-		$shanext = $regs[2];
38
-	}
39
-	// compat avec une base mixte md5/sha256 : le js a envoye les 2 hash
40
-	elseif (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\}$,i",$pass,$regs)){
41
-		$shapass = $regs[1];
42
-		$shanext = $regs[2];
43
-		$md5pass = $regs[3];
44
-		//$md5next = $regs[4];
45
-	}
46
-
47
-	// si envoi non crypte, crypter maintenant
48
-	elseif ($pass) {
49
-		$row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login=" . sql_quote($login,$serveur,'text'),'','','','',$serveur);
50
-
51
-		if ($row) {
52
-			include_spip('auth/sha256.inc');
53
-			$shapass = _nano_sha256($row['alea_actuel'] . $pass);
54
-			$shanext = _nano_sha256($row['alea_futur'] . $pass);
55
-			$md5pass = md5($row['alea_actuel'] . $pass);
56
-		}
57
-	}
58
-
59
-	// login inexistant ou mot de passe vide
60
-	if (!$shapass AND !$md5pass) return array();
61
-
62
-	$row = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login,$serveur,'text') . " AND pass=" . sql_quote($shapass,$serveur,'text') . " AND statut<>'5poubelle'",'','','','',$serveur);
63
-
64
-	// compat avec les anciennes bases en md5
65
-	if (!$row AND $md5pass)
66
-		$row = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login,$serveur,'text') . " AND pass=" . sql_quote($md5pass,$serveur,'text') . " AND statut<>'5poubelle'",'','','','',$serveur);
67
-
68
-	// login/mot de passe incorrect
69
-	if (!$row) return array();
70
-
71
-	// fait tourner le codage du pass dans la base
72
-	// sauf si phpauth : cela reviendrait a changer l'alea a chaque hit, et aucune action verifiable par securiser_action()
73
-	if ($shanext AND !$phpauth) {
74
-
75
-		include_spip('inc/acces'); // pour creer_uniqid
76
-		@sql_update('spip_auteurs', array('alea_actuel' => 'alea_futur', 'pass' => sql_quote($shanext,$serveur,'text'), 'alea_futur' => sql_quote(creer_uniqid(),$serveur,'text')), "id_auteur=" . $row['id_auteur'].' AND pass IN ('.sql_quote($shapass,$serveur,'text').', '.sql_quote($md5pass,$serveur,'text').')','',$serveur);
77
-		// En profiter pour verifier la securite de tmp/
78
-		// Si elle ne fonctionne pas a l'installation, prevenir
79
-		if (!verifier_htaccess(_DIR_TMP) AND defined('_ECRIRE_INSTALL'))
80
-			return false;
81
-	}
82
-	return $row;
27
+    // retrouver le login
28
+    $login = auth_spip_retrouver_login($login);
29
+    // login inconnu, n'allons pas plus loin
30
+    if (!$login) return array();
31
+
32
+    $md5pass = "";
33
+    $shapass = $shanext = "";
34
+
35
+    if (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64})\}$,i",$pass,$regs)){
36
+        $shapass = $regs[1];
37
+        $shanext = $regs[2];
38
+    }
39
+    // compat avec une base mixte md5/sha256 : le js a envoye les 2 hash
40
+    elseif (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\}$,i",$pass,$regs)){
41
+        $shapass = $regs[1];
42
+        $shanext = $regs[2];
43
+        $md5pass = $regs[3];
44
+        //$md5next = $regs[4];
45
+    }
46
+
47
+    // si envoi non crypte, crypter maintenant
48
+    elseif ($pass) {
49
+        $row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login=" . sql_quote($login,$serveur,'text'),'','','','',$serveur);
50
+
51
+        if ($row) {
52
+            include_spip('auth/sha256.inc');
53
+            $shapass = _nano_sha256($row['alea_actuel'] . $pass);
54
+            $shanext = _nano_sha256($row['alea_futur'] . $pass);
55
+            $md5pass = md5($row['alea_actuel'] . $pass);
56
+        }
57
+    }
58
+
59
+    // login inexistant ou mot de passe vide
60
+    if (!$shapass AND !$md5pass) return array();
61
+
62
+    $row = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login,$serveur,'text') . " AND pass=" . sql_quote($shapass,$serveur,'text') . " AND statut<>'5poubelle'",'','','','',$serveur);
63
+
64
+    // compat avec les anciennes bases en md5
65
+    if (!$row AND $md5pass)
66
+        $row = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login,$serveur,'text') . " AND pass=" . sql_quote($md5pass,$serveur,'text') . " AND statut<>'5poubelle'",'','','','',$serveur);
67
+
68
+    // login/mot de passe incorrect
69
+    if (!$row) return array();
70
+
71
+    // fait tourner le codage du pass dans la base
72
+    // sauf si phpauth : cela reviendrait a changer l'alea a chaque hit, et aucune action verifiable par securiser_action()
73
+    if ($shanext AND !$phpauth) {
74
+
75
+        include_spip('inc/acces'); // pour creer_uniqid
76
+        @sql_update('spip_auteurs', array('alea_actuel' => 'alea_futur', 'pass' => sql_quote($shanext,$serveur,'text'), 'alea_futur' => sql_quote(creer_uniqid(),$serveur,'text')), "id_auteur=" . $row['id_auteur'].' AND pass IN ('.sql_quote($shapass,$serveur,'text').', '.sql_quote($md5pass,$serveur,'text').')','',$serveur);
77
+        // En profiter pour verifier la securite de tmp/
78
+        // Si elle ne fonctionne pas a l'installation, prevenir
79
+        if (!verifier_htaccess(_DIR_TMP) AND defined('_ECRIRE_INSTALL'))
80
+            return false;
81
+    }
82
+    return $row;
83 83
 }
84 84
 
85 85
 /**
@@ -89,40 +89,40 @@  discard block
 block discarded – undo
89 89
  * @return array
90 90
  */
91 91
 function auth_spip_formulaire_login($flux){
92
-	// faut il encore envoyer md5 ?
93
-	// on regarde si il reste des pass md5 en base pour des auteurs en statut pas poubelle
94
-	// les hash md5 ont une longueur 32, les sha 64
95
-	// en evitant une requete sql a chaque affichage du formulaire login sans session
96
-	// (perf issue pour les sites qui mettent le formulaire de login sur la home)
97
-	$compat_md5 = false;
98
-	if (!isset($GLOBALS['meta']['sha_256_only']) OR _request('var_mode')){
99
-		$compat_md5 = sql_countsel("spip_auteurs", "length(pass)=32 AND statut<>'poubelle'");
100
-		if ($compat_md5 AND isset($GLOBALS['meta']['sha_256_only'])) effacer_meta('sha_256_only');
101
-		if (!$compat_md5) ecrire_meta('sha_256_only','oui');
102
-	}
103
-
104
-	// javascript qui gere la securite du login en evitant de faire circuler le pass en clair
105
-	$flux['data'].=
106
-	  ($compat_md5?'<script type="text/javascript" src="'._DIR_JAVASCRIPT.'md5.js"></script>':'')
107
-		.'<script type="text/javascript" src="'._DIR_JAVASCRIPT.'login-sha-min.js"></script>'
108
-		.'<script type="text/javascript">/*<![CDATA[*/'
109
-		."var alea_actuel='".$flux['args']['contexte']['_alea_actuel']."';"
110
-		."var alea_futur='".$flux['args']['contexte']['_alea_futur']."';"
111
-		."var login='".$flux['args']['contexte']['var_login']."';"
112
-		."var page_auteur = '".generer_url_public('informer_auteur')."';"
113
-		."var informe_auteur_en_cours = false;"
114
-		."var attente_informe = 0;"
115
-		."var compat_md5 = ".($compat_md5?"true;":"false;")
116
-		."jQuery(function(){
92
+    // faut il encore envoyer md5 ?
93
+    // on regarde si il reste des pass md5 en base pour des auteurs en statut pas poubelle
94
+    // les hash md5 ont une longueur 32, les sha 64
95
+    // en evitant une requete sql a chaque affichage du formulaire login sans session
96
+    // (perf issue pour les sites qui mettent le formulaire de login sur la home)
97
+    $compat_md5 = false;
98
+    if (!isset($GLOBALS['meta']['sha_256_only']) OR _request('var_mode')){
99
+        $compat_md5 = sql_countsel("spip_auteurs", "length(pass)=32 AND statut<>'poubelle'");
100
+        if ($compat_md5 AND isset($GLOBALS['meta']['sha_256_only'])) effacer_meta('sha_256_only');
101
+        if (!$compat_md5) ecrire_meta('sha_256_only','oui');
102
+    }
103
+
104
+    // javascript qui gere la securite du login en evitant de faire circuler le pass en clair
105
+    $flux['data'].=
106
+        ($compat_md5?'<script type="text/javascript" src="'._DIR_JAVASCRIPT.'md5.js"></script>':'')
107
+        .'<script type="text/javascript" src="'._DIR_JAVASCRIPT.'login-sha-min.js"></script>'
108
+        .'<script type="text/javascript">/*<![CDATA[*/'
109
+        ."var alea_actuel='".$flux['args']['contexte']['_alea_actuel']."';"
110
+        ."var alea_futur='".$flux['args']['contexte']['_alea_futur']."';"
111
+        ."var login='".$flux['args']['contexte']['var_login']."';"
112
+        ."var page_auteur = '".generer_url_public('informer_auteur')."';"
113
+        ."var informe_auteur_en_cours = false;"
114
+        ."var attente_informe = 0;"
115
+        ."var compat_md5 = ".($compat_md5?"true;":"false;")
116
+        ."jQuery(function(){
117 117
 		jQuery('#password')
118 118
 			.after(\"<em id='pass_securise'><img src='".chemin_image('cadenas-16.png')."' width='16' height='16' alt='" . attribut_html(_T('login_securise')) . "' title='" . attribut_html(_T('login_securise')) . "' \/><\/em>\");
119 119
 		affiche_login_secure();
120 120
 		jQuery('#var_login').change(actualise_auteur);
121 121
 		jQuery('form#formulaire_login').submit(login_submit);
122 122
 	});"
123
-		."/*]]>*/</script>";
123
+        ."/*]]>*/</script>";
124 124
 
125
-	return $flux;
125
+    return $flux;
126 126
 }
127 127
 
128 128
 
@@ -133,9 +133,9 @@  discard block
 block discarded – undo
133 133
  *	 toujours true pour un auteur cree dans SPIP
134 134
  */
135 135
 function auth_spip_autoriser_modifier_login($serveur=''){
136
-	if (strlen($serveur))
137
-		return false; // les fonctions d'ecriture sur base distante sont encore incompletes
138
-	return true;
136
+    if (strlen($serveur))
137
+        return false; // les fonctions d'ecriture sur base distante sont encore incompletes
138
+    return true;
139 139
 }
140 140
 
141 141
 /**
@@ -149,17 +149,17 @@  discard block
 block discarded – undo
149 149
  *	message d'erreur si login non valide, chaine vide sinon
150 150
  */
151 151
 function auth_spip_verifier_login($new_login, $id_auteur=0, $serveur=''){
152
-	// login et mot de passe
153
-	if (strlen($new_login)){
154
-		if (strlen($new_login) < _LOGIN_TROP_COURT)
155
-			return _T('info_login_trop_court_car_pluriel',array('nb'=>_LOGIN_TROP_COURT));
156
-		else {
157
-			$n = sql_countsel('spip_auteurs', "login=" . sql_quote($new_login) . " AND id_auteur!=".intval($id_auteur)." AND statut!='5poubelle'",'','',$serveur);
158
-			if ($n)
159
-				return _T('info_login_existant');
160
-		}
161
-	}
162
-	return '';
152
+    // login et mot de passe
153
+    if (strlen($new_login)){
154
+        if (strlen($new_login) < _LOGIN_TROP_COURT)
155
+            return _T('info_login_trop_court_car_pluriel',array('nb'=>_LOGIN_TROP_COURT));
156
+        else {
157
+            $n = sql_countsel('spip_auteurs', "login=" . sql_quote($new_login) . " AND id_auteur!=".intval($id_auteur)." AND statut!='5poubelle'",'','',$serveur);
158
+            if ($n)
159
+                return _T('info_login_existant');
160
+        }
161
+    }
162
+    return '';
163 163
 }
164 164
 
165 165
 /**
@@ -171,27 +171,27 @@  discard block
 block discarded – undo
171 171
  * @return bool
172 172
  */
173 173
 function auth_spip_modifier_login($new_login, $id_auteur, $serveur=''){
174
-	if (is_null($new_login) OR auth_spip_verifier_login($new_login,$id_auteur,$serveur)!='')
175
-		return false;
176
-	if (!$id_auteur = intval($id_auteur)
177
-		OR !$auteur = sql_fetsel('login','spip_auteurs','id_auteur='.intval($id_auteur),'','','','',$serveur))
178
-		return false;
179
-	if ($new_login == $auteur['login'])
180
-		return true; // on a rien fait mais c'est bon !
181
-
182
-	include_spip('action/editer_auteur');
183
-
184
-	// vider le login des auteurs a la poubelle qui avaient ce meme login
185
-	if (strlen($new_login)){
186
-		$anciens = sql_allfetsel('id_auteur','spip_auteurs','login='.sql_quote($new_login,$serveur,'text')." AND statut='5poubelle'",'','','','',$serveur);
187
-		while ($row = array_pop($anciens)){
188
-			auteur_modifier($row['id_auteur'], array('login'=>''), true); // manque la gestion de $serveur
189
-		}
190
-	}
191
-
192
-	auteur_modifier($id_auteur, array('login'=>$new_login), true); // manque la gestion de $serveur
193
-
194
-	return true;
174
+    if (is_null($new_login) OR auth_spip_verifier_login($new_login,$id_auteur,$serveur)!='')
175
+        return false;
176
+    if (!$id_auteur = intval($id_auteur)
177
+        OR !$auteur = sql_fetsel('login','spip_auteurs','id_auteur='.intval($id_auteur),'','','','',$serveur))
178
+        return false;
179
+    if ($new_login == $auteur['login'])
180
+        return true; // on a rien fait mais c'est bon !
181
+
182
+    include_spip('action/editer_auteur');
183
+
184
+    // vider le login des auteurs a la poubelle qui avaient ce meme login
185
+    if (strlen($new_login)){
186
+        $anciens = sql_allfetsel('id_auteur','spip_auteurs','login='.sql_quote($new_login,$serveur,'text')." AND statut='5poubelle'",'','','','',$serveur);
187
+        while ($row = array_pop($anciens)){
188
+            auteur_modifier($row['id_auteur'], array('login'=>''), true); // manque la gestion de $serveur
189
+        }
190
+    }
191
+
192
+    auteur_modifier($id_auteur, array('login'=>$new_login), true); // manque la gestion de $serveur
193
+
194
+    return true;
195 195
 }
196 196
 
197 197
 /**
@@ -203,21 +203,21 @@  discard block
 block discarded – undo
203 203
  * @return string
204 204
  */
205 205
 function auth_spip_retrouver_login($login, $serveur=''){
206
-	if (!strlen($login)) return null; // pas la peine de requeter
207
-	$l = sql_quote($login,$serveur,'text');
208
-	if ($r = sql_getfetsel('login', 'spip_auteurs',
209
-			"statut<>'5poubelle'" .
210
-			" AND (length(pass)>0)" .
211
-			" AND (login=$l)",'','','','',$serveur))
212
-		return $r;
213
-	// Si pas d'auteur avec ce login
214
-	// regarder s'il a saisi son nom ou son mail.
215
-	// Ne pas fusionner avec la requete precedente
216
-	// car un nom peut etre homonyme d'un autre login
217
-	else return sql_getfetsel('login', 'spip_auteurs',
218
-			"statut<>'5poubelle'" .
219
-			" AND (length(pass)>0)" .
220
-			" AND (login<>'' AND (nom=$l OR email=$l))",'','','','',$serveur);
206
+    if (!strlen($login)) return null; // pas la peine de requeter
207
+    $l = sql_quote($login,$serveur,'text');
208
+    if ($r = sql_getfetsel('login', 'spip_auteurs',
209
+            "statut<>'5poubelle'" .
210
+            " AND (length(pass)>0)" .
211
+            " AND (login=$l)",'','','','',$serveur))
212
+        return $r;
213
+    // Si pas d'auteur avec ce login
214
+    // regarder s'il a saisi son nom ou son mail.
215
+    // Ne pas fusionner avec la requete precedente
216
+    // car un nom peut etre homonyme d'un autre login
217
+    else return sql_getfetsel('login', 'spip_auteurs',
218
+            "statut<>'5poubelle'" .
219
+            " AND (length(pass)>0)" .
220
+            " AND (login<>'' AND (nom=$l OR email=$l))",'','','','',$serveur);
221 221
 }
222 222
 
223 223
 
@@ -235,11 +235,11 @@  discard block
 block discarded – undo
235 235
  */
236 236
 function auth_spip_informer_login($infos, $row, $serveur=''){
237 237
 
238
-	// pour la methode SPIP on a besoin des alea en plus pour encoder le pass avec
239
-	$infos['alea_actuel'] = $row['alea_actuel'];
240
-	$infos['alea_futur'] = $row['alea_futur'];
238
+    // pour la methode SPIP on a besoin des alea en plus pour encoder le pass avec
239
+    $infos['alea_actuel'] = $row['alea_actuel'];
240
+    $infos['alea_futur'] = $row['alea_futur'];
241 241
 
242
-	return $infos;
242
+    return $infos;
243 243
 }
244 244
 
245 245
 /**
@@ -249,9 +249,9 @@  discard block
 block discarded – undo
249 249
  *	toujours true pour un auteur cree dans SPIP
250 250
  */
251 251
 function auth_spip_autoriser_modifier_pass($serveur=''){
252
-	if (strlen($serveur))
253
-		return false; // les fonctions d'ecriture sur base distante sont encore incompletes
254
-	return true;
252
+    if (strlen($serveur))
253
+        return false; // les fonctions d'ecriture sur base distante sont encore incompletes
254
+    return true;
255 255
 }
256 256
 
257 257
 
@@ -272,11 +272,11 @@  discard block
 block discarded – undo
272 272
  *	message d'erreur si login non valide, chaine vide sinon
273 273
  */
274 274
 function auth_spip_verifier_pass($login, $new_pass, $id_auteur=0, $serveur=''){
275
-	// login et mot de passe
276
-	if (strlen($new_pass) < _PASS_LONGUEUR_MINI)
277
-		return _T('info_passe_trop_court_car_pluriel',array('nb'=>_PASS_LONGUEUR_MINI));
275
+    // login et mot de passe
276
+    if (strlen($new_pass) < _PASS_LONGUEUR_MINI)
277
+        return _T('info_passe_trop_court_car_pluriel',array('nb'=>_PASS_LONGUEUR_MINI));
278 278
 
279
-	return '';
279
+    return '';
280 280
 }
281 281
 
282 282
 /**
@@ -289,30 +289,30 @@  discard block
 block discarded – undo
289 289
  * @return bool
290 290
  */
291 291
 function auth_spip_modifier_pass($login, $new_pass, $id_auteur, $serveur=''){
292
-	if (is_null($new_pass) OR auth_spip_verifier_pass($login, $new_pass,$id_auteur,$serveur)!='')
293
-		return false;
294
-
295
-	if (!$id_auteur = intval($id_auteur)
296
-		OR !sql_fetsel('login','spip_auteurs','id_auteur='.intval($id_auteur),'','','','',$serveur))
297
-		return false;
298
-
299
-	$c = array();
300
-	include_spip('inc/acces');
301
-	include_spip('auth/sha256.inc');
302
-	$htpass = generer_htpass($new_pass);
303
-	$alea_actuel = creer_uniqid();
304
-	$alea_futur = creer_uniqid();
305
-	$pass = _nano_sha256($alea_actuel.$new_pass);
306
-	$c['pass'] = $pass;
307
-	$c['htpass'] = $htpass;
308
-	$c['alea_actuel'] = $alea_actuel;
309
-	$c['alea_futur'] = $alea_futur;
310
-	$c['low_sec'] = '';
311
-
312
-	include_spip('action/editer_auteur');
313
-	auteur_modifier($id_auteur, $c, true); // manque la gestion de $serveur
314
-
315
-	return true; // on a bien modifie le pass
292
+    if (is_null($new_pass) OR auth_spip_verifier_pass($login, $new_pass,$id_auteur,$serveur)!='')
293
+        return false;
294
+
295
+    if (!$id_auteur = intval($id_auteur)
296
+        OR !sql_fetsel('login','spip_auteurs','id_auteur='.intval($id_auteur),'','','','',$serveur))
297
+        return false;
298
+
299
+    $c = array();
300
+    include_spip('inc/acces');
301
+    include_spip('auth/sha256.inc');
302
+    $htpass = generer_htpass($new_pass);
303
+    $alea_actuel = creer_uniqid();
304
+    $alea_futur = creer_uniqid();
305
+    $pass = _nano_sha256($alea_actuel.$new_pass);
306
+    $c['pass'] = $pass;
307
+    $c['htpass'] = $htpass;
308
+    $c['alea_actuel'] = $alea_actuel;
309
+    $c['alea_futur'] = $alea_futur;
310
+    $c['low_sec'] = '';
311
+
312
+    include_spip('action/editer_auteur');
313
+    auteur_modifier($id_auteur, $c, true); // manque la gestion de $serveur
314
+
315
+    return true; // on a bien modifie le pass
316 316
 }
317 317
 
318 318
 /**
@@ -326,51 +326,51 @@  discard block
 block discarded – undo
326 326
  * @return void
327 327
  */
328 328
 function auth_spip_synchroniser_distant($id_auteur, $champs, $options = array(), $serveur=''){
329
-	// ne rien faire pour une base distante : on ne sait pas regenerer les htaccess
330
-	if (strlen($serveur))
331
-		return;
332
-	// si un login, pass ou statut a ete modifie
333
-	// regenerer les fichier htpass
334
-	if (isset($champs['login'])
335
-		OR isset($champs['pass'])
336
-		OR isset($champs['statut'])
337
-		OR (isset($options['all']) AND $options['all'])
338
-	) {
339
-
340
-		$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
341
-		$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
342
-
343
-		// Cette variable de configuration peut etre posee par un plugin
344
-		// par exemple acces_restreint ;
345
-		// si .htaccess existe, outrepasser spip_meta
346
-		if (($GLOBALS['meta']['creer_htpasswd'] != 'oui')
347
-		AND !@file_exists($htaccess)) {
348
-			spip_unlink($htpasswd);
349
-			spip_unlink($htpasswd."-admin");
350
-			return;
351
-		}
352
-
353
-		# remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
354
-		# de devenir redacteur le cas echeant (auth http)... a nettoyer
355
-		// attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
356
-
357
-		$p1 = ''; // login:htpass pour tous
358
-		$p2 = ''; // login:htpass pour les admins
359
-		$s = sql_select("login, htpass, statut", "spip_auteurs", sql_in("statut",  array('1comite','0minirezo','nouveau')));
360
-		while ($t = sql_fetch($s)) {
361
-			if (strlen($t['login']) AND strlen($t['htpass'])) {
362
-				$p1 .= $t['login'].':'.$t['htpass']."\n";
363
-				if ($t['statut'] == '0minirezo')
364
-					$p2 .= $t['login'].':'.$t['htpass']."\n";
365
-			}
366
-		}
367
-		sql_free($s);
368
-		if ($p1) {
369
-			ecrire_fichier($htpasswd, $p1);
370
-			ecrire_fichier($htpasswd.'-admin', $p2);
371
-			spip_log("Ecriture de $htpasswd et $htpasswd-admin");
372
-		}
373
-	}
329
+    // ne rien faire pour une base distante : on ne sait pas regenerer les htaccess
330
+    if (strlen($serveur))
331
+        return;
332
+    // si un login, pass ou statut a ete modifie
333
+    // regenerer les fichier htpass
334
+    if (isset($champs['login'])
335
+        OR isset($champs['pass'])
336
+        OR isset($champs['statut'])
337
+        OR (isset($options['all']) AND $options['all'])
338
+    ) {
339
+
340
+        $htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
341
+        $htpasswd = _DIR_TMP . _AUTH_USER_FILE;
342
+
343
+        // Cette variable de configuration peut etre posee par un plugin
344
+        // par exemple acces_restreint ;
345
+        // si .htaccess existe, outrepasser spip_meta
346
+        if (($GLOBALS['meta']['creer_htpasswd'] != 'oui')
347
+        AND !@file_exists($htaccess)) {
348
+            spip_unlink($htpasswd);
349
+            spip_unlink($htpasswd."-admin");
350
+            return;
351
+        }
352
+
353
+        # remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
354
+        # de devenir redacteur le cas echeant (auth http)... a nettoyer
355
+        // attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
356
+
357
+        $p1 = ''; // login:htpass pour tous
358
+        $p2 = ''; // login:htpass pour les admins
359
+        $s = sql_select("login, htpass, statut", "spip_auteurs", sql_in("statut",  array('1comite','0minirezo','nouveau')));
360
+        while ($t = sql_fetch($s)) {
361
+            if (strlen($t['login']) AND strlen($t['htpass'])) {
362
+                $p1 .= $t['login'].':'.$t['htpass']."\n";
363
+                if ($t['statut'] == '0minirezo')
364
+                    $p2 .= $t['login'].':'.$t['htpass']."\n";
365
+            }
366
+        }
367
+        sql_free($s);
368
+        if ($p1) {
369
+            ecrire_fichier($htpasswd, $p1);
370
+            ecrire_fichier($htpasswd.'-admin', $p2);
371
+            spip_log("Ecriture de $htpasswd et $htpasswd-admin");
372
+        }
373
+    }
374 374
 }
375 375
 
376 376
 ?>
Please login to merge, or discard this patch.
ecrire/lang/spip_ar.php 1 patch
Indentation   +648 added lines, -648 removed lines patch added patch discarded remove patch
@@ -7,242 +7,242 @@  discard block
 block discarded – undo
7 7
 
8 8
 $GLOBALS[$GLOBALS['idx_lang']] = array(
9 9
 
10
-	// 0
11
-	'0_URL' => 'http://listes.rezo.net/mailman/listinfo/spip-dev',
12
-	'0_langue' => 'عربي [ar]',
13
-	'0_liste' => '[email protected]',
14
-	'0_mainteneur' => 'جورج قندلفت ([email protected]) ',
10
+    // 0
11
+    '0_URL' => 'http://listes.rezo.net/mailman/listinfo/spip-dev',
12
+    '0_langue' => 'عربي [ar]',
13
+    '0_liste' => '[email protected]',
14
+    '0_mainteneur' => 'جورج قندلفت ([email protected]) ',
15 15
 
16
-	// A
17
-	'access_interface_graphique' => 'عودة إلى الواجهة الرسومية الكاملة',
18
-	'access_mode_texte' => 'عرض الواجهة النصية المبسّطة',
19
-	'admin_debug' => 'اكتشاف الأخطاء',
20
-	'admin_modifier_article' => 'تعديل هذا المقال',
21
-	'admin_modifier_auteur' => 'تغيير هذا المؤلف',
22
-	'admin_modifier_breve' => 'تعديل هذا الخبر',
23
-	'admin_modifier_mot' => 'تغيير هذا المفتاح',
24
-	'admin_modifier_rubrique' => 'تعديل هذا القسم',
25
-	'admin_recalculer' => 'إعادة تحديث هذه الصفحة',
26
-	'afficher_calendrier' => 'عرض الروزنامة',
27
-	'afficher_trad' => 'عرض الترجمات',
28
-	'alerte_maj_impossible' => '<b>تحذير!</b> ترقية قاعدة SQL إلى الإصدار @version@ متعذر. قد يكون السبب مشكلة في حقل التعديل. الرجاء الاتصال بمضيف موقعك.',
29
-	'alerte_modif_info_concourante' => 'تحذير:هذه المعلومة عُدلت في مكان آخر. القيمة الحالية هي:',
30
-	'analyse_xml' => 'تحليل XML',
31
-	'annuler' => 'إلغاء',
32
-	'antispam_champ_vide' => 'الرجاء الإبقاء على هذا الحقل فارغاً:',
33
-	'articles_recents' => 'أحدث المقالات',
34
-	'avis_archive_incorrect' => 'ملف الأرشيف ليس ملف SPIP',
35
-	'avis_archive_invalide' => 'ملف الأرشيف غير صالح',
36
-	'avis_attention' => 'تحذير!',
37
-	'avis_champ_incorrect_type_objet' => 'إسم حقل @name@ غير صالح لنوع العنصر @type@',
38
-	'avis_colonne_inexistante' => 'العمود @col@ غير موجود',
39
-	'avis_erreur' => 'خطأ: انظر أدناه',
40
-	'avis_erreur_connexion' => 'خطأ اتصال',
41
-	'avis_erreur_cookie' => 'مشكلة في الكعكة',
42
-	'avis_erreur_fonction_contexte' => 'خطأ برمجة. لا يجب المناداة على هذه الوظيفة في هذا السياق.',
43
-	'avis_erreur_mysql' => 'خطأ SQL ',
44
-	'avis_erreur_sauvegarde' => 'خطأ في النسخة الاحتياطية (@type@ @id_objet@)!',
45
-	'avis_erreur_visiteur' => 'هناك مشكلة في الدخول إلى المجال الخاص',
16
+    // A
17
+    'access_interface_graphique' => 'عودة إلى الواجهة الرسومية الكاملة',
18
+    'access_mode_texte' => 'عرض الواجهة النصية المبسّطة',
19
+    'admin_debug' => 'اكتشاف الأخطاء',
20
+    'admin_modifier_article' => 'تعديل هذا المقال',
21
+    'admin_modifier_auteur' => 'تغيير هذا المؤلف',
22
+    'admin_modifier_breve' => 'تعديل هذا الخبر',
23
+    'admin_modifier_mot' => 'تغيير هذا المفتاح',
24
+    'admin_modifier_rubrique' => 'تعديل هذا القسم',
25
+    'admin_recalculer' => 'إعادة تحديث هذه الصفحة',
26
+    'afficher_calendrier' => 'عرض الروزنامة',
27
+    'afficher_trad' => 'عرض الترجمات',
28
+    'alerte_maj_impossible' => '<b>تحذير!</b> ترقية قاعدة SQL إلى الإصدار @version@ متعذر. قد يكون السبب مشكلة في حقل التعديل. الرجاء الاتصال بمضيف موقعك.',
29
+    'alerte_modif_info_concourante' => 'تحذير:هذه المعلومة عُدلت في مكان آخر. القيمة الحالية هي:',
30
+    'analyse_xml' => 'تحليل XML',
31
+    'annuler' => 'إلغاء',
32
+    'antispam_champ_vide' => 'الرجاء الإبقاء على هذا الحقل فارغاً:',
33
+    'articles_recents' => 'أحدث المقالات',
34
+    'avis_archive_incorrect' => 'ملف الأرشيف ليس ملف SPIP',
35
+    'avis_archive_invalide' => 'ملف الأرشيف غير صالح',
36
+    'avis_attention' => 'تحذير!',
37
+    'avis_champ_incorrect_type_objet' => 'إسم حقل @name@ غير صالح لنوع العنصر @type@',
38
+    'avis_colonne_inexistante' => 'العمود @col@ غير موجود',
39
+    'avis_erreur' => 'خطأ: انظر أدناه',
40
+    'avis_erreur_connexion' => 'خطأ اتصال',
41
+    'avis_erreur_cookie' => 'مشكلة في الكعكة',
42
+    'avis_erreur_fonction_contexte' => 'خطأ برمجة. لا يجب المناداة على هذه الوظيفة في هذا السياق.',
43
+    'avis_erreur_mysql' => 'خطأ SQL ',
44
+    'avis_erreur_sauvegarde' => 'خطأ في النسخة الاحتياطية (@type@ @id_objet@)!',
45
+    'avis_erreur_visiteur' => 'هناك مشكلة في الدخول إلى المجال الخاص',
46 46
 
47
-	// B
48
-	'barre_a_accent_grave' => 'إدراج حرف A كبير مع نبر الإطالة',
49
-	'barre_aide' => 'استخدم شريط اختصارات الكتابة لإثراء تصميم صفحتك',
50
-	'barre_e_accent_aigu' => 'إدراج حرف E كبير مع نبر حاد',
51
-	'barre_eo' => 'إدراج E داخل O',
52
-	'barre_eo_maj' => 'إدراج E كبير داخل O كبير',
53
-	'barre_euro' => 'إدراج رمز €',
54
-	'barre_gras' => '{{غامق{{',
55
-	'barre_guillemets' => 'إحاطة «بعلامتي اقتباس مزدوجة»',
56
-	'barre_guillemets_simples' => 'وضع بين "علامتي اقتباس مزدوجة من المستوى الثاني"',
57
-	'barre_intertitre' => 'تحويل إلى {{{عنوان فقرة}}}',
58
-	'barre_italic' => '{مائل{',
59
-	'barre_lien' => 'تحويل إلى [وصلة هايبرتكست->http://...]',
60
-	'barre_lien_input' => 'الرجاء إدخال عنوان الوصلة (يمكنك إدخال عنوان نسيج على شكل http://www.mysite.com أو إدخال رقم مقال من الموقع الحالي فقط).',
61
-	'barre_note' => 'تحويل إلى [[حاشية]]',
62
-	'barre_paragraphe' => 'إنشاء فقرة',
63
-	'barre_quote' => '<quote>اقتباس رسالة</quote>',
64
-	'bouton_changer' => 'تغيير',
65
-	'bouton_chercher' => 'بحث',
66
-	'bouton_choisir' => 'تحديد',
67
-	'bouton_deplacer' => 'نقل',
68
-	'bouton_download' => 'تحميل',
69
-	'bouton_enregistrer' => 'إدخال',
70
-	'bouton_radio_desactiver_messagerie_interne' => 'إيقاف المراسلة الداخلية',
71
-	'bouton_radio_envoi_annonces' => 'إرسال إعلانات التحرير',
72
-	'bouton_radio_non_envoi_annonces' => 'عدم إرسال الإعلانات',
73
-	'bouton_radio_non_envoi_liste_nouveautes' => 'عدم إرسال قائمة بآخر الأخبار',
74
-	'bouton_recharger_page' => 'إعادة تحميل الصفحة',
75
-	'bouton_telecharger' => 'تحميل',
76
-	'bouton_upload' => 'تنزيل',
77
-	'bouton_valider' => 'إدخال',
47
+    // B
48
+    'barre_a_accent_grave' => 'إدراج حرف A كبير مع نبر الإطالة',
49
+    'barre_aide' => 'استخدم شريط اختصارات الكتابة لإثراء تصميم صفحتك',
50
+    'barre_e_accent_aigu' => 'إدراج حرف E كبير مع نبر حاد',
51
+    'barre_eo' => 'إدراج E داخل O',
52
+    'barre_eo_maj' => 'إدراج E كبير داخل O كبير',
53
+    'barre_euro' => 'إدراج رمز €',
54
+    'barre_gras' => '{{غامق{{',
55
+    'barre_guillemets' => 'إحاطة «بعلامتي اقتباس مزدوجة»',
56
+    'barre_guillemets_simples' => 'وضع بين "علامتي اقتباس مزدوجة من المستوى الثاني"',
57
+    'barre_intertitre' => 'تحويل إلى {{{عنوان فقرة}}}',
58
+    'barre_italic' => '{مائل{',
59
+    'barre_lien' => 'تحويل إلى [وصلة هايبرتكست->http://...]',
60
+    'barre_lien_input' => 'الرجاء إدخال عنوان الوصلة (يمكنك إدخال عنوان نسيج على شكل http://www.mysite.com أو إدخال رقم مقال من الموقع الحالي فقط).',
61
+    'barre_note' => 'تحويل إلى [[حاشية]]',
62
+    'barre_paragraphe' => 'إنشاء فقرة',
63
+    'barre_quote' => '<quote>اقتباس رسالة</quote>',
64
+    'bouton_changer' => 'تغيير',
65
+    'bouton_chercher' => 'بحث',
66
+    'bouton_choisir' => 'تحديد',
67
+    'bouton_deplacer' => 'نقل',
68
+    'bouton_download' => 'تحميل',
69
+    'bouton_enregistrer' => 'إدخال',
70
+    'bouton_radio_desactiver_messagerie_interne' => 'إيقاف المراسلة الداخلية',
71
+    'bouton_radio_envoi_annonces' => 'إرسال إعلانات التحرير',
72
+    'bouton_radio_non_envoi_annonces' => 'عدم إرسال الإعلانات',
73
+    'bouton_radio_non_envoi_liste_nouveautes' => 'عدم إرسال قائمة بآخر الأخبار',
74
+    'bouton_recharger_page' => 'إعادة تحميل الصفحة',
75
+    'bouton_telecharger' => 'تحميل',
76
+    'bouton_upload' => 'تنزيل',
77
+    'bouton_valider' => 'إدخال',
78 78
 
79
-	// C
80
-	'cal_apresmidi' => 'بعد الظهر',
81
-	'cal_jour_entier' => 'يوم كامل',
82
-	'cal_matin' => 'الصباح',
83
-	'cal_par_jour' => 'روزنامة يومية',
84
-	'cal_par_mois' => 'روزنامة شهرية',
85
-	'cal_par_semaine' => 'روزنامة أسبوعية',
86
-	'choix_couleur_interface' => 'اللون',
87
-	'choix_interface' => 'اختيار الواجهة',
88
-	'colonne' => 'عمود',
89
-	'confirm_changer_statut' => 'تحذير، لقد طلبت تغيير حالة هذا العنصر. هل تريد المتابعة؟',
90
-	'correcte' => 'صحيح',
79
+    // C
80
+    'cal_apresmidi' => 'بعد الظهر',
81
+    'cal_jour_entier' => 'يوم كامل',
82
+    'cal_matin' => 'الصباح',
83
+    'cal_par_jour' => 'روزنامة يومية',
84
+    'cal_par_mois' => 'روزنامة شهرية',
85
+    'cal_par_semaine' => 'روزنامة أسبوعية',
86
+    'choix_couleur_interface' => 'اللون',
87
+    'choix_interface' => 'اختيار الواجهة',
88
+    'colonne' => 'عمود',
89
+    'confirm_changer_statut' => 'تحذير، لقد طلبت تغيير حالة هذا العنصر. هل تريد المتابعة؟',
90
+    'correcte' => 'صحيح',
91 91
 
92
-	// D
93
-	'date_aujourdhui' => 'اليوم',
94
-	'date_avant_jc' => 'قبل الميلاد',
95
-	'date_dans' => 'بعد @delai@',
96
-	'date_de_mois_1' => '@j@ @nommois@',
97
-	'date_de_mois_10' => '@j@ @nommois@',
98
-	'date_de_mois_11' => '@j@ @nommois@',
99
-	'date_de_mois_12' => '@j@ @nommois@',
100
-	'date_de_mois_2' => '@j@ @nommois@',
101
-	'date_de_mois_3' => '@j@ @nommois@',
102
-	'date_de_mois_4' => '@j@ @nommois@',
103
-	'date_de_mois_5' => '@j@ @nommois@',
104
-	'date_de_mois_6' => '@j@ @nommois@',
105
-	'date_de_mois_7' => '@j@ @nommois@',
106
-	'date_de_mois_8' => '@j@ @nommois@',
107
-	'date_de_mois_9' => '@j@ @nommois@',
108
-	'date_demain' => 'غداً',
109
-	'date_fmt_heures_minutes' => '@h@  و@m@  دقيقة',
110
-	'date_fmt_heures_minutes_court' => '@h@h@m@',
111
-	'date_fmt_jour' => '@nomjour@ @jour@',
112
-	'date_fmt_jour_heure' => '@jour@ الساعة @heure@',
113
-	'date_fmt_jour_heure_debut_fin' => 'في @jour@ من @heure_debut@ الى @heure_fin@',
114
-	'date_fmt_jour_heure_debut_fin_abbr' => 'في @dtstart@@jour@ من @heure_debut@@dtabbr@ الى @dtstart@@heure_fin@@dtend@',
115
-	'date_fmt_jour_mois' => '@jour@ @nommois@',
116
-	'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
117
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
118
-	'date_fmt_nomjour' => '@nomjour@ @date@',
119
-	'date_fmt_nomjour_date' => 'في @nomjour@ @date@',
120
-	'date_fmt_periode' => 'من @date_debut@ الى @date_fin@',
121
-	'date_fmt_periode_abbr' => 'من @dtart@@date_debut@@dtabbr@ الى @dtend@@date_fin@@dtabbr@',
122
-	'date_fmt_periode_from' => 'من',
123
-	'date_fmt_periode_to' => 'الى',
124
-	'date_heures' => 'ساعة',
125
-	'date_hier' => 'البارحة',
126
-	'date_il_y_a' => 'منذ @delai@',
127
-	'date_jnum1' => '1',
128
-	'date_jnum10' => '10',
129
-	'date_jnum11' => '11',
130
-	'date_jnum12' => '12',
131
-	'date_jnum13' => '13',
132
-	'date_jnum14' => '14',
133
-	'date_jnum15' => '15',
134
-	'date_jnum16' => '16',
135
-	'date_jnum17' => '17',
136
-	'date_jnum18' => '18',
137
-	'date_jnum19' => '19',
138
-	'date_jnum2' => '2',
139
-	'date_jnum20' => '20',
140
-	'date_jnum21' => '21',
141
-	'date_jnum22' => '22',
142
-	'date_jnum23' => '23',
143
-	'date_jnum24' => '24',
144
-	'date_jnum25' => '25',
145
-	'date_jnum26' => '26',
146
-	'date_jnum27' => '27',
147
-	'date_jnum28' => '28',
148
-	'date_jnum29' => '29',
149
-	'date_jnum3' => '3',
150
-	'date_jnum30' => '30',
151
-	'date_jnum31' => '31',
152
-	'date_jnum4' => '4',
153
-	'date_jnum5' => '5',
154
-	'date_jnum6' => '6',
155
-	'date_jnum7' => '7',
156
-	'date_jnum8' => '8',
157
-	'date_jnum9' => '9',
158
-	'date_jour_1' => 'الأحد',
159
-	'date_jour_1_abbr' => 'الأحد',
160
-	'date_jour_1_initiale' => 'أحد',
161
-	'date_jour_2' => 'الاثنين',
162
-	'date_jour_2_abbr' => 'اثنين',
163
-	'date_jour_2_initiale' => 'اثنين',
164
-	'date_jour_3' => 'الثلاثاء',
165
-	'date_jour_3_abbr' => 'ثلاثاء',
166
-	'date_jour_3_initiale' => 'ثلاثاء',
167
-	'date_jour_4' => 'الأربعاء',
168
-	'date_jour_4_abbr' => 'أربعاء',
169
-	'date_jour_4_initiale' => 'أربعاء',
170
-	'date_jour_5' => 'الخميس',
171
-	'date_jour_5_abbr' => 'خميس',
172
-	'date_jour_5_initiale' => 'خميس',
173
-	'date_jour_6' => 'الجمعة',
174
-	'date_jour_6_abbr' => 'جمعة',
175
-	'date_jour_6_initiale' => 'جمعة',
176
-	'date_jour_7' => 'السبت',
177
-	'date_jour_7_abbr' => 'سبت',
178
-	'date_jour_7_initiale' => 'سبت',
179
-	'date_jours' => 'يوم',
180
-	'date_minutes' => 'دقيقة',
181
-	'date_mois' => 'شهر',
182
-	'date_mois_1' => 'كانون الثاني (يناير)',
183
-	'date_mois_10' => 'تشرين الأول (أكتوبر)',
184
-	'date_mois_10_abbr' => 'ت١',
185
-	'date_mois_11' => 'تشرين الثاني (نوفمبر)',
186
-	'date_mois_11_abbr' => 'ت٢',
187
-	'date_mois_12' => 'كانون الأول (ديسمبر)',
188
-	'date_mois_12_abbr' => 'ك١',
189
-	'date_mois_1_abbr' => 'ك٢',
190
-	'date_mois_2' => 'شباط (فبراير)',
191
-	'date_mois_2_abbr' => 'شباط',
192
-	'date_mois_3' => 'آذار (مارس)',
193
-	'date_mois_3_abbr' => 'آذار',
194
-	'date_mois_4' => 'نيسان (أبريل)',
195
-	'date_mois_4_abbr' => 'نيسان',
196
-	'date_mois_5' => 'أيار (مايو)',
197
-	'date_mois_5_abbr' => 'أيار',
198
-	'date_mois_6' => 'حزيران (يونيو)',
199
-	'date_mois_6_abbr' => 'جزيران',
200
-	'date_mois_7' => 'تموز (يوليو)',
201
-	'date_mois_7_abbr' => 'تموز',
202
-	'date_mois_8' => 'آب (أغسطس)',
203
-	'date_mois_8_abbr' => 'آب',
204
-	'date_mois_9' => 'أيلول (سبتمبر)',
205
-	'date_mois_9_abbr' => 'أيلول',
206
-	'date_saison_1' => 'الشتاء',
207
-	'date_saison_2' => 'الربيع',
208
-	'date_saison_3' => 'الصيف',
209
-	'date_saison_4' => 'الخريف',
210
-	'date_secondes' => 'ثانية',
211
-	'date_semaines' => 'أسبوع',
212
-	'date_un_mois' => 'شهر',
213
-	'date_une_heure' => 'ساعة',
214
-	'date_une_minute' => 'دقيقة',
215
-	'date_une_seconde' => 'ثانية',
216
-	'date_une_semaine' => 'أسبوع',
217
-	'dirs_commencer' => 'للبدء فعلاً بعملية التثبيت',
218
-	'dirs_preliminaire' => 'تمهيد: <b>إعداد امتيازات الدخول</b>',
219
-	'dirs_probleme_droits' => 'مشكلة في امتيازات الدخول',
220
-	'dirs_repertoires_absents' => '<p><b>لم يتم العثور على الأدلة التالية: </b></p><ul>@bad_dirs@</ul>
92
+    // D
93
+    'date_aujourdhui' => 'اليوم',
94
+    'date_avant_jc' => 'قبل الميلاد',
95
+    'date_dans' => 'بعد @delai@',
96
+    'date_de_mois_1' => '@j@ @nommois@',
97
+    'date_de_mois_10' => '@j@ @nommois@',
98
+    'date_de_mois_11' => '@j@ @nommois@',
99
+    'date_de_mois_12' => '@j@ @nommois@',
100
+    'date_de_mois_2' => '@j@ @nommois@',
101
+    'date_de_mois_3' => '@j@ @nommois@',
102
+    'date_de_mois_4' => '@j@ @nommois@',
103
+    'date_de_mois_5' => '@j@ @nommois@',
104
+    'date_de_mois_6' => '@j@ @nommois@',
105
+    'date_de_mois_7' => '@j@ @nommois@',
106
+    'date_de_mois_8' => '@j@ @nommois@',
107
+    'date_de_mois_9' => '@j@ @nommois@',
108
+    'date_demain' => 'غداً',
109
+    'date_fmt_heures_minutes' => '@h@  و@m@  دقيقة',
110
+    'date_fmt_heures_minutes_court' => '@h@h@m@',
111
+    'date_fmt_jour' => '@nomjour@ @jour@',
112
+    'date_fmt_jour_heure' => '@jour@ الساعة @heure@',
113
+    'date_fmt_jour_heure_debut_fin' => 'في @jour@ من @heure_debut@ الى @heure_fin@',
114
+    'date_fmt_jour_heure_debut_fin_abbr' => 'في @dtstart@@jour@ من @heure_debut@@dtabbr@ الى @dtstart@@heure_fin@@dtend@',
115
+    'date_fmt_jour_mois' => '@jour@ @nommois@',
116
+    'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
117
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
118
+    'date_fmt_nomjour' => '@nomjour@ @date@',
119
+    'date_fmt_nomjour_date' => 'في @nomjour@ @date@',
120
+    'date_fmt_periode' => 'من @date_debut@ الى @date_fin@',
121
+    'date_fmt_periode_abbr' => 'من @dtart@@date_debut@@dtabbr@ الى @dtend@@date_fin@@dtabbr@',
122
+    'date_fmt_periode_from' => 'من',
123
+    'date_fmt_periode_to' => 'الى',
124
+    'date_heures' => 'ساعة',
125
+    'date_hier' => 'البارحة',
126
+    'date_il_y_a' => 'منذ @delai@',
127
+    'date_jnum1' => '1',
128
+    'date_jnum10' => '10',
129
+    'date_jnum11' => '11',
130
+    'date_jnum12' => '12',
131
+    'date_jnum13' => '13',
132
+    'date_jnum14' => '14',
133
+    'date_jnum15' => '15',
134
+    'date_jnum16' => '16',
135
+    'date_jnum17' => '17',
136
+    'date_jnum18' => '18',
137
+    'date_jnum19' => '19',
138
+    'date_jnum2' => '2',
139
+    'date_jnum20' => '20',
140
+    'date_jnum21' => '21',
141
+    'date_jnum22' => '22',
142
+    'date_jnum23' => '23',
143
+    'date_jnum24' => '24',
144
+    'date_jnum25' => '25',
145
+    'date_jnum26' => '26',
146
+    'date_jnum27' => '27',
147
+    'date_jnum28' => '28',
148
+    'date_jnum29' => '29',
149
+    'date_jnum3' => '3',
150
+    'date_jnum30' => '30',
151
+    'date_jnum31' => '31',
152
+    'date_jnum4' => '4',
153
+    'date_jnum5' => '5',
154
+    'date_jnum6' => '6',
155
+    'date_jnum7' => '7',
156
+    'date_jnum8' => '8',
157
+    'date_jnum9' => '9',
158
+    'date_jour_1' => 'الأحد',
159
+    'date_jour_1_abbr' => 'الأحد',
160
+    'date_jour_1_initiale' => 'أحد',
161
+    'date_jour_2' => 'الاثنين',
162
+    'date_jour_2_abbr' => 'اثنين',
163
+    'date_jour_2_initiale' => 'اثنين',
164
+    'date_jour_3' => 'الثلاثاء',
165
+    'date_jour_3_abbr' => 'ثلاثاء',
166
+    'date_jour_3_initiale' => 'ثلاثاء',
167
+    'date_jour_4' => 'الأربعاء',
168
+    'date_jour_4_abbr' => 'أربعاء',
169
+    'date_jour_4_initiale' => 'أربعاء',
170
+    'date_jour_5' => 'الخميس',
171
+    'date_jour_5_abbr' => 'خميس',
172
+    'date_jour_5_initiale' => 'خميس',
173
+    'date_jour_6' => 'الجمعة',
174
+    'date_jour_6_abbr' => 'جمعة',
175
+    'date_jour_6_initiale' => 'جمعة',
176
+    'date_jour_7' => 'السبت',
177
+    'date_jour_7_abbr' => 'سبت',
178
+    'date_jour_7_initiale' => 'سبت',
179
+    'date_jours' => 'يوم',
180
+    'date_minutes' => 'دقيقة',
181
+    'date_mois' => 'شهر',
182
+    'date_mois_1' => 'كانون الثاني (يناير)',
183
+    'date_mois_10' => 'تشرين الأول (أكتوبر)',
184
+    'date_mois_10_abbr' => 'ت١',
185
+    'date_mois_11' => 'تشرين الثاني (نوفمبر)',
186
+    'date_mois_11_abbr' => 'ت٢',
187
+    'date_mois_12' => 'كانون الأول (ديسمبر)',
188
+    'date_mois_12_abbr' => 'ك١',
189
+    'date_mois_1_abbr' => 'ك٢',
190
+    'date_mois_2' => 'شباط (فبراير)',
191
+    'date_mois_2_abbr' => 'شباط',
192
+    'date_mois_3' => 'آذار (مارس)',
193
+    'date_mois_3_abbr' => 'آذار',
194
+    'date_mois_4' => 'نيسان (أبريل)',
195
+    'date_mois_4_abbr' => 'نيسان',
196
+    'date_mois_5' => 'أيار (مايو)',
197
+    'date_mois_5_abbr' => 'أيار',
198
+    'date_mois_6' => 'حزيران (يونيو)',
199
+    'date_mois_6_abbr' => 'جزيران',
200
+    'date_mois_7' => 'تموز (يوليو)',
201
+    'date_mois_7_abbr' => 'تموز',
202
+    'date_mois_8' => 'آب (أغسطس)',
203
+    'date_mois_8_abbr' => 'آب',
204
+    'date_mois_9' => 'أيلول (سبتمبر)',
205
+    'date_mois_9_abbr' => 'أيلول',
206
+    'date_saison_1' => 'الشتاء',
207
+    'date_saison_2' => 'الربيع',
208
+    'date_saison_3' => 'الصيف',
209
+    'date_saison_4' => 'الخريف',
210
+    'date_secondes' => 'ثانية',
211
+    'date_semaines' => 'أسبوع',
212
+    'date_un_mois' => 'شهر',
213
+    'date_une_heure' => 'ساعة',
214
+    'date_une_minute' => 'دقيقة',
215
+    'date_une_seconde' => 'ثانية',
216
+    'date_une_semaine' => 'أسبوع',
217
+    'dirs_commencer' => 'للبدء فعلاً بعملية التثبيت',
218
+    'dirs_preliminaire' => 'تمهيد: <b>إعداد امتيازات الدخول</b>',
219
+    'dirs_probleme_droits' => 'مشكلة في امتيازات الدخول',
220
+    'dirs_repertoires_absents' => '<p><b>لم يتم العثور على الأدلة التالية: </b></p><ul>@bad_dirs@</ul>
221 221
 <p>قد يكون السبب خطأ في اعتماد الحروف الكبيرة أو الصغيرة في أسمائها. الرجاء التأكد من أن الحروف الكبيرة والصغيرة في أسماء هذه الأدلة تناسب ما هو معروض أعلاه؛ إذا لم يكن الأمر كذلك، الرجاء إعادة تسمية الأدلة بواسطة برنامج FTP لتصحيح الخطأ.
222 222
 <p>بعد تنفيذ هذه العملية يمكنك </p>',
223
-	'dirs_repertoires_suivants' => '<p><b>الأدلة التالية ممنوعة على الكتابة: </b></p
223
+    'dirs_repertoires_suivants' => '<p><b>الأدلة التالية ممنوعة على الكتابة: </b></p
224 224
 <ul>@bad_dirs@</ul>
225 225
 <p>لحل هذه المشكلة، استخدم برنامج FTP لإعداد امتيازات الدخول لكل من هذه الأدلة. ويوضح دليل الاستخدام هذه العملية بالتفصيل.
226 226
 <p>بعد إتمام هذه العملية يمكنك</p>',
227
-	'double_occurrence' => 'ظهور مكرر لعلامة @balise@',
227
+    'double_occurrence' => 'ظهور مكرر لعلامة @balise@',
228 228
 
229
-	// E
230
-	'en_cours' => 'جاري',
231
-	'envoi_via_le_site' => 'إرسال عبر الموقع',
232
-	'erreur' => 'خطأ',
233
-	'erreur_balise_non_fermee' => 'آخر علامة غير مغلقة:',
234
-	'erreur_technique_ajaxform' => 'عفواً. حدث خطأ غير متوقع خلال إرسال الاستمارة. الرجاء المحاولة من جديد.',
235
-	'erreur_technique_enregistrement_champs' => 'خطأ تقني منع التسجيل السليم للحقل @champs@. ',
236
-	'erreur_technique_enregistrement_impossible' => 'خطأ تقني منع التسجيل.',
237
-	'erreur_texte' => 'خطأ (أخطاء)',
238
-	'etape' => 'خطوة',
229
+    // E
230
+    'en_cours' => 'جاري',
231
+    'envoi_via_le_site' => 'إرسال عبر الموقع',
232
+    'erreur' => 'خطأ',
233
+    'erreur_balise_non_fermee' => 'آخر علامة غير مغلقة:',
234
+    'erreur_technique_ajaxform' => 'عفواً. حدث خطأ غير متوقع خلال إرسال الاستمارة. الرجاء المحاولة من جديد.',
235
+    'erreur_technique_enregistrement_champs' => 'خطأ تقني منع التسجيل السليم للحقل @champs@. ',
236
+    'erreur_technique_enregistrement_impossible' => 'خطأ تقني منع التسجيل.',
237
+    'erreur_texte' => 'خطأ (أخطاء)',
238
+    'etape' => 'خطوة',
239 239
 
240
-	// F
241
-	'fichier_introuvable' => 'لا يمكن العثور على الملف @fichier@',
242
-	'form_auteur_confirmation' => 'تأكيد عنوان البريد الالكتروني',
243
-	'form_auteur_email_modifie' => 'تغير عنوان بريدك.',
244
-	'form_auteur_envoi_mail_confirmation' => 'لفد تم ارسال بريد تأكيد الى @email@. عليك زيارة عنوان الموقع الموجود في الرسالة للتصديق على عنوان بريدك.',
245
-	'form_auteur_mail_confirmation' => 'أهلاً وسهلاً
240
+    // F
241
+    'fichier_introuvable' => 'لا يمكن العثور على الملف @fichier@',
242
+    'form_auteur_confirmation' => 'تأكيد عنوان البريد الالكتروني',
243
+    'form_auteur_email_modifie' => 'تغير عنوان بريدك.',
244
+    'form_auteur_envoi_mail_confirmation' => 'لفد تم ارسال بريد تأكيد الى @email@. عليك زيارة عنوان الموقع الموجود في الرسالة للتصديق على عنوان بريدك.',
245
+    'form_auteur_mail_confirmation' => 'أهلاً وسهلاً
246 246
 
247 247
 لقد طلبت تغيير عنوان بريدك.
248 248
 للتصديق على العنوان الجديد، يكفي الاتصال
@@ -251,333 +251,333 @@  discard block
 block discarded – undo
251 251
 
252 252
     @url@
253 253
 ',
254
-	'form_deja_inscrit' => 'سبق لك التسجيل.',
255
-	'form_email_non_valide' => 'عنوانك البريدي غير صالح.',
256
-	'form_forum_access_refuse' => 'لم تعد تملك امتياز الدحول إلى هذا الموقع.',
257
-	'form_forum_bonjour' => 'مرحباً @nom@،',
258
-	'form_forum_confirmer_email' => 'لتأكيد عنوان بريدك، إذهب الى:@url_confirm@',
259
-	'form_forum_email_deja_enregistre' => 'سبق تسجيل هذا العنوان البريدي، يمكنك إذاً استخدام كلمة سرك الاعتيادية.',
260
-	'form_forum_identifiant_mail' => 'لقد تم إرسال معرّفك الجديد بالبريد الالكتروني.',
261
-	'form_forum_identifiants' => 'بيانات الاتصال الشخصية',
262
-	'form_forum_indiquer_nom_email' => 'قم بإدخال اسمك وعنوانك البريدي هنا. ستحصل على بيانات اتصالك قريباً في البريد الإلكتروني.',
263
-	'form_forum_login' => 'المعرّف:',
264
-	'form_forum_message_auto' => '(هذه رسالة آلية)',
265
-	'form_forum_pass' => 'كلمة السر:',
266
-	'form_forum_probleme_mail' => 'مشكلة بريد إلكتروني: لا يمكن إرسال بيانات الدخول.',
267
-	'form_forum_voici1' => 'هذه هي بياناتك للاشتراك في نشاط
254
+    'form_deja_inscrit' => 'سبق لك التسجيل.',
255
+    'form_email_non_valide' => 'عنوانك البريدي غير صالح.',
256
+    'form_forum_access_refuse' => 'لم تعد تملك امتياز الدحول إلى هذا الموقع.',
257
+    'form_forum_bonjour' => 'مرحباً @nom@،',
258
+    'form_forum_confirmer_email' => 'لتأكيد عنوان بريدك، إذهب الى:@url_confirm@',
259
+    'form_forum_email_deja_enregistre' => 'سبق تسجيل هذا العنوان البريدي، يمكنك إذاً استخدام كلمة سرك الاعتيادية.',
260
+    'form_forum_identifiant_mail' => 'لقد تم إرسال معرّفك الجديد بالبريد الالكتروني.',
261
+    'form_forum_identifiants' => 'بيانات الاتصال الشخصية',
262
+    'form_forum_indiquer_nom_email' => 'قم بإدخال اسمك وعنوانك البريدي هنا. ستحصل على بيانات اتصالك قريباً في البريد الإلكتروني.',
263
+    'form_forum_login' => 'المعرّف:',
264
+    'form_forum_message_auto' => '(هذه رسالة آلية)',
265
+    'form_forum_pass' => 'كلمة السر:',
266
+    'form_forum_probleme_mail' => 'مشكلة بريد إلكتروني: لا يمكن إرسال بيانات الدخول.',
267
+    'form_forum_voici1' => 'هذه هي بياناتك للاشتراك في نشاط
268 268
 الموقع  "@nom_site_spip@" (@adresse_site@):',
269
-	'form_forum_voici2' => 'هذه هي بياناتك لاقتراح مقالات
269
+    'form_forum_voici2' => 'هذه هي بياناتك لاقتراح مقالات
270 270
 للموقع  "@nom_site_spip@" (@adresse_login@):',
271
-	'form_indiquer_email' => 'الرجاء إدخال عنوانك الإلكتروني.',
272
-	'form_indiquer_nom' => 'الرجاء إدخال اسمك.',
273
-	'form_indiquer_nom_site' => 'الرجاء إدخال إسم موقعك.',
274
-	'form_pet_deja_enregistre' => 'سبق تسجيل هذا الموقع',
275
-	'form_pet_signature_pasprise' => 'تم تجاهل توقيعك.',
276
-	'form_prop_confirmer_envoi' => 'تأكيد الإرسال',
277
-	'form_prop_description' => 'وصف/تعليق',
278
-	'form_prop_enregistre' => 'تم تسجيل اقتراحك، سوف يظهر بعد تصديقه من قبل مسئولي هذا الموقع.',
279
-	'form_prop_envoyer' => 'ابعث برسالة',
280
-	'form_prop_indiquer_email' => 'الرجاء إدخال عنوان بريد إلكتروني صالح',
281
-	'form_prop_indiquer_nom_site' => 'الرجاء إدخال اسم الموقع.',
282
-	'form_prop_indiquer_sujet' => 'الرجاء إدخال موضوع',
283
-	'form_prop_message_envoye' => 'تم بعث الرسالة',
284
-	'form_prop_non_enregistre' => 'لم يتم تسجيل اقتراحك.',
285
-	'form_prop_sujet' => 'الموضوع',
286
-	'form_prop_url_site' => 'عنوان الموقع',
287
-	'forum_non_inscrit' => 'إما انك غير مسجل أو هناك خطأ في العنوان أو كلمة السر.',
288
-	'forum_par_auteur' => 'من @auteur@',
289
-	'forum_titre_erreur' => 'خطأ...',
271
+    'form_indiquer_email' => 'الرجاء إدخال عنوانك الإلكتروني.',
272
+    'form_indiquer_nom' => 'الرجاء إدخال اسمك.',
273
+    'form_indiquer_nom_site' => 'الرجاء إدخال إسم موقعك.',
274
+    'form_pet_deja_enregistre' => 'سبق تسجيل هذا الموقع',
275
+    'form_pet_signature_pasprise' => 'تم تجاهل توقيعك.',
276
+    'form_prop_confirmer_envoi' => 'تأكيد الإرسال',
277
+    'form_prop_description' => 'وصف/تعليق',
278
+    'form_prop_enregistre' => 'تم تسجيل اقتراحك، سوف يظهر بعد تصديقه من قبل مسئولي هذا الموقع.',
279
+    'form_prop_envoyer' => 'ابعث برسالة',
280
+    'form_prop_indiquer_email' => 'الرجاء إدخال عنوان بريد إلكتروني صالح',
281
+    'form_prop_indiquer_nom_site' => 'الرجاء إدخال اسم الموقع.',
282
+    'form_prop_indiquer_sujet' => 'الرجاء إدخال موضوع',
283
+    'form_prop_message_envoye' => 'تم بعث الرسالة',
284
+    'form_prop_non_enregistre' => 'لم يتم تسجيل اقتراحك.',
285
+    'form_prop_sujet' => 'الموضوع',
286
+    'form_prop_url_site' => 'عنوان الموقع',
287
+    'forum_non_inscrit' => 'إما انك غير مسجل أو هناك خطأ في العنوان أو كلمة السر.',
288
+    'forum_par_auteur' => 'من @auteur@',
289
+    'forum_titre_erreur' => 'خطأ...',
290 290
 
291
-	// I
292
-	'ical_texte_rss_articles' => 'يوجد ملف «الترخيص الخلفي» لمقالات هذا الموقع على العنوان: ',
293
-	'ical_texte_rss_articles2' => 'يمكنك أيضاً الحصول على ملفات «الترخيص الخلفي» لمقالات كل قسم في الموقع:',
294
-	'ical_texte_rss_breves' => 'يوجد كذلك ملف يحتوي على أخبار الموقع. وبإدخال رقم قسم ما، تحصل على أخبار هذا القسم فقط.',
295
-	'icone_a_suivre' => 'للمتابعة',
296
-	'icone_admin_site' => 'إدارة الموقع',
297
-	'icone_agenda' => 'المفكرة',
298
-	'icone_aide_ligne' => 'التعليمات الفورية',
299
-	'icone_articles' => 'المقالات',
300
-	'icone_auteurs' => 'المؤلفون',
301
-	'icone_brouteur' => 'تصفح سريع',
302
-	'icone_configuration_site' => 'إعداد',
303
-	'icone_configurer_site' => 'إعداد موقعك',
304
-	'icone_creer_nouvel_auteur' => 'إضافة مؤلف جديد',
305
-	'icone_creer_rubrique' => 'إنشاء قسم',
306
-	'icone_creer_sous_rubrique' => 'إنشاء قسم فرعي',
307
-	'icone_deconnecter' => 'خروج',
308
-	'icone_discussions' => 'نقاشات',
309
-	'icone_doc_rubrique' => 'مستندات الأقسام',
310
-	'icone_ecrire_article' => 'كتابة مقال جديد',
311
-	'icone_edition_site' => 'تحرير الموقع',
312
-	'icone_gestion_langues' => 'إدارة اللغات',
313
-	'icone_informations_personnelles' => 'المعلومات الشخصية',
314
-	'icone_interface_complet' => 'واجهة كاملة',
315
-	'icone_interface_simple' => 'واجهة مبسّطة',
316
-	'icone_maintenance_site' => 'صيانة الموقع',
317
-	'icone_messagerie_personnelle' => 'المراسلة الشخصية',
318
-	'icone_repartition_debut' => 'إظهار التوزيع منذ البداية',
319
-	'icone_rubriques' => 'الأقسام',
320
-	'icone_sauver_site' => 'نسخة احتياطية للموقع',
321
-	'icone_site_entier' => 'الموقع بالكامل',
322
-	'icone_sites_references' => 'المواقع المبوبة',
323
-	'icone_statistiques' => 'إحصاءات الموقع',
324
-	'icone_suivi_activite' => 'متابعة نشاط الموقع',
325
-	'icone_suivi_actualite' => 'تطور الموقع',
326
-	'icone_suivi_pettions' => 'متابعة/إدارة العرائض',
327
-	'icone_suivi_revisions' => 'تعديل المقالات',
328
-	'icone_supprimer_document' => 'حذف هذا المستند',
329
-	'icone_supprimer_image' => 'حذف هذه الصورة',
330
-	'icone_tous_articles' => 'كل مقالاتك',
331
-	'icone_tous_auteur' => 'جميع المؤلفين',
332
-	'icone_tous_visiteur' => 'جميع الزوار',
333
-	'icone_visiter_site' => 'تصفح الموقع العمومي',
334
-	'icone_voir_en_ligne' => 'عرض مباشر',
335
-	'img_indisponible' => 'صورة غير متوفرة',
336
-	'impossible' => 'مستحيل',
337
-	'info_a_suivre' => 'للمتابعة»',
338
-	'info_acces_interdit' => 'الدخول محظور',
339
-	'info_acces_refuse' => 'دخول محظور',
340
-	'info_action' => 'عملية: @action@',
341
-	'info_administrer_rubriques' => 'يمكنك إدارة هذا القسم وأقسامه الفرعية',
342
-	'info_adresse_non_indiquee' => 'لم تدخل أي عنوان لاختباره!',
343
-	'info_aide' => 'تعليمات :',
344
-	'info_ajouter_mot' => 'إضافة هذا المفتاح',
345
-	'info_annonce' => 'إعلان',
346
-	'info_annonces_generales' => 'إعلانات عامة:',
347
-	'info_article_propose' => 'مقال مقترح',
348
-	'info_article_publie' => 'مقال منشور',
349
-	'info_article_redaction' => 'مقال قيد التحرير',
350
-	'info_article_refuse' => 'مقال مرفوض',
351
-	'info_article_supprime' => 'مقال محذوف',
352
-	'info_articles' => 'المقالات',
353
-	'info_articles_a_valider' => 'مقالات معروضة للتصديق',
354
-	'info_articles_nb' => '@nb@ مقال',
355
-	'info_articles_proposes' => 'المقالات المعروضة',
356
-	'info_articles_un' => 'مقال واحد',
357
-	'info_auteurs_nombre' => 'مؤلف (مؤلفون):',
358
-	'info_authentification_ftp' => 'التحقق ( عبر بروتوكول FTP ).',
359
-	'info_breves_2' => 'خبر',
360
-	'info_breves_nb' => '@nb@ خبر',
361
-	'info_breves_un' => 'خبر واحد',
362
-	'info_connexion_refusee' => 'رفض الاتصال',
363
-	'info_contact_developpeur' => 'الرجاء الاتصال بمطوّر.',
364
-	'info_contenance' => 'هذا الموقع يحتوي على:',
365
-	'info_contribution' => 'مشاركة منتديات',
366
-	'info_copyright' => '@spip@ برنامج حر موزع @lien_gpl@.',
367
-	'info_copyright_doc' => 'لمزيد من المعلومات راجع الموقع<a href="@spipnet@">@spipnet_affiche@</a>.',
368
-	'info_copyright_gpl' => 'بموجب الترخيص العام GPL',
369
-	'info_cours_edition' => 'قيد التحرير',
370
-	'info_creer_repertoire' => 'الرجاء إنشاء ملف أو دليل باسم',
371
-	'info_creer_repertoire_2' => 'داخل الدليل الفرعي <b>@repertoire@</b>، ثم:',
372
-	'info_creer_vignette' => 'إنشاء آلي للمصغر',
373
-	'info_creerdansrubrique_non_autorise' => 'لا تملك الحقوق الكافية لإنشاء اي محتوى في هذا القسم',
374
-	'info_deplier' => 'بسط',
375
-	'info_descriptif_nombre' => 'الوصف:',
376
-	'info_description' => 'الوصف:',
377
-	'info_description_2' => 'الوصف:',
378
-	'info_dimension' => 'الحجم:',
379
-	'info_documents_nb' => '@nb@ مستند',
380
-	'info_documents_un' => 'مستند واحد',
381
-	'info_ecire_message_prive' => 'تحرير رسالة خاصة',
382
-	'info_email_invalide' => 'عنوان بريد غير صالح.',
383
-	'info_en_cours_validation' => 'مقالاتك قيد التحرير',
384
-	'info_en_ligne' => 'متصل حالياً:',
385
-	'info_envoyer_message_prive' => 'ابعث برسالة خاصة لهذا المؤلف',
386
-	'info_erreur_requete' => 'خطأ في الاستفسار:',
387
-	'info_erreur_squelette2' => 'لا توجد صفحة نموذجية <b>@fichier@</b> متاحة...',
388
-	'info_erreur_systeme' => 'خطأ في النظام (خطأ رقم @errsys@)',
389
-	'info_erreur_systeme2' => 'قد يكون القرص الصلب ممتلئاً أو قد تكون قاعدة البيانات معطلة.<br />
291
+    // I
292
+    'ical_texte_rss_articles' => 'يوجد ملف «الترخيص الخلفي» لمقالات هذا الموقع على العنوان: ',
293
+    'ical_texte_rss_articles2' => 'يمكنك أيضاً الحصول على ملفات «الترخيص الخلفي» لمقالات كل قسم في الموقع:',
294
+    'ical_texte_rss_breves' => 'يوجد كذلك ملف يحتوي على أخبار الموقع. وبإدخال رقم قسم ما، تحصل على أخبار هذا القسم فقط.',
295
+    'icone_a_suivre' => 'للمتابعة',
296
+    'icone_admin_site' => 'إدارة الموقع',
297
+    'icone_agenda' => 'المفكرة',
298
+    'icone_aide_ligne' => 'التعليمات الفورية',
299
+    'icone_articles' => 'المقالات',
300
+    'icone_auteurs' => 'المؤلفون',
301
+    'icone_brouteur' => 'تصفح سريع',
302
+    'icone_configuration_site' => 'إعداد',
303
+    'icone_configurer_site' => 'إعداد موقعك',
304
+    'icone_creer_nouvel_auteur' => 'إضافة مؤلف جديد',
305
+    'icone_creer_rubrique' => 'إنشاء قسم',
306
+    'icone_creer_sous_rubrique' => 'إنشاء قسم فرعي',
307
+    'icone_deconnecter' => 'خروج',
308
+    'icone_discussions' => 'نقاشات',
309
+    'icone_doc_rubrique' => 'مستندات الأقسام',
310
+    'icone_ecrire_article' => 'كتابة مقال جديد',
311
+    'icone_edition_site' => 'تحرير الموقع',
312
+    'icone_gestion_langues' => 'إدارة اللغات',
313
+    'icone_informations_personnelles' => 'المعلومات الشخصية',
314
+    'icone_interface_complet' => 'واجهة كاملة',
315
+    'icone_interface_simple' => 'واجهة مبسّطة',
316
+    'icone_maintenance_site' => 'صيانة الموقع',
317
+    'icone_messagerie_personnelle' => 'المراسلة الشخصية',
318
+    'icone_repartition_debut' => 'إظهار التوزيع منذ البداية',
319
+    'icone_rubriques' => 'الأقسام',
320
+    'icone_sauver_site' => 'نسخة احتياطية للموقع',
321
+    'icone_site_entier' => 'الموقع بالكامل',
322
+    'icone_sites_references' => 'المواقع المبوبة',
323
+    'icone_statistiques' => 'إحصاءات الموقع',
324
+    'icone_suivi_activite' => 'متابعة نشاط الموقع',
325
+    'icone_suivi_actualite' => 'تطور الموقع',
326
+    'icone_suivi_pettions' => 'متابعة/إدارة العرائض',
327
+    'icone_suivi_revisions' => 'تعديل المقالات',
328
+    'icone_supprimer_document' => 'حذف هذا المستند',
329
+    'icone_supprimer_image' => 'حذف هذه الصورة',
330
+    'icone_tous_articles' => 'كل مقالاتك',
331
+    'icone_tous_auteur' => 'جميع المؤلفين',
332
+    'icone_tous_visiteur' => 'جميع الزوار',
333
+    'icone_visiter_site' => 'تصفح الموقع العمومي',
334
+    'icone_voir_en_ligne' => 'عرض مباشر',
335
+    'img_indisponible' => 'صورة غير متوفرة',
336
+    'impossible' => 'مستحيل',
337
+    'info_a_suivre' => 'للمتابعة»',
338
+    'info_acces_interdit' => 'الدخول محظور',
339
+    'info_acces_refuse' => 'دخول محظور',
340
+    'info_action' => 'عملية: @action@',
341
+    'info_administrer_rubriques' => 'يمكنك إدارة هذا القسم وأقسامه الفرعية',
342
+    'info_adresse_non_indiquee' => 'لم تدخل أي عنوان لاختباره!',
343
+    'info_aide' => 'تعليمات :',
344
+    'info_ajouter_mot' => 'إضافة هذا المفتاح',
345
+    'info_annonce' => 'إعلان',
346
+    'info_annonces_generales' => 'إعلانات عامة:',
347
+    'info_article_propose' => 'مقال مقترح',
348
+    'info_article_publie' => 'مقال منشور',
349
+    'info_article_redaction' => 'مقال قيد التحرير',
350
+    'info_article_refuse' => 'مقال مرفوض',
351
+    'info_article_supprime' => 'مقال محذوف',
352
+    'info_articles' => 'المقالات',
353
+    'info_articles_a_valider' => 'مقالات معروضة للتصديق',
354
+    'info_articles_nb' => '@nb@ مقال',
355
+    'info_articles_proposes' => 'المقالات المعروضة',
356
+    'info_articles_un' => 'مقال واحد',
357
+    'info_auteurs_nombre' => 'مؤلف (مؤلفون):',
358
+    'info_authentification_ftp' => 'التحقق ( عبر بروتوكول FTP ).',
359
+    'info_breves_2' => 'خبر',
360
+    'info_breves_nb' => '@nb@ خبر',
361
+    'info_breves_un' => 'خبر واحد',
362
+    'info_connexion_refusee' => 'رفض الاتصال',
363
+    'info_contact_developpeur' => 'الرجاء الاتصال بمطوّر.',
364
+    'info_contenance' => 'هذا الموقع يحتوي على:',
365
+    'info_contribution' => 'مشاركة منتديات',
366
+    'info_copyright' => '@spip@ برنامج حر موزع @lien_gpl@.',
367
+    'info_copyright_doc' => 'لمزيد من المعلومات راجع الموقع<a href="@spipnet@">@spipnet_affiche@</a>.',
368
+    'info_copyright_gpl' => 'بموجب الترخيص العام GPL',
369
+    'info_cours_edition' => 'قيد التحرير',
370
+    'info_creer_repertoire' => 'الرجاء إنشاء ملف أو دليل باسم',
371
+    'info_creer_repertoire_2' => 'داخل الدليل الفرعي <b>@repertoire@</b>، ثم:',
372
+    'info_creer_vignette' => 'إنشاء آلي للمصغر',
373
+    'info_creerdansrubrique_non_autorise' => 'لا تملك الحقوق الكافية لإنشاء اي محتوى في هذا القسم',
374
+    'info_deplier' => 'بسط',
375
+    'info_descriptif_nombre' => 'الوصف:',
376
+    'info_description' => 'الوصف:',
377
+    'info_description_2' => 'الوصف:',
378
+    'info_dimension' => 'الحجم:',
379
+    'info_documents_nb' => '@nb@ مستند',
380
+    'info_documents_un' => 'مستند واحد',
381
+    'info_ecire_message_prive' => 'تحرير رسالة خاصة',
382
+    'info_email_invalide' => 'عنوان بريد غير صالح.',
383
+    'info_en_cours_validation' => 'مقالاتك قيد التحرير',
384
+    'info_en_ligne' => 'متصل حالياً:',
385
+    'info_envoyer_message_prive' => 'ابعث برسالة خاصة لهذا المؤلف',
386
+    'info_erreur_requete' => 'خطأ في الاستفسار:',
387
+    'info_erreur_squelette2' => 'لا توجد صفحة نموذجية <b>@fichier@</b> متاحة...',
388
+    'info_erreur_systeme' => 'خطأ في النظام (خطأ رقم @errsys@)',
389
+    'info_erreur_systeme2' => 'قد يكون القرص الصلب ممتلئاً أو قد تكون قاعدة البيانات معطلة.<br />
390 390
 <span style="color:red;">حاول <a href=\'@script@\'>إصلاح القاعدة</a>، أو الاتصال بمضيف موقعك.</font> ',
391
-	'info_fini' => 'انتهى!',
392
-	'info_format_image' => 'تنسيق ملفات الصور الذي يمكن استخدامه لإنشاء المصغرات: @gd_formats@ .',
393
-	'info_format_non_defini' => 'تنسيق غير معروف',
394
-	'info_grand_ecran' => 'شاشة كبيرة',
395
-	'info_image_aide' => 'تعليمات',
396
-	'info_image_process_titre' => 'طريقة إنشاء المصغرات',
397
-	'info_impossible_lire_page' => '<b>خطأ!</b> لا يمكن قراءة الصفحة <tt><html>@test_proxy@</html></tt> عبر الجهاز الوكيل',
398
-	'info_installation_systeme_publication' => 'تثبيت نظام النشر...',
399
-	'info_installer_documents' => 'يمكنك تثبيت كل المستندات الموجودة في المجلد @upload@ آلياً.',
400
-	'info_installer_ftp' => 'بصفتك مديراً، يمكنك تثبيت (بواسطة بروتوكول FTP) ملفات في المجلد@upload@  من أجل تحديدهم في ما بعد مباشرة من هنا.',
401
-	'info_installer_images' => 'يمكنك تثبيت صور بتنسيقات JPEG  وGIF  وPNG.',
402
-	'info_installer_images_dossier' => 'تثبيت صور في المجلد @upload@  للتمكن من تحديدها هنا.',
403
-	'info_interface_complete' => 'واجهة كاملة',
404
-	'info_interface_simple' => 'واجهة مبسّطة',
405
-	'info_joindre_document_article' => 'يمكنك إرفاق مقالك بمستندات من الأنواع',
406
-	'info_joindre_document_rubrique' => 'يمكنك إضافة مستندات من الأنواع التالية إلى هذا القسم',
407
-	'info_joindre_documents_article' => 'يمكنك إرفاق مستندات من الأنواع التالية بمقالك :',
408
-	'info_l_article' => 'المقال',
409
-	'info_la_breve' => 'الخبر',
410
-	'info_la_rubrique' => 'القسم',
411
-	'info_langue_principale' => 'اللغة الأساسية للموقع',
412
-	'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@  نقطة',
413
-	'info_les_auteurs_1' => 'من @les_auteurs@',
414
-	'info_logo_format_interdit' => 'الرموز بتنسيق @formats@ هي الوحيدة المسموح بها.',
415
-	'info_logo_max_poids' => 'يجب ألا يتعدى حجم الرموز @maxi@ (يبلغ حجم الملف الحالي @actuel@). ',
416
-	'info_mail_fournisseur' => '[email protected]',
417
-	'info_message_2' => 'رسالة',
418
-	'info_message_supprime' => 'تم حذف المشاركة',
419
-	'info_messages_nb' => '@nb@ رسالة',
420
-	'info_messages_un' => 'رسالة واحدة',
421
-	'info_mise_en_ligne' => 'تاريخ النشر:',
422
-	'info_modification_parametres_securite' => 'تعديل إعدادات الأمان',
423
-	'info_mois_courant' => 'في بحر الشهر:',
424
-	'info_mot_cle_ajoute' => 'تمت إضافة المفتاح التالي إلى',
425
-	'info_multi_herit' => 'اللغة الافتراضية',
426
-	'info_multi_langues_soulignees' => '<u>اللغات التي تحتها خط</u> تتمتع بترجمة كاملة او جزئية لكل نصوص الواجهة. فإذا حددت هذه اللغات، سيتم ترجمة العديد من عناصر الموقع العمومي (التواريخ والاستمارات) آلياً. أما بالنسبة للغات التي ليس تحتها خط، فستظهر هذه العناصر في لغة الموقع الأساسية.',
427
-	'info_multilinguisme' => 'تعدد اللغات',
428
-	'info_nom_non_utilisateurs_connectes' => 'اسمك لا يظهر في قائمة المستخدمين المتصلين.',
429
-	'info_nom_utilisateurs_connectes' => 'اسمك يظهر في قائمة المستخدمين المتصلين.',
430
-	'info_nombre_en_ligne' => 'متصل حالياً:',
431
-	'info_non_resultat' => 'لا توجد نتائج لـ "@cherche_mot@"',
432
-	'info_non_utilisation_messagerie' => 'أنت لا تستخدم المراسلة الداخلية في هذا الموقع.',
433
-	'info_nouveau_message' => 'وصلت رسالة جديدة',
434
-	'info_nouveaux_messages' => 'وصلت @total_messages@  رسالة جديدة',
435
-	'info_numero_abbreviation' => 'رقم',
436
-	'info_obligatoire' => 'هذه المعلومة إجبارية',
437
-	'info_pense_bete' => 'مذكرة',
438
-	'info_petit_ecran' => 'شاشة صغيرة',
439
-	'info_petition_close' => 'عريضة مقفلة',
440
-	'info_pixels' => 'نقطة',
441
-	'info_plusieurs_mots_trouves' => 'تم العثور على عدة مفاتيح لـ "@cherche_mot@" :',
442
-	'info_portfolio_automatique' => 'محفظة آلية:',
443
-	'info_premier_resultat' => '[النتائج الـ@debut_limit@  الأولى من أصل @total@]',
444
-	'info_premier_resultat_sur' => '[النتائج الـ@debut_limit@  الأولى من أصل @total@]',
445
-	'info_propose_1' => '[@nom_site_spip@] يقترح: @titre@',
446
-	'info_propose_2' => 'مقال معروض
391
+    'info_fini' => 'انتهى!',
392
+    'info_format_image' => 'تنسيق ملفات الصور الذي يمكن استخدامه لإنشاء المصغرات: @gd_formats@ .',
393
+    'info_format_non_defini' => 'تنسيق غير معروف',
394
+    'info_grand_ecran' => 'شاشة كبيرة',
395
+    'info_image_aide' => 'تعليمات',
396
+    'info_image_process_titre' => 'طريقة إنشاء المصغرات',
397
+    'info_impossible_lire_page' => '<b>خطأ!</b> لا يمكن قراءة الصفحة <tt><html>@test_proxy@</html></tt> عبر الجهاز الوكيل',
398
+    'info_installation_systeme_publication' => 'تثبيت نظام النشر...',
399
+    'info_installer_documents' => 'يمكنك تثبيت كل المستندات الموجودة في المجلد @upload@ آلياً.',
400
+    'info_installer_ftp' => 'بصفتك مديراً، يمكنك تثبيت (بواسطة بروتوكول FTP) ملفات في المجلد@upload@  من أجل تحديدهم في ما بعد مباشرة من هنا.',
401
+    'info_installer_images' => 'يمكنك تثبيت صور بتنسيقات JPEG  وGIF  وPNG.',
402
+    'info_installer_images_dossier' => 'تثبيت صور في المجلد @upload@  للتمكن من تحديدها هنا.',
403
+    'info_interface_complete' => 'واجهة كاملة',
404
+    'info_interface_simple' => 'واجهة مبسّطة',
405
+    'info_joindre_document_article' => 'يمكنك إرفاق مقالك بمستندات من الأنواع',
406
+    'info_joindre_document_rubrique' => 'يمكنك إضافة مستندات من الأنواع التالية إلى هذا القسم',
407
+    'info_joindre_documents_article' => 'يمكنك إرفاق مستندات من الأنواع التالية بمقالك :',
408
+    'info_l_article' => 'المقال',
409
+    'info_la_breve' => 'الخبر',
410
+    'info_la_rubrique' => 'القسم',
411
+    'info_langue_principale' => 'اللغة الأساسية للموقع',
412
+    'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@  نقطة',
413
+    'info_les_auteurs_1' => 'من @les_auteurs@',
414
+    'info_logo_format_interdit' => 'الرموز بتنسيق @formats@ هي الوحيدة المسموح بها.',
415
+    'info_logo_max_poids' => 'يجب ألا يتعدى حجم الرموز @maxi@ (يبلغ حجم الملف الحالي @actuel@). ',
416
+    'info_mail_fournisseur' => '[email protected]',
417
+    'info_message_2' => 'رسالة',
418
+    'info_message_supprime' => 'تم حذف المشاركة',
419
+    'info_messages_nb' => '@nb@ رسالة',
420
+    'info_messages_un' => 'رسالة واحدة',
421
+    'info_mise_en_ligne' => 'تاريخ النشر:',
422
+    'info_modification_parametres_securite' => 'تعديل إعدادات الأمان',
423
+    'info_mois_courant' => 'في بحر الشهر:',
424
+    'info_mot_cle_ajoute' => 'تمت إضافة المفتاح التالي إلى',
425
+    'info_multi_herit' => 'اللغة الافتراضية',
426
+    'info_multi_langues_soulignees' => '<u>اللغات التي تحتها خط</u> تتمتع بترجمة كاملة او جزئية لكل نصوص الواجهة. فإذا حددت هذه اللغات، سيتم ترجمة العديد من عناصر الموقع العمومي (التواريخ والاستمارات) آلياً. أما بالنسبة للغات التي ليس تحتها خط، فستظهر هذه العناصر في لغة الموقع الأساسية.',
427
+    'info_multilinguisme' => 'تعدد اللغات',
428
+    'info_nom_non_utilisateurs_connectes' => 'اسمك لا يظهر في قائمة المستخدمين المتصلين.',
429
+    'info_nom_utilisateurs_connectes' => 'اسمك يظهر في قائمة المستخدمين المتصلين.',
430
+    'info_nombre_en_ligne' => 'متصل حالياً:',
431
+    'info_non_resultat' => 'لا توجد نتائج لـ "@cherche_mot@"',
432
+    'info_non_utilisation_messagerie' => 'أنت لا تستخدم المراسلة الداخلية في هذا الموقع.',
433
+    'info_nouveau_message' => 'وصلت رسالة جديدة',
434
+    'info_nouveaux_messages' => 'وصلت @total_messages@  رسالة جديدة',
435
+    'info_numero_abbreviation' => 'رقم',
436
+    'info_obligatoire' => 'هذه المعلومة إجبارية',
437
+    'info_pense_bete' => 'مذكرة',
438
+    'info_petit_ecran' => 'شاشة صغيرة',
439
+    'info_petition_close' => 'عريضة مقفلة',
440
+    'info_pixels' => 'نقطة',
441
+    'info_plusieurs_mots_trouves' => 'تم العثور على عدة مفاتيح لـ "@cherche_mot@" :',
442
+    'info_portfolio_automatique' => 'محفظة آلية:',
443
+    'info_premier_resultat' => '[النتائج الـ@debut_limit@  الأولى من أصل @total@]',
444
+    'info_premier_resultat_sur' => '[النتائج الـ@debut_limit@  الأولى من أصل @total@]',
445
+    'info_propose_1' => '[@nom_site_spip@] يقترح: @titre@',
446
+    'info_propose_2' => 'مقال معروض
447 447
 ----------',
448
-	'info_propose_3' => 'المقال "@titre@" معروض للنشر.',
449
-	'info_propose_4' => 'أنت مدعو لمراجعته وإبداء رأيك',
450
-	'info_propose_5' => 'في المنتدى المرتبط به. إنه موجود على العنوان:',
451
-	'info_publie_01' => 'تم التصديق على المقال "@titre@"  من قبل @connect_nom@ .',
452
-	'info_publie_1' => '[@nom_site_spip@] ينشر: @titre@',
453
-	'info_publie_2' => 'مقال منشور
448
+    'info_propose_3' => 'المقال "@titre@" معروض للنشر.',
449
+    'info_propose_4' => 'أنت مدعو لمراجعته وإبداء رأيك',
450
+    'info_propose_5' => 'في المنتدى المرتبط به. إنه موجود على العنوان:',
451
+    'info_publie_01' => 'تم التصديق على المقال "@titre@"  من قبل @connect_nom@ .',
452
+    'info_publie_1' => '[@nom_site_spip@] ينشر: @titre@',
453
+    'info_publie_2' => 'مقال منشور
454 454
 ----------',
455
-	'info_rechercher' => 'بحث',
456
-	'info_rechercher_02' => 'بحث:',
457
-	'info_remplacer_vignette' => 'استبدال المصغر الافتراضي بشعار شخصي:',
458
-	'info_rubriques_nb' => '@nb@ قسم',
459
-	'info_rubriques_un' => 'قسم واحد',
460
-	'info_sans_titre_2' => 'بدون عنوان',
461
-	'info_selectionner_fichier' => 'يمكنك تحديد ملف من المجلد @upload@:',
462
-	'info_selectionner_fichier_2' => 'تحديد ملف:',
463
-	'info_sites_nb' => '@nb@ موقع',
464
-	'info_sites_un' => 'موقع واحد',
465
-	'info_supprimer_vignette' => 'حذف المصغر',
466
-	'info_symbole_bleu' => 'الرمز <b>أزرق</b> يرمز إلى <b>مذكرة</b>: أي رسالة لاستخدامك الشخصي.',
467
-	'info_symbole_jaune' => 'الرمز <b>أصفر</b> يرمز إلى <b>إعلان لجميع المحررين</b>: يمكن لجميع المدراء تحريره وهو ظاهر لجميع المحررين.',
468
-	'info_symbole_vert' => 'الرمز <b>أخضر</b>  يرمز إلى <b>الرسائل المتبادلة بين مستخدمي</b> الموقع.',
469
-	'info_telecharger_nouveau_logo' => 'تحميل شعار جديد:',
470
-	'info_telecharger_ordinateur' => 'تحميل من جهازك:',
471
-	'info_tous_resultats_enregistres' => '[تم تسجيل كل النتائج]',
472
-	'info_tout_afficher' => 'إظهار الكل',
473
-	'info_travaux_texte' => 'هذا الموقع قيد الإعداد. برجاء العودة في وقت لاحق...',
474
-	'info_travaux_titre' => 'موقع قيد التصميم',
475
-	'info_trop_resultat' => 'تم العثور على عدد كبير جداً من النتائج لـ "@cherche_mot@" ، الرجاء زيادة دقة البحث.',
476
-	'info_utilisation_messagerie_interne' => 'أنت تستخدم المراسلة الداخلية في هذا الموقع.',
477
-	'info_valider_lien' => 'التصديق على هذه الوصلة',
478
-	'info_verifier_image' => '، الرجاء التأكد من أنه تم نقل الصور بشكل سليم.',
479
-	'info_vignette_defaut' => 'المصغر الافتراضي',
480
-	'info_vignette_personnalisee' => 'مصغر شخصي',
481
-	'info_visite' => 'زيارة:',
482
-	'info_vos_rendez_vous' => 'مواعيدك القادمة',
483
-	'infos_vos_pense_bete' => 'مذكراتك',
455
+    'info_rechercher' => 'بحث',
456
+    'info_rechercher_02' => 'بحث:',
457
+    'info_remplacer_vignette' => 'استبدال المصغر الافتراضي بشعار شخصي:',
458
+    'info_rubriques_nb' => '@nb@ قسم',
459
+    'info_rubriques_un' => 'قسم واحد',
460
+    'info_sans_titre_2' => 'بدون عنوان',
461
+    'info_selectionner_fichier' => 'يمكنك تحديد ملف من المجلد @upload@:',
462
+    'info_selectionner_fichier_2' => 'تحديد ملف:',
463
+    'info_sites_nb' => '@nb@ موقع',
464
+    'info_sites_un' => 'موقع واحد',
465
+    'info_supprimer_vignette' => 'حذف المصغر',
466
+    'info_symbole_bleu' => 'الرمز <b>أزرق</b> يرمز إلى <b>مذكرة</b>: أي رسالة لاستخدامك الشخصي.',
467
+    'info_symbole_jaune' => 'الرمز <b>أصفر</b> يرمز إلى <b>إعلان لجميع المحررين</b>: يمكن لجميع المدراء تحريره وهو ظاهر لجميع المحررين.',
468
+    'info_symbole_vert' => 'الرمز <b>أخضر</b>  يرمز إلى <b>الرسائل المتبادلة بين مستخدمي</b> الموقع.',
469
+    'info_telecharger_nouveau_logo' => 'تحميل شعار جديد:',
470
+    'info_telecharger_ordinateur' => 'تحميل من جهازك:',
471
+    'info_tous_resultats_enregistres' => '[تم تسجيل كل النتائج]',
472
+    'info_tout_afficher' => 'إظهار الكل',
473
+    'info_travaux_texte' => 'هذا الموقع قيد الإعداد. برجاء العودة في وقت لاحق...',
474
+    'info_travaux_titre' => 'موقع قيد التصميم',
475
+    'info_trop_resultat' => 'تم العثور على عدد كبير جداً من النتائج لـ "@cherche_mot@" ، الرجاء زيادة دقة البحث.',
476
+    'info_utilisation_messagerie_interne' => 'أنت تستخدم المراسلة الداخلية في هذا الموقع.',
477
+    'info_valider_lien' => 'التصديق على هذه الوصلة',
478
+    'info_verifier_image' => '، الرجاء التأكد من أنه تم نقل الصور بشكل سليم.',
479
+    'info_vignette_defaut' => 'المصغر الافتراضي',
480
+    'info_vignette_personnalisee' => 'مصغر شخصي',
481
+    'info_visite' => 'زيارة:',
482
+    'info_vos_rendez_vous' => 'مواعيدك القادمة',
483
+    'infos_vos_pense_bete' => 'مذكراتك',
484 484
 
485
-	// L
486
-	'label_ajout_id_rapide' => 'إضافة سريعة',
487
-	'label_poids_fichier' => 'الحجم',
488
-	'lien_afficher_icones_seuls' => 'عرض الرموز فقط',
489
-	'lien_afficher_texte_icones' => 'عرض الرموز والعناوين',
490
-	'lien_afficher_texte_seul' => 'عرض العناوين فقط',
491
-	'lien_liberer' => 'فك الحجز',
492
-	'lien_liberer_tous' => 'فك حجز الكل',
493
-	'lien_nouvea_pense_bete' => 'مذكرة جديدة',
494
-	'lien_nouveau_message' => 'رسالة جديدة',
495
-	'lien_nouvelle_annonce' => 'إعلان جديد',
496
-	'lien_petitions' => 'عريضة',
497
-	'lien_popularite' => 'شعبية: @popularite@%',
498
-	'lien_racine_site' => 'أصل الموقع',
499
-	'lien_reessayer' => 'إعادة المحاولة',
500
-	'lien_repondre_message' => 'الرد على هذه المشاركة',
501
-	'lien_supprimer' => 'حذف',
502
-	'lien_tout_afficher' => 'إظهار الكل',
503
-	'lien_visite_site' => 'زيارة هذا الموقع',
504
-	'lien_visites' => '@visites@ زيارة',
505
-	'lien_voir_auteur' => 'مراجعة هذا المؤلف',
506
-	'ligne' => 'سطر',
507
-	'login' => 'الدخول',
508
-	'login_acces_prive' => 'الدخول إلى المجال الخاص',
509
-	'login_autre_identifiant' => 'الاتصال بمعرّف آخر',
510
-	'login_cookie_accepte' => 'الرجاء تهيئ برنامج التصفح ليتقبلها (من هذا الموقع على الأقل)',
511
-	'login_cookie_oblige' => 'للتعريف عن نفسك بشكل آمن في هذا الموقع، يجب قبول الكعكات (cookies).',
512
-	'login_deconnexion_ok' => 'تم قطع الاتصال.',
513
-	'login_erreur_pass' => 'خطأ في كلمة السر.',
514
-	'login_espace_prive' => 'المجال الخاص',
515
-	'login_identifiant_inconnu' => 'المعرّف «@login@» غير معروف.',
516
-	'login_login' => 'المعرّف:',
517
-	'login_login2' => 'المعرّف او عنوان البريد الالكتروني:',
518
-	'login_login_pass_incorrect' => '(خطأ في المعرّف أو كلمة السر).',
519
-	'login_motpasseoublie' => 'هل نسيت كلمة السر؟',
520
-	'login_non_securise' => 'لطفا، هذه الاستمارة غير آمنة.
485
+    // L
486
+    'label_ajout_id_rapide' => 'إضافة سريعة',
487
+    'label_poids_fichier' => 'الحجم',
488
+    'lien_afficher_icones_seuls' => 'عرض الرموز فقط',
489
+    'lien_afficher_texte_icones' => 'عرض الرموز والعناوين',
490
+    'lien_afficher_texte_seul' => 'عرض العناوين فقط',
491
+    'lien_liberer' => 'فك الحجز',
492
+    'lien_liberer_tous' => 'فك حجز الكل',
493
+    'lien_nouvea_pense_bete' => 'مذكرة جديدة',
494
+    'lien_nouveau_message' => 'رسالة جديدة',
495
+    'lien_nouvelle_annonce' => 'إعلان جديد',
496
+    'lien_petitions' => 'عريضة',
497
+    'lien_popularite' => 'شعبية: @popularite@%',
498
+    'lien_racine_site' => 'أصل الموقع',
499
+    'lien_reessayer' => 'إعادة المحاولة',
500
+    'lien_repondre_message' => 'الرد على هذه المشاركة',
501
+    'lien_supprimer' => 'حذف',
502
+    'lien_tout_afficher' => 'إظهار الكل',
503
+    'lien_visite_site' => 'زيارة هذا الموقع',
504
+    'lien_visites' => '@visites@ زيارة',
505
+    'lien_voir_auteur' => 'مراجعة هذا المؤلف',
506
+    'ligne' => 'سطر',
507
+    'login' => 'الدخول',
508
+    'login_acces_prive' => 'الدخول إلى المجال الخاص',
509
+    'login_autre_identifiant' => 'الاتصال بمعرّف آخر',
510
+    'login_cookie_accepte' => 'الرجاء تهيئ برنامج التصفح ليتقبلها (من هذا الموقع على الأقل)',
511
+    'login_cookie_oblige' => 'للتعريف عن نفسك بشكل آمن في هذا الموقع، يجب قبول الكعكات (cookies).',
512
+    'login_deconnexion_ok' => 'تم قطع الاتصال.',
513
+    'login_erreur_pass' => 'خطأ في كلمة السر.',
514
+    'login_espace_prive' => 'المجال الخاص',
515
+    'login_identifiant_inconnu' => 'المعرّف «@login@» غير معروف.',
516
+    'login_login' => 'المعرّف:',
517
+    'login_login2' => 'المعرّف او عنوان البريد الالكتروني:',
518
+    'login_login_pass_incorrect' => '(خطأ في المعرّف أو كلمة السر).',
519
+    'login_motpasseoublie' => 'هل نسيت كلمة السر؟',
520
+    'login_non_securise' => 'لطفا، هذه الاستمارة غير آمنة.
521 521
    إذا كنت ترغب أن تكون كلمة سرك
522 522
    آمنة على الشبكة، يجب تفعيل جافاسكريبت 
523 523
    في برنامج التصفح',
524
-	'login_nouvelle_tentative' => 'محاولة جديدة',
525
-	'login_par_ici' => 'أنت مسجّل... توجه من هنا...',
526
-	'login_pass2' => 'كلمة السر:',
527
-	'login_preferez_refuser' => '<b>إذا كنت تفضل عدم قبول الكعكات</b>، يمكنك استخدام طريقة دخول أخرى (أقل أماناً):',
528
-	'login_recharger' => 'وإعادة تحميل الصفحة',
529
-	'login_rester_identifie' => 'ابقى متصلاً بضعة أيام',
530
-	'login_retour_public' => 'عودة إلى الموقع العام',
531
-	'login_retour_site' => 'عودة إلى الموقع العام',
532
-	'login_retoursitepublic' => 'عودة إلى الموقع العام',
533
-	'login_sans_cookiie' => 'تعريف بدون الكعكة',
534
-	'login_securise' => 'تعريف مؤمّن',
535
-	'login_sinscrire' => 'تسجيل',
536
-	'login_test_navigateur' => 'تجربة المتصفح/إعادة الاتصال',
537
-	'login_verifiez_navigateur' => '(على أي حال، تأكد من أن المتصفح لم يقم بحفظ كلمة سرك...)',
524
+    'login_nouvelle_tentative' => 'محاولة جديدة',
525
+    'login_par_ici' => 'أنت مسجّل... توجه من هنا...',
526
+    'login_pass2' => 'كلمة السر:',
527
+    'login_preferez_refuser' => '<b>إذا كنت تفضل عدم قبول الكعكات</b>، يمكنك استخدام طريقة دخول أخرى (أقل أماناً):',
528
+    'login_recharger' => 'وإعادة تحميل الصفحة',
529
+    'login_rester_identifie' => 'ابقى متصلاً بضعة أيام',
530
+    'login_retour_public' => 'عودة إلى الموقع العام',
531
+    'login_retour_site' => 'عودة إلى الموقع العام',
532
+    'login_retoursitepublic' => 'عودة إلى الموقع العام',
533
+    'login_sans_cookiie' => 'تعريف بدون الكعكة',
534
+    'login_securise' => 'تعريف مؤمّن',
535
+    'login_sinscrire' => 'تسجيل',
536
+    'login_test_navigateur' => 'تجربة المتصفح/إعادة الاتصال',
537
+    'login_verifiez_navigateur' => '(على أي حال، تأكد من أن المتصفح لم يقم بحفظ كلمة سرك...)',
538 538
 
539
-	// M
540
-	'masquer_colonne' => 'حجب هذا العمود',
541
-	'masquer_trad' => 'حجب الترجمات',
542
-	'module_fichiers_langues' => 'ملفات اللغة',
539
+    // M
540
+    'masquer_colonne' => 'حجب هذا العمود',
541
+    'masquer_trad' => 'حجب الترجمات',
542
+    'module_fichiers_langues' => 'ملفات اللغة',
543 543
 
544
-	// N
545
-	'navigateur_pas_redirige' => 'إذا لم تتم إعادة توجيه متصفحك، انقر هنا للمتابعة.',
546
-	'numero' => 'رقم',
544
+    // N
545
+    'navigateur_pas_redirige' => 'إذا لم تتم إعادة توجيه متصفحك، انقر هنا للمتابعة.',
546
+    'numero' => 'رقم',
547 547
 
548
-	// O
549
-	'occurence' => 'ظهور',
550
-	'onglet_affacer_base' => 'حذف قاعدة البيانات',
551
-	'onglet_auteur' => 'المؤلف',
552
-	'onglet_contenu_site' => 'محتوى الموقع',
553
-	'onglet_evolution_visite_mod' => 'تطور',
554
-	'onglet_fonctions_avances' => 'الوظائف المتطورة',
555
-	'onglet_informations_personnelles' => 'المعلومات الشخصية',
556
-	'onglet_interactivite' => 'التفاعلية',
557
-	'onglet_messagerie' => 'المراسلة',
558
-	'onglet_repartition_rubrique' => 'التوزيع حسب الأقسام',
559
-	'onglet_save_restaur_base' => 'نسخ احتياطي / استرجاع القاعدة',
560
-	'onglet_vider_cache' => 'تفريغ الذاكرة المخبأة',
548
+    // O
549
+    'occurence' => 'ظهور',
550
+    'onglet_affacer_base' => 'حذف قاعدة البيانات',
551
+    'onglet_auteur' => 'المؤلف',
552
+    'onglet_contenu_site' => 'محتوى الموقع',
553
+    'onglet_evolution_visite_mod' => 'تطور',
554
+    'onglet_fonctions_avances' => 'الوظائف المتطورة',
555
+    'onglet_informations_personnelles' => 'المعلومات الشخصية',
556
+    'onglet_interactivite' => 'التفاعلية',
557
+    'onglet_messagerie' => 'المراسلة',
558
+    'onglet_repartition_rubrique' => 'التوزيع حسب الأقسام',
559
+    'onglet_save_restaur_base' => 'نسخ احتياطي / استرجاع القاعدة',
560
+    'onglet_vider_cache' => 'تفريغ الذاكرة المخبأة',
561 561
 
562
-	// P
563
-	'pass_choix_pass' => 'الرجاء اختيار كلمة السر الجديدة:',
564
-	'pass_erreur' => 'خطأ',
565
-	'pass_erreur_acces_refuse' => '<b>خطأ:< b> لم تعد تملك حق الدخول إلى هذا الموقع.',
566
-	'pass_erreur_code_inconnu' => '<b>خطأ:< b> هذا المعرّف لا يتناسب مع أي من الزوار الذين يتمتعون بحق الدخول إلى هذا الموقع.',
567
-	'pass_erreur_non_enregistre' => '<b>خطأ:< b>  العنوان <tt>@email_oubli@</tt> ليس مسجلاً في هذا الموقع.',
568
-	'pass_erreur_non_valide' => '<b>خطأ:< b>  العنوان <tt>@email_oubli@</tt> ليس صالحاً.',
569
-	'pass_erreur_probleme_technique' => '<b>خطأ:< b>  لم يتم بعث هذه الرسالة بسبب مشكلة تقنية.',
570
-	'pass_espace_prive_bla' => 'المجال الخاص لهذا الموقع مفتوح
562
+    // P
563
+    'pass_choix_pass' => 'الرجاء اختيار كلمة السر الجديدة:',
564
+    'pass_erreur' => 'خطأ',
565
+    'pass_erreur_acces_refuse' => '<b>خطأ:< b> لم تعد تملك حق الدخول إلى هذا الموقع.',
566
+    'pass_erreur_code_inconnu' => '<b>خطأ:< b> هذا المعرّف لا يتناسب مع أي من الزوار الذين يتمتعون بحق الدخول إلى هذا الموقع.',
567
+    'pass_erreur_non_enregistre' => '<b>خطأ:< b>  العنوان <tt>@email_oubli@</tt> ليس مسجلاً في هذا الموقع.',
568
+    'pass_erreur_non_valide' => '<b>خطأ:< b>  العنوان <tt>@email_oubli@</tt> ليس صالحاً.',
569
+    'pass_erreur_probleme_technique' => '<b>خطأ:< b>  لم يتم بعث هذه الرسالة بسبب مشكلة تقنية.',
570
+    'pass_espace_prive_bla' => 'المجال الخاص لهذا الموقع مفتوح
571 571
 للزوار بعد تسجيلهم. بعد تسجيلك
572 572
 يمكنك مراجعة المقالات قيد التحرير
573 573
 واقتراح مقالات والمشاركة في كل المنتديات.',
574
-	'pass_forum_bla' => 'طلبت المشاركة في منتدى
574
+    'pass_forum_bla' => 'طلبت المشاركة في منتدى
575 575
 محصور بالزوار المسجلين.',
576
-	'pass_indiquez_cidessous' => 'قم بإدخال العنوان الإلكتروني الذي 
576
+    'pass_indiquez_cidessous' => 'قم بإدخال العنوان الإلكتروني الذي 
577 577
 تسجلت بواستطه سابقاً.
578 578
 ستحصل على رسالة تفسر لك كيفية
579 579
 استعادة دخولك.',
580
-	'pass_mail_passcookie' => '(هذه رسالة آلية)
580
+    'pass_mail_passcookie' => '(هذه رسالة آلية)
581 581
 لاستعادة دخولك إلى الموقع
582 582
 @nom_site_spip@  (@adresse_site@)
583 583
 
@@ -589,141 +589,141 @@  discard block
 block discarded – undo
589 589
 وإعادة الاتصال بالموقع.
590 590
 
591 591
 ',
592
-	'pass_mot_oublie' => 'نسيان كلمة السر',
593
-	'pass_nouveau_enregistre' => 'تم تسجيل كلمة سرك الجديدة.',
594
-	'pass_nouveau_pass' => 'كلمة السر الجديدة',
595
-	'pass_ok' => 'موافق',
596
-	'pass_oubli_mot' => 'نسيان كلمة السر',
597
-	'pass_procedure_changer' => 'من أجل تغيير كلمة السر يتحتم اولاً التأكد من هويتك. لذلك، قم بأدخال عنوان البريد الالكتروني المرتبط بهذا الحساب.',
598
-	'pass_quitter_fenetre' => 'إقفال هذه النافذة',
599
-	'pass_rappel_login' => 'تذكير: معرّفك هو «@login@».',
600
-	'pass_recevoir_mail' => 'ستحصل على رسالة تفسر لك كيف تستعيد دخولك إلى الموقع.',
601
-	'pass_retour_public' => 'عودة إلى الموقع العام',
602
-	'pass_rien_a_faire_ici' => 'لا شغل لك هنا.',
603
-	'pass_vousinscrire' => 'تسجيلك في الموقع',
604
-	'precedent' => 'السابق',
605
-	'previsualisation' => 'عرض مسبق',
606
-	'previsualiser' => 'عرض مسبق',
592
+    'pass_mot_oublie' => 'نسيان كلمة السر',
593
+    'pass_nouveau_enregistre' => 'تم تسجيل كلمة سرك الجديدة.',
594
+    'pass_nouveau_pass' => 'كلمة السر الجديدة',
595
+    'pass_ok' => 'موافق',
596
+    'pass_oubli_mot' => 'نسيان كلمة السر',
597
+    'pass_procedure_changer' => 'من أجل تغيير كلمة السر يتحتم اولاً التأكد من هويتك. لذلك، قم بأدخال عنوان البريد الالكتروني المرتبط بهذا الحساب.',
598
+    'pass_quitter_fenetre' => 'إقفال هذه النافذة',
599
+    'pass_rappel_login' => 'تذكير: معرّفك هو «@login@».',
600
+    'pass_recevoir_mail' => 'ستحصل على رسالة تفسر لك كيف تستعيد دخولك إلى الموقع.',
601
+    'pass_retour_public' => 'عودة إلى الموقع العام',
602
+    'pass_rien_a_faire_ici' => 'لا شغل لك هنا.',
603
+    'pass_vousinscrire' => 'تسجيلك في الموقع',
604
+    'precedent' => 'السابق',
605
+    'previsualisation' => 'عرض مسبق',
606
+    'previsualiser' => 'عرض مسبق',
607 607
 
608
-	// R
609
-	'retour' => 'عودة',
608
+    // R
609
+    'retour' => 'عودة',
610 610
 
611
-	// S
612
-	'spip_conforme_dtd' => 'يعتبر SPIP أن هذا المستند مطابق لتحديد DOCTYPE:',
613
-	'squelette' => 'صفحة نموذجية',
614
-	'squelette_inclus_ligne' => 'صفحة نموذجية مدمجة، سطر',
615
-	'squelette_ligne' => 'صفحة نموذجية، سطر',
616
-	'stats_visites_et_popularite' => '@visites@ زيارة؛ شعبية: @popularite@',
617
-	'suivant' => 'التالي',
611
+    // S
612
+    'spip_conforme_dtd' => 'يعتبر SPIP أن هذا المستند مطابق لتحديد DOCTYPE:',
613
+    'squelette' => 'صفحة نموذجية',
614
+    'squelette_inclus_ligne' => 'صفحة نموذجية مدمجة، سطر',
615
+    'squelette_ligne' => 'صفحة نموذجية، سطر',
616
+    'stats_visites_et_popularite' => '@visites@ زيارة؛ شعبية: @popularite@',
617
+    'suivant' => 'التالي',
618 618
 
619
-	// T
620
-	'taille_go' => '@taille@ غيغابايت',
621
-	'taille_ko' => '@taille@ كيلوبايت',
622
-	'taille_mo' => '@taille@ ميغابايت',
623
-	'taille_octets' => '@taille@ بايت',
624
-	'texte_actualite_site_1' => 'عندما تتأقلم مع واجهة النظام انقر على «',
625
-	'texte_actualite_site_2' => 'الواجهة الكاملة',
626
-	'texte_actualite_site_3' => '»  لإتاحة المزيد من الوظائف.',
627
-	'texte_creation_automatique_vignette' => 'لقد تم تفعيل الإنشاء الآلي لمصغرات المعاينة. إذا استخدمت هذه الاستمارة لإدخال صور بتنسيق (أو تنسيقات) @gd_formats@، سيتم تزويدها بمصغر لا يزيد حجمه عن @taille_preview@  نقطة. ',
628
-	'texte_documents_associes' => 'المستندات التالية ترافق المقال،
619
+    // T
620
+    'taille_go' => '@taille@ غيغابايت',
621
+    'taille_ko' => '@taille@ كيلوبايت',
622
+    'taille_mo' => '@taille@ ميغابايت',
623
+    'taille_octets' => '@taille@ بايت',
624
+    'texte_actualite_site_1' => 'عندما تتأقلم مع واجهة النظام انقر على «',
625
+    'texte_actualite_site_2' => 'الواجهة الكاملة',
626
+    'texte_actualite_site_3' => '»  لإتاحة المزيد من الوظائف.',
627
+    'texte_creation_automatique_vignette' => 'لقد تم تفعيل الإنشاء الآلي لمصغرات المعاينة. إذا استخدمت هذه الاستمارة لإدخال صور بتنسيق (أو تنسيقات) @gd_formats@، سيتم تزويدها بمصغر لا يزيد حجمه عن @taille_preview@  نقطة. ',
628
+    'texte_documents_associes' => 'المستندات التالية ترافق المقال،
629 629
     لكنها لم تُدرج
630 630
     مباشرة. بالاعتماد على تصميم الموقع العمومي،
631 631
     قد تظهر على شكل مستندات مرفقة.',
632
-	'texte_erreur_mise_niveau_base' => 'خطأ في قاعدة البيانات خلال الترقية.
632
+    'texte_erreur_mise_niveau_base' => 'خطأ في قاعدة البيانات خلال الترقية.
633 633
      تعذر تمرير الصورة <b>@fichier@</b>  (المقال @id_article@). 
634 634
      سجل هذا المرجع وحاول إعادة عملية
635 635
      الترقية، وأخيراً تأكد من أن الصور لا تزال تظهر
636 636
      في المقالات.',
637
-	'texte_erreur_visiteur' => 'حاولت الدخول إلى المجال الخاص بمعرّف لا يسمح بذلك.',
638
-	'texte_inc_auth_1' => 'عرّفت عن نفسك
637
+    'texte_erreur_visiteur' => 'حاولت الدخول إلى المجال الخاص بمعرّف لا يسمح بذلك.',
638
+    'texte_inc_auth_1' => 'عرّفت عن نفسك
639 639
 بالمعرّف <b>@auth_login@</b>، لكنه غير (لم يعد) موجود في قاعدة البيانات.
640 640
   حاول  ',
641
-	'texte_inc_auth_2' => 'إعادة الاتصال',
642
-	'texte_inc_auth_3' => '، بعد إنهاء المتصفح ثم
641
+    'texte_inc_auth_2' => 'إعادة الاتصال',
642
+    'texte_inc_auth_3' => '، بعد إنهاء المتصفح ثم
643 643
 إعادة تشغيله إذا اقتضت الحاجة.',
644
-	'texte_inc_config' => 'التغييرات الداخلة على هذه الصفحة تؤثر بشكل ملحوظ على
644
+    'texte_inc_config' => 'التغييرات الداخلة على هذه الصفحة تؤثر بشكل ملحوظ على
645 645
 تشغيل الموقع. يستحسن عدم إدخال تغييرات قبل
646 646
 التأقلم مع نظام SPIP  للنشر. <br /><br /><b>بشكل
647 647
 عام، ننصحك
648 648
 بحصر التعامل مع هذه الصفحات بالمسؤول الأساسي عن تصميم الموقع.</b>',
649
-	'texte_inc_meta_1' => 'واجه النظام خطأً خلال كتابة الملف <code>@fichier@</code>. بصفتك أحد مدراء الموقع، الرجاء',
650
-	'texte_inc_meta_2' => 'التأكد من حقوق الكتابة',
651
-	'texte_inc_meta_3' => 'الخاصة بالدليل <code>@repertoire@</code>. ',
652
-	'texte_statut_en_cours_redaction' => 'قيد التحرير',
653
-	'texte_statut_poubelle' => 'إلى المهملات',
654
-	'texte_statut_propose_evaluation' => 'معروض للتقييم',
655
-	'texte_statut_publie' => 'منشور',
656
-	'texte_statut_refuse' => 'مرفوض',
657
-	'titre_ajouter_mot_cle' => 'إضافة مفتاح:',
658
-	'titre_cadre_raccourcis' => 'اختصارات:',
659
-	'titre_changer_couleur_interface' => 'تغيير لون الواجهة',
660
-	'titre_image_admin_article' => 'أنت مخول إدارة هذا المقال',
661
-	'titre_image_administrateur' => 'مدير',
662
-	'titre_image_aide' => 'تعليمات حول هذا العنصر',
663
-	'titre_image_auteur_supprime' => 'مؤلف محذوف',
664
-	'titre_image_redacteur' => 'محرر دون إذن دخول',
665
-	'titre_image_redacteur_02' => 'محرر',
666
-	'titre_image_selecteur' => 'عرض القائمة',
667
-	'titre_image_visiteur' => 'زائر',
668
-	'titre_joindre_document' => 'إرفاق مستند',
669
-	'titre_mots_cles' => 'المفاتيح',
670
-	'titre_probleme_technique' => 'تحذير: مشكلة تقنية (خادم SQL) تمنع الدخول إلى هذا الجزء من الموقع. شكراً على تفهمكم.',
671
-	'titre_publier_document' => 'نشر مستند في هذا القسم',
672
-	'titre_signatures_attente' => 'تواقيع بانتظار التصديق',
673
-	'titre_signatures_confirmees' => 'توقيعات مصدّقة',
674
-	'titre_statistiques' => 'إحصاءات الموقع',
675
-	'titre_titre_document' => 'اسم المستند: ',
676
-	'todo' => 'قريباً',
677
-	'trad_reference' => '(مرجع الترجمات)',
649
+    'texte_inc_meta_1' => 'واجه النظام خطأً خلال كتابة الملف <code>@fichier@</code>. بصفتك أحد مدراء الموقع، الرجاء',
650
+    'texte_inc_meta_2' => 'التأكد من حقوق الكتابة',
651
+    'texte_inc_meta_3' => 'الخاصة بالدليل <code>@repertoire@</code>. ',
652
+    'texte_statut_en_cours_redaction' => 'قيد التحرير',
653
+    'texte_statut_poubelle' => 'إلى المهملات',
654
+    'texte_statut_propose_evaluation' => 'معروض للتقييم',
655
+    'texte_statut_publie' => 'منشور',
656
+    'texte_statut_refuse' => 'مرفوض',
657
+    'titre_ajouter_mot_cle' => 'إضافة مفتاح:',
658
+    'titre_cadre_raccourcis' => 'اختصارات:',
659
+    'titre_changer_couleur_interface' => 'تغيير لون الواجهة',
660
+    'titre_image_admin_article' => 'أنت مخول إدارة هذا المقال',
661
+    'titre_image_administrateur' => 'مدير',
662
+    'titre_image_aide' => 'تعليمات حول هذا العنصر',
663
+    'titre_image_auteur_supprime' => 'مؤلف محذوف',
664
+    'titre_image_redacteur' => 'محرر دون إذن دخول',
665
+    'titre_image_redacteur_02' => 'محرر',
666
+    'titre_image_selecteur' => 'عرض القائمة',
667
+    'titre_image_visiteur' => 'زائر',
668
+    'titre_joindre_document' => 'إرفاق مستند',
669
+    'titre_mots_cles' => 'المفاتيح',
670
+    'titre_probleme_technique' => 'تحذير: مشكلة تقنية (خادم SQL) تمنع الدخول إلى هذا الجزء من الموقع. شكراً على تفهمكم.',
671
+    'titre_publier_document' => 'نشر مستند في هذا القسم',
672
+    'titre_signatures_attente' => 'تواقيع بانتظار التصديق',
673
+    'titre_signatures_confirmees' => 'توقيعات مصدّقة',
674
+    'titre_statistiques' => 'إحصاءات الموقع',
675
+    'titre_titre_document' => 'اسم المستند: ',
676
+    'todo' => 'قريباً',
677
+    'trad_reference' => '(مرجع الترجمات)',
678 678
 
679
-	// Z
680
-	'zbug_balise_b_aval' => ': العلامة B متأخرة',
681
-	'zbug_balise_inexistante' => 'خطأ في الاعلان عن العلامة @balise@ لـ@from@',
682
-	'zbug_balise_sans_argument' => 'عامل غير موجود في علامة @balise@',
683
-	'zbug_boucle' => 'حلقة',
684
-	'zbug_boucle_recursive_undef' => 'حلقة دورية غير معرّفة: @nom@',
685
-	'zbug_calcul' => 'حساب',
686
-	'zbug_champ_hors_boucle' => 'الحقل @champ@ خارج الحلقة',
687
-	'zbug_champ_hors_motif' => 'الحقل @champ@ خارج سياق @motif@',
688
-	'zbug_code' => 'الرموز البرمجية',
689
-	'zbug_critere_inconnu' => 'معيار غير معروف @critere@',
690
-	'zbug_distant_interdit' => 'عملية خارجية ممنوعة',
691
-	'zbug_doublon_table_sans_cle_primaire' => 'قيمة مكررة في جدول لا يملك مفتاح أساسي',
692
-	'zbug_doublon_table_sans_index' => 'تكرار في جدول غير مفهرس',
693
-	'zbug_erreur_boucle_double' => 'تعريف متكرر للحلقة @id@',
694
-	'zbug_erreur_boucle_fermant' => 'علامة إغلاق غائبة في حلقة @id@',
695
-	'zbug_erreur_boucle_syntaxe' => 'تركيب حلقة @id@ غير صحيح',
696
-	'zbug_erreur_compilation' => 'خطأ تصنيف',
697
-	'zbug_erreur_execution_page' => 'خطأ في التنفيذ',
698
-	'zbug_erreur_filtre' => 'المرشح @filtre@ غير معرّف ',
699
-	'zbug_erreur_meme_parent' => 'لا ينطبق معيار {meme_parent} إلا على حلقتي (FORUMS) أو (RUBRIQUES)',
700
-	'zbug_erreur_squelette' => 'خطأ في الصفحة النموذجية',
701
-	'zbug_hors_compilation' => 'خارج التصنيف',
702
-	'zbug_info_erreur_squelette' => 'خطأ في الموفع',
703
-	'zbug_inversion_ordre_inexistant' => 'عكس ترتيب غير موجود أصلاً',
704
-	'zbug_pagination_sans_critere' => 'علامة PAGINATION# بدون معيار {pagination} أو مستخدمة في حلقة دورية',
705
-	'zbug_parametres_inclus_incorrects' => 'عامل إدراج غير صحيحة: @param@',
706
-	'zbug_profile' => 'فترة المعالجة: @time@',
707
-	'zbug_resultat' => 'النتيجة',
708
-	'zbug_serveur_indefini' => 'خادم SQL غير محدد',
709
-	'zbug_statistiques' => 'احصاءات استفسارات SQL مرتبة حسب المدة',
710
-	'zbug_table_inconnue' => 'جدول SQL هو «@table@» غير معروف',
711
-	'zxml_connus_attributs' => 'خاصيات معروفة',
712
-	'zxml_de' => 'من',
713
-	'zxml_inconnu_attribut' => 'خاصية غير معروفة',
714
-	'zxml_inconnu_balise' => 'علامة غير معروفة',
715
-	'zxml_inconnu_entite' => 'كائن غير معروف',
716
-	'zxml_inconnu_id' => 'هوية ID غير معروفة',
717
-	'zxml_mais_de' => 'لكن من',
718
-	'zxml_non_conforme' => 'غير مطابق للشكل',
719
-	'zxml_non_fils' => 'ليس من سلالة',
720
-	'zxml_nonvide_balise' => 'علامة غير فارغة',
721
-	'zxml_obligatoire_attribut' => 'خاصية إجبارية لكنها غير موجودة في',
722
-	'zxml_succession_fils_incorrecte' => 'تتابع سلالات غير سليم',
723
-	'zxml_survoler' => 'الحوم لعرض الصحيح',
724
-	'zxml_valeur_attribut' => 'قيمة الخاصية',
725
-	'zxml_vide_balise' => 'علامة فارغة',
726
-	'zxml_vu' => 'ظهر مسبقاً'
679
+    // Z
680
+    'zbug_balise_b_aval' => ': العلامة B متأخرة',
681
+    'zbug_balise_inexistante' => 'خطأ في الاعلان عن العلامة @balise@ لـ@from@',
682
+    'zbug_balise_sans_argument' => 'عامل غير موجود في علامة @balise@',
683
+    'zbug_boucle' => 'حلقة',
684
+    'zbug_boucle_recursive_undef' => 'حلقة دورية غير معرّفة: @nom@',
685
+    'zbug_calcul' => 'حساب',
686
+    'zbug_champ_hors_boucle' => 'الحقل @champ@ خارج الحلقة',
687
+    'zbug_champ_hors_motif' => 'الحقل @champ@ خارج سياق @motif@',
688
+    'zbug_code' => 'الرموز البرمجية',
689
+    'zbug_critere_inconnu' => 'معيار غير معروف @critere@',
690
+    'zbug_distant_interdit' => 'عملية خارجية ممنوعة',
691
+    'zbug_doublon_table_sans_cle_primaire' => 'قيمة مكررة في جدول لا يملك مفتاح أساسي',
692
+    'zbug_doublon_table_sans_index' => 'تكرار في جدول غير مفهرس',
693
+    'zbug_erreur_boucle_double' => 'تعريف متكرر للحلقة @id@',
694
+    'zbug_erreur_boucle_fermant' => 'علامة إغلاق غائبة في حلقة @id@',
695
+    'zbug_erreur_boucle_syntaxe' => 'تركيب حلقة @id@ غير صحيح',
696
+    'zbug_erreur_compilation' => 'خطأ تصنيف',
697
+    'zbug_erreur_execution_page' => 'خطأ في التنفيذ',
698
+    'zbug_erreur_filtre' => 'المرشح @filtre@ غير معرّف ',
699
+    'zbug_erreur_meme_parent' => 'لا ينطبق معيار {meme_parent} إلا على حلقتي (FORUMS) أو (RUBRIQUES)',
700
+    'zbug_erreur_squelette' => 'خطأ في الصفحة النموذجية',
701
+    'zbug_hors_compilation' => 'خارج التصنيف',
702
+    'zbug_info_erreur_squelette' => 'خطأ في الموفع',
703
+    'zbug_inversion_ordre_inexistant' => 'عكس ترتيب غير موجود أصلاً',
704
+    'zbug_pagination_sans_critere' => 'علامة PAGINATION# بدون معيار {pagination} أو مستخدمة في حلقة دورية',
705
+    'zbug_parametres_inclus_incorrects' => 'عامل إدراج غير صحيحة: @param@',
706
+    'zbug_profile' => 'فترة المعالجة: @time@',
707
+    'zbug_resultat' => 'النتيجة',
708
+    'zbug_serveur_indefini' => 'خادم SQL غير محدد',
709
+    'zbug_statistiques' => 'احصاءات استفسارات SQL مرتبة حسب المدة',
710
+    'zbug_table_inconnue' => 'جدول SQL هو «@table@» غير معروف',
711
+    'zxml_connus_attributs' => 'خاصيات معروفة',
712
+    'zxml_de' => 'من',
713
+    'zxml_inconnu_attribut' => 'خاصية غير معروفة',
714
+    'zxml_inconnu_balise' => 'علامة غير معروفة',
715
+    'zxml_inconnu_entite' => 'كائن غير معروف',
716
+    'zxml_inconnu_id' => 'هوية ID غير معروفة',
717
+    'zxml_mais_de' => 'لكن من',
718
+    'zxml_non_conforme' => 'غير مطابق للشكل',
719
+    'zxml_non_fils' => 'ليس من سلالة',
720
+    'zxml_nonvide_balise' => 'علامة غير فارغة',
721
+    'zxml_obligatoire_attribut' => 'خاصية إجبارية لكنها غير موجودة في',
722
+    'zxml_succession_fils_incorrecte' => 'تتابع سلالات غير سليم',
723
+    'zxml_survoler' => 'الحوم لعرض الصحيح',
724
+    'zxml_valeur_attribut' => 'قيمة الخاصية',
725
+    'zxml_vide_balise' => 'علامة فارغة',
726
+    'zxml_vu' => 'ظهر مسبقاً'
727 727
 );
728 728
 
729 729
 ?>
Please login to merge, or discard this patch.
ecrire/lang/public_oc_va.php 1 patch
Indentation   +95 added lines, -95 removed lines patch added patch discarded remove patch
@@ -7,101 +7,101 @@
 block discarded – undo
7 7
 
8 8
 $GLOBALS[$GLOBALS['idx_lang']] = array(
9 9
 
10
-	// A
11
-	'accueil_site' => 'Acuelh dau sit', # MODIF
12
-	'articles' => 'Articles',
13
-	'articles_auteur' => 'Articles d’aquel autor',
14
-	'articles_populaires' => 'Los articles mai populars',
15
-	'articles_rubrique' => 'Articles d’aquela rubrica',
16
-	'aucun_article' => 'I a ges d’article a aquela adreiça ',
17
-	'aucun_auteur' => 'I a ges d’autor a aquela adreiça ',
18
-	'aucun_site' => 'I a ges de sit a aquela adreiça ',
19
-	'aucune_breve' => 'I a ges de brèva a aquela adreiça ',
20
-	'aucune_rubrique' => 'I a ges de rubrica a aquela adreiça ',
21
-	'autres_breves' => 'Autras brèvas',
22
-	'autres_groupes_mots_clefs' => 'Autres grops de mots clau',
23
-	'autres_sites' => 'Autres sits',
24
-
25
-	// B
26
-	'bonjour' => 'Bonjorn',
27
-
28
-	// C
29
-	'commenter_site' => 'Comentar aqueu sit',
30
-
31
-	// D
32
-	'date' => 'Data',
33
-	'dernier_ajout' => 'Darrier apondon',
34
-	'dernieres_breves' => 'Darrieras brèvas',
35
-	'derniers_articles' => 'Darriers articles',
36
-	'derniers_commentaires' => 'Darriers comentaris',
37
-	'derniers_messages_forum' => 'Darriers messatges publicats dins los forums',
38
-
39
-	// E
40
-	'edition_mode_texte' => 'Edicion en mòde tèxt de',
41
-	'en_reponse' => 'En respònsa a:',
42
-	'en_resume' => 'En resumit',
43
-	'envoyer_message' => 'Mandar un messatge',
44
-	'espace_prive' => 'Espaci privat',
45
-
46
-	// H
47
-	'hierarchie_site' => 'Ierarquia dau sit',
48
-
49
-	// J
50
-	'jours' => 'jorns',
51
-
52
-	// M
53
-	'meme_auteur' => 'Dau mesme autor',
54
-	'meme_rubrique' => 'Dins la mesma rubrica',
55
-	'memes_auteurs' => 'Dels mesmes autors',
56
-	'message' => 'Messatge',
57
-	'messages_forum' => 'Messatges de forum', # MODIF
58
-	'messages_recents' => 'Los messatges de forums mai recents',
59
-	'mots_clefs' => 'Mots clau',
60
-	'mots_clefs_meme_groupe' => 'Mots clau dins lo mesme grop',
61
-
62
-	// N
63
-	'navigation' => 'Navigacion',
64
-	'nom' => 'Nom',
65
-	'nouveautes' => 'Las novetats',
66
-	'nouveautes_web' => 'Novetats sobre lo web',
67
-	'nouveaux_articles' => 'Articles nòus',
68
-	'nouvelles_breves' => 'Brèvas nòvas',
69
-
70
-	// P
71
-	'page_precedente' => 'pagina precedenta',
72
-	'page_suivante' => 'pagina seguenta',
73
-	'par_auteur' => 'per ',
74
-	'participer_site' => 'Poètz participar a la vita d’aqueu sit e prepausar los articles vòstres en vos inscrivent çai sos. Recebretz sus lo còp un e-mail que vos indicarà vòstres còdes per accedir a l’espaci privat dau sit.',
75
-	'plan_site' => 'Plan dau sit',
76
-	'popularite' => 'Popularitat',
77
-	'poster_message' => 'Postar un messatge',
78
-	'proposer_site' => 'Poètz prepausar un sit d’apondre a aquesta rubrica:',
79
-
80
-	// R
81
-	'repondre_article' => 'Respòndre a aquel article',
82
-	'repondre_breve' => 'Respòndre a aquela brèva',
83
-	'resultats_recherche' => 'Resultats de la recèrcha',
84
-	'retour_debut_forums' => 'Retorn au començament dels forums',
85
-	'rubrique' => 'Rubrica',
86
-	'rubriques' => 'Rubricas',
87
-
88
-	// S
89
-	'signatures_petition' => 'Signaturas',
90
-	'site_realise_avec_spip' => 'Sit realizat amb SPIP',
91
-	'sites_web' => 'Sits web',
92
-	'sous_rubriques' => 'Sosrubricas',
93
-	'suite' => 'segua',
94
-	'sur_web' => 'Sobre lo web',
95
-	'syndiquer_rubrique' => 'Sindicar aquela rubrica',
96
-	'syndiquer_site' => 'Sindicar tot lo sit',
97
-
98
-	// T
99
-	'texte_lettre_information' => 'Vaicí la letra d’informacion dau sit',
100
-	'texte_lettre_information_2' => 'Aquela letra recensa los articles e brèvas publicats despuei', # MODIF
101
-
102
-	// V
103
-	'ver_imprimer' => 'Version d’estampar',
104
-	'voir_en_ligne' => 'Veètz en linha'
10
+    // A
11
+    'accueil_site' => 'Acuelh dau sit', # MODIF
12
+    'articles' => 'Articles',
13
+    'articles_auteur' => 'Articles d’aquel autor',
14
+    'articles_populaires' => 'Los articles mai populars',
15
+    'articles_rubrique' => 'Articles d’aquela rubrica',
16
+    'aucun_article' => 'I a ges d’article a aquela adreiça ',
17
+    'aucun_auteur' => 'I a ges d’autor a aquela adreiça ',
18
+    'aucun_site' => 'I a ges de sit a aquela adreiça ',
19
+    'aucune_breve' => 'I a ges de brèva a aquela adreiça ',
20
+    'aucune_rubrique' => 'I a ges de rubrica a aquela adreiça ',
21
+    'autres_breves' => 'Autras brèvas',
22
+    'autres_groupes_mots_clefs' => 'Autres grops de mots clau',
23
+    'autres_sites' => 'Autres sits',
24
+
25
+    // B
26
+    'bonjour' => 'Bonjorn',
27
+
28
+    // C
29
+    'commenter_site' => 'Comentar aqueu sit',
30
+
31
+    // D
32
+    'date' => 'Data',
33
+    'dernier_ajout' => 'Darrier apondon',
34
+    'dernieres_breves' => 'Darrieras brèvas',
35
+    'derniers_articles' => 'Darriers articles',
36
+    'derniers_commentaires' => 'Darriers comentaris',
37
+    'derniers_messages_forum' => 'Darriers messatges publicats dins los forums',
38
+
39
+    // E
40
+    'edition_mode_texte' => 'Edicion en mòde tèxt de',
41
+    'en_reponse' => 'En respònsa a:',
42
+    'en_resume' => 'En resumit',
43
+    'envoyer_message' => 'Mandar un messatge',
44
+    'espace_prive' => 'Espaci privat',
45
+
46
+    // H
47
+    'hierarchie_site' => 'Ierarquia dau sit',
48
+
49
+    // J
50
+    'jours' => 'jorns',
51
+
52
+    // M
53
+    'meme_auteur' => 'Dau mesme autor',
54
+    'meme_rubrique' => 'Dins la mesma rubrica',
55
+    'memes_auteurs' => 'Dels mesmes autors',
56
+    'message' => 'Messatge',
57
+    'messages_forum' => 'Messatges de forum', # MODIF
58
+    'messages_recents' => 'Los messatges de forums mai recents',
59
+    'mots_clefs' => 'Mots clau',
60
+    'mots_clefs_meme_groupe' => 'Mots clau dins lo mesme grop',
61
+
62
+    // N
63
+    'navigation' => 'Navigacion',
64
+    'nom' => 'Nom',
65
+    'nouveautes' => 'Las novetats',
66
+    'nouveautes_web' => 'Novetats sobre lo web',
67
+    'nouveaux_articles' => 'Articles nòus',
68
+    'nouvelles_breves' => 'Brèvas nòvas',
69
+
70
+    // P
71
+    'page_precedente' => 'pagina precedenta',
72
+    'page_suivante' => 'pagina seguenta',
73
+    'par_auteur' => 'per ',
74
+    'participer_site' => 'Poètz participar a la vita d’aqueu sit e prepausar los articles vòstres en vos inscrivent çai sos. Recebretz sus lo còp un e-mail que vos indicarà vòstres còdes per accedir a l’espaci privat dau sit.',
75
+    'plan_site' => 'Plan dau sit',
76
+    'popularite' => 'Popularitat',
77
+    'poster_message' => 'Postar un messatge',
78
+    'proposer_site' => 'Poètz prepausar un sit d’apondre a aquesta rubrica:',
79
+
80
+    // R
81
+    'repondre_article' => 'Respòndre a aquel article',
82
+    'repondre_breve' => 'Respòndre a aquela brèva',
83
+    'resultats_recherche' => 'Resultats de la recèrcha',
84
+    'retour_debut_forums' => 'Retorn au començament dels forums',
85
+    'rubrique' => 'Rubrica',
86
+    'rubriques' => 'Rubricas',
87
+
88
+    // S
89
+    'signatures_petition' => 'Signaturas',
90
+    'site_realise_avec_spip' => 'Sit realizat amb SPIP',
91
+    'sites_web' => 'Sits web',
92
+    'sous_rubriques' => 'Sosrubricas',
93
+    'suite' => 'segua',
94
+    'sur_web' => 'Sobre lo web',
95
+    'syndiquer_rubrique' => 'Sindicar aquela rubrica',
96
+    'syndiquer_site' => 'Sindicar tot lo sit',
97
+
98
+    // T
99
+    'texte_lettre_information' => 'Vaicí la letra d’informacion dau sit',
100
+    'texte_lettre_information_2' => 'Aquela letra recensa los articles e brèvas publicats despuei', # MODIF
101
+
102
+    // V
103
+    'ver_imprimer' => 'Version d’estampar',
104
+    'voir_en_ligne' => 'Veètz en linha'
105 105
 );
106 106
 
107 107
 ?>
Please login to merge, or discard this patch.