Completed
Push — master ( 0f44c6...bc13d2 )
by cam
01:34
created
ecrire/inc/icone_renommer.php 1 patch
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -11,69 +11,69 @@
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 include_spip('inc/boutons');
18 18
 include_spip('base/objets');
19 19
 
20 20
 function inc_icone_renommer_dist($fond, $fonction) {
21
-	$size = 24;
22
-	if (preg_match("/(?:-([0-9]{1,3}))?([.](gif|png|svg))?$/i", $fond, $match)
23
-		and ((isset($match[0]) and $match[0]) or (isset($match[1]) and $match[1]))
24
-	) {
25
-		if (isset($match[1]) and $match[1]) {
26
-			$size = $match[1];
27
-		}
28
-		$type = substr($fond, 0, -strlen($match[0]));
29
-		if (!isset($match[2]) or !$match[2]) {
30
-			$fond .= ".png";
31
-		}
32
-	} else {
33
-		$type = $fond;
34
-		$fond .= ".png";
35
-	}
21
+    $size = 24;
22
+    if (preg_match("/(?:-([0-9]{1,3}))?([.](gif|png|svg))?$/i", $fond, $match)
23
+        and ((isset($match[0]) and $match[0]) or (isset($match[1]) and $match[1]))
24
+    ) {
25
+        if (isset($match[1]) and $match[1]) {
26
+            $size = $match[1];
27
+        }
28
+        $type = substr($fond, 0, -strlen($match[0]));
29
+        if (!isset($match[2]) or !$match[2]) {
30
+            $fond .= ".png";
31
+        }
32
+    } else {
33
+        $type = $fond;
34
+        $fond .= ".png";
35
+    }
36 36
 
37
-	$rtl = false;
38
-	if (preg_match(',[-_]rtl$,i', $type, $match)) {
39
-		$rtl = true;
40
-		$type = substr($type, 0, -strlen($match[0]));
41
-	}
37
+    $rtl = false;
38
+    if (preg_match(',[-_]rtl$,i', $type, $match)) {
39
+        $rtl = true;
40
+        $type = substr($type, 0, -strlen($match[0]));
41
+    }
42 42
 
43
-	// objet_type garde invariant tout ce qui ne commence par par id_, spip_
44
-	// et ne finit pas par un s, sauf si c'est une exception declaree
45
-	$type = objet_type($type, false);
43
+    // objet_type garde invariant tout ce qui ne commence par par id_, spip_
44
+    // et ne finit pas par un s, sauf si c'est une exception declaree
45
+    $type = objet_type($type, false);
46 46
 
47
-	$dir = "images/";
48
-	$f = "$type-$size.png";
49
-	if ($icone = find_in_theme($dir . $f)) {
50
-		$dir = dirname($icone);
51
-		$fond = $icone;
47
+    $dir = "images/";
48
+    $f = "$type-$size.png";
49
+    if ($icone = find_in_theme($dir . $f)) {
50
+        $dir = dirname($icone);
51
+        $fond = $icone;
52 52
 
53
-		if ($rtl
54
-			and $fr = $dir . '/' . str_replace("$type-", "$type-rtl-", basename($icone))
55
-			and file_exists($fr)
56
-		) {
57
-			$fond = $fr;
58
-		}
53
+        if ($rtl
54
+            and $fr = $dir . '/' . str_replace("$type-", "$type-rtl-", basename($icone))
55
+            and file_exists($fr)
56
+        ) {
57
+            $fond = $fr;
58
+        }
59 59
 
60
-		$action = $fonction;
61
-		if ($action == "supprimer.gif") {
62
-			$action = "del";
63
-		} elseif ($action == "creer.gif") {
64
-			$action = "new";
65
-		} elseif ($action == "edit.gif") {
66
-			$action = "edit";
67
-		}
60
+        $action = $fonction;
61
+        if ($action == "supprimer.gif") {
62
+            $action = "del";
63
+        } elseif ($action == "creer.gif") {
64
+            $action = "new";
65
+        } elseif ($action == "edit.gif") {
66
+            $action = "edit";
67
+        }
68 68
 
69
-		$fonction = "";
70
-		if (in_array($action, array('add','del', 'new', 'edit', 'config'))) {
71
-			$fonction = $action;
72
-		}
69
+        $fonction = "";
70
+        if (in_array($action, array('add','del', 'new', 'edit', 'config'))) {
71
+            $fonction = $action;
72
+        }
73 73
 
74
-		// c'est bon !
75
-		return array($fond, $fonction);
76
-	}
74
+        // c'est bon !
75
+        return array($fond, $fonction);
76
+    }
77 77
 
78
-	return array($fond, $fonction);
78
+    return array($fond, $fonction);
79 79
 }
Please login to merge, or discard this patch.
ecrire/inc/svg.php 1 patch
Indentation   +422 added lines, -422 removed lines patch added patch discarded remove patch
@@ -17,13 +17,13 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 if (!defined('IMG_SVG')) {
24
-	// complete 	IMG_BMP | IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP | IMG_XPM | IMG_WEBP
25
-	define('IMG_SVG',128);
26
-	define('IMAGETYPE_SVG', 19);
24
+    // complete 	IMG_BMP | IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP | IMG_XPM | IMG_WEBP
25
+    define('IMG_SVG',128);
26
+    define('IMAGETYPE_SVG', 19);
27 27
 }
28 28
 
29 29
 /**
@@ -39,39 +39,39 @@  discard block
 block discarded – undo
39 39
  *   false si on a pas pu charger l'image
40 40
  */
41 41
 function svg_charger($fichier, $maxlen=null) {
42
-	if (strpos($fichier, "data:image/svg+xml") === 0) {
43
-		$image = explode(";", $fichier, 2);
44
-		$image = end($image);
45
-		if (strpos($image, "base64,") === 0) {
46
-			$image = base64_decode(substr($image, 7));
47
-		}
48
-		if (strpos($image, "<svg") !== false) {
49
-			return $image;
50
-		}
51
-		// encodage inconnu ou autre format d'image ?
52
-		return false;
53
-	}
54
-	// c'est peut etre deja une image svg ?
55
-	if (strpos($fichier, "<svg") !== false) {
56
-		return $fichier;
57
-	}
58
-	if (!file_exists($fichier)) {
59
-		$fichier  = supprimer_timestamp($fichier);
60
-		if (!file_exists($fichier)) {
61
-			return false;
62
-		}
63
-	}
64
-	if (is_null($maxlen)) {
65
-		$image = file_get_contents($fichier);
66
-	}
67
-	else {
68
-		$image = file_get_contents($fichier, false,null,0, $maxlen);
69
-	}
70
-	// est-ce bien une image svg ?
71
-	if (strpos($image, "<svg") !== false) {
72
-		return $image;
73
-	}
74
-	return false;
42
+    if (strpos($fichier, "data:image/svg+xml") === 0) {
43
+        $image = explode(";", $fichier, 2);
44
+        $image = end($image);
45
+        if (strpos($image, "base64,") === 0) {
46
+            $image = base64_decode(substr($image, 7));
47
+        }
48
+        if (strpos($image, "<svg") !== false) {
49
+            return $image;
50
+        }
51
+        // encodage inconnu ou autre format d'image ?
52
+        return false;
53
+    }
54
+    // c'est peut etre deja une image svg ?
55
+    if (strpos($fichier, "<svg") !== false) {
56
+        return $fichier;
57
+    }
58
+    if (!file_exists($fichier)) {
59
+        $fichier  = supprimer_timestamp($fichier);
60
+        if (!file_exists($fichier)) {
61
+            return false;
62
+        }
63
+    }
64
+    if (is_null($maxlen)) {
65
+        $image = file_get_contents($fichier);
66
+    }
67
+    else {
68
+        $image = file_get_contents($fichier, false,null,0, $maxlen);
69
+    }
70
+    // est-ce bien une image svg ?
71
+    if (strpos($image, "<svg") !== false) {
72
+        return $image;
73
+    }
74
+    return false;
75 75
 }
76 76
 
77 77
 /**
@@ -80,29 +80,29 @@  discard block
 block discarded – undo
80 80
  * @return array|bool
81 81
  */
82 82
 function svg_lire_balise_svg($fichier) {
83
-	if (!$debut_fichier = svg_charger($fichier, 4096)) {
84
-		return false;
85
-	}
83
+    if (!$debut_fichier = svg_charger($fichier, 4096)) {
84
+        return false;
85
+    }
86 86
 
87
-	if (($ps = stripos($debut_fichier, "<svg")) !== false) {
87
+    if (($ps = stripos($debut_fichier, "<svg")) !== false) {
88 88
 
89
-		$pe = stripos($debut_fichier, ">", $ps);
90
-		$balise_svg = substr($debut_fichier, $ps, $pe - $ps +1);
89
+        $pe = stripos($debut_fichier, ">", $ps);
90
+        $balise_svg = substr($debut_fichier, $ps, $pe - $ps +1);
91 91
 
92
-		if (preg_match_all(",([\w:\-]+)=,Uims", $balise_svg, $matches)) {
93
-			if (!function_exists('extraire_attribut')) {
94
-				include_spip('inc/filtres');
95
-			}
96
-			$attributs = [];
97
-			foreach ($matches[1] as $att) {
98
-				$attributs[$att] = extraire_attribut($balise_svg, $att);
99
-			}
92
+        if (preg_match_all(",([\w:\-]+)=,Uims", $balise_svg, $matches)) {
93
+            if (!function_exists('extraire_attribut')) {
94
+                include_spip('inc/filtres');
95
+            }
96
+            $attributs = [];
97
+            foreach ($matches[1] as $att) {
98
+                $attributs[$att] = extraire_attribut($balise_svg, $att);
99
+            }
100 100
 
101
-			return [$balise_svg, $attributs];
102
-		}
103
-	}
101
+            return [$balise_svg, $attributs];
102
+        }
103
+    }
104 104
 
105
-	return false;
105
+    return false;
106 106
 }
107 107
 
108 108
 /**
@@ -112,12 +112,12 @@  discard block
 block discarded – undo
112 112
  */
113 113
 function svg_lire_attributs($img) {
114 114
 
115
-	if ($svg_infos = svg_lire_balise_svg($img)) {
116
-		list($balise_svg, $attributs) = $svg_infos;
117
-		return $attributs;
118
-	}
115
+    if ($svg_infos = svg_lire_balise_svg($img)) {
116
+        list($balise_svg, $attributs) = $svg_infos;
117
+        return $attributs;
118
+    }
119 119
 
120
-	return false;
120
+    return false;
121 121
 }
122 122
 
123 123
 /**
@@ -127,38 +127,38 @@  discard block
 block discarded – undo
127 127
  * @return bool|float|int
128 128
  */
129 129
 function svg_dimension_to_pixels($dimension, $precision = 2) {
130
-	if (preg_match(',^(-?\d+(\.\d+)?)([^\d]*),i', trim($dimension), $m)){
131
-		switch (strtolower($m[2])) {
132
-			case '%':
133
-				// on ne sait pas faire :(
134
-				return false;
135
-				break;
136
-			case 'em':
137
-				return round($m[1]*16, $precision); // 16px font-size par defaut
138
-				break;
139
-			case 'ex':
140
-				return round($m[1]*16, $precision); // 16px font-size par defaut
141
-				break;
142
-			case 'pc':
143
-				return round($m[1]*16, $precision); // 1/6 inch = 96px/6 in CSS
144
-				break;
145
-			case 'cm':
146
-				return round($m[1]*96/2.54, $precision); // 96px / 2.54cm;
147
-				break;
148
-			case 'mm':
149
-				return round($m[1]*96/25.4, $precision); // 96px / 25.4mm;
150
-				break;
151
-			case 'in':
152
-				return round($m[1]*96, $precision); // 1 inch = 96px in CSS
153
-				break;
154
-			case 'px':
155
-			case 'pt':
156
-			default:
157
-				return $m[1];
158
-				break;
159
-		}
160
-	}
161
-	return false;
130
+    if (preg_match(',^(-?\d+(\.\d+)?)([^\d]*),i', trim($dimension), $m)){
131
+        switch (strtolower($m[2])) {
132
+            case '%':
133
+                // on ne sait pas faire :(
134
+                return false;
135
+                break;
136
+            case 'em':
137
+                return round($m[1]*16, $precision); // 16px font-size par defaut
138
+                break;
139
+            case 'ex':
140
+                return round($m[1]*16, $precision); // 16px font-size par defaut
141
+                break;
142
+            case 'pc':
143
+                return round($m[1]*16, $precision); // 1/6 inch = 96px/6 in CSS
144
+                break;
145
+            case 'cm':
146
+                return round($m[1]*96/2.54, $precision); // 96px / 2.54cm;
147
+                break;
148
+            case 'mm':
149
+                return round($m[1]*96/25.4, $precision); // 96px / 25.4mm;
150
+                break;
151
+            case 'in':
152
+                return round($m[1]*96, $precision); // 1 inch = 96px in CSS
153
+                break;
154
+            case 'px':
155
+            case 'pt':
156
+            default:
157
+                return $m[1];
158
+                break;
159
+        }
160
+    }
161
+    return false;
162 162
 }
163 163
 
164 164
 /**
@@ -169,15 +169,15 @@  discard block
 block discarded – undo
169 169
  * @return string
170 170
  */
171 171
 function svg_change_balise_svg($svg, $old_balise_svg, $attributs) {
172
-	$new_balise_svg = "<svg";
173
-	foreach ($attributs as $k=>$v) {
174
-		$new_balise_svg .= " $k=\"".entites_html($v)."\"";
175
-	}
176
-	$new_balise_svg .= ">";
177
-
178
-	$p = strpos($svg, $old_balise_svg);
179
-	$svg = substr_replace($svg, $new_balise_svg, $p, strlen($old_balise_svg));
180
-	return $svg;
172
+    $new_balise_svg = "<svg";
173
+    foreach ($attributs as $k=>$v) {
174
+        $new_balise_svg .= " $k=\"".entites_html($v)."\"";
175
+    }
176
+    $new_balise_svg .= ">";
177
+
178
+    $p = strpos($svg, $old_balise_svg);
179
+    $svg = substr_replace($svg, $new_balise_svg, $p, strlen($old_balise_svg));
180
+    return $svg;
181 181
 }
182 182
 
183 183
 /**
@@ -189,15 +189,15 @@  discard block
 block discarded – undo
189 189
  */
190 190
 function svg_insert_shapes($svg, $shapes, $start=true) {
191 191
 
192
-	if ($start === false or $start === 'end') {
193
-		$svg = str_replace("</svg>", $shapes . "</svg>", $svg);
194
-	}
195
-	else {
196
-		$p = stripos($svg, "<svg");
197
-		$p = strpos($svg, ">", $p);
198
-		$svg = substr_replace($svg, $shapes, $p+1, 0);
199
-	}
200
-	return $svg;
192
+    if ($start === false or $start === 'end') {
193
+        $svg = str_replace("</svg>", $shapes . "</svg>", $svg);
194
+    }
195
+    else {
196
+        $p = stripos($svg, "<svg");
197
+        $p = strpos($svg, ">", $p);
198
+        $svg = substr_replace($svg, $shapes, $p+1, 0);
199
+    }
200
+    return $svg;
201 201
 }
202 202
 
203 203
 /**
@@ -210,13 +210,13 @@  discard block
 block discarded – undo
210 210
  * @return string
211 211
  */
212 212
 function svg_clip_in_box($svg, $x, $y, $width, $height) {
213
-	$rect = "<rect x=\"$x\" y=\"$y\" width=\"$width\" height=\"$height\" />";
214
-	$id = 'clip-'.substr(md5($rect . strlen($svg)),0,8);
215
-	$clippath = "<clipPath id=\"$id\">$rect</clipPath>";
216
-	$g = "<g clip-path=\"url(#$id)\">";
217
-	$svg = svg_insert_shapes($svg, $clippath . $g);
218
-	$svg = svg_insert_shapes($svg, "</g>", false);
219
-	return $svg;
213
+    $rect = "<rect x=\"$x\" y=\"$y\" width=\"$width\" height=\"$height\" />";
214
+    $id = 'clip-'.substr(md5($rect . strlen($svg)),0,8);
215
+    $clippath = "<clipPath id=\"$id\">$rect</clipPath>";
216
+    $g = "<g clip-path=\"url(#$id)\">";
217
+    $svg = svg_insert_shapes($svg, $clippath . $g);
218
+    $svg = svg_insert_shapes($svg, "</g>", false);
219
+    return $svg;
220 220
 }
221 221
 
222 222
 /**
@@ -227,21 +227,21 @@  discard block
 block discarded – undo
227 227
  * @return bool|string
228 228
  */
229 229
 function svg_redimensionner($img, $new_width, $new_height) {
230
-	if ($svg = svg_charger($img)
231
-	  and $svg_infos = svg_lire_balise_svg($svg)) {
230
+    if ($svg = svg_charger($img)
231
+      and $svg_infos = svg_lire_balise_svg($svg)) {
232 232
 
233
-		list($balise_svg, $attributs) = $svg_infos;
234
-		if (!isset($attributs['viewBox'])) {
235
-			$attributs['viewBox'] = "0 0 " . $attributs['width'] . " " . $attributs['height'];
236
-		}
237
-		$attributs['width'] = strval($new_width);
238
-		$attributs['height'] = strval($new_height);
233
+        list($balise_svg, $attributs) = $svg_infos;
234
+        if (!isset($attributs['viewBox'])) {
235
+            $attributs['viewBox'] = "0 0 " . $attributs['width'] . " " . $attributs['height'];
236
+        }
237
+        $attributs['width'] = strval($new_width);
238
+        $attributs['height'] = strval($new_height);
239 239
 
240
-		$svg = svg_change_balise_svg($svg, $balise_svg, $attributs);
241
-		return $svg;
242
-	}
240
+        $svg = svg_change_balise_svg($svg, $balise_svg, $attributs);
241
+        return $svg;
242
+    }
243 243
 
244
-	return $img;
244
+    return $img;
245 245
 }
246 246
 
247 247
 /**
@@ -250,15 +250,15 @@  discard block
 block discarded – undo
250 250
  * @return string
251 251
  */
252 252
 function svg_couleur_to_hexa($couleur) {
253
-	if (strpos($couleur, "rgb(")===0) {
254
-		$c = explode(',', substr($couleur, 4));
255
-		$couleur = _couleur_dec_to_hex(intval($c[0]), intval($c[1]), intval($c[2]));
256
-	}
257
-	else {
258
-		$couleur = couleur_html_to_hex($couleur);
259
-	}
260
-	$couleur = '#'.ltrim($couleur,'#');
261
-	return $couleur;
253
+    if (strpos($couleur, "rgb(")===0) {
254
+        $c = explode(',', substr($couleur, 4));
255
+        $couleur = _couleur_dec_to_hex(intval($c[0]), intval($c[1]), intval($c[2]));
256
+    }
257
+    else {
258
+        $couleur = couleur_html_to_hex($couleur);
259
+    }
260
+    $couleur = '#'.ltrim($couleur,'#');
261
+    return $couleur;
262 262
 }
263 263
 
264 264
 /**
@@ -267,11 +267,11 @@  discard block
 block discarded – undo
267 267
  * @return array
268 268
  */
269 269
 function svg_couleur_to_rgb($couleur) {
270
-	if (strpos($couleur, "rgb(")===0) {
271
-		$c = explode(',', substr($couleur, 4));
272
-		return ['red' => intval($c[0]),'green' => intval($c[1]),'blue' => intval($c[2])];
273
-	}
274
-	return _couleur_hex_to_dec($couleur);
270
+    if (strpos($couleur, "rgb(")===0) {
271
+        $c = explode(',', substr($couleur, 4));
272
+        return ['red' => intval($c[0]),'green' => intval($c[1]),'blue' => intval($c[2])];
273
+    }
274
+    return _couleur_hex_to_dec($couleur);
275 275
 }
276 276
 
277 277
 
@@ -281,66 +281,66 @@  discard block
 block discarded – undo
281 281
  * @return array
282 282
  */
283 283
 function svg_getimagesize_from_attr($attributs) {
284
-	$width = 350; // default width
285
-	$height = 150; // default height
286
-
287
-	$viewBox = "0 0 $width $height";
288
-	if (isset($attributs['viewBox'])) {
289
-		$viewBox = $attributs['viewBox'];
290
-		$viewBox = preg_replace(",\s+,", " ", $viewBox);
291
-	}
292
-	// et on la convertit en px
293
-	$viewBox = explode(' ', $viewBox);
294
-	$viewBox = array_map('svg_dimension_to_pixels', $viewBox);
295
-	if (!$viewBox[2]) {
296
-		$viewBox[2] = $width;
297
-	}
298
-	if (!$viewBox[3]) {
299
-		$viewBox[3] = $height;
300
-	}
301
-
302
-	$coeff = 1;
303
-	if (isset($attributs['width'])
304
-	  and $w = svg_dimension_to_pixels($attributs['width'])) {
305
-		$width = $w;
306
-	}
307
-	else {
308
-		// si on recupere la taille de la viewbox mais si la viewbox est petite on met un multiplicateur pour la taille finale
309
-		$width = $viewBox[2];
310
-		if ($width < 1) {
311
-			$coeff = max($coeff, 1000);
312
-		}
313
-		elseif ($width < 10) {
314
-			$coeff = max($coeff, 100);
315
-		}
316
-		elseif ($width < 100) {
317
-			$coeff = max($coeff, 10);
318
-		}
319
-	}
320
-	if (isset($attributs['height'])
321
-	  and $h = svg_dimension_to_pixels($attributs['height'])) {
322
-		$height = $h;
323
-	}
324
-	else {
325
-		$height = $viewBox[3];
326
-		if ($height < 1) {
327
-			$coeff = max($coeff, 1000);
328
-		}
329
-		elseif ($height < 10) {
330
-			$coeff = max($coeff, 100);
331
-		}
332
-		elseif ($height < 100) {
333
-			$coeff = max($coeff, 10);
334
-		}
335
-	}
336
-
337
-	// arrondir le width et height en pixel in fine
338
-	$width = round($coeff * $width);
339
-	$height = round($coeff * $height);
340
-
341
-	$viewBox = implode(' ', $viewBox);
342
-
343
-	return array($width, $height, $viewBox);
284
+    $width = 350; // default width
285
+    $height = 150; // default height
286
+
287
+    $viewBox = "0 0 $width $height";
288
+    if (isset($attributs['viewBox'])) {
289
+        $viewBox = $attributs['viewBox'];
290
+        $viewBox = preg_replace(",\s+,", " ", $viewBox);
291
+    }
292
+    // et on la convertit en px
293
+    $viewBox = explode(' ', $viewBox);
294
+    $viewBox = array_map('svg_dimension_to_pixels', $viewBox);
295
+    if (!$viewBox[2]) {
296
+        $viewBox[2] = $width;
297
+    }
298
+    if (!$viewBox[3]) {
299
+        $viewBox[3] = $height;
300
+    }
301
+
302
+    $coeff = 1;
303
+    if (isset($attributs['width'])
304
+      and $w = svg_dimension_to_pixels($attributs['width'])) {
305
+        $width = $w;
306
+    }
307
+    else {
308
+        // si on recupere la taille de la viewbox mais si la viewbox est petite on met un multiplicateur pour la taille finale
309
+        $width = $viewBox[2];
310
+        if ($width < 1) {
311
+            $coeff = max($coeff, 1000);
312
+        }
313
+        elseif ($width < 10) {
314
+            $coeff = max($coeff, 100);
315
+        }
316
+        elseif ($width < 100) {
317
+            $coeff = max($coeff, 10);
318
+        }
319
+    }
320
+    if (isset($attributs['height'])
321
+      and $h = svg_dimension_to_pixels($attributs['height'])) {
322
+        $height = $h;
323
+    }
324
+    else {
325
+        $height = $viewBox[3];
326
+        if ($height < 1) {
327
+            $coeff = max($coeff, 1000);
328
+        }
329
+        elseif ($height < 10) {
330
+            $coeff = max($coeff, 100);
331
+        }
332
+        elseif ($height < 100) {
333
+            $coeff = max($coeff, 10);
334
+        }
335
+    }
336
+
337
+    // arrondir le width et height en pixel in fine
338
+    $width = round($coeff * $width);
339
+    $height = round($coeff * $height);
340
+
341
+    $viewBox = implode(' ', $viewBox);
342
+
343
+    return array($width, $height, $viewBox);
344 344
 }
345 345
 
346 346
 /**
@@ -356,24 +356,24 @@  discard block
 block discarded – undo
356 356
  * @return string
357 357
  */
358 358
 function svg_force_viewBox_px($img, $force_width_and_height = false) {
359
-	if ($svg = svg_charger($img)
360
-	  and $svg_infos = svg_lire_balise_svg($svg)){
359
+    if ($svg = svg_charger($img)
360
+      and $svg_infos = svg_lire_balise_svg($svg)){
361 361
 
362
-		list($balise_svg, $attributs) = $svg_infos;
362
+        list($balise_svg, $attributs) = $svg_infos;
363 363
 
364
-		list($width, $height, $viewBox) = svg_getimagesize_from_attr($attributs);
364
+        list($width, $height, $viewBox) = svg_getimagesize_from_attr($attributs);
365 365
 
366
-		if ($force_width_and_height) {
367
-			$attributs['width'] = $width;
368
-			$attributs['height'] = $height;
369
-		}
366
+        if ($force_width_and_height) {
367
+            $attributs['width'] = $width;
368
+            $attributs['height'] = $height;
369
+        }
370 370
 
371
-		$attributs['viewBox'] = $viewBox;
371
+        $attributs['viewBox'] = $viewBox;
372 372
 
373
-		$svg = svg_change_balise_svg($svg, $balise_svg, $attributs);
374
-		return $svg;
375
-	}
376
-	return $img;
373
+        $svg = svg_change_balise_svg($svg, $balise_svg, $attributs);
374
+        return $svg;
375
+    }
376
+    return $img;
377 377
 }
378 378
 
379 379
 /**
@@ -382,12 +382,12 @@  discard block
 block discarded – undo
382 382
  * @return array|mixed
383 383
  */
384 384
 function svg_extract_couleurs($img) {
385
-	if ($svg = svg_charger($img)) {
386
-		if (preg_match_all("/(#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])|(rgb\([\s\d]+,[\s\d]+,[\s\d]+\))|(#[0-9a-f][0-9a-f][0-9a-f])/imS", $svg, $matches)) {
387
-			return $matches[0];
388
-		}
389
-	}
390
-	return [];
385
+    if ($svg = svg_charger($img)) {
386
+        if (preg_match_all("/(#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])|(rgb\([\s\d]+,[\s\d]+,[\s\d]+\))|(#[0-9a-f][0-9a-f][0-9a-f])/imS", $svg, $matches)) {
387
+            return $matches[0];
388
+        }
389
+    }
390
+    return [];
391 391
 }
392 392
 
393 393
 /**
@@ -398,56 +398,56 @@  discard block
 block discarded – undo
398 398
  * @return bool|string
399 399
  */
400 400
 function svg_recadrer($img, $new_width, $new_height, $offset_width, $offset_height, $background_color='') {
401
-	if ($svg = svg_force_viewBox_px($img)
402
-	  and $svg_infos = svg_lire_balise_svg($svg)) {
403
-
404
-		list($balise_svg, $attributs) = $svg_infos;
405
-		$viewBox = explode(' ', $attributs['viewBox']);
406
-
407
-		$viewport_w = $new_width;
408
-		$viewport_h = $new_height;
409
-		$viewport_ox = $offset_width;
410
-		$viewport_oy = $offset_height;
411
-
412
-		// si on a un width/height qui rescale, il faut rescaler
413
-		if (isset ($attributs['width'])
414
-		  and $w = svg_dimension_to_pixels($attributs['width'])
415
-		  and isset ($attributs['height'])
416
-		  and $h = svg_dimension_to_pixels($attributs['height'])) {
417
-
418
-			$xscale = $viewBox[2] / $w;
419
-			$viewport_w = round($viewport_w * $xscale, 2);
420
-			$viewport_ox = round($viewport_ox * $xscale, 2);
421
-			$yscale = $viewBox[3] / $h;
422
-			$viewport_h = round($viewport_h * $yscale, 2);
423
-			$viewport_oy = round($viewport_oy * $yscale, 2);
424
-		}
425
-
426
-		if ($viewport_w>$viewBox[2] or $viewport_h>$viewBox[3]) {
427
-			$svg = svg_clip_in_box($svg, $viewBox[0], $viewBox[1], $viewBox[2], $viewBox[3]);
428
-		}
429
-
430
-		// maintenant on redefinit la viewBox
431
-		$viewBox[0] += $viewport_ox;
432
-		$viewBox[1] += $viewport_oy;
433
-		$viewBox[2] = $viewport_w;
434
-		$viewBox[3] = $viewport_h;
435
-
436
-		$attributs['viewBox'] = implode(' ', $viewBox);
437
-		$attributs['width'] = strval($new_width);
438
-		$attributs['height'] = strval($new_height);
439
-
440
-		$svg = svg_change_balise_svg($svg, $balise_svg, $attributs);
441
-
442
-		// ajouter un background
443
-		if ($background_color and $background_color!=='transparent') {
444
-			$svg = svg_ajouter_background($svg, $background_color);
445
-		}
446
-
447
-		return $svg;
448
-	}
449
-
450
-	return $img;
401
+    if ($svg = svg_force_viewBox_px($img)
402
+      and $svg_infos = svg_lire_balise_svg($svg)) {
403
+
404
+        list($balise_svg, $attributs) = $svg_infos;
405
+        $viewBox = explode(' ', $attributs['viewBox']);
406
+
407
+        $viewport_w = $new_width;
408
+        $viewport_h = $new_height;
409
+        $viewport_ox = $offset_width;
410
+        $viewport_oy = $offset_height;
411
+
412
+        // si on a un width/height qui rescale, il faut rescaler
413
+        if (isset ($attributs['width'])
414
+          and $w = svg_dimension_to_pixels($attributs['width'])
415
+          and isset ($attributs['height'])
416
+          and $h = svg_dimension_to_pixels($attributs['height'])) {
417
+
418
+            $xscale = $viewBox[2] / $w;
419
+            $viewport_w = round($viewport_w * $xscale, 2);
420
+            $viewport_ox = round($viewport_ox * $xscale, 2);
421
+            $yscale = $viewBox[3] / $h;
422
+            $viewport_h = round($viewport_h * $yscale, 2);
423
+            $viewport_oy = round($viewport_oy * $yscale, 2);
424
+        }
425
+
426
+        if ($viewport_w>$viewBox[2] or $viewport_h>$viewBox[3]) {
427
+            $svg = svg_clip_in_box($svg, $viewBox[0], $viewBox[1], $viewBox[2], $viewBox[3]);
428
+        }
429
+
430
+        // maintenant on redefinit la viewBox
431
+        $viewBox[0] += $viewport_ox;
432
+        $viewBox[1] += $viewport_oy;
433
+        $viewBox[2] = $viewport_w;
434
+        $viewBox[3] = $viewport_h;
435
+
436
+        $attributs['viewBox'] = implode(' ', $viewBox);
437
+        $attributs['width'] = strval($new_width);
438
+        $attributs['height'] = strval($new_height);
439
+
440
+        $svg = svg_change_balise_svg($svg, $balise_svg, $attributs);
441
+
442
+        // ajouter un background
443
+        if ($background_color and $background_color!=='transparent') {
444
+            $svg = svg_ajouter_background($svg, $background_color);
445
+        }
446
+
447
+        return $svg;
448
+    }
449
+
450
+    return $img;
451 451
 }
452 452
 
453 453
 /**
@@ -457,25 +457,25 @@  discard block
 block discarded – undo
457 457
  * @return bool|string
458 458
  */
459 459
 function svg_ajouter_background($img, $background_color) {
460
-	if ($svg = svg_charger($img)
461
-	  and $svg_infos = svg_lire_balise_svg($svg)){
462
-
463
-		if ($background_color and $background_color!=='transparent') {
464
-			list($balise_svg, $attributs) = $svg_infos;
465
-
466
-			$background_color = svg_couleur_to_hexa($background_color);
467
-			if (isset($attributs['viewBox'])) {
468
-				$viewBox = explode(' ', $attributs['viewBox']);
469
-				$rect = "<rect x=\"".$viewBox[0]."\" y=\"".$viewBox[1]."\" width=\"".$viewBox[2]."\" height=\"".$viewBox[3]."\" fill=\"$background_color\"/>";
470
-			}
471
-			else {
472
-				$rect = "<rect width=\"100%\" height=\"100%\" fill=\"$background_color\"/>";
473
-			}
474
-			$svg = svg_insert_shapes($svg, $rect);
475
-		}
476
-		return $svg;
477
-	}
478
-	return $img;
460
+    if ($svg = svg_charger($img)
461
+      and $svg_infos = svg_lire_balise_svg($svg)){
462
+
463
+        if ($background_color and $background_color!=='transparent') {
464
+            list($balise_svg, $attributs) = $svg_infos;
465
+
466
+            $background_color = svg_couleur_to_hexa($background_color);
467
+            if (isset($attributs['viewBox'])) {
468
+                $viewBox = explode(' ', $attributs['viewBox']);
469
+                $rect = "<rect x=\"".$viewBox[0]."\" y=\"".$viewBox[1]."\" width=\"".$viewBox[2]."\" height=\"".$viewBox[3]."\" fill=\"$background_color\"/>";
470
+            }
471
+            else {
472
+                $rect = "<rect width=\"100%\" height=\"100%\" fill=\"$background_color\"/>";
473
+            }
474
+            $svg = svg_insert_shapes($svg, $rect);
475
+        }
476
+        return $svg;
477
+    }
478
+    return $img;
479 479
 }
480 480
 
481 481
 
@@ -486,25 +486,25 @@  discard block
 block discarded – undo
486 486
  * @return bool|string
487 487
  */
488 488
 function svg_ajouter_voile($img, $background_color, $opacity) {
489
-	if ($svg = svg_charger($img)
490
-	  and $svg_infos = svg_lire_balise_svg($svg)){
491
-
492
-		if ($background_color and $background_color!=='transparent') {
493
-			list($balise_svg, $attributs) = $svg_infos;
494
-
495
-			$background_color = svg_couleur_to_hexa($background_color);
496
-			if (isset($attributs['viewBox'])) {
497
-				$viewBox = explode(' ', $attributs['viewBox']);
498
-				$rect = "<rect x=\"".$viewBox[0]."\" y=\"".$viewBox[1]."\" width=\"".$viewBox[2]."\" height=\"".$viewBox[3]."\" fill=\"$background_color\" opacity=\"$opacity\"/>";
499
-			}
500
-			else {
501
-				$rect = "<rect width=\"100%\" height=\"100%\" fill=\"$background_color\"/>";
502
-			}
503
-			$svg = svg_insert_shapes($svg, $rect, false);
504
-		}
505
-		return $svg;
506
-	}
507
-	return $img;
489
+    if ($svg = svg_charger($img)
490
+      and $svg_infos = svg_lire_balise_svg($svg)){
491
+
492
+        if ($background_color and $background_color!=='transparent') {
493
+            list($balise_svg, $attributs) = $svg_infos;
494
+
495
+            $background_color = svg_couleur_to_hexa($background_color);
496
+            if (isset($attributs['viewBox'])) {
497
+                $viewBox = explode(' ', $attributs['viewBox']);
498
+                $rect = "<rect x=\"".$viewBox[0]."\" y=\"".$viewBox[1]."\" width=\"".$viewBox[2]."\" height=\"".$viewBox[3]."\" fill=\"$background_color\" opacity=\"$opacity\"/>";
499
+            }
500
+            else {
501
+                $rect = "<rect width=\"100%\" height=\"100%\" fill=\"$background_color\"/>";
502
+            }
503
+            $svg = svg_insert_shapes($svg, $rect, false);
504
+        }
505
+        return $svg;
506
+    }
507
+    return $img;
508 508
 }
509 509
 
510 510
 
@@ -515,26 +515,26 @@  discard block
 block discarded – undo
515 515
  * @return bool|string
516 516
  */
517 517
 function svg_transformer($img, $attributs) {
518
-	if ($svg = svg_charger($img)
519
-	  and $svg_infos = svg_lire_balise_svg($svg)){
520
-
521
-		if ($attributs) {
522
-			list($balise_svg, ) = $svg_infos;
523
-			$g = "<g";
524
-			foreach ($attributs as $k=>$v) {
525
-				if (strlen($v)) {
526
-					$g .= " $k=\"".attribut_html($v)."\"";
527
-				}
528
-			}
529
-			if (strlen($g) > 2) {
530
-				$g .= ">";
531
-				$svg = svg_insert_shapes($svg, $g);
532
-				$svg = svg_insert_shapes($svg, "</g>", false);
533
-			}
534
-		}
535
-		return $svg;
536
-	}
537
-	return $img;
518
+    if ($svg = svg_charger($img)
519
+      and $svg_infos = svg_lire_balise_svg($svg)){
520
+
521
+        if ($attributs) {
522
+            list($balise_svg, ) = $svg_infos;
523
+            $g = "<g";
524
+            foreach ($attributs as $k=>$v) {
525
+                if (strlen($v)) {
526
+                    $g .= " $k=\"".attribut_html($v)."\"";
527
+                }
528
+            }
529
+            if (strlen($g) > 2) {
530
+                $g .= ">";
531
+                $svg = svg_insert_shapes($svg, $g);
532
+                $svg = svg_insert_shapes($svg, "</g>", false);
533
+            }
534
+        }
535
+        return $svg;
536
+    }
537
+    return $img;
538 538
 }
539 539
 
540 540
 /**
@@ -545,20 +545,20 @@  discard block
 block discarded – undo
545 545
  * @return bool|string
546 546
  */
547 547
 function svg_apply_filter($img, $filter_def) {
548
-	if ($svg = svg_charger($img)
549
-	  and $svg_infos = svg_lire_balise_svg($svg)){
550
-
551
-		if ($filter_def) {
552
-			list($balise_svg, ) = $svg_infos;
553
-			$filter_id = "filter-". substr(md5($filter_def . strlen($svg)), 0, 8);
554
-			$filter = "<defs><filter id=\"$filter_id\">$filter_def</filter></defs>";
555
-			$g = "<g filter=\"url(#$filter_id)\">";
556
-			$svg = svg_insert_shapes($svg, $filter . $g);
557
-			$svg = svg_insert_shapes($svg, "</g>", false);
558
-		}
559
-		return $svg;
560
-	}
561
-	return $img;
548
+    if ($svg = svg_charger($img)
549
+      and $svg_infos = svg_lire_balise_svg($svg)){
550
+
551
+        if ($filter_def) {
552
+            list($balise_svg, ) = $svg_infos;
553
+            $filter_id = "filter-". substr(md5($filter_def . strlen($svg)), 0, 8);
554
+            $filter = "<defs><filter id=\"$filter_id\">$filter_def</filter></defs>";
555
+            $g = "<g filter=\"url(#$filter_id)\">";
556
+            $svg = svg_insert_shapes($svg, $filter . $g);
557
+            $svg = svg_insert_shapes($svg, "</g>", false);
558
+        }
559
+        return $svg;
560
+    }
561
+    return $img;
562 562
 }
563 563
 
564 564
 /**
@@ -568,8 +568,8 @@  discard block
 block discarded – undo
568 568
  * @return string
569 569
  */
570 570
 function svg_filter_blur($img, $blur_width) {
571
-	$blur_width = intval($blur_width);
572
-	return svg_apply_filter($img, "<feGaussianBlur stdDeviation=\"$blur_width\"/>");
571
+    $blur_width = intval($blur_width);
572
+    return svg_apply_filter($img, "<feGaussianBlur stdDeviation=\"$blur_width\"/>");
573 573
 }
574 574
 
575 575
 /**
@@ -579,10 +579,10 @@  discard block
 block discarded – undo
579 579
  * @return bool|string
580 580
  */
581 581
 function svg_filter_grayscale($img, $intensity) {
582
-	$value = round(1.0 - $intensity, 2);
583
-	//$filter = "<feColorMatrix type=\"matrix\" values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"/>";
584
-	$filter = "<feColorMatrix type=\"saturate\" values=\"$value\"/>";
585
-	return svg_apply_filter($img, $filter);
582
+    $value = round(1.0 - $intensity, 2);
583
+    //$filter = "<feColorMatrix type=\"matrix\" values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"/>";
584
+    $filter = "<feColorMatrix type=\"saturate\" values=\"$value\"/>";
585
+    return svg_apply_filter($img, $filter);
586 586
 }
587 587
 
588 588
 /**
@@ -592,8 +592,8 @@  discard block
 block discarded – undo
592 592
  * @return bool|string
593 593
  */
594 594
 function svg_filter_sepia($img, $intensity) {
595
-	$filter = "<feColorMatrix type=\"matrix\" values=\"0.30 0.30 0.30 0.0 0 0.25 0.25 0.25 0.0 0 0.20 0.20 0.20 0.0 0 0.00 0.00 0.00 1 0\"/>";
596
-	return svg_apply_filter($img, $filter);
595
+    $filter = "<feColorMatrix type=\"matrix\" values=\"0.30 0.30 0.30 0.0 0 0.25 0.25 0.25 0.0 0 0.20 0.20 0.20 0.0 0 0.00 0.00 0.00 1 0\"/>";
596
+    return svg_apply_filter($img, $filter);
597 597
 }
598 598
 
599 599
 /**
@@ -603,30 +603,30 @@  discard block
 block discarded – undo
603 603
  * @return bool|string
604 604
  */
605 605
 function svg_flip($img, $HorV) {
606
-	if ($svg = svg_force_viewBox_px($img)
607
-	  and $svg_infos = svg_lire_balise_svg($svg)){
608
-
609
-		list($balise_svg, $atts) = $svg_infos;
610
-		$viewBox = explode(' ', $atts['viewBox']);
611
-
612
-		if (!in_array($HorV, ['h', 'H'])) {
613
-			$transform = "scale(-1,1)";
614
-
615
-			$x = intval($viewBox[0]) + intval($viewBox[2]/2);
616
-			$mx = -$x;
617
-			$transform = "translate($x, 0) $transform translate($mx, 0)";
618
-		}
619
-		else {
620
-			$transform = "scale(1,-1)";
621
-
622
-			$y = intval($viewBox[1]) + intval($viewBox[3]/2);
623
-			$my = -$y;
624
-			$transform = "translate(0, $y) $transform translate(0, $my)";
625
-		}
626
-		$svg = svg_transformer($svg, ['transform' => $transform]);
627
-		return $svg;
628
-	}
629
-	return $img;
606
+    if ($svg = svg_force_viewBox_px($img)
607
+      and $svg_infos = svg_lire_balise_svg($svg)){
608
+
609
+        list($balise_svg, $atts) = $svg_infos;
610
+        $viewBox = explode(' ', $atts['viewBox']);
611
+
612
+        if (!in_array($HorV, ['h', 'H'])) {
613
+            $transform = "scale(-1,1)";
614
+
615
+            $x = intval($viewBox[0]) + intval($viewBox[2]/2);
616
+            $mx = -$x;
617
+            $transform = "translate($x, 0) $transform translate($mx, 0)";
618
+        }
619
+        else {
620
+            $transform = "scale(1,-1)";
621
+
622
+            $y = intval($viewBox[1]) + intval($viewBox[3]/2);
623
+            $my = -$y;
624
+            $transform = "translate(0, $y) $transform translate(0, $my)";
625
+        }
626
+        $svg = svg_transformer($svg, ['transform' => $transform]);
627
+        return $svg;
628
+    }
629
+    return $img;
630 630
 }
631 631
 
632 632
 /**
@@ -640,19 +640,19 @@  discard block
 block discarded – undo
640 640
  * @return bool|string
641 641
  */
642 642
 function svg_rotate($img, $angle, $center_x, $center_y) {
643
-	if ($svg = svg_force_viewBox_px($img)
644
-		and $svg_infos = svg_lire_balise_svg($svg)){
643
+    if ($svg = svg_force_viewBox_px($img)
644
+        and $svg_infos = svg_lire_balise_svg($svg)){
645 645
 
646
-		list($balise_svg, $atts) = $svg_infos;
647
-		$viewBox = explode(' ', $atts['viewBox']);
646
+        list($balise_svg, $atts) = $svg_infos;
647
+        $viewBox = explode(' ', $atts['viewBox']);
648 648
 
649
-		$center_x = round($viewBox[0] + $center_x * $viewBox[2]);
650
-		$center_y = round($viewBox[1] + $center_y * $viewBox[3]);
651
-		$svg = svg_transformer($svg, ['transform' => "rotate($angle $center_x $center_y)"]);
649
+        $center_x = round($viewBox[0] + $center_x * $viewBox[2]);
650
+        $center_y = round($viewBox[1] + $center_y * $viewBox[3]);
651
+        $svg = svg_transformer($svg, ['transform' => "rotate($angle $center_x $center_y)"]);
652 652
 
653
-		return $svg;
654
-	}
655
-	return $img;
653
+        return $svg;
654
+    }
655
+    return $img;
656 656
 }
657 657
 
658 658
 /**
@@ -664,40 +664,40 @@  discard block
 block discarded – undo
664 664
  * @return bool|mixed|string
665 665
  */
666 666
 function svg_filtrer_couleurs($img, $callback_filter) {
667
-	if ($svg = svg_force_viewBox_px($img)
668
-	  and $colors = svg_extract_couleurs($svg)) {
669
-
670
-		$colors = array_unique($colors);
671
-
672
-		$short = [];
673
-		$long = [];
674
-		while (count($colors)) {
675
-			$c = array_shift($colors);
676
-			if (strlen($c) == 4) {
677
-				$short[] = $c;
678
-			}
679
-			else {
680
-				$long[] = $c;
681
-			}
682
-		}
683
-
684
-		$colors = array_merge($long, $short);
685
-		$new_colors = [];
686
-		$colors = array_flip($colors);
687
-		foreach ($colors as $c => $k) {
688
-			$colors[$c] = "@@@COLOR$$k$@@@";
689
-		}
690
-
691
-
692
-		foreach ($colors as $original => $replace) {
693
-			$new = svg_couleur_to_hexa($original);
694
-			$new_colors[$replace] = $callback_filter($new);
695
-		}
696
-
697
-		$svg = str_replace(array_keys($colors), array_values($colors), $svg);
698
-		$svg = str_replace(array_keys($new_colors), array_values($new_colors), $svg);
699
-
700
-		return $svg;
701
-	}
702
-	return $img;
667
+    if ($svg = svg_force_viewBox_px($img)
668
+      and $colors = svg_extract_couleurs($svg)) {
669
+
670
+        $colors = array_unique($colors);
671
+
672
+        $short = [];
673
+        $long = [];
674
+        while (count($colors)) {
675
+            $c = array_shift($colors);
676
+            if (strlen($c) == 4) {
677
+                $short[] = $c;
678
+            }
679
+            else {
680
+                $long[] = $c;
681
+            }
682
+        }
683
+
684
+        $colors = array_merge($long, $short);
685
+        $new_colors = [];
686
+        $colors = array_flip($colors);
687
+        foreach ($colors as $c => $k) {
688
+            $colors[$c] = "@@@COLOR$$k$@@@";
689
+        }
690
+
691
+
692
+        foreach ($colors as $original => $replace) {
693
+            $new = svg_couleur_to_hexa($original);
694
+            $new_colors[$replace] = $callback_filter($new);
695
+        }
696
+
697
+        $svg = str_replace(array_keys($colors), array_values($colors), $svg);
698
+        $svg = str_replace(array_keys($new_colors), array_values($new_colors), $svg);
699
+
700
+        return $svg;
701
+    }
702
+    return $img;
703 703
 }
704 704
\ No newline at end of file
Please login to merge, or discard this patch.
ecrire/lang/ecrire_bg.php 1 patch
Indentation   +544 added lines, -544 removed lines patch added patch discarded remove patch
@@ -4,311 +4,311 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'activer_plugin' => 'Активирайте плъгина',
14
-	'aide_non_disponible' => 'Тази част от рубриката "Помощник" все още не е публикувана на български език.',
15
-	'auteur' => 'Автор:',
16
-	'avis_acces_interdit' => 'Забранен достъп.',
17
-	'avis_article_modifie' => 'Предупреждение! @nom_auteur_modif@ е работил по тази статия преди @date_diff@ минути',
18
-	'avis_aucun_resultat' => 'Няма намерени резултати.',
19
-	'avis_chemin_invalide_1' => 'Името на файла, което сте избрали',
20
-	'avis_chemin_invalide_2' => 'е грешно. Моля, върнете се на предишната страница, за за проверите подадената информация. ',
21
-	'avis_connexion_echec_1' => 'Връзката към SQL сървъра се разпадна.', # MODIF
22
-	'avis_connexion_echec_2' => 'Моля, върнете се на предишната страница, за да проверите подадената информация.',
23
-	'avis_connexion_echec_3' => '<b>ВНИМАНИЕ!</b> За достъп до голяма част от сървърите е необходимо да се изпрати <b>заявка</b> за активиране достъпа до базите данни SQL, преди използването им. Ако не успеете да се свържете, проверете дали сте изпратили заявката.', # MODIF
24
-	'avis_connexion_ldap_echec_1' => 'Връзката с LDAP сървъра пропадна.',
25
-	'avis_connexion_ldap_echec_2' => 'Моля, върнете се на предишната страница, за за проверите подадената информация.',
26
-	'avis_connexion_ldap_echec_3' => 'Без използване на LDAP-поддръжка за вписване на потребители.',
27
-	'avis_deplacement_rubrique' => 'Предупреждение! Рубриката съдържа @contient_breves@ новина@scb@: ако желаете да я преместите, отметнете в полето за потвърждение. ',
28
-	'avis_erreur_connexion_mysql' => 'Грешка при свързване с SQL',
29
-	'avis_espace_interdit' => '<b>Забранена област</b><p>СПИП е вече инсталиран.', # MODIF
30
-	'avis_lecture_noms_bases_1' => 'Инсталаторът не може да прочете имената на инсталираните бази данни.',
31
-	'avis_lecture_noms_bases_2' => 'Или не съществува база данни, или свойството, позволяващо преглед на базите данни е забранено
12
+    // A
13
+    'activer_plugin' => 'Активирайте плъгина',
14
+    'aide_non_disponible' => 'Тази част от рубриката "Помощник" все още не е публикувана на български език.',
15
+    'auteur' => 'Автор:',
16
+    'avis_acces_interdit' => 'Забранен достъп.',
17
+    'avis_article_modifie' => 'Предупреждение! @nom_auteur_modif@ е работил по тази статия преди @date_diff@ минути',
18
+    'avis_aucun_resultat' => 'Няма намерени резултати.',
19
+    'avis_chemin_invalide_1' => 'Името на файла, което сте избрали',
20
+    'avis_chemin_invalide_2' => 'е грешно. Моля, върнете се на предишната страница, за за проверите подадената информация. ',
21
+    'avis_connexion_echec_1' => 'Връзката към SQL сървъра се разпадна.', # MODIF
22
+    'avis_connexion_echec_2' => 'Моля, върнете се на предишната страница, за да проверите подадената информация.',
23
+    'avis_connexion_echec_3' => '<b>ВНИМАНИЕ!</b> За достъп до голяма част от сървърите е необходимо да се изпрати <b>заявка</b> за активиране достъпа до базите данни SQL, преди използването им. Ако не успеете да се свържете, проверете дали сте изпратили заявката.', # MODIF
24
+    'avis_connexion_ldap_echec_1' => 'Връзката с LDAP сървъра пропадна.',
25
+    'avis_connexion_ldap_echec_2' => 'Моля, върнете се на предишната страница, за за проверите подадената информация.',
26
+    'avis_connexion_ldap_echec_3' => 'Без използване на LDAP-поддръжка за вписване на потребители.',
27
+    'avis_deplacement_rubrique' => 'Предупреждение! Рубриката съдържа @contient_breves@ новина@scb@: ако желаете да я преместите, отметнете в полето за потвърждение. ',
28
+    'avis_erreur_connexion_mysql' => 'Грешка при свързване с SQL',
29
+    'avis_espace_interdit' => '<b>Забранена област</b><p>СПИП е вече инсталиран.', # MODIF
30
+    'avis_lecture_noms_bases_1' => 'Инсталаторът не може да прочете имената на инсталираните бази данни.',
31
+    'avis_lecture_noms_bases_2' => 'Или не съществува база данни, или свойството, позволяващо преглед на базите данни е забранено
32 32
   поради съображения за сигурност (какъвто е случаят с много доставчици).',
33
-	'avis_lecture_noms_bases_3' => 'Ако втората възможност се окаже вярна, тогава е възможно да се използва базата данни, указана след Вашето влизане в системата.',
34
-	'avis_non_acces_page' => 'Забранен достъп до тази страница.',
35
-	'avis_operation_echec' => 'Операцията пропадна.',
36
-	'avis_suppression_base' => 'ПРЕДУПРЕЖДЕНИЕ: изтриването на данните е необратимо',
33
+    'avis_lecture_noms_bases_3' => 'Ако втората възможност се окаже вярна, тогава е възможно да се използва базата данни, указана след Вашето влизане в системата.',
34
+    'avis_non_acces_page' => 'Забранен достъп до тази страница.',
35
+    'avis_operation_echec' => 'Операцията пропадна.',
36
+    'avis_suppression_base' => 'ПРЕДУПРЕЖДЕНИЕ: изтриването на данните е необратимо',
37 37
 
38
-	// B
39
-	'bouton_acces_ldap' => 'Добавяне достъп до LDAP >>',
40
-	'bouton_ajouter' => 'Добавяне',
41
-	'bouton_demande_publication' => 'Заявка за публикуване на статията',
42
-	'bouton_desactive_tout' => 'Деактивирайте всички',
43
-	'bouton_effacer_tout' => 'Изтриване на ВСИЧКО',
44
-	'bouton_envoyer_message' => 'Последно съобщение: изпращане',
45
-	'bouton_modifier' => 'Промяна',
46
-	'bouton_radio_afficher' => 'Показване',
47
-	'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Добяване към списъка на текущо свързаните редактори',
48
-	'bouton_radio_envoi_annonces_adresse' => 'Изпращане на съобщения до следния адрес:',
49
-	'bouton_radio_envoi_liste_nouveautes' => 'Изпращане на списък с новини',
50
-	'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Изключване от списъка на текущо свързаните редактори',
51
-	'bouton_radio_non_envoi_annonces_editoriales' => 'Отказ от изпращане на редакторски съобщения',
52
-	'bouton_redirection' => 'ПРЕНАСОЧВАНЕ',
53
-	'bouton_relancer_installation' => 'Подновяване на инсталацията',
54
-	'bouton_suivant' => 'По-нататък',
55
-	'bouton_tenter_recuperation' => 'Опит за възстановяване',
56
-	'bouton_test_proxy' => 'Тестване на прокси',
57
-	'bouton_vider_cache' => 'Изпразване на кеш-паметта',
38
+    // B
39
+    'bouton_acces_ldap' => 'Добавяне достъп до LDAP >>',
40
+    'bouton_ajouter' => 'Добавяне',
41
+    'bouton_demande_publication' => 'Заявка за публикуване на статията',
42
+    'bouton_desactive_tout' => 'Деактивирайте всички',
43
+    'bouton_effacer_tout' => 'Изтриване на ВСИЧКО',
44
+    'bouton_envoyer_message' => 'Последно съобщение: изпращане',
45
+    'bouton_modifier' => 'Промяна',
46
+    'bouton_radio_afficher' => 'Показване',
47
+    'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Добяване към списъка на текущо свързаните редактори',
48
+    'bouton_radio_envoi_annonces_adresse' => 'Изпращане на съобщения до следния адрес:',
49
+    'bouton_radio_envoi_liste_nouveautes' => 'Изпращане на списък с новини',
50
+    'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Изключване от списъка на текущо свързаните редактори',
51
+    'bouton_radio_non_envoi_annonces_editoriales' => 'Отказ от изпращане на редакторски съобщения',
52
+    'bouton_redirection' => 'ПРЕНАСОЧВАНЕ',
53
+    'bouton_relancer_installation' => 'Подновяване на инсталацията',
54
+    'bouton_suivant' => 'По-нататък',
55
+    'bouton_tenter_recuperation' => 'Опит за възстановяване',
56
+    'bouton_test_proxy' => 'Тестване на прокси',
57
+    'bouton_vider_cache' => 'Изпразване на кеш-паметта',
58 58
 
59
-	// C
60
-	'cache_modifiable_webmestre' => 'Параметърът може да бъде променен от уеб-администратора. ',
61
-	'calendrier_synchro' => 'Ако инсталирате приложение за дневник, съвместимо с <b>iCal</b>, ще можете да го синхронизирате с информацията от сайта.',
59
+    // C
60
+    'cache_modifiable_webmestre' => 'Параметърът може да бъде променен от уеб-администратора. ',
61
+    'calendrier_synchro' => 'Ако инсталирате приложение за дневник, съвместимо с <b>iCal</b>, ще можете да го синхронизирате с информацията от сайта.',
62 62
 
63
-	// D
64
-	'date_mot_heures' => 'ч.',
63
+    // D
64
+    'date_mot_heures' => 'ч.',
65 65
 
66
-	// E
67
-	'email' => 'електронен адрес',
68
-	'email_2' => 'електронен адрес:',
69
-	'entree_adresse_annuaire' => 'Адрес на директорията',
70
-	'entree_adresse_email' => 'Електронен адрес (е-mail)',
71
-	'entree_base_donnee_1' => 'Адрес на базата данни',
72
-	'entree_base_donnee_2' => '(Често адресът съвпада с адрес от Вашия сайт, понякога съответства на името «localhost», а понякога се оставя празен.)',
73
-	'entree_biographie' => 'Кратка биография с няколко думи.',
74
-	'entree_chemin_acces' => '<b>Въвеждане</b> на път:',
75
-	'entree_cle_pgp' => 'PGP ключ',
76
-	'entree_contenu_rubrique' => '(Кратко съдържание на рубриката.)',
77
-	'entree_identifiants_connexion' => 'Идентефикатори за свързване',
78
-	'entree_informations_connexion_ldap' => 'Моля, попълнете бланката с информацията за LDAP връзка. Тази информация ще получите от системния или мрежовия администратор.',
79
-	'entree_infos_perso' => 'Кой си ти?',
80
-	'entree_interieur_rubrique' => 'В рубриката:',
81
-	'entree_liens_sites' => '<b>Хипертекстова препратка</b> (препратка, сайт за посещаване и т.н.)',
82
-	'entree_login' => 'Вход',
83
-	'entree_login_connexion_1' => 'Потребителско име за свързване',
84
-	'entree_login_connexion_2' => '(Понякога съвпада с Вашето потребителско име към FTP достъпа, понякога се оставя празно)',
85
-	'entree_mot_passe' => 'Парола',
86
-	'entree_mot_passe_1' => 'Парола за свързване',
87
-	'entree_mot_passe_2' => '(Понякога съвпада с паролата Ви за FTP-достъп, понякога се оставя празно)',
88
-	'entree_nom_fichier' => 'Моля, попълнете име на файла @texte_compresse@:',
89
-	'entree_nom_pseudo' => 'Име или прякор',
90
-	'entree_nom_pseudo_1' => '(Име или прякор)',
91
-	'entree_nom_site' => 'Име на сайта',
92
-	'entree_nouveau_passe' => 'Нова парола',
93
-	'entree_passe_ldap' => 'Парола',
94
-	'entree_port_annuaire' => 'Номер на порта на директорията',
95
-	'entree_signature' => 'Подпис',
96
-	'entree_titre_obligatoire' => '<b>Заглавие</b> [Задължително]<br />',
97
-	'entree_url' => 'URL на сайта',
98
-	'erreur_plugin_fichier_absent' => 'Липсва файл',
99
-	'erreur_plugin_fichier_def_absent' => 'Файлът - дефиниция липсва',
100
-	'erreur_plugin_nom_fonction_interdit' => 'Забранено име на функцията',
101
-	'erreur_plugin_nom_manquant' => 'Липсва име на плъгина',
102
-	'erreur_plugin_prefix_manquant' => 'Не е определено име, указващо мястото на плъгина',
103
-	'erreur_plugin_tag_plugin_absent' => '&lt;плъгин&gt; липсва във файла - дефиниция',
104
-	'erreur_plugin_version_manquant' => 'Липсва версията на плъгина',
66
+    // E
67
+    'email' => 'електронен адрес',
68
+    'email_2' => 'електронен адрес:',
69
+    'entree_adresse_annuaire' => 'Адрес на директорията',
70
+    'entree_adresse_email' => 'Електронен адрес (е-mail)',
71
+    'entree_base_donnee_1' => 'Адрес на базата данни',
72
+    'entree_base_donnee_2' => '(Често адресът съвпада с адрес от Вашия сайт, понякога съответства на името «localhost», а понякога се оставя празен.)',
73
+    'entree_biographie' => 'Кратка биография с няколко думи.',
74
+    'entree_chemin_acces' => '<b>Въвеждане</b> на път:',
75
+    'entree_cle_pgp' => 'PGP ключ',
76
+    'entree_contenu_rubrique' => '(Кратко съдържание на рубриката.)',
77
+    'entree_identifiants_connexion' => 'Идентефикатори за свързване',
78
+    'entree_informations_connexion_ldap' => 'Моля, попълнете бланката с информацията за LDAP връзка. Тази информация ще получите от системния или мрежовия администратор.',
79
+    'entree_infos_perso' => 'Кой си ти?',
80
+    'entree_interieur_rubrique' => 'В рубриката:',
81
+    'entree_liens_sites' => '<b>Хипертекстова препратка</b> (препратка, сайт за посещаване и т.н.)',
82
+    'entree_login' => 'Вход',
83
+    'entree_login_connexion_1' => 'Потребителско име за свързване',
84
+    'entree_login_connexion_2' => '(Понякога съвпада с Вашето потребителско име към FTP достъпа, понякога се оставя празно)',
85
+    'entree_mot_passe' => 'Парола',
86
+    'entree_mot_passe_1' => 'Парола за свързване',
87
+    'entree_mot_passe_2' => '(Понякога съвпада с паролата Ви за FTP-достъп, понякога се оставя празно)',
88
+    'entree_nom_fichier' => 'Моля, попълнете име на файла @texte_compresse@:',
89
+    'entree_nom_pseudo' => 'Име или прякор',
90
+    'entree_nom_pseudo_1' => '(Име или прякор)',
91
+    'entree_nom_site' => 'Име на сайта',
92
+    'entree_nouveau_passe' => 'Нова парола',
93
+    'entree_passe_ldap' => 'Парола',
94
+    'entree_port_annuaire' => 'Номер на порта на директорията',
95
+    'entree_signature' => 'Подпис',
96
+    'entree_titre_obligatoire' => '<b>Заглавие</b> [Задължително]<br />',
97
+    'entree_url' => 'URL на сайта',
98
+    'erreur_plugin_fichier_absent' => 'Липсва файл',
99
+    'erreur_plugin_fichier_def_absent' => 'Файлът - дефиниция липсва',
100
+    'erreur_plugin_nom_fonction_interdit' => 'Забранено име на функцията',
101
+    'erreur_plugin_nom_manquant' => 'Липсва име на плъгина',
102
+    'erreur_plugin_prefix_manquant' => 'Не е определено име, указващо мястото на плъгина',
103
+    'erreur_plugin_tag_plugin_absent' => '&lt;плъгин&gt; липсва във файла - дефиниция',
104
+    'erreur_plugin_version_manquant' => 'Липсва версията на плъгина',
105 105
 
106
-	// I
107
-	'ical_info1' => 'Тази страница представя няколко начина да останете във връзка с дейността на сайта.',
108
-	'ical_info2' => 'За повече информация, отидете на <a href="@spipnet@">Документация за СПИП</a>.', # MODIF
109
-	'ical_info_calendrier' => 'Имате на разположение два календара. Първият е карта на сайта, указваща всички публикувани статии. Вторият съдържа обявления за редакторите, както и най-новите лични съобщения до Вас. Този календар се показва само на Вас, благодарение на личнен ключ, който можете да променяте по всяко време чрез смяна на паролата.',
110
-	'ical_methode_http' => 'Сваляне',
111
-	'ical_methode_webcal' => 'Синхронизация (webcal://)', # MODIF
112
-	'ical_texte_js' => 'Един ред на скрипт Java позволява на всяка страница от сайта лесно да се показват най-новите публикувани статии.',
113
-	'ical_texte_prive' => 'Календарът е строго личен. Той уведомява за вътрешните редакторски дейности на сайта (напр. задачи, лични срещи, изпратени статии и новини и др.)',
114
-	'ical_texte_public' => 'Календарът Ви дава възможност да следите публичните дейности на сайта (напр. публикувани статии и новини).',
115
-	'ical_texte_rss' => 'Можете да обедините последните новини от сайта на всеки файлов четец от типа XML/RSS (Rich Site Summary). Това е същият формат, който позволява на СПИП да чете последните новини, публикувани от други сайтове като за целта използва съвместим формат за обмен.',
116
-	'ical_titre_js' => 'Скрипт Java',
117
-	'ical_titre_mailing' => 'Пощенски списък',
118
-	'ical_titre_rss' => 'Файлове за обединение',
119
-	'icone_activer_cookie' => 'Поставяне на cookie',
120
-	'icone_admin_plugin' => 'Управление на плъгините',
121
-	'icone_afficher_auteurs' => 'Показване на авторите',
122
-	'icone_afficher_visiteurs' => 'Показване на посетителите',
123
-	'icone_arret_discussion' => 'Прекъсване участието в тази дискусия',
124
-	'icone_calendrier' => 'Календар',
125
-	'icone_creer_auteur' => 'Създаване на автор и свързване със статията',
126
-	'icone_creer_mot_cle' => 'Създаване на ключова дума и свързване със статията',
127
-	'icone_creer_rubrique_2' => 'Създаване на рубрика',
128
-	'icone_modifier_article' => 'Промяна на статията',
129
-	'icone_modifier_rubrique' => 'Промяна на рубриката',
130
-	'icone_retour' => 'Обратно',
131
-	'icone_retour_article' => 'Обратно към статията',
132
-	'icone_supprimer_cookie' => 'Изтриване на cookie',
133
-	'icone_supprimer_rubrique' => 'Изтриване на рубриката',
134
-	'icone_supprimer_signature' => 'Изтриване на записа',
135
-	'icone_valider_signature' => 'Одобряване на записа',
136
-	'image_administrer_rubrique' => 'Управление на рубриката',
137
-	'impossible_modifier_login_auteur' => 'Impossible de modifier le login.', # MODIF
138
-	'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.', # MODIF
139
-	'info_1_article' => '1 статия',
140
-	'info_activer_cookie' => 'Възможност за активиране на <b>cookie администриране</b>, което позволява
106
+    // I
107
+    'ical_info1' => 'Тази страница представя няколко начина да останете във връзка с дейността на сайта.',
108
+    'ical_info2' => 'За повече информация, отидете на <a href="@spipnet@">Документация за СПИП</a>.', # MODIF
109
+    'ical_info_calendrier' => 'Имате на разположение два календара. Първият е карта на сайта, указваща всички публикувани статии. Вторият съдържа обявления за редакторите, както и най-новите лични съобщения до Вас. Този календар се показва само на Вас, благодарение на личнен ключ, който можете да променяте по всяко време чрез смяна на паролата.',
110
+    'ical_methode_http' => 'Сваляне',
111
+    'ical_methode_webcal' => 'Синхронизация (webcal://)', # MODIF
112
+    'ical_texte_js' => 'Един ред на скрипт Java позволява на всяка страница от сайта лесно да се показват най-новите публикувани статии.',
113
+    'ical_texte_prive' => 'Календарът е строго личен. Той уведомява за вътрешните редакторски дейности на сайта (напр. задачи, лични срещи, изпратени статии и новини и др.)',
114
+    'ical_texte_public' => 'Календарът Ви дава възможност да следите публичните дейности на сайта (напр. публикувани статии и новини).',
115
+    'ical_texte_rss' => 'Можете да обедините последните новини от сайта на всеки файлов четец от типа XML/RSS (Rich Site Summary). Това е същият формат, който позволява на СПИП да чете последните новини, публикувани от други сайтове като за целта използва съвместим формат за обмен.',
116
+    'ical_titre_js' => 'Скрипт Java',
117
+    'ical_titre_mailing' => 'Пощенски списък',
118
+    'ical_titre_rss' => 'Файлове за обединение',
119
+    'icone_activer_cookie' => 'Поставяне на cookie',
120
+    'icone_admin_plugin' => 'Управление на плъгините',
121
+    'icone_afficher_auteurs' => 'Показване на авторите',
122
+    'icone_afficher_visiteurs' => 'Показване на посетителите',
123
+    'icone_arret_discussion' => 'Прекъсване участието в тази дискусия',
124
+    'icone_calendrier' => 'Календар',
125
+    'icone_creer_auteur' => 'Създаване на автор и свързване със статията',
126
+    'icone_creer_mot_cle' => 'Създаване на ключова дума и свързване със статията',
127
+    'icone_creer_rubrique_2' => 'Създаване на рубрика',
128
+    'icone_modifier_article' => 'Промяна на статията',
129
+    'icone_modifier_rubrique' => 'Промяна на рубриката',
130
+    'icone_retour' => 'Обратно',
131
+    'icone_retour_article' => 'Обратно към статията',
132
+    'icone_supprimer_cookie' => 'Изтриване на cookie',
133
+    'icone_supprimer_rubrique' => 'Изтриване на рубриката',
134
+    'icone_supprimer_signature' => 'Изтриване на записа',
135
+    'icone_valider_signature' => 'Одобряване на записа',
136
+    'image_administrer_rubrique' => 'Управление на рубриката',
137
+    'impossible_modifier_login_auteur' => 'Impossible de modifier le login.', # MODIF
138
+    'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.', # MODIF
139
+    'info_1_article' => '1 статия',
140
+    'info_activer_cookie' => 'Възможност за активиране на <b>cookie администриране</b>, което позволява
141 141
  улеснено превключване между публичния сайт и личната зона.',
142
-	'info_administrateur' => 'Администратор',
143
-	'info_administrateur_1' => 'Администратор',
144
-	'info_administrateur_2' => 'на сайта (<i>внимавайте</i>)',
145
-	'info_administrateur_site_01' => 'Ако сте администратор на сайта, моля',
146
-	'info_administrateur_site_02' => 'посещаване на препратката',
147
-	'info_administrateurs' => 'Администратори',
148
-	'info_administrer_rubrique' => 'Вие можете да управлявате рубриката',
149
-	'info_adresse' => 'към адрес:',
150
-	'info_adresse_url' => 'Публичен URL на сайта ',
151
-	'info_aide_en_ligne' => 'Помощник',
152
-	'info_ajout_image' => 'Когато се добавят изображения под формата на приложени документи към 
142
+    'info_administrateur' => 'Администратор',
143
+    'info_administrateur_1' => 'Администратор',
144
+    'info_administrateur_2' => 'на сайта (<i>внимавайте</i>)',
145
+    'info_administrateur_site_01' => 'Ако сте администратор на сайта, моля',
146
+    'info_administrateur_site_02' => 'посещаване на препратката',
147
+    'info_administrateurs' => 'Администратори',
148
+    'info_administrer_rubrique' => 'Вие можете да управлявате рубриката',
149
+    'info_adresse' => 'към адрес:',
150
+    'info_adresse_url' => 'Публичен URL на сайта ',
151
+    'info_aide_en_ligne' => 'Помощник',
152
+    'info_ajout_image' => 'Когато се добавят изображения под формата на приложени документи към 
153 153
   статия, СПИП автоматично създава умалени образи (винетки)
154 154
   на поместените изображения. Това позволява, например да се създаде
155 155
   автоматично галерия от изображения.',
156
-	'info_ajouter_rubrique' => 'Добавяне на друга рубрика за управление:',
157
-	'info_annonce_nouveautes' => 'Най-новите съобщения',
158
-	'info_article' => 'статия',
159
-	'info_article_2' => 'статии',
160
-	'info_article_a_paraitre' => 'Статии за одобрение със стара дата ',
161
-	'info_articles_02' => 'статии',
162
-	'info_articles_2' => 'Статии',
163
-	'info_articles_auteur' => 'Статиите на автора',
164
-	'info_articles_trouves' => 'Намерени статии',
165
-	'info_attente_validation' => 'Вашите статии, очакващи одобрение за публикуване',
166
-	'info_aujourdhui' => 'днес:',
167
-	'info_auteur_gere_toutes_rubriques_2' => 'Je gère <b>toutes les rubriques</b>', # MODIF
168
-	'info_auteurs' => 'Автори',
169
-	'info_auteurs_par_tri' => 'Автори@partri@',
170
-	'info_auteurs_trouves' => 'Намерени автори',
171
-	'info_authentification_externe' => 'Външно удостоверяване на автентичността',
172
-	'info_avertissement' => 'Предупреждение',
173
-	'info_base_installee' => 'Структурата на Вашата база данни е инсталирана.',
174
-	'info_chapeau' => 'Преглед',
175
-	'info_chapeau_2' => 'Въведение:',
176
-	'info_chemin_acces_1' => 'Опции: <b>Път за достъп до директорията</b>',
177
-	'info_chemin_acces_2' => 'От сега нататък Вие трябва да определяте пътя за достъп до данните в директорията. Тази информация дава възможност за преглед на потребителските профили, съхранени там.',
178
-	'info_chemin_acces_annuaire' => 'Опции: <b>Път за достъп</b>',
179
-	'info_choix_base' => 'Трета стъпка:',
180
-	'info_classement_1' => '<sup>st</sup> от общо @liste@',
181
-	'info_classement_2' => '<sup>th</sup> от общо @liste@',
182
-	'info_code_acces' => 'Не забравяйте личния си код за достъп!',
183
-	'info_config_suivi' => 'Ако адресът отговаря а даден пощенски списък, можете да окажете отдолу адресът, където участниците на сайта биха могли да се регистрират. Този адрес може да бъде URL (наример страницата, където се прави регистрация през Интернет страница), или електронен адрес, заедно с определена тема на писмото (например: <tt>@adresse_suivi@?subject=subscribe</tt>):',
184
-	'info_config_suivi_explication' => 'Можете да се абонирате за пощенския списък на сайта. За целта ще получите автоматично електронно съобщение с обявленията, свързани с новините и статиите, изпратени за публикуване.',
185
-	'info_confirmer_passe' => 'Потвърдете новата парола:',
186
-	'info_connexion_base' => 'Втора стъпка: <b>Опит за свързване с базата данни</b>',
187
-	'info_connexion_ldap_ok' => '<b>Успешна LDAP връзка</b><p> Преминете към следващата стъпка.', # MODIF
188
-	'info_connexion_mysql' => 'Първа стъпка: <b>Вашата SQL връзка</b>',
189
-	'info_connexion_ok' => 'Успешно свързване.',
190
-	'info_contact' => 'Контакт',
191
-	'info_contenu_articles' => 'Съдържание на статиите',
192
-	'info_creation_paragraphe' => '(За нов ред оставете празни редове.)', # MODIF
193
-	'info_creation_rubrique' => 'Трябва да създадете поне една рубрика,<br />преди да започнете да пишете статии.<br />',
194
-	'info_creation_tables' => 'Четвърта стъпка: <b>Създаване на таблици с бази данни</b>',
195
-	'info_creer_base' => '<b>Създаване</b> на нова база данни:',
196
-	'info_dans_rubrique' => 'В рубриката:',
197
-	'info_date_publication_anterieure' => 'Дата на предишно публикуване:',
198
-	'info_date_referencement' => 'ДАТА НА СВЪРЗВАНЕ НА САЙТА:',
199
-	'info_derniere_etape' => 'Последна стъпка: <b>Приключено!',
200
-	'info_descriptif' => 'Описание:',
201
-	'info_discussion_cours' => 'Дискусии в ход',
202
-	'info_ecrire_article' => 'Преди да започнете за пишете статии, трябва да създадете поне една рубрика.',
203
-	'info_email_envoi' => 'Електронен адрес на изпращача (по желание)',
204
-	'info_email_envoi_txt' => 'Впишете електронния адрес на изпращача, който използвате (по подразбиране, адресът на получателя ще се използва за адрес на изпращача):',
205
-	'info_email_webmestre' => 'Електронен адрес на уеб-администратора (незадължителен)', # MODIF
206
-	'info_envoi_email_automatique' => 'Автоматично изпращане на съобщение',
207
-	'info_envoyer_maintenant' => 'Изпращане',
208
-	'info_etape_suivante' => 'Преминете към следващата стъпка',
209
-	'info_etape_suivante_1' => 'Можете да преминете към следващата стъпка.',
210
-	'info_etape_suivante_2' => 'Можете да преминете към следващата стъпка.',
211
-	'info_exportation_base' => 'експортиране на базата данни в @archive@',
212
-	'info_facilite_suivi_activite' => 'За улесняване по-нататъшните действия на редакторите,
156
+    'info_ajouter_rubrique' => 'Добавяне на друга рубрика за управление:',
157
+    'info_annonce_nouveautes' => 'Най-новите съобщения',
158
+    'info_article' => 'статия',
159
+    'info_article_2' => 'статии',
160
+    'info_article_a_paraitre' => 'Статии за одобрение със стара дата ',
161
+    'info_articles_02' => 'статии',
162
+    'info_articles_2' => 'Статии',
163
+    'info_articles_auteur' => 'Статиите на автора',
164
+    'info_articles_trouves' => 'Намерени статии',
165
+    'info_attente_validation' => 'Вашите статии, очакващи одобрение за публикуване',
166
+    'info_aujourdhui' => 'днес:',
167
+    'info_auteur_gere_toutes_rubriques_2' => 'Je gère <b>toutes les rubriques</b>', # MODIF
168
+    'info_auteurs' => 'Автори',
169
+    'info_auteurs_par_tri' => 'Автори@partri@',
170
+    'info_auteurs_trouves' => 'Намерени автори',
171
+    'info_authentification_externe' => 'Външно удостоверяване на автентичността',
172
+    'info_avertissement' => 'Предупреждение',
173
+    'info_base_installee' => 'Структурата на Вашата база данни е инсталирана.',
174
+    'info_chapeau' => 'Преглед',
175
+    'info_chapeau_2' => 'Въведение:',
176
+    'info_chemin_acces_1' => 'Опции: <b>Път за достъп до директорията</b>',
177
+    'info_chemin_acces_2' => 'От сега нататък Вие трябва да определяте пътя за достъп до данните в директорията. Тази информация дава възможност за преглед на потребителските профили, съхранени там.',
178
+    'info_chemin_acces_annuaire' => 'Опции: <b>Път за достъп</b>',
179
+    'info_choix_base' => 'Трета стъпка:',
180
+    'info_classement_1' => '<sup>st</sup> от общо @liste@',
181
+    'info_classement_2' => '<sup>th</sup> от общо @liste@',
182
+    'info_code_acces' => 'Не забравяйте личния си код за достъп!',
183
+    'info_config_suivi' => 'Ако адресът отговаря а даден пощенски списък, можете да окажете отдолу адресът, където участниците на сайта биха могли да се регистрират. Този адрес може да бъде URL (наример страницата, където се прави регистрация през Интернет страница), или електронен адрес, заедно с определена тема на писмото (например: <tt>@adresse_suivi@?subject=subscribe</tt>):',
184
+    'info_config_suivi_explication' => 'Можете да се абонирате за пощенския списък на сайта. За целта ще получите автоматично електронно съобщение с обявленията, свързани с новините и статиите, изпратени за публикуване.',
185
+    'info_confirmer_passe' => 'Потвърдете новата парола:',
186
+    'info_connexion_base' => 'Втора стъпка: <b>Опит за свързване с базата данни</b>',
187
+    'info_connexion_ldap_ok' => '<b>Успешна LDAP връзка</b><p> Преминете към следващата стъпка.', # MODIF
188
+    'info_connexion_mysql' => 'Първа стъпка: <b>Вашата SQL връзка</b>',
189
+    'info_connexion_ok' => 'Успешно свързване.',
190
+    'info_contact' => 'Контакт',
191
+    'info_contenu_articles' => 'Съдържание на статиите',
192
+    'info_creation_paragraphe' => '(За нов ред оставете празни редове.)', # MODIF
193
+    'info_creation_rubrique' => 'Трябва да създадете поне една рубрика,<br />преди да започнете да пишете статии.<br />',
194
+    'info_creation_tables' => 'Четвърта стъпка: <b>Създаване на таблици с бази данни</b>',
195
+    'info_creer_base' => '<b>Създаване</b> на нова база данни:',
196
+    'info_dans_rubrique' => 'В рубриката:',
197
+    'info_date_publication_anterieure' => 'Дата на предишно публикуване:',
198
+    'info_date_referencement' => 'ДАТА НА СВЪРЗВАНЕ НА САЙТА:',
199
+    'info_derniere_etape' => 'Последна стъпка: <b>Приключено!',
200
+    'info_descriptif' => 'Описание:',
201
+    'info_discussion_cours' => 'Дискусии в ход',
202
+    'info_ecrire_article' => 'Преди да започнете за пишете статии, трябва да създадете поне една рубрика.',
203
+    'info_email_envoi' => 'Електронен адрес на изпращача (по желание)',
204
+    'info_email_envoi_txt' => 'Впишете електронния адрес на изпращача, който използвате (по подразбиране, адресът на получателя ще се използва за адрес на изпращача):',
205
+    'info_email_webmestre' => 'Електронен адрес на уеб-администратора (незадължителен)', # MODIF
206
+    'info_envoi_email_automatique' => 'Автоматично изпращане на съобщение',
207
+    'info_envoyer_maintenant' => 'Изпращане',
208
+    'info_etape_suivante' => 'Преминете към следващата стъпка',
209
+    'info_etape_suivante_1' => 'Можете да преминете към следващата стъпка.',
210
+    'info_etape_suivante_2' => 'Можете да преминете към следващата стъпка.',
211
+    'info_exportation_base' => 'експортиране на базата данни в @archive@',
212
+    'info_facilite_suivi_activite' => 'За улесняване по-нататъшните действия на редакторите,
213 213
   СПИП изпраща по електронна поща съобщение с молбите за публикуване и одобрените статии до
214 214
   някой пощенски списък
215 215
   на редактори, например.
216 216
 ',
217
-	'info_fichiers_authent' => 'Файл за удостоверяване автентичността: „.htpasswd“',
218
-	'info_forums_abo_invites' => 'Сайтът Ви съдържа форуми посредством предварителен абонамент; посетителите могат да се регистират за тях през публичния сайт.',
219
-	'info_gauche_admin_tech' => '<b>Само администратори имат достъп до тази страница.</b><p> Тя осигурява достъп до различни
217
+    'info_fichiers_authent' => 'Файл за удостоверяване автентичността: „.htpasswd“',
218
+    'info_forums_abo_invites' => 'Сайтът Ви съдържа форуми посредством предварителен абонамент; посетителите могат да се регистират за тях през публичния сайт.',
219
+    'info_gauche_admin_tech' => '<b>Само администратори имат достъп до тази страница.</b><p> Тя осигурява достъп до различни
220 220
  технически задачи за поддръжка. Някои от тях позволяват специфичен процес на
221 221
 идентификация и изискват FTP достъп до сайта.', # MODIF
222
-	'info_gauche_admin_vider' => '<b>Само администратори имат достъп до тази страница.</b><p> Тя осигурява достъп доразлични
222
+    'info_gauche_admin_vider' => '<b>Само администратори имат достъп до тази страница.</b><p> Тя осигурява достъп доразлични
223 223
 технически задачи за поддръжка. Някои от тях позволяват специфичен процес на
224 224
 идентификация и изискват FTP достъп до сайта.', # MODIF
225
-	'info_gauche_auteurs' => 'Тук ще намерите всички автори на сайта.
225
+    'info_gauche_auteurs' => 'Тук ще намерите всички автори на сайта.
226 226
  Статусът на всеки от тях е обозначен с цвета на неговата икона (редактор - жълта; администратор - зелена).',
227
-	'info_gauche_auteurs_exterieurs' => 'Външни автори, без достъп до сайта, са обозначени със синя икона; изтритите автори - с кошче за боклук.', # MODIF
228
-	'info_gauche_messagerie' => 'Изпращането на съобщения позволява да се обменя информация между редакторите, да се съхраняват бележки (за лично ползване) или да се публикуват обяви в началната страница на личната зона (ако сте администратор).',
229
-	'info_gauche_statistiques_referers' => 'Тази страница показва списък с <i>препратки към сайтове</i>: т.е. сайтовете, съдържащи връзка към Вашия сайт, само за вчера и днес: този списък се акуализира на всеки 24 часа.',
230
-	'info_gauche_visiteurs_enregistres' => 'Тук ще намерите посетителите, регистрирани
227
+    'info_gauche_auteurs_exterieurs' => 'Външни автори, без достъп до сайта, са обозначени със синя икона; изтритите автори - с кошче за боклук.', # MODIF
228
+    'info_gauche_messagerie' => 'Изпращането на съобщения позволява да се обменя информация между редакторите, да се съхраняват бележки (за лично ползване) или да се публикуват обяви в началната страница на личната зона (ако сте администратор).',
229
+    'info_gauche_statistiques_referers' => 'Тази страница показва списък с <i>препратки към сайтове</i>: т.е. сайтовете, съдържащи връзка към Вашия сайт, само за вчера и днес: този списък се акуализира на всеки 24 часа.',
230
+    'info_gauche_visiteurs_enregistres' => 'Тук ще намерите посетителите, регистрирани
231 231
  в публичната зона на сайта (форумите са с предварително записване).',
232
-	'info_generation_miniatures_images' => 'Генерирана на умалени образи на изображенията',
233
-	'info_hebergeur_desactiver_envoi_email' => 'Някои доставчици не позволяват изпращането на автоматични съобщения
232
+    'info_generation_miniatures_images' => 'Генерирана на умалени образи на изображенията',
233
+    'info_hebergeur_desactiver_envoi_email' => 'Някои доставчици не позволяват изпращането на автоматични съобщения
234 234
   от техните сървъри. В този случай, следните свойства
235 235
   на СПИП не работят:',
236
-	'info_hier' => 'вчера:',
237
-	'info_identification_publique' => 'Публична самоличност...',
238
-	'info_image_process' => 'Изберете най-удобният начин да създавате миниатюри, чрез натискане въру съответната картинка.',
239
-	'info_image_process2' => '<b>N.B.</b> <i>Ако не можете да видите никакво изображение, следователно сървърът Ви не е конфигуриран да използва такива инструменти. Ако искате да ползвате това свойство, трябва да се свържете с доставчика си и да поискате да ви инсталират разширения от типа "GD" или "Imagick"</i>', # MODIF
240
-	'info_images_auto' => 'Автоматично изчислени изображения',
241
-	'info_informations_personnelles' => 'Стъпка пет: <b>Лични данни</b>',
242
-	'info_inscription_automatique' => 'Автоматична регистрация на нови редактори',
243
-	'info_jeu_caractere' => 'Кодировка на сайта',
244
-	'info_jours' => 'дни',
245
-	'info_laisser_champs_vides' => 'оставите празни полетата)',
246
-	'info_langues' => 'Езици на сайта',
247
-	'info_ldap_ok' => 'Инсталирана е аутентификация за LDAP.',
248
-	'info_lien_hypertexte' => 'Хипертекстова препратка:',
249
-	'info_liste_redacteurs_connectes' => 'Списък на свързаните редактори',
250
-	'info_login_existant' => 'Потребителското име вече съществува.',
251
-	'info_login_trop_court' => 'Потребителското име е твърде кратко.',
252
-	'info_maximum' => 'максимум:',
253
-	'info_meme_rubrique' => 'В същата рубрика',
254
-	'info_message_en_redaction' => 'Съобщения в процес на обработка',
255
-	'info_message_technique' => 'Техническо съобщение:',
256
-	'info_messagerie_interne' => 'Система за вътрешни съобщения',
257
-	'info_mise_a_niveau_base' => 'Актуализиране на базата данни SQL',
258
-	'info_mise_a_niveau_base_2' => '{{Предупреждение!}} Инсталираната версия на СПИП
236
+    'info_hier' => 'вчера:',
237
+    'info_identification_publique' => 'Публична самоличност...',
238
+    'info_image_process' => 'Изберете най-удобният начин да създавате миниатюри, чрез натискане въру съответната картинка.',
239
+    'info_image_process2' => '<b>N.B.</b> <i>Ако не можете да видите никакво изображение, следователно сървърът Ви не е конфигуриран да използва такива инструменти. Ако искате да ползвате това свойство, трябва да се свържете с доставчика си и да поискате да ви инсталират разширения от типа "GD" или "Imagick"</i>', # MODIF
240
+    'info_images_auto' => 'Автоматично изчислени изображения',
241
+    'info_informations_personnelles' => 'Стъпка пет: <b>Лични данни</b>',
242
+    'info_inscription_automatique' => 'Автоматична регистрация на нови редактори',
243
+    'info_jeu_caractere' => 'Кодировка на сайта',
244
+    'info_jours' => 'дни',
245
+    'info_laisser_champs_vides' => 'оставите празни полетата)',
246
+    'info_langues' => 'Езици на сайта',
247
+    'info_ldap_ok' => 'Инсталирана е аутентификация за LDAP.',
248
+    'info_lien_hypertexte' => 'Хипертекстова препратка:',
249
+    'info_liste_redacteurs_connectes' => 'Списък на свързаните редактори',
250
+    'info_login_existant' => 'Потребителското име вече съществува.',
251
+    'info_login_trop_court' => 'Потребителското име е твърде кратко.',
252
+    'info_maximum' => 'максимум:',
253
+    'info_meme_rubrique' => 'В същата рубрика',
254
+    'info_message_en_redaction' => 'Съобщения в процес на обработка',
255
+    'info_message_technique' => 'Техническо съобщение:',
256
+    'info_messagerie_interne' => 'Система за вътрешни съобщения',
257
+    'info_mise_a_niveau_base' => 'Актуализиране на базата данни SQL',
258
+    'info_mise_a_niveau_base_2' => '{{Предупреждение!}} Инсталираната версия на СПИП
259 259
  е по-стара от тази, показана на този сайт
260 260
   Има риск за изгубване на данни, както и Вашият сайт да
261 261
   спре да работи.<br />{{Преинсталирай
262 262
   файловете на СПИП.}}',
263
-	'info_modifier_rubrique' => 'Промяна на настройките на рубриката:',
264
-	'info_modifier_titre' => 'Промяна: @titre@',
265
-	'info_mon_site_spip' => 'Моят сайт под СПИП',
266
-	'info_moyenne' => 'средно:',
267
-	'info_multi_cet_article' => 'Език на статията:',
268
-	'info_multi_langues_choisies' => 'Изберете по-долу езиците, които желаете да са активни за редакторите на сайта.
263
+    'info_modifier_rubrique' => 'Промяна на настройките на рубриката:',
264
+    'info_modifier_titre' => 'Промяна: @titre@',
265
+    'info_mon_site_spip' => 'Моят сайт под СПИП',
266
+    'info_moyenne' => 'средно:',
267
+    'info_multi_cet_article' => 'Език на статията:',
268
+    'info_multi_langues_choisies' => 'Изберете по-долу езиците, които желаете да са активни за редакторите на сайта.
269 269
   Езиците, които вече са използвани в сайта (в началото на списъка) не могат да бъдат деактивирани.',
270
-	'info_multi_secteurs' => ' ... само за рубрики, намиращи се в схемата?',
271
-	'info_nom' => 'Име',
272
-	'info_nom_destinataire' => 'Име на получателя',
273
-	'info_nom_site' => 'Име на сайта Ви',
274
-	'info_nombre_articles' => '@nb_articles@ статии,',
275
-	'info_nombre_rubriques' => '@nb_rubriques@ рубрики,',
276
-	'info_nombre_sites' => '@nb_sites@ сайтове,',
277
-	'info_non_deplacer' => 'Не правете нищо...',
278
-	'info_non_envoi_annonce_dernieres_nouveautes' => 'СПИП може да изпраща регулярно информация за новостите на сайта.
270
+    'info_multi_secteurs' => ' ... само за рубрики, намиращи се в схемата?',
271
+    'info_nom' => 'Име',
272
+    'info_nom_destinataire' => 'Име на получателя',
273
+    'info_nom_site' => 'Име на сайта Ви',
274
+    'info_nombre_articles' => '@nb_articles@ статии,',
275
+    'info_nombre_rubriques' => '@nb_rubriques@ рубрики,',
276
+    'info_nombre_sites' => '@nb_sites@ сайтове,',
277
+    'info_non_deplacer' => 'Не правете нищо...',
278
+    'info_non_envoi_annonce_dernieres_nouveautes' => 'СПИП може да изпраща регулярно информация за новостите на сайта.
279 279
   (напр. съобщения за наскоро публикуваните статии и новини).',
280
-	'info_non_envoi_liste_nouveautes' => 'Бе изпращане на списък с най-новите съобщения',
281
-	'info_non_modifiable' => 'промяната е невъзможна',
282
-	'info_non_suppression_mot_cle' => 'Отказ от изтриване на ключовата дума.',
283
-	'info_notes' => 'Бележки под линия',
284
-	'info_nouvel_article' => 'Нова статия',
285
-	'info_nouvelle_traduction' => 'Нов превод:',
286
-	'info_numero_article' => 'НОМЕР НА СТАТИЯТА:',
287
-	'info_obligatoire_02' => '[Задължително]', # MODIF
288
-	'info_option_accepter_visiteurs' => 'Позволяване регистрацията на посетители от публичния сайт',
289
-	'info_option_ne_pas_accepter_visiteurs' => 'Отказ за регистрация на посетител',
290
-	'info_options_avancees' => 'ПОДРОБНИ ОПЦИИ',
291
-	'info_ou' => 'или ...',
292
-	'info_page_interdite' => 'Забранена страница',
293
-	'info_par_nombre_article' => '(по номер на статията)',
294
-	'info_passe_trop_court' => 'Паролата не е достатъчно дълга.',
295
-	'info_passes_identiques' => 'Двете пароли не съвадат.',
296
-	'info_plus_cinq_car' => 'повече от 5 знака',
297
-	'info_plus_cinq_car_2' => '(повече от 5 знака)',
298
-	'info_plus_trois_car' => '(повече от 3 знака)',
299
-	'info_popularite' => 'популярност: @popularite@; посещения: @visites@',
300
-	'info_post_scriptum' => 'Постскриптум',
301
-	'info_post_scriptum_2' => 'Постскриптум:',
302
-	'info_pour' => 'за',
303
-	'info_preview_texte' => 'Възможно е да се прави предварителен преглед на сайта все едно, че всички статии и новини (които имат статус "изпратени") са вече публикувани. Да бъде ли даден достъп към тази функция на администраторите само, да бъде ли възможна за всички автори на сайта или да бъде изключена напълно?', # MODIF
304
-	'info_procedez_par_etape' => 'моля, продължете напред стъпка по стъпка',
305
-	'info_procedure_maj_version' => 'процедурата по обновяване трябва да се стартира,
280
+    'info_non_envoi_liste_nouveautes' => 'Бе изпращане на списък с най-новите съобщения',
281
+    'info_non_modifiable' => 'промяната е невъзможна',
282
+    'info_non_suppression_mot_cle' => 'Отказ от изтриване на ключовата дума.',
283
+    'info_notes' => 'Бележки под линия',
284
+    'info_nouvel_article' => 'Нова статия',
285
+    'info_nouvelle_traduction' => 'Нов превод:',
286
+    'info_numero_article' => 'НОМЕР НА СТАТИЯТА:',
287
+    'info_obligatoire_02' => '[Задължително]', # MODIF
288
+    'info_option_accepter_visiteurs' => 'Позволяване регистрацията на посетители от публичния сайт',
289
+    'info_option_ne_pas_accepter_visiteurs' => 'Отказ за регистрация на посетител',
290
+    'info_options_avancees' => 'ПОДРОБНИ ОПЦИИ',
291
+    'info_ou' => 'или ...',
292
+    'info_page_interdite' => 'Забранена страница',
293
+    'info_par_nombre_article' => '(по номер на статията)',
294
+    'info_passe_trop_court' => 'Паролата не е достатъчно дълга.',
295
+    'info_passes_identiques' => 'Двете пароли не съвадат.',
296
+    'info_plus_cinq_car' => 'повече от 5 знака',
297
+    'info_plus_cinq_car_2' => '(повече от 5 знака)',
298
+    'info_plus_trois_car' => '(повече от 3 знака)',
299
+    'info_popularite' => 'популярност: @popularite@; посещения: @visites@',
300
+    'info_post_scriptum' => 'Постскриптум',
301
+    'info_post_scriptum_2' => 'Постскриптум:',
302
+    'info_pour' => 'за',
303
+    'info_preview_texte' => 'Възможно е да се прави предварителен преглед на сайта все едно, че всички статии и новини (които имат статус "изпратени") са вече публикувани. Да бъде ли даден достъп към тази функция на администраторите само, да бъде ли възможна за всички автори на сайта или да бъде изключена напълно?', # MODIF
304
+    'info_procedez_par_etape' => 'моля, продължете напред стъпка по стъпка',
305
+    'info_procedure_maj_version' => 'процедурата по обновяване трябва да се стартира,
306 306
  за да може базата данни да се адаптира към новата версия на СПИП.',
307
-	'info_ps' => 'П.С. ',
308
-	'info_publier' => 'публикуване',
309
-	'info_publies' => 'Вашите публикувани статии',
310
-	'info_question_accepter_visiteurs' => 'Ако шаблоните на сайта Ви позволяват посетителите да се регистират без да влизат в личната зона, активирайте следната опция:',
311
-	'info_question_inscription_nouveaux_redacteurs' => 'Позволявате ли регистрацията на нови редактори от
307
+    'info_ps' => 'П.С. ',
308
+    'info_publier' => 'публикуване',
309
+    'info_publies' => 'Вашите публикувани статии',
310
+    'info_question_accepter_visiteurs' => 'Ако шаблоните на сайта Ви позволяват посетителите да се регистират без да влизат в личната зона, активирайте следната опция:',
311
+    'info_question_inscription_nouveaux_redacteurs' => 'Позволявате ли регистрацията на нови редактори от
312 312
   публикувания сайт. Ако сте съгласни, посетителите трябва да се
313 313
   регистрират през автоматичната форма, за да имат достъп до личната зона и
314 314
   да предложат свои собствени статии. <blockquote><i>По време на регистрацията
@@ -317,208 +317,208 @@  discard block
 block discarded – undo
317 317
   доставчици спират съобщения, изпратени
318 318
   до техни сървъри: в този случай автоматичната регистрация
319 319
   не би могла да се осъществи.', # MODIF
320
-	'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes', # MODIF
321
-	'info_racine_site' => 'Схема на сайта',
322
-	'info_recharger_page' => 'Моля, презаредете страницата след малко.',
323
-	'info_recherche_auteur_zero' => 'Няма намерени резултати за „@cherche_auteur@“.',
324
-	'info_recommencer' => 'Моля, опитайте отново.',
325
-	'info_redacteur_1' => 'Редактор',
326
-	'info_redacteur_2' => 'достъп до личната зона(<i>препоръчително</i>)',
327
-	'info_redacteurs' => 'Редактори',
328
-	'info_redaction_en_cours' => 'В ХОД Е ПИСАНЕ',
329
-	'info_redirection' => 'Пренасочване',
330
-	'info_refuses' => 'Вашите отхвърлени статии',
331
-	'info_reglage_ldap' => 'Опции: <b>Приспособяване на вписването чрез LDAP</b>',
332
-	'info_renvoi_article' => '<b>Пренасочване.</b> Статията се отнася към страница:',
333
-	'info_reserve_admin' => 'Този адрес може да се променя само от администратори.',
334
-	'info_restreindre_rubrique' => 'Забрана за управление на рубриката:',
335
-	'info_resultat_recherche' => 'Намерени резултати:',
336
-	'info_rubriques' => 'Рубрики',
337
-	'info_rubriques_02' => 'рубрики',
338
-	'info_rubriques_trouvees' => 'Намерени рубрики',
339
-	'info_sans_titre' => 'Без заглавие',
340
-	'info_selection_chemin_acces' => '<b>Изберете</b> по-долу път за достъп в директорията:',
341
-	'info_signatures' => 'подписи',
342
-	'info_site' => 'Сайт',
343
-	'info_site_2' => 'сайт:',
344
-	'info_site_min' => 'сайт',
345
-	'info_site_reference_2' => 'Свързан сайт',
346
-	'info_site_web' => 'ИНТЕРНЕТ САЙТ:', # MODIF
347
-	'info_sites' => 'сайтове',
348
-	'info_sites_lies_mot' => 'Свързани сайтове, асоциирани с ключовата дума',
349
-	'info_sites_proxy' => 'Използване на прокси',
350
-	'info_sites_trouves' => 'Намерени сайтове',
351
-	'info_sous_titre' => 'Подзаглавие:',
352
-	'info_statut_administrateur' => 'Администратор',
353
-	'info_statut_auteur' => 'Статус на автора:', # MODIF
354
-	'info_statut_auteur_a_confirmer' => 'Регистрация, предстояща за потвърждение',
355
-	'info_statut_auteur_autre' => 'Друг статус:',
356
-	'info_statut_redacteur' => 'Редактор',
357
-	'info_statut_utilisateurs_1' => 'Статус "по подразбиране" на вписаните потребители',
358
-	'info_statut_utilisateurs_2' => 'Изберете статус за хората, вписани в LDAP-директорията при свързването им за първи път. По-късно ще можете да променяте тази характеристика за всеки автор по отделно.',
359
-	'info_suivi_activite' => 'Дейности на редакторите',
360
-	'info_surtitre' => 'Челно заглавие:',
361
-	'info_syndication_integrale_1' => 'Сайтът Ви предлага файлове за обединение (вж “<a href="@url@">@titre@</a>“).',
362
-	'info_syndication_integrale_2' => 'Желаете ли да изпратите цели статии или само резюме от няколко стотин знака?',
363
-	'info_taille_maximale_vignette' => 'Максимален размер на винетките, който е генериран от системата:',
364
-	'info_terminer_installation' => 'Сега можете да приключите с процеса по стандартна инсталация.',
365
-	'info_texte' => 'Текст',
366
-	'info_texte_explicatif' => 'Обяснителен текст',
367
-	'info_texte_long' => '(текстът е прекалено дълъг: той ще се появи в няколко части, които ще бъдат събрани след одобрението.)',
368
-	'info_texte_message' => 'Текст на съобщението:', # MODIF
369
-	'info_texte_message_02' => 'Текст на съобщение',
370
-	'info_titre' => 'Заглавие:',
371
-	'info_total' => 'общо:',
372
-	'info_tous_articles_en_redaction' => 'Всички статии в процес на обработка',
373
-	'info_tous_articles_presents' => 'Всички статии в рубриката',
374
-	'info_tous_les' => 'всички:',
375
-	'info_tout_site' => 'Целият сайт',
376
-	'info_tout_site2' => 'Статията не е преведена на дадения език.',
377
-	'info_tout_site3' => 'Статията е преведена на дадения език, но след това са направени промени в основната статия. Преводът изисква актуализация.',
378
-	'info_tout_site4' => 'Статията е преведена на дадения език, а преводът - актуализиран.',
379
-	'info_tout_site5' => 'Оригинална статия.',
380
-	'info_tout_site6' => '<b>Предупреждение:</b> показани са само оригинални статии.
320
+    'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes', # MODIF
321
+    'info_racine_site' => 'Схема на сайта',
322
+    'info_recharger_page' => 'Моля, презаредете страницата след малко.',
323
+    'info_recherche_auteur_zero' => 'Няма намерени резултати за „@cherche_auteur@“.',
324
+    'info_recommencer' => 'Моля, опитайте отново.',
325
+    'info_redacteur_1' => 'Редактор',
326
+    'info_redacteur_2' => 'достъп до личната зона(<i>препоръчително</i>)',
327
+    'info_redacteurs' => 'Редактори',
328
+    'info_redaction_en_cours' => 'В ХОД Е ПИСАНЕ',
329
+    'info_redirection' => 'Пренасочване',
330
+    'info_refuses' => 'Вашите отхвърлени статии',
331
+    'info_reglage_ldap' => 'Опции: <b>Приспособяване на вписването чрез LDAP</b>',
332
+    'info_renvoi_article' => '<b>Пренасочване.</b> Статията се отнася към страница:',
333
+    'info_reserve_admin' => 'Този адрес може да се променя само от администратори.',
334
+    'info_restreindre_rubrique' => 'Забрана за управление на рубриката:',
335
+    'info_resultat_recherche' => 'Намерени резултати:',
336
+    'info_rubriques' => 'Рубрики',
337
+    'info_rubriques_02' => 'рубрики',
338
+    'info_rubriques_trouvees' => 'Намерени рубрики',
339
+    'info_sans_titre' => 'Без заглавие',
340
+    'info_selection_chemin_acces' => '<b>Изберете</b> по-долу път за достъп в директорията:',
341
+    'info_signatures' => 'подписи',
342
+    'info_site' => 'Сайт',
343
+    'info_site_2' => 'сайт:',
344
+    'info_site_min' => 'сайт',
345
+    'info_site_reference_2' => 'Свързан сайт',
346
+    'info_site_web' => 'ИНТЕРНЕТ САЙТ:', # MODIF
347
+    'info_sites' => 'сайтове',
348
+    'info_sites_lies_mot' => 'Свързани сайтове, асоциирани с ключовата дума',
349
+    'info_sites_proxy' => 'Използване на прокси',
350
+    'info_sites_trouves' => 'Намерени сайтове',
351
+    'info_sous_titre' => 'Подзаглавие:',
352
+    'info_statut_administrateur' => 'Администратор',
353
+    'info_statut_auteur' => 'Статус на автора:', # MODIF
354
+    'info_statut_auteur_a_confirmer' => 'Регистрация, предстояща за потвърждение',
355
+    'info_statut_auteur_autre' => 'Друг статус:',
356
+    'info_statut_redacteur' => 'Редактор',
357
+    'info_statut_utilisateurs_1' => 'Статус "по подразбиране" на вписаните потребители',
358
+    'info_statut_utilisateurs_2' => 'Изберете статус за хората, вписани в LDAP-директорията при свързването им за първи път. По-късно ще можете да променяте тази характеристика за всеки автор по отделно.',
359
+    'info_suivi_activite' => 'Дейности на редакторите',
360
+    'info_surtitre' => 'Челно заглавие:',
361
+    'info_syndication_integrale_1' => 'Сайтът Ви предлага файлове за обединение (вж “<a href="@url@">@titre@</a>“).',
362
+    'info_syndication_integrale_2' => 'Желаете ли да изпратите цели статии или само резюме от няколко стотин знака?',
363
+    'info_taille_maximale_vignette' => 'Максимален размер на винетките, който е генериран от системата:',
364
+    'info_terminer_installation' => 'Сега можете да приключите с процеса по стандартна инсталация.',
365
+    'info_texte' => 'Текст',
366
+    'info_texte_explicatif' => 'Обяснителен текст',
367
+    'info_texte_long' => '(текстът е прекалено дълъг: той ще се появи в няколко части, които ще бъдат събрани след одобрението.)',
368
+    'info_texte_message' => 'Текст на съобщението:', # MODIF
369
+    'info_texte_message_02' => 'Текст на съобщение',
370
+    'info_titre' => 'Заглавие:',
371
+    'info_total' => 'общо:',
372
+    'info_tous_articles_en_redaction' => 'Всички статии в процес на обработка',
373
+    'info_tous_articles_presents' => 'Всички статии в рубриката',
374
+    'info_tous_les' => 'всички:',
375
+    'info_tout_site' => 'Целият сайт',
376
+    'info_tout_site2' => 'Статията не е преведена на дадения език.',
377
+    'info_tout_site3' => 'Статията е преведена на дадения език, но след това са направени промени в основната статия. Преводът изисква актуализация.',
378
+    'info_tout_site4' => 'Статията е преведена на дадения език, а преводът - актуализиран.',
379
+    'info_tout_site5' => 'Оригинална статия.',
380
+    'info_tout_site6' => '<b>Предупреждение:</b> показани са само оригинални статии.
381 381
 Преводите са свързани с оригинала в цвят, посочващ техния статус:',
382
-	'info_traductions' => 'Преводи',
383
-	'info_travail_colaboratif' => 'Съвместна работа по статии',
384
-	'info_un_article' => 'една статия,',
385
-	'info_un_site' => 'сайт,',
386
-	'info_une_rubrique' => 'рубрика,',
387
-	'info_une_rubrique_02' => '1 рубрика',
388
-	'info_url' => 'URL:',
389
-	'info_urlref' => 'Препратка в хипертекст:',
390
-	'info_utilisation_spip' => 'СПИП вече е готов за използване.',
391
-	'info_visites_par_mois' => 'Месечен дисплей:',
392
-	'info_visiteur_1' => 'Посетител',
393
-	'info_visiteur_2' => 'публичен сайт',
394
-	'info_visiteurs' => 'Посетители',
395
-	'info_visiteurs_02' => 'Посетители на публичния сайт',
396
-	'install_echec_annonce' => 'Инсталацията Ви вероятно няма да проработи или сайтът, който правите ще даде лош резултат...',
397
-	'install_extension_mbstring' => 'СПИП не работи с:',
398
-	'install_extension_php_obligatoire' => 'СПИП изисква разширение от типа php:',
399
-	'install_select_langue' => 'Изберете език и след това натиснете бутон „по-нататък“, за да стартирате процедурата по инсталацията.',
400
-	'intem_redacteur' => 'редактор',
401
-	'item_accepter_inscriptions' => 'Позволяване на регистрации',
402
-	'item_activer_messages_avertissement' => 'Активиране на предупредителни съобщения',
403
-	'item_administrateur_2' => 'администратор',
404
-	'item_afficher_calendrier' => 'Показване в календара',
405
-	'item_autoriser_syndication_integrale' => 'Включване на цели статии във файловете за обединяване',
406
-	'item_choix_administrateurs' => 'администратори',
407
-	'item_choix_generation_miniature' => 'Автоматично генериране на умалени образи.',
408
-	'item_choix_non_generation_miniature' => 'Без генериране на умалени образи.',
409
-	'item_choix_redacteurs' => 'редактори',
410
-	'item_choix_visiteurs' => 'посетители на публичния сайт',
411
-	'item_creer_fichiers_authent' => 'Създаване на файлове от типа .htpasswd',
412
-	'item_login' => 'Потребителско име',
413
-	'item_mots_cles_association_articles' => 'статиите',
414
-	'item_mots_cles_association_rubriques' => 'рубриките',
415
-	'item_mots_cles_association_sites' => 'свързаните или обединени сайтове.',
416
-	'item_non' => 'Не',
417
-	'item_non_accepter_inscriptions' => 'Забрана на регистрации',
418
-	'item_non_activer_messages_avertissement' => 'Без предупредителни съобщения',
419
-	'item_non_afficher_calendrier' => 'Без показване в календара',
420
-	'item_non_autoriser_syndication_integrale' => 'Изпращане на резюме',
421
-	'item_non_creer_fichiers_authent' => 'Забрана за създаване на файловете',
422
-	'item_non_publier_articles' => 'Забраняване публикуването на статии преди техните дати на публикуване.',
423
-	'item_nouvel_auteur' => 'Нов автор',
424
-	'item_nouvelle_rubrique' => 'Нова рубрика',
425
-	'item_oui' => 'Да',
426
-	'item_publier_articles' => 'Публикуване на статиите независимо от техните дати на публикуване.',
427
-	'item_reponse_article' => 'Отговор на статията',
428
-	'item_visiteur' => 'посетител',
382
+    'info_traductions' => 'Преводи',
383
+    'info_travail_colaboratif' => 'Съвместна работа по статии',
384
+    'info_un_article' => 'една статия,',
385
+    'info_un_site' => 'сайт,',
386
+    'info_une_rubrique' => 'рубрика,',
387
+    'info_une_rubrique_02' => '1 рубрика',
388
+    'info_url' => 'URL:',
389
+    'info_urlref' => 'Препратка в хипертекст:',
390
+    'info_utilisation_spip' => 'СПИП вече е готов за използване.',
391
+    'info_visites_par_mois' => 'Месечен дисплей:',
392
+    'info_visiteur_1' => 'Посетител',
393
+    'info_visiteur_2' => 'публичен сайт',
394
+    'info_visiteurs' => 'Посетители',
395
+    'info_visiteurs_02' => 'Посетители на публичния сайт',
396
+    'install_echec_annonce' => 'Инсталацията Ви вероятно няма да проработи или сайтът, който правите ще даде лош резултат...',
397
+    'install_extension_mbstring' => 'СПИП не работи с:',
398
+    'install_extension_php_obligatoire' => 'СПИП изисква разширение от типа php:',
399
+    'install_select_langue' => 'Изберете език и след това натиснете бутон „по-нататък“, за да стартирате процедурата по инсталацията.',
400
+    'intem_redacteur' => 'редактор',
401
+    'item_accepter_inscriptions' => 'Позволяване на регистрации',
402
+    'item_activer_messages_avertissement' => 'Активиране на предупредителни съобщения',
403
+    'item_administrateur_2' => 'администратор',
404
+    'item_afficher_calendrier' => 'Показване в календара',
405
+    'item_autoriser_syndication_integrale' => 'Включване на цели статии във файловете за обединяване',
406
+    'item_choix_administrateurs' => 'администратори',
407
+    'item_choix_generation_miniature' => 'Автоматично генериране на умалени образи.',
408
+    'item_choix_non_generation_miniature' => 'Без генериране на умалени образи.',
409
+    'item_choix_redacteurs' => 'редактори',
410
+    'item_choix_visiteurs' => 'посетители на публичния сайт',
411
+    'item_creer_fichiers_authent' => 'Създаване на файлове от типа .htpasswd',
412
+    'item_login' => 'Потребителско име',
413
+    'item_mots_cles_association_articles' => 'статиите',
414
+    'item_mots_cles_association_rubriques' => 'рубриките',
415
+    'item_mots_cles_association_sites' => 'свързаните или обединени сайтове.',
416
+    'item_non' => 'Не',
417
+    'item_non_accepter_inscriptions' => 'Забрана на регистрации',
418
+    'item_non_activer_messages_avertissement' => 'Без предупредителни съобщения',
419
+    'item_non_afficher_calendrier' => 'Без показване в календара',
420
+    'item_non_autoriser_syndication_integrale' => 'Изпращане на резюме',
421
+    'item_non_creer_fichiers_authent' => 'Забрана за създаване на файловете',
422
+    'item_non_publier_articles' => 'Забраняване публикуването на статии преди техните дати на публикуване.',
423
+    'item_nouvel_auteur' => 'Нов автор',
424
+    'item_nouvelle_rubrique' => 'Нова рубрика',
425
+    'item_oui' => 'Да',
426
+    'item_publier_articles' => 'Публикуване на статиите независимо от техните дати на публикуване.',
427
+    'item_reponse_article' => 'Отговор на статията',
428
+    'item_visiteur' => 'посетител',
429 429
 
430
-	// J
431
-	'jour_non_connu_nc' => 'непознат',
430
+    // J
431
+    'jour_non_connu_nc' => 'непознат',
432 432
 
433
-	// L
434
-	'lien_ajouter_auteur' => 'Добавяне на автора',
435
-	'lien_email' => 'Електронен адрес',
436
-	'lien_nom_site' => 'ИМЕ НА САЙТА:',
437
-	'lien_retirer_auteur' => 'Премахване на автор',
438
-	'lien_site' => 'сайт',
439
-	'lien_tout_deplier' => 'Разширяване на всички',
440
-	'lien_tout_replier' => 'Разтваряне на всички',
441
-	'lien_trier_nom' => 'Подреждане по име',
442
-	'lien_trier_nombre_articles' => 'Подреждане по номер на статията',
443
-	'lien_trier_statut' => 'Подреждане по статус',
444
-	'lien_voir_en_ligne' => 'ИЗГЛЕД НА САЙТА:',
445
-	'logo_article' => 'ЛОГО НА СТАТИЯТА', # MODIF
446
-	'logo_auteur' => 'ЛОГО НА АВТОРА', # MODIF
447
-	'logo_rubrique' => 'ЛОГО НА РУБРИКАТА', # MODIF
448
-	'logo_site' => 'ЛОГО НА САЙТА', # MODIF
449
-	'logo_standard_rubrique' => 'СТАНДАРТНО ЛОГО ЗА РУБРИКИ', # MODIF
450
-	'logo_survol' => 'АЛТЕРНАТИВНО ЛОГО', # MODIF
433
+    // L
434
+    'lien_ajouter_auteur' => 'Добавяне на автора',
435
+    'lien_email' => 'Електронен адрес',
436
+    'lien_nom_site' => 'ИМЕ НА САЙТА:',
437
+    'lien_retirer_auteur' => 'Премахване на автор',
438
+    'lien_site' => 'сайт',
439
+    'lien_tout_deplier' => 'Разширяване на всички',
440
+    'lien_tout_replier' => 'Разтваряне на всички',
441
+    'lien_trier_nom' => 'Подреждане по име',
442
+    'lien_trier_nombre_articles' => 'Подреждане по номер на статията',
443
+    'lien_trier_statut' => 'Подреждане по статус',
444
+    'lien_voir_en_ligne' => 'ИЗГЛЕД НА САЙТА:',
445
+    'logo_article' => 'ЛОГО НА СТАТИЯТА', # MODIF
446
+    'logo_auteur' => 'ЛОГО НА АВТОРА', # MODIF
447
+    'logo_rubrique' => 'ЛОГО НА РУБРИКАТА', # MODIF
448
+    'logo_site' => 'ЛОГО НА САЙТА', # MODIF
449
+    'logo_standard_rubrique' => 'СТАНДАРТНО ЛОГО ЗА РУБРИКИ', # MODIF
450
+    'logo_survol' => 'АЛТЕРНАТИВНО ЛОГО', # MODIF
451 451
 
452
-	// M
453
-	'menu_aide_installation_choix_base' => 'Избор на база данни',
454
-	'module_fichier_langue' => 'Езиков файл',
455
-	'module_raccourci' => 'Кратка команда',
456
-	'module_texte_affiche' => 'Показан текст',
457
-	'module_texte_explicatif' => 'Можете да впишете следните кратки команди в шаблоните на сайта си. Те ще бъдат автоматично преведени на различни езици, за които има езиков файл.',
458
-	'module_texte_traduction' => 'Езиковият файл ,, @module@ ’’ е достъпен на:',
459
-	'mois_non_connu' => 'непознат',
452
+    // M
453
+    'menu_aide_installation_choix_base' => 'Избор на база данни',
454
+    'module_fichier_langue' => 'Езиков файл',
455
+    'module_raccourci' => 'Кратка команда',
456
+    'module_texte_affiche' => 'Показан текст',
457
+    'module_texte_explicatif' => 'Можете да впишете следните кратки команди в шаблоните на сайта си. Те ще бъдат автоматично преведени на различни езици, за които има езиков файл.',
458
+    'module_texte_traduction' => 'Езиковият файл ,, @module@ ’’ е достъпен на:',
459
+    'mois_non_connu' => 'непознат',
460 460
 
461
-	// O
462
-	'onglet_repartition_actuelle' => 'сега',
461
+    // O
462
+    'onglet_repartition_actuelle' => 'сега',
463 463
 
464
-	// P
465
-	'plugin_etat_developpement' => 'в развитие',
466
-	'plugin_etat_experimental' => 'експериментален',
467
-	'plugin_etat_stable' => 'стабилен',
468
-	'plugin_etat_test' => 'в процес на тестване',
469
-	'plugins_liste' => 'Списък с плъгини',
464
+    // P
465
+    'plugin_etat_developpement' => 'в развитие',
466
+    'plugin_etat_experimental' => 'експериментален',
467
+    'plugin_etat_stable' => 'стабилен',
468
+    'plugin_etat_test' => 'в процес на тестване',
469
+    'plugins_liste' => 'Списък с плъгини',
470 470
 
471
-	// R
472
-	'repertoire_plugins' => 'Директория:',
473
-	'required' => '[Задължително]', # MODIF
471
+    // R
472
+    'repertoire_plugins' => 'Директория:',
473
+    'required' => '[Задължително]', # MODIF
474 474
 
475
-	// S
476
-	'statut_admin_restreint' => '(ограничен администратор)', # MODIF
475
+    // S
476
+    'statut_admin_restreint' => '(ограничен администратор)', # MODIF
477 477
 
478
-	// T
479
-	'taille_cache_image' => 'Изображенията, изчислени автоматично от СПИП (умалени изображения, заглавия, преобразени в графики, математически формули в TeX формат и др.) заемат общо @taille@ в директорията @dir@.',
480
-	'taille_cache_infinie' => 'Този сайт няма фиксиран лимит за размера на <code>CACHE/</code> директорията.',
481
-	'taille_cache_maxi' => 'СПИП се опитва да намали размера на данните в  <code>CACHE/</code> директорията до около  <b>@octets@</b>.',
482
-	'taille_cache_octets' => 'Размерът на кеш-паметта в момента е @octets@.', # MODIF
483
-	'taille_cache_vide' => 'Кеш-паметта е празна.',
484
-	'taille_repertoire_cache' => 'Размер на кеш-паметта в момента',
485
-	'text_article_propose_publication' => 'Изпратена е статия със заявка за публикуване. Не се колебайте да дадете мнението си за нея във форума, който е прикрепен към нея (най-долу на страницата).', # MODIF
486
-	'texte_acces_ldap_anonyme_1' => 'Някои LDAP-сървъри не позволяват анонимен достъп. В такива случаи, за да можете да правите справка в директорията, трябва да използвате началното си потребителско име за достъп. Въпреки това, в повечето случаи можете да оставяте следните полета празни. ',
487
-	'texte_admin_effacer_01' => 'Тази команда изтрива <i>цялото</i> съдържание в базата данни,
478
+    // T
479
+    'taille_cache_image' => 'Изображенията, изчислени автоматично от СПИП (умалени изображения, заглавия, преобразени в графики, математически формули в TeX формат и др.) заемат общо @taille@ в директорията @dir@.',
480
+    'taille_cache_infinie' => 'Този сайт няма фиксиран лимит за размера на <code>CACHE/</code> директорията.',
481
+    'taille_cache_maxi' => 'СПИП се опитва да намали размера на данните в  <code>CACHE/</code> директорията до около  <b>@octets@</b>.',
482
+    'taille_cache_octets' => 'Размерът на кеш-паметта в момента е @octets@.', # MODIF
483
+    'taille_cache_vide' => 'Кеш-паметта е празна.',
484
+    'taille_repertoire_cache' => 'Размер на кеш-паметта в момента',
485
+    'text_article_propose_publication' => 'Изпратена е статия със заявка за публикуване. Не се колебайте да дадете мнението си за нея във форума, който е прикрепен към нея (най-долу на страницата).', # MODIF
486
+    'texte_acces_ldap_anonyme_1' => 'Някои LDAP-сървъри не позволяват анонимен достъп. В такива случаи, за да можете да правите справка в директорията, трябва да използвате началното си потребителско име за достъп. Въпреки това, в повечето случаи можете да оставяте следните полета празни. ',
487
+    'texte_admin_effacer_01' => 'Тази команда изтрива <i>цялото</i> съдържание в базата данни,
488 488
 включително <i>всички</i> параметри за достъп за редактори и администратори. След нейното изпълнение, трябва
489 489
 да се преинсталира СПИП, за да се създаде нова база данни и първи администраторски достъп.',
490
-	'texte_adresse_annuaire_1' => '( Ако директорията Ви е инсталирана на същата машина, на която и Интернет сайта, вероятно е «localhost».)',
491
-	'texte_ajout_auteur' => 'Следният автор бе добавен към статията:',
492
-	'texte_annuaire_ldap_1' => 'Ако разполагате с достъп до (LDAP) директория, можете да я използвате, за да вписвате автоматично потребители в СПИП.',
493
-	'texte_article_statut' => 'Статията е:',
494
-	'texte_article_virtuel' => 'Виртуална статия',
495
-	'texte_article_virtuel_reference' => '<b>Виртуална статия:</b> свързана статия на Вашия СПИП сайт, която се пренасочва към друг URL адрес. За да премахнете пренасочването, изтрийте горепосочения URL.',
496
-	'texte_aucun_resultat_auteur' => 'Няма намерен разултат за „@cherche_auteur@“.',
497
-	'texte_auteur_messagerie' => 'Сайт може продължително да следи списъка от свързани редактори, което позволява изпращането та съобщения в реално време (ако съобщението е забранено по-горе, тогава целият списък от редактори е забранен). Вие можете да решите да не се появявате в този списък (т.е. да сте „невидим“ за останалите потребители).',
498
-	'texte_auteurs' => 'АВТОРИТЕ',
499
-	'texte_choix_base_1' => 'Изберете база данни:',
500
-	'texte_choix_base_2' => 'Сървърът SQL съдържа няколко бази данни.',
501
-	'texte_choix_base_3' => '<b>Изберете</b> по-долу това, което доставчикът Ви e разрешил:',
502
-	'texte_compte_element' => '@count@ елемент',
503
-	'texte_compte_elements' => '@count@ елементи',
504
-	'texte_connexion_mysql' => 'Погледнете информацията, предоставена от доставчика Ви: ако доставчикът ви поддържа SQL, трябва да са дадени кодовете за връзка със сървъра SQL.', # MODIF
505
-	'texte_contenu_article' => '(Съдържание на статията с няколко думи.)',
506
-	'texte_contenu_articles' => 'Въз основа на оформлението на сайта Ви, може да решите
490
+    'texte_adresse_annuaire_1' => '( Ако директорията Ви е инсталирана на същата машина, на която и Интернет сайта, вероятно е «localhost».)',
491
+    'texte_ajout_auteur' => 'Следният автор бе добавен към статията:',
492
+    'texte_annuaire_ldap_1' => 'Ако разполагате с достъп до (LDAP) директория, можете да я използвате, за да вписвате автоматично потребители в СПИП.',
493
+    'texte_article_statut' => 'Статията е:',
494
+    'texte_article_virtuel' => 'Виртуална статия',
495
+    'texte_article_virtuel_reference' => '<b>Виртуална статия:</b> свързана статия на Вашия СПИП сайт, която се пренасочва към друг URL адрес. За да премахнете пренасочването, изтрийте горепосочения URL.',
496
+    'texte_aucun_resultat_auteur' => 'Няма намерен разултат за „@cherche_auteur@“.',
497
+    'texte_auteur_messagerie' => 'Сайт може продължително да следи списъка от свързани редактори, което позволява изпращането та съобщения в реално време (ако съобщението е забранено по-горе, тогава целият списък от редактори е забранен). Вие можете да решите да не се появявате в този списък (т.е. да сте „невидим“ за останалите потребители).',
498
+    'texte_auteurs' => 'АВТОРИТЕ',
499
+    'texte_choix_base_1' => 'Изберете база данни:',
500
+    'texte_choix_base_2' => 'Сървърът SQL съдържа няколко бази данни.',
501
+    'texte_choix_base_3' => '<b>Изберете</b> по-долу това, което доставчикът Ви e разрешил:',
502
+    'texte_compte_element' => '@count@ елемент',
503
+    'texte_compte_elements' => '@count@ елементи',
504
+    'texte_connexion_mysql' => 'Погледнете информацията, предоставена от доставчика Ви: ако доставчикът ви поддържа SQL, трябва да са дадени кодовете за връзка със сървъра SQL.', # MODIF
505
+    'texte_contenu_article' => '(Съдържание на статията с няколко думи.)',
506
+    'texte_contenu_articles' => 'Въз основа на оформлението на сайта Ви, може да решите
507 507
   да не използвате някои елементи на статиите.
508 508
   Използвайте този списък, за да изберете кои елементи искате да направите активни.',
509
-	'texte_crash_base' => 'Ако Вашата база данни
509
+    'texte_crash_base' => 'Ако Вашата база данни
510 510
    блокира, можете да се опитате да я поправите
511 511
    автоматично.',
512
-	'texte_creer_rubrique' => 'Преди да пишете статии,<br /> трябва да създадете рубрика.',
513
-	'texte_date_creation_article' => 'ДАТА НА СЪЗДАВАНЕ НА СТАТИЯТА:',
514
-	'texte_date_publication_anterieure' => 'Дата на предишно публикуване:',
515
-	'texte_date_publication_anterieure_nonaffichee' => 'Скриване датата на предишно публикуване.',
516
-	'texte_date_publication_article' => 'ДАТА НА ПУБЛИКУВАНЕ В ИНТЕРНЕТ:',
517
-	'texte_descriptif_rapide' => 'Кратко описание',
518
-	'texte_effacer_base' => 'Изтриване на базата данни СПИП',
519
-	'texte_en_cours_validation' => 'Изпратени са следните статии със заявка за публикуване. Не се колебайте да дадете мнението си за тях във форума, който е прикрепен към тях. ', # MODIF
520
-	'texte_enrichir_mise_a_jour' => 'Можете да обогатите външния вид на текста като използвате «Типографски кратки команди».',
521
-	'texte_fichier_authent' => '<b>Да създаде ли СПИП специални  <tt>.htpasswd</tt>
512
+    'texte_creer_rubrique' => 'Преди да пишете статии,<br /> трябва да създадете рубрика.',
513
+    'texte_date_creation_article' => 'ДАТА НА СЪЗДАВАНЕ НА СТАТИЯТА:',
514
+    'texte_date_publication_anterieure' => 'Дата на предишно публикуване:',
515
+    'texte_date_publication_anterieure_nonaffichee' => 'Скриване датата на предишно публикуване.',
516
+    'texte_date_publication_article' => 'ДАТА НА ПУБЛИКУВАНЕ В ИНТЕРНЕТ:',
517
+    'texte_descriptif_rapide' => 'Кратко описание',
518
+    'texte_effacer_base' => 'Изтриване на базата данни СПИП',
519
+    'texte_en_cours_validation' => 'Изпратени са следните статии със заявка за публикуване. Не се колебайте да дадете мнението си за тях във форума, който е прикрепен към тях. ', # MODIF
520
+    'texte_enrichir_mise_a_jour' => 'Можете да обогатите външния вид на текста като използвате «Типографски кратки команди».',
521
+    'texte_fichier_authent' => '<b>Да създаде ли СПИП специални  <tt>.htpasswd</tt>
522 522
   и <tt>.htpasswd-admin</tt> файлове в директорията@dossier@?</b><p>
523 523
   Тези файлове ще бъдат използвани за ограничаване достъпа на авторите
524 524
   и администраторите до други части на сайта
@@ -526,44 +526,44 @@  discard block
 block discarded – undo
526 526
   Ако не сте използвали такива файлове преди, можете да осигурите възможност
527 527
   за стойност "по подразбиране" (без 
528 528
   да се създават файлове).', # MODIF
529
-	'texte_informations_personnelles_1' => 'Системата сега ще създаде личен достъп до сайта. ',
530
-	'texte_informations_personnelles_2' => '(Забележка: ако това е преинсталация и достъпът Ви все още е активен, можете', # MODIF
531
-	'texte_introductif_article' => '(Въведение към статията.)',
532
-	'texte_jeu_caractere' => 'Препоръчваме да използвате на сайта универсална кодировка на знаците от азбуката (<tt>utf-8</tt>), за да може да се показва под формата на текст на всякакъв език. Никой от настоящите Интернет - навигатори нямат проблеми с нея. ',
533
-	'texte_jeu_caractere_3' => 'Настоящата кодировка на сайта е:',
534
-	'texte_jeu_caractere_4' => 'Ако това не отговаря на ситуацията, която имате с данните си (например след възстановяване на базата от данни от архива) или ако <em>правите настройка на сайта си в момента</em> и желаете да използвате различна кодировка на символите, моля да обозначите кодировката тук:',
535
-	'texte_login_ldap_1' => '(Оставете празно поле за потребител за анонимен достъп или попълнете пълния път за достъп, например «<tt>uid=smith, ou=users, dc=my-domain, dc=com</tt>».)',
536
-	'texte_login_precaution' => 'Внимание! Това е потребителското име, с което в момента сте се свързали.
529
+    'texte_informations_personnelles_1' => 'Системата сега ще създаде личен достъп до сайта. ',
530
+    'texte_informations_personnelles_2' => '(Забележка: ако това е преинсталация и достъпът Ви все още е активен, можете', # MODIF
531
+    'texte_introductif_article' => '(Въведение към статията.)',
532
+    'texte_jeu_caractere' => 'Препоръчваме да използвате на сайта универсална кодировка на знаците от азбуката (<tt>utf-8</tt>), за да може да се показва под формата на текст на всякакъв език. Никой от настоящите Интернет - навигатори нямат проблеми с нея. ',
533
+    'texte_jeu_caractere_3' => 'Настоящата кодировка на сайта е:',
534
+    'texte_jeu_caractere_4' => 'Ако това не отговаря на ситуацията, която имате с данните си (например след възстановяване на базата от данни от архива) или ако <em>правите настройка на сайта си в момента</em> и желаете да използвате различна кодировка на символите, моля да обозначите кодировката тук:',
535
+    'texte_login_ldap_1' => '(Оставете празно поле за потребител за анонимен достъп или попълнете пълния път за достъп, например «<tt>uid=smith, ou=users, dc=my-domain, dc=com</tt>».)',
536
+    'texte_login_precaution' => 'Внимание! Това е потребителското име, с което в момента сте се свързали.
537 537
  Предпазливо използвайте формата ...',
538
-	'texte_mise_a_niveau_base_1' => 'СПИП файловете са актуализирани.
538
+    'texte_mise_a_niveau_base_1' => 'СПИП файловете са актуализирани.
539 539
  Сега остава да обновите базата данни на
540 540
  сайта.',
541
-	'texte_modifier_article' => 'Промяна на статията:',
542
-	'texte_multilinguisme' => 'Ако желаете да боравите със статии на няколко езика с усложнена навигация, можете да добавите меню "избор на език" към статиите и/или към рубриките, в зависимост от организацията на сайта Ви.', # MODIF
543
-	'texte_multilinguisme_trad' => 'Също така, можете да активирате система за управление на препратките към различните преводи на статията.', # MODIF
544
-	'texte_non_compresse' => '<i>uncompressed</i> (сървърът ви не поддрържа това свойство)',
545
-	'texte_nouvelle_version_spip_1' => 'Току-що инсталирахте нова версия на СПИП.',
546
-	'texte_nouvelle_version_spip_2' => 'Тази нова версия налага по-сериозна от обикновената актуализация. Ако сте администратор на сайта, изтрийте файла <tt>inc_connect.php3</tt> от директория <tt>ecrire</tt> и стартирайте отново инсталацията, с цел да актуализирате параметрите на базата данни за връзка. <p>(NB: ако сте забравили параметрите на базата данни за връзка, погледнете следния файл <tt>inc_connect.php3</tt> преди да го изтриете).', # MODIF
547
-	'texte_operation_echec' => 'Върнете се на предишната страница, за да изберете друга база или да създадете нова. Потвърдете информацията, изпратена от Вашия доставчик. ',
548
-	'texte_plus_trois_car' => 'повече от 3 знака',
549
-	'texte_plusieurs_articles' => 'Бяха намерени няколко автора за „@cherche_auteur@“:',
550
-	'texte_port_annuaire' => '(Обичайната стойност е подходяща като цяло.)',
551
-	'texte_presente_plugin' => 'На тази страница са указани наличните на сайта плъгини. Активирайте тези от тях, които Ви трябват, чрез отбелязване в съответната кутийка.',
552
-	'texte_proposer_publication' => 'Когато напишете статията,<br /> можете да я изпратите за публикуване.',
553
-	'texte_proxy' => 'В някои случаи (интранет, защитени мрежи и др.),
541
+    'texte_modifier_article' => 'Промяна на статията:',
542
+    'texte_multilinguisme' => 'Ако желаете да боравите със статии на няколко езика с усложнена навигация, можете да добавите меню "избор на език" към статиите и/или към рубриките, в зависимост от организацията на сайта Ви.', # MODIF
543
+    'texte_multilinguisme_trad' => 'Също така, можете да активирате система за управление на препратките към различните преводи на статията.', # MODIF
544
+    'texte_non_compresse' => '<i>uncompressed</i> (сървърът ви не поддрържа това свойство)',
545
+    'texte_nouvelle_version_spip_1' => 'Току-що инсталирахте нова версия на СПИП.',
546
+    'texte_nouvelle_version_spip_2' => 'Тази нова версия налага по-сериозна от обикновената актуализация. Ако сте администратор на сайта, изтрийте файла <tt>inc_connect.php3</tt> от директория <tt>ecrire</tt> и стартирайте отново инсталацията, с цел да актуализирате параметрите на базата данни за връзка. <p>(NB: ако сте забравили параметрите на базата данни за връзка, погледнете следния файл <tt>inc_connect.php3</tt> преди да го изтриете).', # MODIF
547
+    'texte_operation_echec' => 'Върнете се на предишната страница, за да изберете друга база или да създадете нова. Потвърдете информацията, изпратена от Вашия доставчик. ',
548
+    'texte_plus_trois_car' => 'повече от 3 знака',
549
+    'texte_plusieurs_articles' => 'Бяха намерени няколко автора за „@cherche_auteur@“:',
550
+    'texte_port_annuaire' => '(Обичайната стойност е подходяща като цяло.)',
551
+    'texte_presente_plugin' => 'На тази страница са указани наличните на сайта плъгини. Активирайте тези от тях, които Ви трябват, чрез отбелязване в съответната кутийка.',
552
+    'texte_proposer_publication' => 'Когато напишете статията,<br /> можете да я изпратите за публикуване.',
553
+    'texte_proxy' => 'В някои случаи (интранет, защитени мрежи и др.),
554 554
   е нужно да се използва <i>HTTP прокси</i>, за да се достигне до обединените сайтове.
555 555
   Ако има прокси, впишете адрес му отдолу по следния начин
556 556
   <tt><html>http://proxy:8080</html></tt>. По принцип,
557 557
   това поле се оставя празно.',
558
-	'texte_publication_articles_post_dates' => 'Какво би трябвало да направи СПИП във връзка със статии,
558
+    'texte_publication_articles_post_dates' => 'Какво би трябвало да направи СПИП във връзка със статии,
559 559
   чиято публикация е зададена
560 560
   за бъдеща дата?',
561
-	'texte_rappel_selection_champs' => '[Не забравяйте да изберете правилното поле.]',
562
-	'texte_recalcul_page' => 'Ако желаете да
561
+    'texte_rappel_selection_champs' => '[Не забравяйте да изберете правилното поле.]',
562
+    'texte_recalcul_page' => 'Ако желаете да
563 563
 презаредите само една страница, по-добре направете това от публичната зона, като използвате « бутона "Презареждане" ».',
564
-	'texte_recuperer_base' => 'Поправка на базата данни',
565
-	'texte_reference_mais_redirige' => 'свързана статия на Вашия СПИП сайт, но пренасочена към друг URL адрес.',
566
-	'texte_requetes_echouent' => '<b>Когато някои SQL справки
564
+    'texte_recuperer_base' => 'Поправка на базата данни',
565
+    'texte_reference_mais_redirige' => 'свързана статия на Вашия СПИП сайт, но пренасочена към друг URL адрес.',
566
+    'texte_requetes_echouent' => '<b>Когато някои SQL справки
567 567
   системно и без налична причина заочнат да се развалят, възможно е
568 568
   базата данни сама да
569 569
   го прави.</b>
@@ -574,7 +574,7 @@  discard block
 block discarded – undo
574 574
   указания за това, което е развалено.
575 575
   <p>Ако проблемът все още е налице, обадете се
576 576
   на Вашия хост.', # MODIF
577
-	'texte_selection_langue_principale' => 'Посочете по-долу „основният език“ на сайта. За щастие, този избор не ограничава статиите Ви да бъдат написани на избран от Вас езит. Той позволявя да определите
577
+    'texte_selection_langue_principale' => 'Посочете по-долу „основният език“ на сайта. За щастие, този избор не ограничава статиите Ви да бъдат написани на избран от Вас езит. Той позволявя да определите
578 578
 
579 579
 <ul><li> формата „по подразбиране“ на данните в публичния сайт</li>
580 580
 
@@ -583,71 +583,71 @@  discard block
 block discarded – undo
583 583
 <li> езикът, който се използва във формите на публичния сайт</li>
584 584
 
585 585
 <li> езикът „по подразбиране“ на данните в личната зона.</li></ul>',
586
-	'texte_sous_titre' => 'Подзаглавие',
587
-	'texte_statistiques_visites' => '(тъмни ивици: неделя / тъмна крива: средно развитие)',
588
-	'texte_statut_attente_validation' => 'за одобрение',
589
-	'texte_statut_publies' => 'публикувани на сайта',
590
-	'texte_statut_refuses' => 'отхвърлени',
591
-	'texte_suppression_fichiers' => 'Тази команда служи за изтриване на всички
586
+    'texte_sous_titre' => 'Подзаглавие',
587
+    'texte_statistiques_visites' => '(тъмни ивици: неделя / тъмна крива: средно развитие)',
588
+    'texte_statut_attente_validation' => 'за одобрение',
589
+    'texte_statut_publies' => 'публикувани на сайта',
590
+    'texte_statut_refuses' => 'отхвърлени',
591
+    'texte_suppression_fichiers' => 'Тази команда служи за изтриване на всички
592 592
  файлове в кеш-паметта на СПИП. Това позволява да се актуализират принудително всички страници, в
593 593
  случаи, когато са направени важни изменения в графиките или структурата на сайта.',
594
-	'texte_sur_titre' => 'Челно заглавие',
595
-	'texte_table_ok' => ' : тази таблица е добра.',
596
-	'texte_tentative_recuperation' => 'Опит за поправка',
597
-	'texte_tenter_reparation' => 'Опит за поправка на базата данни',
598
-	'texte_test_proxy' => 'За да изпробвате дали работи проксито, впишете на това място
594
+    'texte_sur_titre' => 'Челно заглавие',
595
+    'texte_table_ok' => ' : тази таблица е добра.',
596
+    'texte_tentative_recuperation' => 'Опит за поправка',
597
+    'texte_tenter_reparation' => 'Опит за поправка на базата данни',
598
+    'texte_test_proxy' => 'За да изпробвате дали работи проксито, впишете на това място
599 599
     URL-a на желана Интернет страница.',
600
-	'texte_titre_02' => 'Тема:',
601
-	'texte_titre_obligatoire' => '<b>Заглавие</b> [Задължително]',
602
-	'texte_travail_article' => '@nom_auteur_modif@ е работил по статията преди @date_diff@ минути',
603
-	'texte_travail_collaboratif' => 'Ако се случва често няколко редактора да
600
+    'texte_titre_02' => 'Тема:',
601
+    'texte_titre_obligatoire' => '<b>Заглавие</b> [Задължително]',
602
+    'texte_travail_article' => '@nom_auteur_modif@ е работил по статията преди @date_diff@ минути',
603
+    'texte_travail_collaboratif' => 'Ако се случва често няколко редактора да
604 604
   работят по една и съща статия, системата
605 605
   може да покаже наскоро отваряните статии,
606 606
   с цел да избегнат едновременни промени.
607 607
   Тази операция е изключена по начало,
608 608
   с цел да не се показват излишни
609 609
   предупредителни съобщения.',
610
-	'texte_vide' => 'празно',
611
-	'texte_vider_cache' => 'Изпразване на кеш-паметта',
612
-	'titre_admin_tech' => 'Техническа поддръжка',
613
-	'titre_admin_vider' => 'Техническа поддръжка',
614
-	'titre_cadre_afficher_article' => 'Показване на статиите:',
615
-	'titre_cadre_afficher_traductions' => 'Показване статуса на превод на следния език:',
616
-	'titre_cadre_ajouter_auteur' => 'ДОБАВЯНЕ НА АВТОР:',
617
-	'titre_cadre_interieur_rubrique' => 'В рубрика',
618
-	'titre_cadre_numero_auteur' => 'НОМЕР НА АВТОРА',
619
-	'titre_cadre_signature_obligatoire' => '<b>Подпис</b> [Задължителен]<br />',
620
-	'titre_config_fonctions' => 'Конфигуриране на сайта',
621
-	'titre_configuration' => 'Конфигуриране на сайта',
622
-	'titre_connexion_ldap' => 'Възможности: <b>Вашата LDAP-връзка</b>',
623
-	'titre_groupe_mots' => 'ГРУПА ОТ КЛЮЧОВИ ДУМИ:',
624
-	'titre_langue_article' => 'ЕЗИК НА СТАТИЯТА', # MODIF
625
-	'titre_langue_rubrique' => 'ЕЗИК НА РУБРИКАТА', # MODIF
626
-	'titre_langue_trad_article' => 'ЕЗИК И ПРЕВОДИ НА СТАТИЯТА',
627
-	'titre_les_articles' => 'СТАТИИ',
628
-	'titre_naviguer_dans_le_site' => 'Търсене на сайта',
629
-	'titre_nouvelle_rubrique' => 'Нова рубрика',
630
-	'titre_numero_rubrique' => 'НОМЕР НА РУБРИКАТА:',
631
-	'titre_page_articles_edit' => 'Промяна: @titre@',
632
-	'titre_page_articles_page' => 'Статии',
633
-	'titre_page_articles_tous' => 'Целият сайт',
634
-	'titre_page_calendrier' => 'Календар @nom_mois@ @annee@',
635
-	'titre_page_config_contenu' => 'Конфигуриране на сайта',
636
-	'titre_page_delete_all' => 'пълно и безвъзвратно изтриване',
637
-	'titre_page_recherche' => 'Резултати от търсенето @recherche@',
638
-	'titre_page_statistiques_referers' => 'Статистика (входящи препратки)',
639
-	'titre_page_upgrade' => 'Актуализация на СПИП',
640
-	'titre_publication_articles_post_dates' => 'Публикуване на статии с отминала дата',
641
-	'titre_reparation' => 'Поправка',
642
-	'titre_suivi_petition' => 'Допълнения на молбите',
643
-	'trad_article_traduction' => 'Всички версии на статията:',
644
-	'trad_delier' => 'Отказ от свързване на статията с нейните преводи', # MODIF
645
-	'trad_lier' => 'Статията е превод на статия номер ',
646
-	'trad_new' => 'Писане на нов превод на статията', # MODIF
610
+    'texte_vide' => 'празно',
611
+    'texte_vider_cache' => 'Изпразване на кеш-паметта',
612
+    'titre_admin_tech' => 'Техническа поддръжка',
613
+    'titre_admin_vider' => 'Техническа поддръжка',
614
+    'titre_cadre_afficher_article' => 'Показване на статиите:',
615
+    'titre_cadre_afficher_traductions' => 'Показване статуса на превод на следния език:',
616
+    'titre_cadre_ajouter_auteur' => 'ДОБАВЯНЕ НА АВТОР:',
617
+    'titre_cadre_interieur_rubrique' => 'В рубрика',
618
+    'titre_cadre_numero_auteur' => 'НОМЕР НА АВТОРА',
619
+    'titre_cadre_signature_obligatoire' => '<b>Подпис</b> [Задължителен]<br />',
620
+    'titre_config_fonctions' => 'Конфигуриране на сайта',
621
+    'titre_configuration' => 'Конфигуриране на сайта',
622
+    'titre_connexion_ldap' => 'Възможности: <b>Вашата LDAP-връзка</b>',
623
+    'titre_groupe_mots' => 'ГРУПА ОТ КЛЮЧОВИ ДУМИ:',
624
+    'titre_langue_article' => 'ЕЗИК НА СТАТИЯТА', # MODIF
625
+    'titre_langue_rubrique' => 'ЕЗИК НА РУБРИКАТА', # MODIF
626
+    'titre_langue_trad_article' => 'ЕЗИК И ПРЕВОДИ НА СТАТИЯТА',
627
+    'titre_les_articles' => 'СТАТИИ',
628
+    'titre_naviguer_dans_le_site' => 'Търсене на сайта',
629
+    'titre_nouvelle_rubrique' => 'Нова рубрика',
630
+    'titre_numero_rubrique' => 'НОМЕР НА РУБРИКАТА:',
631
+    'titre_page_articles_edit' => 'Промяна: @titre@',
632
+    'titre_page_articles_page' => 'Статии',
633
+    'titre_page_articles_tous' => 'Целият сайт',
634
+    'titre_page_calendrier' => 'Календар @nom_mois@ @annee@',
635
+    'titre_page_config_contenu' => 'Конфигуриране на сайта',
636
+    'titre_page_delete_all' => 'пълно и безвъзвратно изтриване',
637
+    'titre_page_recherche' => 'Резултати от търсенето @recherche@',
638
+    'titre_page_statistiques_referers' => 'Статистика (входящи препратки)',
639
+    'titre_page_upgrade' => 'Актуализация на СПИП',
640
+    'titre_publication_articles_post_dates' => 'Публикуване на статии с отминала дата',
641
+    'titre_reparation' => 'Поправка',
642
+    'titre_suivi_petition' => 'Допълнения на молбите',
643
+    'trad_article_traduction' => 'Всички версии на статията:',
644
+    'trad_delier' => 'Отказ от свързване на статията с нейните преводи', # MODIF
645
+    'trad_lier' => 'Статията е превод на статия номер ',
646
+    'trad_new' => 'Писане на нов превод на статията', # MODIF
647 647
 
648
-	// U
649
-	'utf8_convert_erreur_orig' => 'Грешка: кодировката на символите @charset@ не се поддържа.',
648
+    // U
649
+    'utf8_convert_erreur_orig' => 'Грешка: кодировката на символите @charset@ не се поддържа.',
650 650
 
651
-	// V
652
-	'version' => 'Версия:'
651
+    // V
652
+    'version' => 'Версия:'
653 653
 );
Please login to merge, or discard this patch.
ecrire/lang/public_oc_ni.php 1 patch
Indentation   +110 added lines, -110 removed lines patch added patch discarded remove patch
@@ -4,118 +4,118 @@
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'accueil_site' => 'Acuèlh',
14
-	'article' => 'Article',
15
-	'articles' => 'Articles',
16
-	'articles_auteur' => 'Articles d’aquel autor',
17
-	'articles_populaires' => 'Lu articles mai populars',
18
-	'articles_rubrique' => 'Articles d’aquela rubrica',
19
-	'aucun_article' => 'Li a minga d’article à-n-aquela adreça',
20
-	'aucun_auteur' => 'Li a minga d’autor à-n-aquela adreça',
21
-	'aucun_site' => 'Li a minga de site à-n-aquela adreça',
22
-	'aucune_breve' => 'Li a minga de brèva à-n-aquela adreça',
23
-	'aucune_rubrique' => 'Li a minga de rubrica à-n-aquela adreça',
24
-	'auteur' => 'Autor',
25
-	'autres' => 'Autres',
26
-	'autres_breves' => 'Autri brèvas',
27
-	'autres_groupes_mots_clefs' => 'Autres grops de mòts claus',
28
-	'autres_sites' => 'Autres sites',
29
-
30
-	// B
31
-	'bonjour' => 'Boanjorn',
32
-
33
-	// C
34
-	'commenter_site' => 'Comentar aqueu site',
35
-	'contact' => 'Contacte',
36
-	'copie_document_impossible' => 'Impossible de copiar lo document',
37
-
38
-	// D
39
-	'date' => 'Data',
40
-	'dernier_ajout' => 'Darrier ajust',
41
-	'dernieres_breves' => 'Darrieras brèvas',
42
-	'derniers_articles' => 'Darriers articles',
43
-	'derniers_commentaires' => 'Darriers comentaris',
44
-	'derniers_messages_forum' => 'Darriers messatges publicats dins lu fòros',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'Edicion en mòde tèxt de',
48
-	'en_reponse' => 'En respoasta à:',
49
-	'en_resume' => 'En resumit',
50
-	'envoyer_message' => 'Mandar un messatge',
51
-	'espace_prive' => 'Espaci privat',
52
-
53
-	// F
54
-	'formats_acceptes' => 'Formats acceptats : @formats@.',
55
-
56
-	// H
57
-	'hierarchie_site' => 'Ierarquia dau sit',
58
-
59
-	// J
60
-	'jours' => 'jorns',
61
-
62
-	// L
63
-	'lien_connecter' => 'Si conectar',
64
-
65
-	// M
66
-	'meme_auteur' => 'Dau meme autor',
67
-	'meme_rubrique' => 'Dins la mema rubrica',
68
-	'memes_auteurs' => 'Dei memes autors',
69
-	'message' => 'Messatge',
70
-	'messages_forum' => 'Messatges',
71
-	'messages_recents' => 'Lu messatges de fòros mai recents',
72
-	'mots_clef' => 'Mòt-clau',
73
-	'mots_clefs' => 'Mòts-claus',
74
-	'mots_clefs_meme_groupe' => 'Mòts-claus dins lo meme grop',
75
-
76
-	// N
77
-	'navigation' => 'Navigacion',
78
-	'nom' => 'Nom',
79
-	'nouveautes' => 'Li novèutats',
80
-	'nouveautes_web' => 'Novèutats sus lo oèb',
81
-	'nouveaux_articles' => 'Articles nòus',
82
-	'nouvelles_breves' => 'Brèvas novèlas',
83
-
84
-	// P
85
-	'page_precedente' => 'pàgina anteriora',
86
-	'page_suivante' => 'pàgina seguenta',
87
-	'par_auteur' => 'da',
88
-	'participer_site' => 'Podètz participar à la vida d’aqueu sit e prepauar lu voastres articles en vos inscrivent çai sota. Receberètz un e-mail que v’indicarà lu voastres còdes per accedir à l’espaci privat dau sit.',
89
-	'plan_site' => 'Plan dau site',
90
-	'popularite' => 'Popularitat',
91
-	'poster_message' => 'Postar un messatge',
92
-	'proposer_site' => 'Podètz prepauar un site à ajustar en aquela rubrica:',
93
-
94
-	// R
95
-	'repondre_article' => 'Respoandre à-n-aquel article',
96
-	'repondre_breve' => 'Respoandre à-n-aquela brèva',
97
-	'resultats_recherche' => 'Resultats de la recèrca',
98
-	'retour_debut_forums' => 'Retorn au començament dei fòros',
99
-	'rubrique' => 'Rubrica',
100
-	'rubriques' => 'Rubricas',
101
-
102
-	// S
103
-	'signatures_petition' => 'Firmas',
104
-	'site_realise_avec_spip' => 'Sit realisat embé SPIP',
105
-	'sites_web' => 'Sits web',
106
-	'sous_rubriques' => 'Sosrubricas',
107
-	'spam' => 'Espam',
108
-	'suite' => 'seguida',
109
-	'sur_web' => 'Sus lo oèb',
110
-	'syndiquer_rubrique' => 'Sindicar aquela rubrica',
111
-	'syndiquer_site' => 'Sindicar tot lo sit',
112
-
113
-	// T
114
-	'texte_lettre_information' => 'Vequí la letra d’informacion dau sit',
115
-	'texte_lettre_information_2' => 'Aquela letra recensa li noveutas publicadi despí',
116
-
117
-	// V
118
-	'ver_imprimer' => 'Version d’estampar',
119
-	'voir_en_ligne' => 'Vejatz en linha',
120
-	'voir_squelette' => 'veire l’esqueleta d’aquela pàgina'
12
+    // A
13
+    'accueil_site' => 'Acuèlh',
14
+    'article' => 'Article',
15
+    'articles' => 'Articles',
16
+    'articles_auteur' => 'Articles d’aquel autor',
17
+    'articles_populaires' => 'Lu articles mai populars',
18
+    'articles_rubrique' => 'Articles d’aquela rubrica',
19
+    'aucun_article' => 'Li a minga d’article à-n-aquela adreça',
20
+    'aucun_auteur' => 'Li a minga d’autor à-n-aquela adreça',
21
+    'aucun_site' => 'Li a minga de site à-n-aquela adreça',
22
+    'aucune_breve' => 'Li a minga de brèva à-n-aquela adreça',
23
+    'aucune_rubrique' => 'Li a minga de rubrica à-n-aquela adreça',
24
+    'auteur' => 'Autor',
25
+    'autres' => 'Autres',
26
+    'autres_breves' => 'Autri brèvas',
27
+    'autres_groupes_mots_clefs' => 'Autres grops de mòts claus',
28
+    'autres_sites' => 'Autres sites',
29
+
30
+    // B
31
+    'bonjour' => 'Boanjorn',
32
+
33
+    // C
34
+    'commenter_site' => 'Comentar aqueu site',
35
+    'contact' => 'Contacte',
36
+    'copie_document_impossible' => 'Impossible de copiar lo document',
37
+
38
+    // D
39
+    'date' => 'Data',
40
+    'dernier_ajout' => 'Darrier ajust',
41
+    'dernieres_breves' => 'Darrieras brèvas',
42
+    'derniers_articles' => 'Darriers articles',
43
+    'derniers_commentaires' => 'Darriers comentaris',
44
+    'derniers_messages_forum' => 'Darriers messatges publicats dins lu fòros',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'Edicion en mòde tèxt de',
48
+    'en_reponse' => 'En respoasta à:',
49
+    'en_resume' => 'En resumit',
50
+    'envoyer_message' => 'Mandar un messatge',
51
+    'espace_prive' => 'Espaci privat',
52
+
53
+    // F
54
+    'formats_acceptes' => 'Formats acceptats : @formats@.',
55
+
56
+    // H
57
+    'hierarchie_site' => 'Ierarquia dau sit',
58
+
59
+    // J
60
+    'jours' => 'jorns',
61
+
62
+    // L
63
+    'lien_connecter' => 'Si conectar',
64
+
65
+    // M
66
+    'meme_auteur' => 'Dau meme autor',
67
+    'meme_rubrique' => 'Dins la mema rubrica',
68
+    'memes_auteurs' => 'Dei memes autors',
69
+    'message' => 'Messatge',
70
+    'messages_forum' => 'Messatges',
71
+    'messages_recents' => 'Lu messatges de fòros mai recents',
72
+    'mots_clef' => 'Mòt-clau',
73
+    'mots_clefs' => 'Mòts-claus',
74
+    'mots_clefs_meme_groupe' => 'Mòts-claus dins lo meme grop',
75
+
76
+    // N
77
+    'navigation' => 'Navigacion',
78
+    'nom' => 'Nom',
79
+    'nouveautes' => 'Li novèutats',
80
+    'nouveautes_web' => 'Novèutats sus lo oèb',
81
+    'nouveaux_articles' => 'Articles nòus',
82
+    'nouvelles_breves' => 'Brèvas novèlas',
83
+
84
+    // P
85
+    'page_precedente' => 'pàgina anteriora',
86
+    'page_suivante' => 'pàgina seguenta',
87
+    'par_auteur' => 'da',
88
+    'participer_site' => 'Podètz participar à la vida d’aqueu sit e prepauar lu voastres articles en vos inscrivent çai sota. Receberètz un e-mail que v’indicarà lu voastres còdes per accedir à l’espaci privat dau sit.',
89
+    'plan_site' => 'Plan dau site',
90
+    'popularite' => 'Popularitat',
91
+    'poster_message' => 'Postar un messatge',
92
+    'proposer_site' => 'Podètz prepauar un site à ajustar en aquela rubrica:',
93
+
94
+    // R
95
+    'repondre_article' => 'Respoandre à-n-aquel article',
96
+    'repondre_breve' => 'Respoandre à-n-aquela brèva',
97
+    'resultats_recherche' => 'Resultats de la recèrca',
98
+    'retour_debut_forums' => 'Retorn au començament dei fòros',
99
+    'rubrique' => 'Rubrica',
100
+    'rubriques' => 'Rubricas',
101
+
102
+    // S
103
+    'signatures_petition' => 'Firmas',
104
+    'site_realise_avec_spip' => 'Sit realisat embé SPIP',
105
+    'sites_web' => 'Sits web',
106
+    'sous_rubriques' => 'Sosrubricas',
107
+    'spam' => 'Espam',
108
+    'suite' => 'seguida',
109
+    'sur_web' => 'Sus lo oèb',
110
+    'syndiquer_rubrique' => 'Sindicar aquela rubrica',
111
+    'syndiquer_site' => 'Sindicar tot lo sit',
112
+
113
+    // T
114
+    'texte_lettre_information' => 'Vequí la letra d’informacion dau sit',
115
+    'texte_lettre_information_2' => 'Aquela letra recensa li noveutas publicadi despí',
116
+
117
+    // V
118
+    'ver_imprimer' => 'Version d’estampar',
119
+    'voir_en_ligne' => 'Vejatz en linha',
120
+    'voir_squelette' => 'veire l’esqueleta d’aquela pàgina'
121 121
 );
Please login to merge, or discard this patch.
prive/formulaires/editer_logo.php 1 patch
Indentation   +157 added lines, -157 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
  **/
31 31
 
32 32
 if (!defined('_ECRIRE_INC_VERSION')) {
33
-	return;
33
+    return;
34 34
 }
35 35
 
36 36
 global $logo_libelles;
@@ -49,90 +49,90 @@  discard block
 block discarded – undo
49 49
  * @return array               Variables d'environnement pour le fond
50 50
  */
51 51
 function formulaires_editer_logo_charger_dist($objet, $id_objet, $retour = '', $options = array()) {
52
-	// pas dans une boucle ? formulaire pour le logo du site
53
-	// dans ce cas, il faut chercher un 'siteon0.ext'
54
-	if (!$objet) {
55
-		$objet = 'site';
56
-	}
52
+    // pas dans une boucle ? formulaire pour le logo du site
53
+    // dans ce cas, il faut chercher un 'siteon0.ext'
54
+    if (!$objet) {
55
+        $objet = 'site';
56
+    }
57 57
 
58
-	$objet = objet_type($objet);
59
-	$_id_objet = id_table_objet($objet);
58
+    $objet = objet_type($objet);
59
+    $_id_objet = id_table_objet($objet);
60 60
 
61
-	if (!is_array($options)) {
62
-		$options = unserialize($options);
63
-	}
64
-	$options = spip_sanitize_from_request($options, '*');
61
+    if (!is_array($options)) {
62
+        $options = unserialize($options);
63
+    }
64
+    $options = spip_sanitize_from_request($options, '*');
65 65
 
66
-	if (!isset($options['titre'])) {
67
-		$balise_img = chercher_filtre('balise_img');
68
-		$img = $balise_img(chemin_image('image-24.png'),'', 'cadre-icone');
69
-		$libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']);
70
-		$libelle = (($id_objet or $objet != 'rubrique') ? $objet : 'racine');
71
-		if (isset($libelles[$libelle])) {
72
-			$libelle = $libelles[$libelle];
73
-		} elseif ($libelle = objet_info($objet, 'texte_logo_objet')) {
74
-			$libelle = _T($libelle);
75
-		} else {
76
-			$libelle = _L('Logo');
77
-		}
78
-		switch ($objet) {
79
-			case 'article':
80
-				$libelle .= ' ' . aider('logoart');
81
-				break;
82
-			case 'breve':
83
-				$libelle .= ' ' . aider('breveslogo');
84
-				break;
85
-			case 'rubrique':
86
-				$libelle .= ' ' . aider('rublogo');
87
-				break;
88
-			default:
89
-				break;
90
-		}
66
+    if (!isset($options['titre'])) {
67
+        $balise_img = chercher_filtre('balise_img');
68
+        $img = $balise_img(chemin_image('image-24.png'),'', 'cadre-icone');
69
+        $libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']);
70
+        $libelle = (($id_objet or $objet != 'rubrique') ? $objet : 'racine');
71
+        if (isset($libelles[$libelle])) {
72
+            $libelle = $libelles[$libelle];
73
+        } elseif ($libelle = objet_info($objet, 'texte_logo_objet')) {
74
+            $libelle = _T($libelle);
75
+        } else {
76
+            $libelle = _L('Logo');
77
+        }
78
+        switch ($objet) {
79
+            case 'article':
80
+                $libelle .= ' ' . aider('logoart');
81
+                break;
82
+            case 'breve':
83
+                $libelle .= ' ' . aider('breveslogo');
84
+                break;
85
+            case 'rubrique':
86
+                $libelle .= ' ' . aider('rublogo');
87
+                break;
88
+            default:
89
+                break;
90
+        }
91 91
 
92
-		$options['titre'] = $img . $libelle;
93
-	}
94
-	if (!isset($options['editable'])) {
95
-		include_spip('inc/autoriser');
96
-		$options['editable'] = autoriser('iconifier', $objet, $id_objet);
97
-	}
92
+        $options['titre'] = $img . $libelle;
93
+    }
94
+    if (!isset($options['editable'])) {
95
+        include_spip('inc/autoriser');
96
+        $options['editable'] = autoriser('iconifier', $objet, $id_objet);
97
+    }
98 98
 
99
-	$res = array(
100
-		'editable' => ($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : '') && (!isset($options['editable']) or $options['editable']),
101
-		'logo_survol' => ($GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : ''),
102
-		'objet' => $objet,
103
-		'id_objet' => $id_objet,
104
-		'_options' => $options,
105
-		'_show_upload_off' => '',
106
-	);
99
+    $res = array(
100
+        'editable' => ($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : '') && (!isset($options['editable']) or $options['editable']),
101
+        'logo_survol' => ($GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : ''),
102
+        'objet' => $objet,
103
+        'id_objet' => $id_objet,
104
+        '_options' => $options,
105
+        '_show_upload_off' => '',
106
+    );
107 107
 
108
-	// rechercher le logo de l'objet
109
-	// la fonction prend un parametre '_id_objet' etrange :
110
-	// le nom de la cle primaire (et non le nom de la table)
111
-	// ou directement le nom du raccourcis a chercher
112
-	$chercher_logo = charger_fonction('chercher_logo', 'inc');
113
-	$etats = $res['logo_survol'] ? array('on', 'off') : array('on');
114
-	foreach ($etats as $etat) {
115
-		$logo = $chercher_logo($id_objet, $_id_objet, $etat);
116
-		if ($logo) {
117
-			$res['logo_' . $etat] = $logo[0];
118
-		}
119
-	}
120
-	// pas de logo_on -> pas de formulaire pour le survol
121
-	if (!isset($res['logo_on'])) {
122
-		$res['logo_survol'] = '';
123
-	} elseif (!isset($res['logo_off']) and _request('logo_up')) {
124
-		$res['_show_upload_off'] = ' ';
125
-	}
108
+    // rechercher le logo de l'objet
109
+    // la fonction prend un parametre '_id_objet' etrange :
110
+    // le nom de la cle primaire (et non le nom de la table)
111
+    // ou directement le nom du raccourcis a chercher
112
+    $chercher_logo = charger_fonction('chercher_logo', 'inc');
113
+    $etats = $res['logo_survol'] ? array('on', 'off') : array('on');
114
+    foreach ($etats as $etat) {
115
+        $logo = $chercher_logo($id_objet, $_id_objet, $etat);
116
+        if ($logo) {
117
+            $res['logo_' . $etat] = $logo[0];
118
+        }
119
+    }
120
+    // pas de logo_on -> pas de formulaire pour le survol
121
+    if (!isset($res['logo_on'])) {
122
+        $res['logo_survol'] = '';
123
+    } elseif (!isset($res['logo_off']) and _request('logo_up')) {
124
+        $res['_show_upload_off'] = ' ';
125
+    }
126 126
 
127
-	// si le logo n'est pas editable et qu'il n'y en a pas, on affiche pas du tout le formulaire
128
-	if (!$res['editable']
129
-		and !isset($res['logo_off'])
130
-		and !isset($res['logo_on'])
131
-	) {
132
-		return false;
133
-	}
127
+    // si le logo n'est pas editable et qu'il n'y en a pas, on affiche pas du tout le formulaire
128
+    if (!$res['editable']
129
+        and !isset($res['logo_off'])
130
+        and !isset($res['logo_on'])
131
+    ) {
132
+        return false;
133
+    }
134 134
 
135
-	return $res;
135
+    return $res;
136 136
 }
137 137
 
138 138
 /**
@@ -146,7 +146,7 @@  discard block
 block discarded – undo
146 146
  * @return string              Hash du formulaire
147 147
  */
148 148
 function formulaires_editer_logo_identifier_dist($objet, $id_objet, $retour = '', $options = array()) {
149
-	return serialize(array($objet, $id_objet));
149
+    return serialize(array($objet, $id_objet));
150 150
 }
151 151
 
152 152
 /**
@@ -162,29 +162,29 @@  discard block
 block discarded – undo
162 162
  * @return array               Erreurs du formulaire
163 163
  */
164 164
 function formulaires_editer_logo_verifier_dist($objet, $id_objet, $retour = '', $options = array()) {
165
-	$erreurs = array();
166
-	// verifier les extensions
167
-	$sources = formulaire_editer_logo_get_sources();
168
-	include_spip('action/editer_logo');
169
-	$extensions_possibles = $GLOBALS['formats_logos'];
170
-	if (in_array('jpg', $extensions_possibles)) {
171
-		$extensions_possibles[] = 'jpeg';
172
-	}
173
-	foreach ($sources as $etat => $file) {
174
-		// seulement si une reception correcte a eu lieu
175
-		if ($file and $file['error'] == 0) {
176
-			if (!in_array(
177
-				strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)),
178
-				$extensions_possibles
179
-			)) {
180
-				$erreurs['logo_' . $etat] = _L('Extension non reconnue');
181
-			}
182
-		} elseif ($file and $file['error'] != 0 and isset($file['msg'])) {
183
-			$erreurs['message_erreur'] = $file['msg'];
184
-		}
185
-	}
165
+    $erreurs = array();
166
+    // verifier les extensions
167
+    $sources = formulaire_editer_logo_get_sources();
168
+    include_spip('action/editer_logo');
169
+    $extensions_possibles = $GLOBALS['formats_logos'];
170
+    if (in_array('jpg', $extensions_possibles)) {
171
+        $extensions_possibles[] = 'jpeg';
172
+    }
173
+    foreach ($sources as $etat => $file) {
174
+        // seulement si une reception correcte a eu lieu
175
+        if ($file and $file['error'] == 0) {
176
+            if (!in_array(
177
+                strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)),
178
+                $extensions_possibles
179
+            )) {
180
+                $erreurs['logo_' . $etat] = _L('Extension non reconnue');
181
+            }
182
+        } elseif ($file and $file['error'] != 0 and isset($file['msg'])) {
183
+            $erreurs['message_erreur'] = $file['msg'];
184
+        }
185
+    }
186 186
 
187
-	return $erreurs;
187
+    return $erreurs;
188 188
 }
189 189
 
190 190
 /**
@@ -200,47 +200,47 @@  discard block
 block discarded – undo
200 200
  * @return array               Retour des traitements
201 201
  */
202 202
 function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour = '', $options = array()) {
203
-	$res = array('editable' => ' ');
203
+    $res = array('editable' => ' ');
204 204
 
205
-	// pas dans une boucle ? formulaire pour le logo du site
206
-	// dans ce cas, il faut chercher un 'siteon0.ext'
207
-	if (!$objet) {
208
-		$objet = 'site';
209
-	}
205
+    // pas dans une boucle ? formulaire pour le logo du site
206
+    // dans ce cas, il faut chercher un 'siteon0.ext'
207
+    if (!$objet) {
208
+        $objet = 'site';
209
+    }
210 210
 
211
-	include_spip('action/editer_logo');
211
+    include_spip('action/editer_logo');
212 212
 
213
-	// effectuer la suppression si demandee d'un logo
214
-	$on = _request('supprimer_logo_on');
215
-	if ($on or _request('supprimer_logo_off')) {
216
-		logo_supprimer($objet, $id_objet, $on ? 'on' : 'off');
217
-		$res['message_ok'] = ''; // pas besoin de message : la validation est visuelle
218
-		set_request('logo_up', ' ');
219
-	} // sinon supprimer ancien logo puis copier le nouveau
220
-	else {
221
-		$sources = formulaire_editer_logo_get_sources();
222
-		foreach ($sources as $etat => $file) {
223
-			if ($file and $file['error'] == 0) {
224
-				if ($err = logo_modifier($objet, $id_objet, $etat, $file)) {
225
-					$res['message_erreur'] = $err;
226
-				} else {
227
-					$res['message_ok'] = '';
228
-				} // pas besoin de message : la validation est visuelle
229
-				set_request('logo_up', ' ');
230
-			}
231
-		}
232
-	}
213
+    // effectuer la suppression si demandee d'un logo
214
+    $on = _request('supprimer_logo_on');
215
+    if ($on or _request('supprimer_logo_off')) {
216
+        logo_supprimer($objet, $id_objet, $on ? 'on' : 'off');
217
+        $res['message_ok'] = ''; // pas besoin de message : la validation est visuelle
218
+        set_request('logo_up', ' ');
219
+    } // sinon supprimer ancien logo puis copier le nouveau
220
+    else {
221
+        $sources = formulaire_editer_logo_get_sources();
222
+        foreach ($sources as $etat => $file) {
223
+            if ($file and $file['error'] == 0) {
224
+                if ($err = logo_modifier($objet, $id_objet, $etat, $file)) {
225
+                    $res['message_erreur'] = $err;
226
+                } else {
227
+                    $res['message_ok'] = '';
228
+                } // pas besoin de message : la validation est visuelle
229
+                set_request('logo_up', ' ');
230
+            }
231
+        }
232
+    }
233 233
 
234
-	// Invalider les caches de l'objet
235
-	include_spip('inc/invalideur');
236
-	suivre_invalideur("id='$objet/$id_objet'");
234
+    // Invalider les caches de l'objet
235
+    include_spip('inc/invalideur');
236
+    suivre_invalideur("id='$objet/$id_objet'");
237 237
 
238 238
 
239
-	if ($retour) {
240
-		$res['redirect'] = $retour;
241
-	}
239
+    if ($retour) {
240
+        $res['redirect'] = $retour;
241
+    }
242 242
 
243
-	return $res;
243
+    return $res;
244 244
 }
245 245
 
246 246
 
@@ -252,29 +252,29 @@  discard block
 block discarded – undo
252 252
  *     Sources des fichiers dans les clés `on` ou `off`
253 253
  */
254 254
 function formulaire_editer_logo_get_sources() {
255
-	if (!$_FILES) {
256
-		$_FILES = isset($GLOBALS['HTTP_POST_FILES']) ? $GLOBALS['HTTP_POST_FILES'] : array();
257
-	}
258
-	if (!is_array($_FILES)) {
259
-		return array();
260
-	}
255
+    if (!$_FILES) {
256
+        $_FILES = isset($GLOBALS['HTTP_POST_FILES']) ? $GLOBALS['HTTP_POST_FILES'] : array();
257
+    }
258
+    if (!is_array($_FILES)) {
259
+        return array();
260
+    }
261 261
 
262
-	include_spip('inc/documents');
263
-	$sources = array();
264
-	foreach (array('on', 'off') as $etat) {
265
-		$logo = 'logo_' . $etat;
266
-		if (isset($_FILES[$logo])) {
267
-			if ($_FILES[$logo]['error'] == 0) {
268
-				$sources[$etat] = $_FILES[$logo];
269
-			} elseif ($_FILES[$logo]['error'] != 0) {
270
-				$msg = check_upload_error($_FILES[$logo]['error'], false, true);
271
-				if ($msg and is_string($msg)) {
272
-					$sources[$etat] = $_FILES[$logo];
273
-					$sources[$etat]['msg'] = $msg;
274
-				}
275
-			}
276
-		}
277
-	}
262
+    include_spip('inc/documents');
263
+    $sources = array();
264
+    foreach (array('on', 'off') as $etat) {
265
+        $logo = 'logo_' . $etat;
266
+        if (isset($_FILES[$logo])) {
267
+            if ($_FILES[$logo]['error'] == 0) {
268
+                $sources[$etat] = $_FILES[$logo];
269
+            } elseif ($_FILES[$logo]['error'] != 0) {
270
+                $msg = check_upload_error($_FILES[$logo]['error'], false, true);
271
+                if ($msg and is_string($msg)) {
272
+                    $sources[$etat] = $_FILES[$logo];
273
+                    $sources[$etat]['msg'] = $msg;
274
+                }
275
+            }
276
+        }
277
+    }
278 278
 
279
-	return $sources;
279
+    return $sources;
280 280
 }
Please login to merge, or discard this patch.
prive/formulaires/editer_liens.php 1 patch
Indentation   +345 added lines, -345 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Formulaires
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 
@@ -35,25 +35,25 @@  discard block
 block discarded – undo
35 35
  *   ($table_source,$objet,$id_objet,$objet_lien)
36 36
  */
37 37
 function determine_source_lien_objet($a, $b, $c) {
38
-	$table_source = $objet_lien = $objet = $id_objet = null;
39
-	// auteurs, article, 23 :
40
-	// associer des auteurs à l'article 23, sur la table pivot spip_auteurs_liens
41
-	if (is_numeric($c) and !is_numeric($b)) {
42
-		$table_source = table_objet($a);
43
-		$objet_lien = objet_type($a);
44
-		$objet = objet_type($b);
45
-		$id_objet = $c;
46
-	}
47
-	// article, 23, auteurs
48
-	// associer des auteurs à l'article 23, sur la table pivot spip_articles_liens
49
-	if (is_numeric($b) and !is_numeric($c)) {
50
-		$table_source = table_objet($c);
51
-		$objet_lien = objet_type($a);
52
-		$objet = objet_type($a);
53
-		$id_objet = $b;
54
-	}
55
-
56
-	return array($table_source, $objet, $id_objet, $objet_lien);
38
+    $table_source = $objet_lien = $objet = $id_objet = null;
39
+    // auteurs, article, 23 :
40
+    // associer des auteurs à l'article 23, sur la table pivot spip_auteurs_liens
41
+    if (is_numeric($c) and !is_numeric($b)) {
42
+        $table_source = table_objet($a);
43
+        $objet_lien = objet_type($a);
44
+        $objet = objet_type($b);
45
+        $id_objet = $c;
46
+    }
47
+    // article, 23, auteurs
48
+    // associer des auteurs à l'article 23, sur la table pivot spip_articles_liens
49
+    if (is_numeric($b) and !is_numeric($c)) {
50
+        $table_source = table_objet($c);
51
+        $objet_lien = objet_type($a);
52
+        $objet = objet_type($a);
53
+        $id_objet = $b;
54
+    }
55
+
56
+    return array($table_source, $objet, $id_objet, $objet_lien);
57 57
 }
58 58
 
59 59
 /**
@@ -79,91 +79,91 @@  discard block
 block discarded – undo
79 79
  */
80 80
 function formulaires_editer_liens_charger_dist($a, $b, $c, $options = array()) {
81 81
 
82
-	// compat avec ancienne signature ou le 4eme argument est $editable
83
-	if (!is_array($options)) {
84
-		$options = array('editable' => $options);
85
-	} elseif (!isset($options['editable'])) {
86
-		$options['editable'] = true;
87
-	}
88
-
89
-	$editable = $options['editable'];
90
-
91
-	list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c);
92
-	if (!$table_source or !$objet or !$objet_lien or !$id_objet) {
93
-		return false;
94
-	}
95
-
96
-	$objet_source = objet_type($table_source);
97
-	$table_sql_source = table_objet_sql($objet_source);
98
-
99
-	// verifier existence de la table xxx_liens
100
-	include_spip('action/editer_liens');
101
-	if (!objet_associable($objet_lien)) {
102
-		return false;
103
-	}
104
-
105
-	// L'éditabilité :) est définie par un test permanent (par exemple "associermots") ET le 4ème argument
106
-	include_spip('inc/autoriser');
107
-	$editable = ($editable and autoriser('associer' . $table_source, $objet, $id_objet)
108
-		and autoriser('modifier', $objet, $id_objet));
109
-
110
-	if (!$editable and !count(objet_trouver_liens(
111
-		array($objet_lien => '*'),
112
-		array(($objet_lien == $objet_source ? $objet : $objet_source) => $id_objet)
113
-	))) {
114
-		return false;
115
-	}
116
-
117
-	// squelettes de vue et de d'association
118
-	// ils sont différents si des rôles sont définis.
119
-	$skel_vue = $table_source . '_lies';
120
-	$skel_ajout = $table_source . '_associer';
121
-
122
-	// description des roles
123
-	include_spip('inc/roles');
124
-	if ($roles = roles_presents($objet_source, $objet)) {
125
-		// on demande de nouveaux squelettes en conséquence
126
-		$skel_vue = $table_source . '_roles_lies';
127
-		$skel_ajout = $table_source . '_roles_associer';
128
-	}
129
-
130
-	$oups = _request('_oups');
131
-	if (unserialize(base64_decode($oups))) {
132
-		// on est bon, rien a faire
133
-	}
134
-	elseif(unserialize($oups)) {
135
-		// il faut encoder
136
-		$oups = base64_encode($oups);
137
-	}
138
-	else {
139
-		$oups = '';
140
-	}
141
-	$valeurs = array(
142
-		'id' => "$table_source-$objet-$id_objet-$objet_lien", // identifiant unique pour les id du form
143
-		'_vue_liee' => $skel_vue,
144
-		'_vue_ajout' => $skel_ajout,
145
-		'_objet_lien' => $objet_lien,
146
-		'id_lien_ajoute' => _request('id_lien_ajoute'),
147
-		'objet' => $objet,
148
-		'id_objet' => $id_objet,
149
-		'objet_source' => $objet_source,
150
-		'table_source' => $table_source,
151
-		'recherche' => '',
152
-		'visible' => 0,
153
-		'ajouter_lien' => '',
154
-		'supprimer_lien' => '',
155
-		'qualifier_lien' => '',
156
-		'ordonner_lien' => '',
157
-		'desordonner_liens' => '',
158
-		'_roles' => $roles, # description des roles
159
-		'_oups' => $oups,
160
-		'editable' => $editable,
161
-	);
162
-
163
-	// les options non definies dans $valeurs sont passees telles quelles au formulaire html
164
-	$valeurs = array_merge($options, $valeurs);
165
-
166
-	return $valeurs;
82
+    // compat avec ancienne signature ou le 4eme argument est $editable
83
+    if (!is_array($options)) {
84
+        $options = array('editable' => $options);
85
+    } elseif (!isset($options['editable'])) {
86
+        $options['editable'] = true;
87
+    }
88
+
89
+    $editable = $options['editable'];
90
+
91
+    list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c);
92
+    if (!$table_source or !$objet or !$objet_lien or !$id_objet) {
93
+        return false;
94
+    }
95
+
96
+    $objet_source = objet_type($table_source);
97
+    $table_sql_source = table_objet_sql($objet_source);
98
+
99
+    // verifier existence de la table xxx_liens
100
+    include_spip('action/editer_liens');
101
+    if (!objet_associable($objet_lien)) {
102
+        return false;
103
+    }
104
+
105
+    // L'éditabilité :) est définie par un test permanent (par exemple "associermots") ET le 4ème argument
106
+    include_spip('inc/autoriser');
107
+    $editable = ($editable and autoriser('associer' . $table_source, $objet, $id_objet)
108
+        and autoriser('modifier', $objet, $id_objet));
109
+
110
+    if (!$editable and !count(objet_trouver_liens(
111
+        array($objet_lien => '*'),
112
+        array(($objet_lien == $objet_source ? $objet : $objet_source) => $id_objet)
113
+    ))) {
114
+        return false;
115
+    }
116
+
117
+    // squelettes de vue et de d'association
118
+    // ils sont différents si des rôles sont définis.
119
+    $skel_vue = $table_source . '_lies';
120
+    $skel_ajout = $table_source . '_associer';
121
+
122
+    // description des roles
123
+    include_spip('inc/roles');
124
+    if ($roles = roles_presents($objet_source, $objet)) {
125
+        // on demande de nouveaux squelettes en conséquence
126
+        $skel_vue = $table_source . '_roles_lies';
127
+        $skel_ajout = $table_source . '_roles_associer';
128
+    }
129
+
130
+    $oups = _request('_oups');
131
+    if (unserialize(base64_decode($oups))) {
132
+        // on est bon, rien a faire
133
+    }
134
+    elseif(unserialize($oups)) {
135
+        // il faut encoder
136
+        $oups = base64_encode($oups);
137
+    }
138
+    else {
139
+        $oups = '';
140
+    }
141
+    $valeurs = array(
142
+        'id' => "$table_source-$objet-$id_objet-$objet_lien", // identifiant unique pour les id du form
143
+        '_vue_liee' => $skel_vue,
144
+        '_vue_ajout' => $skel_ajout,
145
+        '_objet_lien' => $objet_lien,
146
+        'id_lien_ajoute' => _request('id_lien_ajoute'),
147
+        'objet' => $objet,
148
+        'id_objet' => $id_objet,
149
+        'objet_source' => $objet_source,
150
+        'table_source' => $table_source,
151
+        'recherche' => '',
152
+        'visible' => 0,
153
+        'ajouter_lien' => '',
154
+        'supprimer_lien' => '',
155
+        'qualifier_lien' => '',
156
+        'ordonner_lien' => '',
157
+        'desordonner_liens' => '',
158
+        '_roles' => $roles, # description des roles
159
+        '_oups' => $oups,
160
+        'editable' => $editable,
161
+    );
162
+
163
+    // les options non definies dans $valeurs sont passees telles quelles au formulaire html
164
+    $valeurs = array_merge($options, $valeurs);
165
+
166
+    return $valeurs;
167 167
 }
168 168
 
169 169
 /**
@@ -207,161 +207,161 @@  discard block
 block discarded – undo
207 207
  * @return array
208 208
  */
209 209
 function formulaires_editer_liens_traiter_dist($a, $b, $c, $options = array()) {
210
-	// compat avec ancienne signature ou le 4eme argument est $editable
211
-	if (!is_array($options)) {
212
-		$options = array('editable' => $options);
213
-	} elseif (!isset($options['editable'])) {
214
-		$options['editable'] = true;
215
-	}
216
-
217
-	$editable = $options['editable'];
218
-
219
-	$res = array('editable' => $editable ? true : false);
220
-	list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c);
221
-	if (!$table_source or !$objet or !$objet_lien) {
222
-		return $res;
223
-	}
224
-
225
-
226
-	if (_request('tout_voir')) {
227
-		set_request('recherche', '');
228
-	}
229
-
230
-	include_spip('inc/autoriser');
231
-	if (autoriser('modifier', $objet, $id_objet)) {
232
-		// annuler les suppressions du coup d'avant !
233
-		if (_request('annuler_oups')
234
-			and $oups = _request('_oups')
235
-			and $oups = base64_decode($oups)
236
-			and $oups = unserialize($oups)
237
-		) {
238
-			if ($oups_objets = charger_fonction("editer_liens_oups_{$table_source}_{$objet}_{$objet_lien}", 'action', true)) {
239
-				$oups_objets($oups);
240
-			} else {
241
-				$objet_source = objet_type($table_source);
242
-				include_spip('action/editer_liens');
243
-				foreach ($oups as $oup) {
244
-					if ($objet_lien == $objet_source) {
245
-						objet_associer(array($objet_source => $oup[$objet_source]), array($objet => $oup[$objet]), $oup);
246
-					} else {
247
-						objet_associer(array($objet => $oup[$objet]), array($objet_source => $oup[$objet_source]), $oup);
248
-					}
249
-				}
250
-			}
251
-			# oups ne persiste que pour la derniere action, si suppression
252
-			set_request('_oups');
253
-		}
254
-
255
-		$supprimer = _request('supprimer_lien');
256
-		$ajouter = _request('ajouter_lien');
257
-		$ordonner = _request('ordonner_lien');
258
-
259
-		if (_request('desordonner_liens')) {
260
-			include_spip('action/editer_liens');
261
-			objet_qualifier_liens(array($objet_lien => '*'), array($objet => $id_objet), array('rang_lien' => 0));
262
-		}
263
-
264
-		// il est possible de preciser dans une seule variable un remplacement :
265
-		// remplacer_lien[old][new]
266
-		if ($remplacer = _request('remplacer_lien')) {
267
-			foreach ($remplacer as $k => $v) {
268
-				if ($old = lien_verifier_action($k, '')) {
269
-					foreach (is_array($v) ? $v : array($v) as $kn => $vn) {
270
-						if ($new = lien_verifier_action($kn, $vn)) {
271
-							$supprimer[$old] = 'x';
272
-							$ajouter[$new] = '+';
273
-						}
274
-					}
275
-				}
276
-			}
277
-		}
278
-
279
-		if ($supprimer) {
280
-			if ($supprimer_objets = charger_fonction(
281
-				"editer_liens_supprimer_{$table_source}_{$objet}_{$objet_lien}",
282
-				'action',
283
-				true
284
-			)) {
285
-				$oups = $supprimer_objets($supprimer);
286
-			} else {
287
-				include_spip('action/editer_liens');
288
-				$oups = array();
289
-
290
-				foreach ($supprimer as $k => $v) {
291
-					if ($lien = lien_verifier_action($k, $v)) {
292
-						$lien = explode('-', $lien);
293
-						list($objet_source, $ids, $objet_lie, $idl, $role) = array_pad($lien, 5, null);
294
-						// appliquer une condition sur le rôle si défini ('*' pour tous les roles)
295
-						$cond = (!is_null($role) ? array('role' => $role) : array());
296
-						if ($objet_lien == $objet_source) {
297
-							$oups = array_merge(
298
-								$oups,
299
-								objet_trouver_liens(array($objet_source => $ids), array($objet_lie => $idl), $cond)
300
-							);
301
-							objet_dissocier(array($objet_source => $ids), array($objet_lie => $idl), $cond);
302
-						} else {
303
-							$oups = array_merge(
304
-								$oups,
305
-								objet_trouver_liens(array($objet_lie => $idl), array($objet_source => $ids), $cond)
306
-							);
307
-							objet_dissocier(array($objet_lie => $idl), array($objet_source => $ids), $cond);
308
-						}
309
-					}
310
-				}
311
-			}
312
-			set_request('_oups', $oups ? base64_encode(serialize($oups)) : null);
313
-		}
314
-
315
-		if ($ajouter) {
316
-			if ($ajouter_objets = charger_fonction("editer_liens_ajouter_{$table_source}_{$objet}_{$objet_lien}", 'action', true)
317
-			) {
318
-				$ajout_ok = $ajouter_objets($ajouter);
319
-			} else {
320
-				$ajout_ok = false;
321
-				include_spip('action/editer_liens');
322
-				foreach ($ajouter as $k => $v) {
323
-					if ($lien = lien_verifier_action($k, $v)) {
324
-						$ajout_ok = true;
325
-						list($objet1, $ids, $objet2, $idl) = explode('-', $lien);
326
-						$qualifs = lien_retrouver_qualif($objet_lien, $lien);
327
-						if ($objet_lien == $objet1) {
328
-							lien_ajouter_liaisons($objet1, $ids, $objet2, $idl, $qualifs);
329
-						} else {
330
-							lien_ajouter_liaisons($objet2, $idl, $objet1, $ids, $qualifs);
331
-						}
332
-						set_request('id_lien_ajoute', $ids);
333
-					}
334
-				}
335
-			}
336
-			# oups ne persiste que pour la derniere action, si suppression
337
-			# une suppression suivie d'un ajout dans le meme hit est un remplacement
338
-			# non annulable !
339
-			if ($ajout_ok) {
340
-				set_request('_oups');
341
-			}
342
-		}
343
-
344
-		if ($ordonner) {
345
-			include_spip('action/editer_liens');
346
-			foreach ($ordonner as $k => $rang_lien) {
347
-				if ($lien = lien_verifier_action($k, '')) {
348
-					list($objet1, $ids, $objet2, $idl) = explode('-', $lien);
349
-					$qualif = array('rang_lien' => $rang_lien);
350
-
351
-					if ($objet_lien == $objet1) {
352
-						objet_qualifier_liens(array($objet1 => $ids), array($objet2 => $idl), $qualif);
353
-					} else {
354
-						objet_qualifier_liens(array($objet2 => $idl), array($objet1 => $ids), $qualif);
355
-					}
356
-					set_request('id_lien_ajoute', $ids);
357
-					set_request('_oups');
358
-				}
359
-			}
360
-		}
361
-	}
362
-
363
-
364
-	return $res;
210
+    // compat avec ancienne signature ou le 4eme argument est $editable
211
+    if (!is_array($options)) {
212
+        $options = array('editable' => $options);
213
+    } elseif (!isset($options['editable'])) {
214
+        $options['editable'] = true;
215
+    }
216
+
217
+    $editable = $options['editable'];
218
+
219
+    $res = array('editable' => $editable ? true : false);
220
+    list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c);
221
+    if (!$table_source or !$objet or !$objet_lien) {
222
+        return $res;
223
+    }
224
+
225
+
226
+    if (_request('tout_voir')) {
227
+        set_request('recherche', '');
228
+    }
229
+
230
+    include_spip('inc/autoriser');
231
+    if (autoriser('modifier', $objet, $id_objet)) {
232
+        // annuler les suppressions du coup d'avant !
233
+        if (_request('annuler_oups')
234
+            and $oups = _request('_oups')
235
+            and $oups = base64_decode($oups)
236
+            and $oups = unserialize($oups)
237
+        ) {
238
+            if ($oups_objets = charger_fonction("editer_liens_oups_{$table_source}_{$objet}_{$objet_lien}", 'action', true)) {
239
+                $oups_objets($oups);
240
+            } else {
241
+                $objet_source = objet_type($table_source);
242
+                include_spip('action/editer_liens');
243
+                foreach ($oups as $oup) {
244
+                    if ($objet_lien == $objet_source) {
245
+                        objet_associer(array($objet_source => $oup[$objet_source]), array($objet => $oup[$objet]), $oup);
246
+                    } else {
247
+                        objet_associer(array($objet => $oup[$objet]), array($objet_source => $oup[$objet_source]), $oup);
248
+                    }
249
+                }
250
+            }
251
+            # oups ne persiste que pour la derniere action, si suppression
252
+            set_request('_oups');
253
+        }
254
+
255
+        $supprimer = _request('supprimer_lien');
256
+        $ajouter = _request('ajouter_lien');
257
+        $ordonner = _request('ordonner_lien');
258
+
259
+        if (_request('desordonner_liens')) {
260
+            include_spip('action/editer_liens');
261
+            objet_qualifier_liens(array($objet_lien => '*'), array($objet => $id_objet), array('rang_lien' => 0));
262
+        }
263
+
264
+        // il est possible de preciser dans une seule variable un remplacement :
265
+        // remplacer_lien[old][new]
266
+        if ($remplacer = _request('remplacer_lien')) {
267
+            foreach ($remplacer as $k => $v) {
268
+                if ($old = lien_verifier_action($k, '')) {
269
+                    foreach (is_array($v) ? $v : array($v) as $kn => $vn) {
270
+                        if ($new = lien_verifier_action($kn, $vn)) {
271
+                            $supprimer[$old] = 'x';
272
+                            $ajouter[$new] = '+';
273
+                        }
274
+                    }
275
+                }
276
+            }
277
+        }
278
+
279
+        if ($supprimer) {
280
+            if ($supprimer_objets = charger_fonction(
281
+                "editer_liens_supprimer_{$table_source}_{$objet}_{$objet_lien}",
282
+                'action',
283
+                true
284
+            )) {
285
+                $oups = $supprimer_objets($supprimer);
286
+            } else {
287
+                include_spip('action/editer_liens');
288
+                $oups = array();
289
+
290
+                foreach ($supprimer as $k => $v) {
291
+                    if ($lien = lien_verifier_action($k, $v)) {
292
+                        $lien = explode('-', $lien);
293
+                        list($objet_source, $ids, $objet_lie, $idl, $role) = array_pad($lien, 5, null);
294
+                        // appliquer une condition sur le rôle si défini ('*' pour tous les roles)
295
+                        $cond = (!is_null($role) ? array('role' => $role) : array());
296
+                        if ($objet_lien == $objet_source) {
297
+                            $oups = array_merge(
298
+                                $oups,
299
+                                objet_trouver_liens(array($objet_source => $ids), array($objet_lie => $idl), $cond)
300
+                            );
301
+                            objet_dissocier(array($objet_source => $ids), array($objet_lie => $idl), $cond);
302
+                        } else {
303
+                            $oups = array_merge(
304
+                                $oups,
305
+                                objet_trouver_liens(array($objet_lie => $idl), array($objet_source => $ids), $cond)
306
+                            );
307
+                            objet_dissocier(array($objet_lie => $idl), array($objet_source => $ids), $cond);
308
+                        }
309
+                    }
310
+                }
311
+            }
312
+            set_request('_oups', $oups ? base64_encode(serialize($oups)) : null);
313
+        }
314
+
315
+        if ($ajouter) {
316
+            if ($ajouter_objets = charger_fonction("editer_liens_ajouter_{$table_source}_{$objet}_{$objet_lien}", 'action', true)
317
+            ) {
318
+                $ajout_ok = $ajouter_objets($ajouter);
319
+            } else {
320
+                $ajout_ok = false;
321
+                include_spip('action/editer_liens');
322
+                foreach ($ajouter as $k => $v) {
323
+                    if ($lien = lien_verifier_action($k, $v)) {
324
+                        $ajout_ok = true;
325
+                        list($objet1, $ids, $objet2, $idl) = explode('-', $lien);
326
+                        $qualifs = lien_retrouver_qualif($objet_lien, $lien);
327
+                        if ($objet_lien == $objet1) {
328
+                            lien_ajouter_liaisons($objet1, $ids, $objet2, $idl, $qualifs);
329
+                        } else {
330
+                            lien_ajouter_liaisons($objet2, $idl, $objet1, $ids, $qualifs);
331
+                        }
332
+                        set_request('id_lien_ajoute', $ids);
333
+                    }
334
+                }
335
+            }
336
+            # oups ne persiste que pour la derniere action, si suppression
337
+            # une suppression suivie d'un ajout dans le meme hit est un remplacement
338
+            # non annulable !
339
+            if ($ajout_ok) {
340
+                set_request('_oups');
341
+            }
342
+        }
343
+
344
+        if ($ordonner) {
345
+            include_spip('action/editer_liens');
346
+            foreach ($ordonner as $k => $rang_lien) {
347
+                if ($lien = lien_verifier_action($k, '')) {
348
+                    list($objet1, $ids, $objet2, $idl) = explode('-', $lien);
349
+                    $qualif = array('rang_lien' => $rang_lien);
350
+
351
+                    if ($objet_lien == $objet1) {
352
+                        objet_qualifier_liens(array($objet1 => $ids), array($objet2 => $idl), $qualif);
353
+                    } else {
354
+                        objet_qualifier_liens(array($objet2 => $idl), array($objet1 => $ids), $qualif);
355
+                    }
356
+                    set_request('id_lien_ajoute', $ids);
357
+                    set_request('_oups');
358
+                }
359
+            }
360
+        }
361
+    }
362
+
363
+
364
+    return $res;
365 365
 }
366 366
 
367 367
 
@@ -384,24 +384,24 @@  discard block
 block discarded – undo
384 384
  * @return string Action demandée si trouvée, sinon ''
385 385
  */
386 386
 function lien_verifier_action($k, $v) {
387
-	$action = '';
388
-	if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $k)) {
389
-		$action = $k;
390
-	}
391
-	if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $v)) {
392
-		if (is_numeric($k)) {
393
-			$action = $v;
394
-		}
395
-		if (_request($k)) {
396
-			$action = $v;
397
-		}
398
-	}
399
-	// ajout un role null fictif (plus pratique) si pas défini
400
-	if ($action and count(explode('-', $action)) == 4) {
401
-		$action .= '-';
402
-	}
403
-
404
-	return $action;
387
+    $action = '';
388
+    if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $k)) {
389
+        $action = $k;
390
+    }
391
+    if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $v)) {
392
+        if (is_numeric($k)) {
393
+            $action = $v;
394
+        }
395
+        if (_request($k)) {
396
+            $action = $v;
397
+        }
398
+    }
399
+    // ajout un role null fictif (plus pratique) si pas défini
400
+    if ($action and count(explode('-', $action)) == 4) {
401
+        $action .= '-';
402
+    }
403
+
404
+    return $action;
405 405
 }
406 406
 
407 407
 
@@ -417,65 +417,65 @@  discard block
 block discarded – undo
417 417
  *   Liste des qualifs pour chaque lien. Tableau vide s'il n'y en a pas.
418 418
  **/
419 419
 function lien_retrouver_qualif($objet_lien, $lien) {
420
-	// un role est défini dans la liaison
421
-	$defs = explode('-', $lien);
422
-	list($objet1, , $objet2, , $role) = array_pad($defs, 5, null);
423
-	if ($objet_lien == $objet1) {
424
-		$colonne_role = roles_colonne($objet1, $objet2);
425
-	} else {
426
-		$colonne_role = roles_colonne($objet2, $objet1);
427
-	}
428
-
429
-	// cas ou le role est defini en 5e argument de l'action sur le lien (suppression, ajout rapide sans autre attribut)
430
-	if ($role) {
431
-		return array(
432
-			// un seul lien avec ce role
433
-			array($colonne_role => $role)
434
-		);
435
-	}
436
-
437
-	// retrouver les rôles postés pour cette liaison, s'il y en a.
438
-	$qualifier_lien = _request('qualifier_lien');
439
-	if (!$qualifier_lien or !is_array($qualifier_lien)) {
440
-		return array();
441
-	}
442
-
443
-	// pas avec l'action complete (incluant le role)
444
-	$qualif = array();
445
-	if ((!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien])
446
-		and count($defs) == 5
447
-	) {
448
-		// on tente avec l'action sans le role
449
-		array_pop($defs);
450
-		$lien = implode('-', $defs);
451
-		if (!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) {
452
-			$qualif = array();
453
-		}
454
-	}
455
-
456
-	// $qualif de la forme array(role=>array(...),valeur=>array(...),....)
457
-	// on le reforme en array(array(role=>..,valeur=>..,..),array(role=>..,valeur=>..,..),...)
458
-	$qualifs = array();
459
-	while (count($qualif)) {
460
-		$q = array();
461
-		foreach ($qualif as $att => $values) {
462
-			if (is_array($values)) {
463
-				$q[$att] = array_shift($qualif[$att]);
464
-				if (!count($qualif[$att])) {
465
-					unset($qualif[$att]);
466
-				}
467
-			} else {
468
-				$q[$att] = $values;
469
-				unset($qualif[$att]);
470
-			}
471
-		}
472
-		// pas de rôle vide
473
-		if (!$colonne_role or !isset($q[$colonne_role]) or $q[$colonne_role]) {
474
-			$qualifs[] = $q;
475
-		}
476
-	}
477
-
478
-	return $qualifs;
420
+    // un role est défini dans la liaison
421
+    $defs = explode('-', $lien);
422
+    list($objet1, , $objet2, , $role) = array_pad($defs, 5, null);
423
+    if ($objet_lien == $objet1) {
424
+        $colonne_role = roles_colonne($objet1, $objet2);
425
+    } else {
426
+        $colonne_role = roles_colonne($objet2, $objet1);
427
+    }
428
+
429
+    // cas ou le role est defini en 5e argument de l'action sur le lien (suppression, ajout rapide sans autre attribut)
430
+    if ($role) {
431
+        return array(
432
+            // un seul lien avec ce role
433
+            array($colonne_role => $role)
434
+        );
435
+    }
436
+
437
+    // retrouver les rôles postés pour cette liaison, s'il y en a.
438
+    $qualifier_lien = _request('qualifier_lien');
439
+    if (!$qualifier_lien or !is_array($qualifier_lien)) {
440
+        return array();
441
+    }
442
+
443
+    // pas avec l'action complete (incluant le role)
444
+    $qualif = array();
445
+    if ((!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien])
446
+        and count($defs) == 5
447
+    ) {
448
+        // on tente avec l'action sans le role
449
+        array_pop($defs);
450
+        $lien = implode('-', $defs);
451
+        if (!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) {
452
+            $qualif = array();
453
+        }
454
+    }
455
+
456
+    // $qualif de la forme array(role=>array(...),valeur=>array(...),....)
457
+    // on le reforme en array(array(role=>..,valeur=>..,..),array(role=>..,valeur=>..,..),...)
458
+    $qualifs = array();
459
+    while (count($qualif)) {
460
+        $q = array();
461
+        foreach ($qualif as $att => $values) {
462
+            if (is_array($values)) {
463
+                $q[$att] = array_shift($qualif[$att]);
464
+                if (!count($qualif[$att])) {
465
+                    unset($qualif[$att]);
466
+                }
467
+            } else {
468
+                $q[$att] = $values;
469
+                unset($qualif[$att]);
470
+            }
471
+        }
472
+        // pas de rôle vide
473
+        if (!$colonne_role or !isset($q[$colonne_role]) or $q[$colonne_role]) {
474
+            $qualifs[] = $q;
475
+        }
476
+    }
477
+
478
+    return $qualifs;
479 479
 }
480 480
 
481 481
 /**
@@ -494,12 +494,12 @@  discard block
 block discarded – undo
494 494
  **/
495 495
 function lien_ajouter_liaisons($objet_source, $ids, $objet_lien, $idl, $qualifs) {
496 496
 
497
-	// retrouver la colonne de roles s'il y en a a lier
498
-	if (is_array($qualifs) and count($qualifs)) {
499
-		foreach ($qualifs as $qualif) {
500
-			objet_associer(array($objet_source => $ids), array($objet_lien => $idl), $qualif);
501
-		}
502
-	} else {
503
-		objet_associer(array($objet_source => $ids), array($objet_lien => $idl));
504
-	}
497
+    // retrouver la colonne de roles s'il y en a a lier
498
+    if (is_array($qualifs) and count($qualifs)) {
499
+        foreach ($qualifs as $qualif) {
500
+            objet_associer(array($objet_source => $ids), array($objet_lien => $idl), $qualif);
501
+        }
502
+    } else {
503
+        objet_associer(array($objet_source => $ids), array($objet_lien => $idl));
504
+    }
505 505
 }
Please login to merge, or discard this patch.
prive/formulaires/traduire.php 1 patch
Indentation   +110 added lines, -110 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('inc/actions');
@@ -39,64 +39,64 @@  discard block
 block discarded – undo
39 39
  *     Contexte à transmettre au squelette du formulaire sinon
40 40
  */
41 41
 function formulaires_traduire_charger_dist($objet, $id_objet, $retour = '', $traduire = true) {
42
-	if (!intval($id_objet)) {
43
-		return false;
44
-	}
45
-	$valeurs = formulaires_editer_objet_charger($objet, $id_objet, null, 0, $retour, '');
46
-	// verifier que l'objet indique possede bien des champs id_trad et lang
47
-	// attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette
48
-	if (!isset($valeurs['langue'])) {
49
-		return false;
50
-	}
51
-
52
-	$valeurs['editable'] = autoriser('changerlangue', $objet, $id_objet);
53
-	$valeurs['_langue'] = '';
54
-	$langue_parent = '';
55
-	$id_parent = '';
56
-	if (isset($valeurs['id_rubrique'])) {
57
-		$id_parent = $valeurs['id_rubrique'];
58
-	}
59
-	if (isset($valeurs['id_parent'])) {
60
-		$id_parent = $valeurs['id_parent'];
61
-	}
62
-	if ($id_parent) {
63
-		$langue_parent = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_parent));
64
-	}
65
-
66
-	if (!$langue_parent) {
67
-		$langue_parent = $GLOBALS['meta']['langue_site'];
68
-	}
69
-	if ($valeurs['editable']
70
-		and in_array(table_objet_sql($objet), explode(',', $GLOBALS['meta']['multi_objets']))
71
-	) {
72
-		$valeurs['_langue'] = $valeurs['langue'];
73
-	}
74
-	$valeurs['langue_parent'] = $langue_parent;
75
-
76
-	$valeurs['_objet'] = $objet;
77
-	$valeurs['_id_objet'] = $id_objet;
78
-	$valeurs['changer_lang'] = '';
79
-
80
-
81
-	$valeurs['_traduisible'] = autoriser('changertraduction', $objet, $id_objet);
82
-	$valeurs['_traduire'] = '';
83
-	if (isset($valeurs['id_trad'])) {
84
-		$valeurs['_traduire'] = ($traduire ? ' ' : '');
85
-		$valeurs['_vue_traductions'] = 'prive/objets/liste/' . (trouver_fond(
86
-			$f = table_objet($objet) . '-trad',
87
-			'prive/objets/liste'
88
-		) ? $f : 'objets-trad');
89
-		// pour afficher la liste des trad sur la base de l'id_trad en base
90
-		// independamment d'une saisie en cours sur id_trad
91
-		$valeurs['_lister_id_trad'] = $valeurs['id_trad'];
92
-		$valeurs['_id_parent'] = $id_parent;
93
-	}
94
-
95
-	$valeurs['_saisie_en_cours'] = (!_request('annuler') and (_request('changer_lang') !== null
96
-		or _request('changer_id_trad') !== null));
97
-	$valeurs['_pipeline'] = array('traduire', array('type' => $objet, 'id' => $id_objet));
98
-
99
-	return $valeurs;
42
+    if (!intval($id_objet)) {
43
+        return false;
44
+    }
45
+    $valeurs = formulaires_editer_objet_charger($objet, $id_objet, null, 0, $retour, '');
46
+    // verifier que l'objet indique possede bien des champs id_trad et lang
47
+    // attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette
48
+    if (!isset($valeurs['langue'])) {
49
+        return false;
50
+    }
51
+
52
+    $valeurs['editable'] = autoriser('changerlangue', $objet, $id_objet);
53
+    $valeurs['_langue'] = '';
54
+    $langue_parent = '';
55
+    $id_parent = '';
56
+    if (isset($valeurs['id_rubrique'])) {
57
+        $id_parent = $valeurs['id_rubrique'];
58
+    }
59
+    if (isset($valeurs['id_parent'])) {
60
+        $id_parent = $valeurs['id_parent'];
61
+    }
62
+    if ($id_parent) {
63
+        $langue_parent = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_parent));
64
+    }
65
+
66
+    if (!$langue_parent) {
67
+        $langue_parent = $GLOBALS['meta']['langue_site'];
68
+    }
69
+    if ($valeurs['editable']
70
+        and in_array(table_objet_sql($objet), explode(',', $GLOBALS['meta']['multi_objets']))
71
+    ) {
72
+        $valeurs['_langue'] = $valeurs['langue'];
73
+    }
74
+    $valeurs['langue_parent'] = $langue_parent;
75
+
76
+    $valeurs['_objet'] = $objet;
77
+    $valeurs['_id_objet'] = $id_objet;
78
+    $valeurs['changer_lang'] = '';
79
+
80
+
81
+    $valeurs['_traduisible'] = autoriser('changertraduction', $objet, $id_objet);
82
+    $valeurs['_traduire'] = '';
83
+    if (isset($valeurs['id_trad'])) {
84
+        $valeurs['_traduire'] = ($traduire ? ' ' : '');
85
+        $valeurs['_vue_traductions'] = 'prive/objets/liste/' . (trouver_fond(
86
+            $f = table_objet($objet) . '-trad',
87
+            'prive/objets/liste'
88
+        ) ? $f : 'objets-trad');
89
+        // pour afficher la liste des trad sur la base de l'id_trad en base
90
+        // independamment d'une saisie en cours sur id_trad
91
+        $valeurs['_lister_id_trad'] = $valeurs['id_trad'];
92
+        $valeurs['_id_parent'] = $id_parent;
93
+    }
94
+
95
+    $valeurs['_saisie_en_cours'] = (!_request('annuler') and (_request('changer_lang') !== null
96
+        or _request('changer_id_trad') !== null));
97
+    $valeurs['_pipeline'] = array('traduire', array('type' => $objet, 'id' => $id_objet));
98
+
99
+    return $valeurs;
100 100
 }
101 101
 
102 102
 /**
@@ -114,30 +114,30 @@  discard block
 block discarded – undo
114 114
  *     Erreurs des saisies
115 115
  */
116 116
 function formulaires_traduire_verifier_dist($objet, $id_objet, $retour = '', $traduire = true) {
117
-	$erreurs = array();
118
-
119
-	if (null !== _request('changer_lang')) {
120
-		$erreurs = formulaires_editer_objet_verifier($objet, $id_objet, array('changer_lang'));
121
-	}
122
-
123
-	// si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant
124
-	// et que ca reference bien un objet existant
125
-	if ($id_trad = _request('id_trad')) {
126
-		$table_objet_sql = table_objet_sql($objet);
127
-		$_id_table_objet = id_table_objet($objet);
128
-		if (sql_getfetsel(
129
-			'id_trad',
130
-			$table_objet_sql,
131
-			"$_id_table_objet=" . intval($id_objet)
132
-		)) {
133
-			// ne devrait jamais arriver sauf concurence de saisie
134
-			$erreurs['id_trad'] = _L('Une traduction est deja referencee');
135
-		} elseif (!sql_getfetsel($_id_table_objet, $table_objet_sql, "$_id_table_objet=" . intval($id_trad))) {
136
-			$erreurs['id_trad'] = _L('Indiquez un contenu existant');
137
-		}
138
-	}
139
-
140
-	return $erreurs;
117
+    $erreurs = array();
118
+
119
+    if (null !== _request('changer_lang')) {
120
+        $erreurs = formulaires_editer_objet_verifier($objet, $id_objet, array('changer_lang'));
121
+    }
122
+
123
+    // si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant
124
+    // et que ca reference bien un objet existant
125
+    if ($id_trad = _request('id_trad')) {
126
+        $table_objet_sql = table_objet_sql($objet);
127
+        $_id_table_objet = id_table_objet($objet);
128
+        if (sql_getfetsel(
129
+            'id_trad',
130
+            $table_objet_sql,
131
+            "$_id_table_objet=" . intval($id_objet)
132
+        )) {
133
+            // ne devrait jamais arriver sauf concurence de saisie
134
+            $erreurs['id_trad'] = _L('Une traduction est deja referencee');
135
+        } elseif (!sql_getfetsel($_id_table_objet, $table_objet_sql, "$_id_table_objet=" . intval($id_trad))) {
136
+            $erreurs['id_trad'] = _L('Indiquez un contenu existant');
137
+        }
138
+    }
139
+
140
+    return $erreurs;
141 141
 }
142 142
 
143 143
 
@@ -156,31 +156,31 @@  discard block
 block discarded – undo
156 156
  *     Retour des traitements
157 157
  */
158 158
 function formulaires_traduire_traiter_dist($objet, $id_objet, $retour = '', $traduire = true) {
159
-	$res = array();
160
-	if (!_request('annuler') and autoriser('changerlangue', $objet, $id_objet)) {
161
-		// action/editer_xxx doit traiter la modif de changer_lang
162
-		$res = formulaires_editer_objet_traiter($objet, $id_objet, 0, 0, $retour);
163
-	}
164
-	if (!_request('annuler') and autoriser('changertraduction', $objet, $id_objet)) {
165
-		if ($id_trad = _request('id_trad') or _request('supprimer_trad')) {
166
-			$referencer_traduction = charger_fonction('referencer_traduction', 'action');
167
-			$referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad
168
-		} elseif ($new_id_trad = _request('changer_reference_trad')
169
-			and $new_id_trad = array_keys($new_id_trad)
170
-			and $new_id_trad = reset($new_id_trad)
171
-		) {
172
-			$table_objet_sql = table_objet_sql($objet);
173
-			$_id_table_objet = id_table_objet($objet);
174
-			if ($id_trad = sql_getfetsel('id_trad', $table_objet_sql, "$_id_table_objet=" . intval($id_objet))) {
175
-				$referencer_traduction = charger_fonction('referencer_traduction', 'action');
176
-				$referencer_traduction($objet, $id_trad, $new_id_trad);
177
-			}
178
-		}
179
-	}
180
-	$res['editable'] = true;
181
-	if (!isset($res['message_erreur'])) {
182
-		set_request('annuler', 'annuler');
183
-	} // provoquer la fermeture du forumlaire
184
-
185
-	return $res;
159
+    $res = array();
160
+    if (!_request('annuler') and autoriser('changerlangue', $objet, $id_objet)) {
161
+        // action/editer_xxx doit traiter la modif de changer_lang
162
+        $res = formulaires_editer_objet_traiter($objet, $id_objet, 0, 0, $retour);
163
+    }
164
+    if (!_request('annuler') and autoriser('changertraduction', $objet, $id_objet)) {
165
+        if ($id_trad = _request('id_trad') or _request('supprimer_trad')) {
166
+            $referencer_traduction = charger_fonction('referencer_traduction', 'action');
167
+            $referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad
168
+        } elseif ($new_id_trad = _request('changer_reference_trad')
169
+            and $new_id_trad = array_keys($new_id_trad)
170
+            and $new_id_trad = reset($new_id_trad)
171
+        ) {
172
+            $table_objet_sql = table_objet_sql($objet);
173
+            $_id_table_objet = id_table_objet($objet);
174
+            if ($id_trad = sql_getfetsel('id_trad', $table_objet_sql, "$_id_table_objet=" . intval($id_objet))) {
175
+                $referencer_traduction = charger_fonction('referencer_traduction', 'action');
176
+                $referencer_traduction($objet, $id_trad, $new_id_trad);
177
+            }
178
+        }
179
+    }
180
+    $res['editable'] = true;
181
+    if (!isset($res['message_erreur'])) {
182
+        set_request('annuler', 'annuler');
183
+    } // provoquer la fermeture du forumlaire
184
+
185
+    return $res;
186 186
 }
Please login to merge, or discard this patch.
ecrire/index.php 1 patch
Indentation   +76 added lines, -76 removed lines patch added patch discarded remove patch
@@ -19,14 +19,14 @@  discard block
 block discarded – undo
19 19
 /** Drapeau indiquant que l'on est dans l'espace privé */
20 20
 define('_ESPACE_PRIVE', true);
21 21
 if (!defined('_ECRIRE_INC_VERSION')) {
22
-	include 'inc_version.php';
22
+    include 'inc_version.php';
23 23
 }
24 24
 
25 25
 // Verification anti magic_quotes_sybase, pour qui addslashes("'") = "''"
26 26
 // On prefere la faire ici plutot que dans inc_version, c'est moins souvent et
27 27
 // si le reglage est modifie sur un site en prod, ca fait moins mal
28 28
 if (addslashes("'") !== "\\'") {
29
-	die('SPIP incompatible magic_quotes_sybase');
29
+    die('SPIP incompatible magic_quotes_sybase');
30 30
 }
31 31
 
32 32
 include_spip('inc/cookie');
@@ -42,18 +42,18 @@  discard block
 block discarded – undo
42 42
 // alors il faut blinder les variables d'URL
43 43
 //
44 44
 if (autoriser_sans_cookie($exec, false)) {
45
-	if (!isset($reinstall)) {
46
-		$reinstall = 'non';
47
-	}
48
-	$var_auth = true;
45
+    if (!isset($reinstall)) {
46
+        $reinstall = 'non';
47
+    }
48
+    $var_auth = true;
49 49
 } else {
50
-	// Authentification, redefinissable
51
-	$auth = charger_fonction('auth', 'inc');
52
-	$var_auth = $auth();
53
-	if ($var_auth) {
54
-		echo auth_echec($var_auth);
55
-		exit;
56
-	}
50
+    // Authentification, redefinissable
51
+    $auth = charger_fonction('auth', 'inc');
52
+    $var_auth = $auth();
53
+    if ($var_auth) {
54
+        echo auth_echec($var_auth);
55
+        exit;
56
+    }
57 57
 }
58 58
 
59 59
 // initialiser a la langue par defaut
@@ -64,29 +64,29 @@  discard block
 block discarded – undo
64 64
 
65 65
 
66 66
 if (_request('action') or _request('var_ajax') or _request('formulaire_action')) {
67
-	if (!autoriser_sans_cookie($exec)){
68
-		// Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires
69
-		include_spip('public/aiguiller');
70
-		if (
71
-			// cas des appels actions ?action=xxx
72
-			traiter_appels_actions()
73
-			or
74
-			// cas des hits ajax sur les inclusions ajax
75
-			traiter_appels_inclusions_ajax()
76
-			or
77
-			// cas des formulaires charger/verifier/traiter
78
-			traiter_formulaires_dynamiques()
79
-		){
80
-			exit;
81
-		} // le hit est fini !
82
-	}
67
+    if (!autoriser_sans_cookie($exec)){
68
+        // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires
69
+        include_spip('public/aiguiller');
70
+        if (
71
+            // cas des appels actions ?action=xxx
72
+            traiter_appels_actions()
73
+            or
74
+            // cas des hits ajax sur les inclusions ajax
75
+            traiter_appels_inclusions_ajax()
76
+            or
77
+            // cas des formulaires charger/verifier/traiter
78
+            traiter_formulaires_dynamiques()
79
+        ){
80
+            exit;
81
+        } // le hit est fini !
82
+    }
83 83
 }
84 84
 // securiser les redirect du back-office
85 85
 if (_request('redirect')) {
86
-	if (!function_exists('securiser_redirect_action')){
87
-		include_spip('public/aiguiller');
88
-	}
89
-	set_request('redirect',securiser_redirect_action(_request('redirect')));
86
+    if (!function_exists('securiser_redirect_action')){
87
+        include_spip('public/aiguiller');
88
+    }
89
+    set_request('redirect',securiser_redirect_action(_request('redirect')));
90 90
 }
91 91
 
92 92
 
@@ -96,11 +96,11 @@  discard block
 block discarded – undo
96 96
 
97 97
 // Controle de la version, sauf si on est deja en train de s'en occuper
98 98
 if (!$reinstall == 'oui'
99
-	and !_AJAX
100
-	and isset($GLOBALS['meta']['version_installee'])
101
-	and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee'])))
99
+    and !_AJAX
100
+    and isset($GLOBALS['meta']['version_installee'])
101
+    and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee'])))
102 102
 ) {
103
-	$exec = 'demande_mise_a_jour';
103
+    $exec = 'demande_mise_a_jour';
104 104
 }
105 105
 
106 106
 // Quand une action d'administration est en cours (meta "admin"),
@@ -110,44 +110,44 @@  discard block
 block discarded – undo
110 110
 // sinon c'est qu'elle a ete interrompue et il faut la reprendre
111 111
 
112 112
 elseif (isset($GLOBALS['meta']["admin"])) {
113
-	if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']["admin"], $l)) {
114
-		list(, $var_f, $n) = $l;
115
-	}
116
-	if (_AJAX
117
-		or !(
118
-			isset($_COOKIE['spip_admin'])
119
-			or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo')
120
-		)
121
-	) {
122
-		spip_log("Quand la meta admin vaut " .
123
-			$GLOBALS['meta']["admin"] .
124
-			" seul un admin peut se connecter et sans AJAX." .
125
-			" En cas de probleme, detruire cette meta.");
126
-		die(_T('info_travaux_texte'));
127
-	}
128
-	if ($n) {
129
-		list(, $var_f, $n) = $l;
130
-		if (tester_url_ecrire("base_$var_f")) {
131
-			$var_f = "base_$var_f";
132
-		}
133
-		if ($var_f != $exec) {
134
-			spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec");
135
-			$exec = $var_f;
136
-			set_request('exec', $exec);
137
-		}
138
-	}
113
+    if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']["admin"], $l)) {
114
+        list(, $var_f, $n) = $l;
115
+    }
116
+    if (_AJAX
117
+        or !(
118
+            isset($_COOKIE['spip_admin'])
119
+            or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo')
120
+        )
121
+    ) {
122
+        spip_log("Quand la meta admin vaut " .
123
+            $GLOBALS['meta']["admin"] .
124
+            " seul un admin peut se connecter et sans AJAX." .
125
+            " En cas de probleme, detruire cette meta.");
126
+        die(_T('info_travaux_texte'));
127
+    }
128
+    if ($n) {
129
+        list(, $var_f, $n) = $l;
130
+        if (tester_url_ecrire("base_$var_f")) {
131
+            $var_f = "base_$var_f";
132
+        }
133
+        if ($var_f != $exec) {
134
+            spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec");
135
+            $exec = $var_f;
136
+            set_request('exec', $exec);
137
+        }
138
+    }
139 139
 }
140 140
 // si nom pas plausible, prendre le script par defaut
141 141
 // attention aux deux cas 404/403 qui commencent par un 4 !
142 142
 elseif (!preg_match(',^[a-z4_][0-9a-z_-]*$,i', $exec)) {
143
-	$exec = "accueil";
144
-	set_request('exec', $exec);
143
+    $exec = "accueil";
144
+    set_request('exec', $exec);
145 145
 }
146 146
 
147 147
 // compatibilite ascendante : obsolete, ne plus utiliser
148 148
 $GLOBALS['spip_display'] = isset($GLOBALS['visiteur_session']['prefs']['display'])
149
-	? (int) $GLOBALS['visiteur_session']['prefs']['display']
150
-	: 0;
149
+    ? (int) $GLOBALS['visiteur_session']['prefs']['display']
150
+    : 0;
151 151
 $GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? preg_replace('/[^a-z0-9]/i', '', $_COOKIE['spip_ecran']) : "etroit";
152 152
 
153 153
 //  si la langue est specifiee par cookie et ne correspond pas
@@ -155,18 +155,18 @@  discard block
 block discarded – undo
155 155
 // on appelle directement la fonction, car un appel d'action peut conduire a une boucle infinie
156 156
 // si le cookie n'est pas pose correctement dans l'action
157 157
 if (!$var_auth and isset($_COOKIE['spip_lang_ecrire'])
158
-	and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang']
158
+    and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang']
159 159
 ) {
160
-	include_spip('action/converser');
161
-	action_converser_post($GLOBALS['visiteur_session']['lang'], true);
160
+    include_spip('action/converser');
161
+    action_converser_post($GLOBALS['visiteur_session']['lang'], true);
162 162
 }
163 163
 
164 164
 if ($var_f = tester_url_ecrire($exec)) {
165
-	$var_f = charger_fonction($var_f);
166
-	$var_f(); // at last
165
+    $var_f = charger_fonction($var_f);
166
+    $var_f(); // at last
167 167
 } else {
168
-	// Rien de connu: rerouter vers exec=404 au lieu d'echouer
169
-	// ce qui permet de laisser la main a un plugin
170
-	$var_f = charger_fonction('404');
171
-	$var_f($exec);
168
+    // Rien de connu: rerouter vers exec=404 au lieu d'echouer
169
+    // ce qui permet de laisser la main a un plugin
170
+    $var_f = charger_fonction('404');
171
+    $var_f($exec);
172 172
 }
Please login to merge, or discard this patch.
ecrire/inc/prepare_recherche.php 1 patch
Indentation   +124 added lines, -124 removed lines patch added patch discarded remove patch
@@ -17,12 +17,12 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('inc/rechercher');
24 24
 if (!defined('_DELAI_CACHE_resultats')) {
25
-	define('_DELAI_CACHE_resultats', 600);
25
+    define('_DELAI_CACHE_resultats', 600);
26 26
 }
27 27
 
28 28
 /**
@@ -49,111 +49,111 @@  discard block
 block discarded – undo
49 49
  * @return array
50 50
  */
51 51
 function inc_prepare_recherche_dist(
52
-	$recherche,
53
-	$table = 'articles',
54
-	$cond = false,
55
-	$serveur = '',
56
-	$modificateurs = array(),
57
-	$primary = ''
52
+    $recherche,
53
+    $table = 'articles',
54
+    $cond = false,
55
+    $serveur = '',
56
+    $modificateurs = array(),
57
+    $primary = ''
58 58
 ) {
59
-	static $cache = array();
60
-	$delai_fraicheur = min(_DELAI_CACHE_resultats,
61
-		time() - (isset($GLOBALS['meta']['derniere_modif']) ? $GLOBALS['meta']['derniere_modif'] : 0));
62
-
63
-	// si recherche n'est pas dans le contexte, on va prendre en globals
64
-	// ca permet de faire des inclure simple.
65
-	if (!isset($recherche) and isset($GLOBALS['recherche'])) {
66
-		$recherche = $GLOBALS['recherche'];
67
-	}
68
-
69
-	// traiter le cas {recherche?}
70
-	if ($cond and !strlen($recherche)) {
71
-		return array(
72
-			"0 as points" /* as points */, /* where */
73
-			''
74
-		);
75
-	}
76
-
77
-
78
-	$rechercher = false;
79
-
80
-	$where_resultat_recent = sql_date_proche('maj', (0 - ($delai_fraicheur + 100)), " SECOND");
81
-	if (!isset($cache[$serveur][$table][$recherche])) {
82
-		$hash_serv = ($serveur ? substr(md5($serveur), 0, 16) : '');
83
-		$hash = substr(md5($recherche . $table), 0, 16);
84
-		$where = "(resultats.recherche='$hash' AND resultats.table_objet=" . sql_quote($table) . " AND resultats.serveur='$hash_serv')";
85
-		$row = sql_fetsel('recherche', 'spip_resultats AS resultats',
86
-			$where . " AND $where_resultat_recent", '', '', '0,1');
87
-		if (!$row
88
-			or (defined('_VAR_MODE') and _VAR_MODE == 'recalcul')
89
-		) {
90
-			$rechercher = true;
91
-		}
92
-	}
93
-
94
-	// si on n'a pas encore traite les donnees dans une boucle precedente
95
-	if ($rechercher) {
96
-		//$tables = liste_des_champs();
97
-		$x = objet_type($table);
98
-		$points = recherche_en_base($recherche,
99
-			$x,
100
-			array(
101
-				'score' => true,
102
-				'toutvoir' => true,
103
-				'jointures' => true
104
-			),
105
-			$serveur);
106
-		// pas de résultat, pas de point
107
-		$points = isset($points[$x]) ? $points[$x] : array();
108
-
109
-		// permettre aux plugins de modifier le resultat
110
-		$points = pipeline('prepare_recherche', array(
111
-			'args' => array(
112
-				'type' => $x,
113
-				'recherche' => $recherche,
114
-				'serveur' => $serveur,
115
-				'modificateurs' => $modificateurs
116
-			),
117
-			'data' => $points
118
-		));
119
-
120
-		// supprimer les anciens resultats de cette recherche
121
-		// et les resultats trop vieux avec une marge
122
-		// pas de AS resultats dans un delete (mysql)
123
-		$whered = str_replace(array("resultats.recherche", "resultats.table_objet", "resultats.serveur"),
124
-			array("recherche", "table_objet", "serveur"), $where);
125
-
126
-		sql_delete('spip_resultats',
127
-			"NOT($where_resultat_recent) OR ($whered)");
128
-
129
-		// inserer les resultats dans la table de cache des resultats
130
-		if (count($points)) {
131
-			$tab_couples = array();
132
-			foreach ($points as $id => $p) {
133
-				$tab_couples[] = array(
134
-					'recherche' => $hash,
135
-					'id' => $id,
136
-					'points' => $p['score'],
137
-					'table_objet' => $table,
138
-					'serveur' => $hash_serv,
139
-				);
140
-			}
141
-			sql_insertq_multi('spip_resultats', $tab_couples, array());
142
-		}
143
-	}
144
-
145
-	if (!isset($cache[$serveur][$table][$recherche])) {
146
-		if (!$serveur) {
147
-			$cache[$serveur][$table][$recherche] = array("resultats.points AS points", $where);
148
-		} else {
149
-			if (sql_countsel('spip_resultats as resultats', $where)) {
150
-				$rows = sql_allfetsel('resultats.id,resultats.points', 'spip_resultats as resultats', $where);
151
-			}
152
-			$cache[$serveur][$table][$recherche] = generer_select_where_explicites($table, $primary, $rows, $serveur);
153
-		}
154
-	}
155
-
156
-	return $cache[$serveur][$table][$recherche];
59
+    static $cache = array();
60
+    $delai_fraicheur = min(_DELAI_CACHE_resultats,
61
+        time() - (isset($GLOBALS['meta']['derniere_modif']) ? $GLOBALS['meta']['derniere_modif'] : 0));
62
+
63
+    // si recherche n'est pas dans le contexte, on va prendre en globals
64
+    // ca permet de faire des inclure simple.
65
+    if (!isset($recherche) and isset($GLOBALS['recherche'])) {
66
+        $recherche = $GLOBALS['recherche'];
67
+    }
68
+
69
+    // traiter le cas {recherche?}
70
+    if ($cond and !strlen($recherche)) {
71
+        return array(
72
+            "0 as points" /* as points */, /* where */
73
+            ''
74
+        );
75
+    }
76
+
77
+
78
+    $rechercher = false;
79
+
80
+    $where_resultat_recent = sql_date_proche('maj', (0 - ($delai_fraicheur + 100)), " SECOND");
81
+    if (!isset($cache[$serveur][$table][$recherche])) {
82
+        $hash_serv = ($serveur ? substr(md5($serveur), 0, 16) : '');
83
+        $hash = substr(md5($recherche . $table), 0, 16);
84
+        $where = "(resultats.recherche='$hash' AND resultats.table_objet=" . sql_quote($table) . " AND resultats.serveur='$hash_serv')";
85
+        $row = sql_fetsel('recherche', 'spip_resultats AS resultats',
86
+            $where . " AND $where_resultat_recent", '', '', '0,1');
87
+        if (!$row
88
+            or (defined('_VAR_MODE') and _VAR_MODE == 'recalcul')
89
+        ) {
90
+            $rechercher = true;
91
+        }
92
+    }
93
+
94
+    // si on n'a pas encore traite les donnees dans une boucle precedente
95
+    if ($rechercher) {
96
+        //$tables = liste_des_champs();
97
+        $x = objet_type($table);
98
+        $points = recherche_en_base($recherche,
99
+            $x,
100
+            array(
101
+                'score' => true,
102
+                'toutvoir' => true,
103
+                'jointures' => true
104
+            ),
105
+            $serveur);
106
+        // pas de résultat, pas de point
107
+        $points = isset($points[$x]) ? $points[$x] : array();
108
+
109
+        // permettre aux plugins de modifier le resultat
110
+        $points = pipeline('prepare_recherche', array(
111
+            'args' => array(
112
+                'type' => $x,
113
+                'recherche' => $recherche,
114
+                'serveur' => $serveur,
115
+                'modificateurs' => $modificateurs
116
+            ),
117
+            'data' => $points
118
+        ));
119
+
120
+        // supprimer les anciens resultats de cette recherche
121
+        // et les resultats trop vieux avec une marge
122
+        // pas de AS resultats dans un delete (mysql)
123
+        $whered = str_replace(array("resultats.recherche", "resultats.table_objet", "resultats.serveur"),
124
+            array("recherche", "table_objet", "serveur"), $where);
125
+
126
+        sql_delete('spip_resultats',
127
+            "NOT($where_resultat_recent) OR ($whered)");
128
+
129
+        // inserer les resultats dans la table de cache des resultats
130
+        if (count($points)) {
131
+            $tab_couples = array();
132
+            foreach ($points as $id => $p) {
133
+                $tab_couples[] = array(
134
+                    'recherche' => $hash,
135
+                    'id' => $id,
136
+                    'points' => $p['score'],
137
+                    'table_objet' => $table,
138
+                    'serveur' => $hash_serv,
139
+                );
140
+            }
141
+            sql_insertq_multi('spip_resultats', $tab_couples, array());
142
+        }
143
+    }
144
+
145
+    if (!isset($cache[$serveur][$table][$recherche])) {
146
+        if (!$serveur) {
147
+            $cache[$serveur][$table][$recherche] = array("resultats.points AS points", $where);
148
+        } else {
149
+            if (sql_countsel('spip_resultats as resultats', $where)) {
150
+                $rows = sql_allfetsel('resultats.id,resultats.points', 'spip_resultats as resultats', $where);
151
+            }
152
+            $cache[$serveur][$table][$recherche] = generer_select_where_explicites($table, $primary, $rows, $serveur);
153
+        }
154
+    }
155
+
156
+    return $cache[$serveur][$table][$recherche];
157 157
 }
158 158
 
159 159
 
@@ -169,22 +169,22 @@  discard block
 block discarded – undo
169 169
  * @return array
170 170
  */
171 171
 function generer_select_where_explicites($table, $primary, $rows, $serveur) {
172
-	# calculer le {id_article IN()} et le {... as points}
173
-	if (!count($rows)) {
174
-		return array("''", "0=1");
175
-	} else {
176
-		$listes_ids = array();
177
-		$select = '0';
178
-		foreach ($rows as $r) {
179
-			$listes_ids[$r['points']][] = $r['id'];
180
-		}
181
-
182
-		foreach ($listes_ids as $p => $ids) {
183
-			$select .= "+$p*(" .
184
-				sql_in("$table.$primary", $ids, '', $serveur)
185
-				. ") ";
186
-		}
187
-
188
-		return array("$select AS points ", sql_in("$table.$primary", array_map('reset', $rows), '', $serveur));
189
-	}
172
+    # calculer le {id_article IN()} et le {... as points}
173
+    if (!count($rows)) {
174
+        return array("''", "0=1");
175
+    } else {
176
+        $listes_ids = array();
177
+        $select = '0';
178
+        foreach ($rows as $r) {
179
+            $listes_ids[$r['points']][] = $r['id'];
180
+        }
181
+
182
+        foreach ($listes_ids as $p => $ids) {
183
+            $select .= "+$p*(" .
184
+                sql_in("$table.$primary", $ids, '', $serveur)
185
+                . ") ";
186
+        }
187
+
188
+        return array("$select AS points ", sql_in("$table.$primary", array_map('reset', $rows), '', $serveur));
189
+    }
190 190
 }
Please login to merge, or discard this patch.