Completed
Push — master ( 6e9d01...e4a2f2 )
by cam
04:25
created
ecrire/base/dump.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -311,7 +311,7 @@
 block discarded – undo
311 311
  * peut etre utilise pour l'import depuis xml,
312 312
  * ou la copie de base a base (mysql<->sqlite par exemple)
313 313
  *
314
- * @param array $tables
314
+ * @param string[] $tables
315 315
  * @param array $exclure_tables
316 316
  * @param string $serveur
317 317
  */
Please login to merge, or discard this patch.
Braces   +3 added lines, -2 removed lines patch added patch discarded remove patch
@@ -326,14 +326,15 @@
 block discarded – undo
326 326
 				$connecte = false;
327 327
 			}
328 328
 		}
329
-		if ($connecte)
330
-			# on ajoute les liaisons en premier
329
+		if ($connecte) {
330
+					# on ajoute les liaisons en premier
331 331
 			# si une restauration est interrompue,
332 332
 			# cela se verra mieux si il manque des objets
333 333
 			# que des liens
334 334
 		{
335 335
 			array_unshift($tables_for_dump, $link_table);
336 336
 		}
337
+		}
337 338
 	}
338 339
 
339 340
 	return array($tables_for_dump, $tables_for_link);
Please login to merge, or discard this patch.
Spacing   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
  * @return string
39 39
  **/
40 40
 function base_dump_meta_name($rub) {
41
-	return $meta = "status_dump_{$rub}_" . abs($GLOBALS['visiteur_session']['id_auteur']);
41
+	return $meta = "status_dump_{$rub}_".abs($GLOBALS['visiteur_session']['id_auteur']);
42 42
 }
43 43
 
44 44
 /**
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
 	$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
85 85
 	$prefixe = $connexion['prefixe'];
86 86
 
87
-	$p = '/^' . $prefixe . '/';
87
+	$p = '/^'.$prefixe.'/';
88 88
 	$res = $tables;
89 89
 	foreach (sql_alltable(null, $serveur) as $t) {
90 90
 		if (preg_match($p, $t)) {
@@ -343,8 +343,8 @@  discard block
 block discarded – undo
343 343
 function base_vider_tables_destination_copie($tables, $exclure_tables = array(), $serveur = '') {
344 344
 	$trouver_table = charger_fonction('trouver_table', 'base');
345 345
 
346
-	spip_log('Vider ' . count($tables) . " tables sur serveur '$serveur' : " . join(', ', $tables),
347
-		'base.' . _LOG_INFO_IMPORTANTE);
346
+	spip_log('Vider '.count($tables)." tables sur serveur '$serveur' : ".join(', ', $tables),
347
+		'base.'._LOG_INFO_IMPORTANTE);
348 348
 	foreach ($tables as $table) {
349 349
 		if (!in_array($table, $exclure_tables)) {
350 350
 			// sur le serveur principal, il ne faut pas supprimer l'auteur loge !
@@ -381,14 +381,14 @@  discard block
 block discarded – undo
381 381
 function base_conserver_copieur($move = true, $serveur = '') {
382 382
 	// s'asurer qu'on a pas deja fait la manip !
383 383
 	if ($GLOBALS['visiteur_session']['id_auteur'] > 0 and sql_countsel("spip_auteurs", "id_auteur>0")) {
384
-		spip_log('Conserver copieur dans id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'] . " pour le serveur '$serveur'",
385
-			'dump.' . _LOG_INFO_IMPORTANTE);
384
+		spip_log('Conserver copieur dans id_auteur='.$GLOBALS['visiteur_session']['id_auteur']." pour le serveur '$serveur'",
385
+			'dump.'._LOG_INFO_IMPORTANTE);
386 386
 		sql_delete("spip_auteurs", "id_auteur<0", $serveur);
387 387
 		if ($move) {
388 388
 			sql_updateq('spip_auteurs', array('id_auteur' => -$GLOBALS['visiteur_session']['id_auteur']),
389
-				"id_auteur=" . intval($GLOBALS['visiteur_session']['id_auteur']), array(), $serveur);
389
+				"id_auteur=".intval($GLOBALS['visiteur_session']['id_auteur']), array(), $serveur);
390 390
 		} else {
391
-			$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'], '', '', '', '',
391
+			$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.$GLOBALS['visiteur_session']['id_auteur'], '', '', '', '',
392 392
 				$serveur);
393 393
 			$row['id_auteur'] = -$GLOBALS['visiteur_session']['id_auteur'];
394 394
 			sql_insertq('spip_auteurs', $row, array(), $serveur);
@@ -411,15 +411,15 @@  discard block
 block discarded – undo
411 411
 	// rien a faire si ce n'est pas le serveur principal !
412 412
 	if ($serveur == '') {
413 413
 		if (sql_countsel("spip_auteurs", "id_auteur>0")) {
414
-			spip_log("Detruire copieur id_auteur<0 pour le serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
414
+			spip_log("Detruire copieur id_auteur<0 pour le serveur '$serveur'", 'dump.'._LOG_INFO_IMPORTANTE);
415 415
 			sql_delete("spip_auteurs", "id_auteur<0", $serveur);
416 416
 		} else {
417 417
 			spip_log("Restaurer copieur id_auteur<0 pour le serveur '$serveur' (aucun autre auteur en base)",
418
-				'dump.' . _LOG_INFO_IMPORTANTE);
418
+				'dump.'._LOG_INFO_IMPORTANTE);
419 419
 			sql_update('spip_auteurs', array('id_auteur' => '-id_auteur'), "id_auteur<0");
420 420
 		}
421 421
 	} else {
422
-		spip_log("Pas de destruction copieur sur serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
422
+		spip_log("Pas de destruction copieur sur serveur '$serveur'", 'dump.'._LOG_INFO_IMPORTANTE);
423 423
 	}
424 424
 }
425 425
 
@@ -453,19 +453,19 @@  discard block
 block discarded – undo
453 453
 			}
454 454
 		} else {
455 455
 			sql_drop_table($table, '', $serveur_dest);
456
-			spip_log("drop table '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
456
+			spip_log("drop table '$table' sur serveur '$serveur_dest'", 'dump.'._LOG_INFO_IMPORTANTE);
457 457
 		}
458 458
 		$desc_dest = false;
459 459
 	}
460 460
 	// si la table n'existe pas dans la destination, la creer a l'identique !
461 461
 	if (!$desc_dest) {
462
-		spip_log("creation '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
462
+		spip_log("creation '$table' sur serveur '$serveur_dest'", 'dump.'._LOG_INFO_IMPORTANTE);
463 463
 		include_spip('base/create');
464 464
 		creer_ou_upgrader_table($table, $desc, 'auto', $upgrade, $serveur_dest);
465 465
 		$desc_dest = sql_showtable($table, true, $serveur_dest);
466 466
 	}
467 467
 	if (!$desc_dest) {
468
-		spip_log("Erreur creation '$table' sur serveur '$serveur_dest'" . var_export($desc, 1), 'dump.' . _LOG_ERREUR);
468
+		spip_log("Erreur creation '$table' sur serveur '$serveur_dest'".var_export($desc, 1), 'dump.'._LOG_ERREUR);
469 469
 	}
470 470
 
471 471
 	return $desc_dest;
@@ -524,16 +524,16 @@  discard block
 block discarded – undo
524 524
 	$racine_fonctions = (isset($options['racine_fonctions_dest']) ? $options['racine_fonctions_dest'] : 'base');
525 525
 	$data_pool = (isset($options['data_pool']) ? $options['data_pool'] : 50 * 1024);
526 526
 
527
-	spip_log("Copier " . count($tables) . " tables de '$serveur_source' vers '$serveur_dest'",
528
-		'dump.' . _LOG_INFO_IMPORTANTE);
527
+	spip_log("Copier ".count($tables)." tables de '$serveur_source' vers '$serveur_dest'",
528
+		'dump.'._LOG_INFO_IMPORTANTE);
529 529
 
530 530
 	if (!$inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true)) {
531
-		spip_log("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
531
+		spip_log("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon", 'dump.'._LOG_INFO_IMPORTANTE);
532 532
 
533 533
 		return true; // echec mais on a fini, donc true
534 534
 	}
535 535
 	if (!$preparer_table_dest = charger_fonction('preparer_table_dest', $racine_fonctions, true)) {
536
-		spip_log("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
536
+		spip_log("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon", 'dump.'._LOG_INFO_IMPORTANTE);
537 537
 
538 538
 		return true; // echec mais on a fini, donc true
539 539
 	}
@@ -555,7 +555,7 @@  discard block
 block discarded – undo
555 555
 			true)
556 556
 		) {
557 557
 			spip_log("Fonction '{$racine_fonctions}_vider_tables_destination_copie' inconnue. Abandon",
558
-				'dump.' . _LOG_INFO_IMPORTANTE);
558
+				'dump.'._LOG_INFO_IMPORTANTE);
559 559
 
560 560
 			return true; // echec mais on a fini, donc true
561 561
 		}
@@ -573,7 +573,7 @@  discard block
 block discarded – undo
573 573
 		$tables = array_diff($tables, array('spip_meta'));
574 574
 		$tables[] = 'spip_meta';
575 575
 	}
576
-	spip_log("Tables a copier :" . implode(", ", $tables), 'dump.' . _LOG_INFO);
576
+	spip_log("Tables a copier :".implode(", ", $tables), 'dump.'._LOG_INFO);
577 577
 
578 578
 	$trouver_table = charger_fonction('trouver_table', 'base');
579 579
 
@@ -627,7 +627,7 @@  discard block
 block discarded – undo
627 627
 						// mais si ca renvoie false c'est une erreur fatale => abandon
628 628
 						if ($inserer_copie($table, $rows, $desc_dest, $serveur_dest) === false) {
629 629
 							// forcer la sortie, charge a l'appelant de gerer l'echec
630
-							spip_log("Erreur fatale dans $inserer_copie table $table", "dump" . _LOG_ERREUR);
630
+							spip_log("Erreur fatale dans $inserer_copie table $table", "dump"._LOG_ERREUR);
631 631
 							$status['errors'][] = "Erreur fatale  lors de la copie de la table $table";
632 632
 							ecrire_fichier($status_file, serialize($status));
633 633
 
@@ -642,7 +642,7 @@  discard block
 block discarded – undo
642 642
 					if ($n == $status['tables_copiees'][$table]) {
643 643
 						break;
644 644
 					}
645
-					spip_log("recopie $table " . $status['tables_copiees'][$table], 'dump.' . _LOG_INFO_IMPORTANTE);
645
+					spip_log("recopie $table ".$status['tables_copiees'][$table], 'dump.'._LOG_INFO_IMPORTANTE);
646 646
 					if ($callback_progression) {
647 647
 						$callback_progression($status['tables_copiees'][$table], 0, $table);
648 648
 					}
@@ -653,43 +653,43 @@  discard block
 block discarded – undo
653 653
 				}
654 654
 				if ($drop_source) {
655 655
 					sql_drop_table($table, '', $serveur_source);
656
-					spip_log("drop $table sur serveur source '$serveur_source'", 'dump.' . _LOG_INFO_IMPORTANTE);
656
+					spip_log("drop $table sur serveur source '$serveur_source'", 'dump.'._LOG_INFO_IMPORTANTE);
657 657
 				}
658 658
 				$status['tables_copiees'][$table] = ($status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : "zero");
659 659
 				ecrire_fichier($status_file, serialize($status));
660
-				spip_log("tables_recopiees " . implode(',', array_keys($status['tables_copiees'])), 'dump.' . _LOG_INFO);
660
+				spip_log("tables_recopiees ".implode(',', array_keys($status['tables_copiees'])), 'dump.'._LOG_INFO);
661 661
 				if ($callback_progression) {
662 662
 					$callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table);
663 663
 				}
664 664
 			} else {
665 665
 				if ($status['tables_copiees'][$table] < 0) {
666
-					spip_log("Table $table deja copiee : " . $status['tables_copiees'][$table], "dump." . _LOG_INFO);
666
+					spip_log("Table $table deja copiee : ".$status['tables_copiees'][$table], "dump."._LOG_INFO);
667 667
 				}
668 668
 				if ($callback_progression) {
669 669
 					$callback_progression(0, $status['tables_copiees'][$table],
670
-						"$table" . ((is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0) ? "[Echec]" : ""));
670
+						"$table".((is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0) ? "[Echec]" : ""));
671 671
 				}
672 672
 			}
673 673
 		} else {
674 674
 			$status['errors'][] = "Impossible de lire la description de la table $table";
675 675
 			ecrire_fichier($status_file, serialize($status));
676
-			spip_log("Impossible de lire la description de la table $table", "dump." . _LOG_ERREUR);
676
+			spip_log("Impossible de lire la description de la table $table", "dump."._LOG_ERREUR);
677 677
 		}
678 678
 	}
679 679
 
680 680
 	// si le nombre de tables envoyees n'est pas egal au nombre de tables demandees
681 681
 	// abandonner
682 682
 	if (count($status['tables_copiees']) < count($tables)) {
683
-		spip_log("Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables),
684
-			"dump." . _LOG_ERREUR);
685
-		$status['errors'][] = "Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables);
683
+		spip_log("Nombre de tables copiees incorrect : ".count($status['tables_copiees'])."/".count($tables),
684
+			"dump."._LOG_ERREUR);
685
+		$status['errors'][] = "Nombre de tables copiees incorrect : ".count($status['tables_copiees'])."/".count($tables);
686 686
 		ecrire_fichier($status_file, serialize($status));
687 687
 	}
688 688
 
689 689
 	if ($detruire_copieur_si_besoin = charger_fonction('detruire_copieur_si_besoin', $racine_fonctions, true)) {
690 690
 		$detruire_copieur_si_besoin($serveur_dest);
691 691
 	} else {
692
-		spip_log("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.", 'dump.' . _LOG_INFO_IMPORTANTE);
692
+		spip_log("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.", 'dump.'._LOG_INFO_IMPORTANTE);
693 693
 	}
694 694
 
695 695
 	// OK, copie complete
@@ -713,8 +713,8 @@  discard block
 block discarded – undo
713 713
 	$r = sql_insertq_multi($table, $rows, $desc_dest, $serveur_dest);
714 714
 	$nb = sql_countsel($table, '', '', '', $serveur_dest);
715 715
 	if ($nb - $nb1 < count($rows)) {
716
-		spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . ". On retente 1 par 1",
717
-			"dump" . _LOG_INFO_IMPORTANTE);
716
+		spip_log("base_inserer_copie : ".($nb - $nb1)." insertions au lieu de ".count($rows).". On retente 1 par 1",
717
+			"dump"._LOG_INFO_IMPORTANTE);
718 718
 		foreach ($rows as $row) {
719 719
 			// si l'enregistrement est deja en base, ca fera un echec ou un doublon
720 720
 			$r = sql_insertq($table, $row, $desc_dest, $serveur_dest);
@@ -723,8 +723,8 @@  discard block
 block discarded – undo
723 723
 		$r = 0;
724 724
 		$nb = sql_countsel($table, '', '', '', $serveur_dest);
725 725
 		if ($nb - $nb1 < count($rows)) {
726
-			spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . " apres insertion 1 par 1",
727
-				"dump" . _LOG_ERREUR);
726
+			spip_log("base_inserer_copie : ".($nb - $nb1)." insertions au lieu de ".count($rows)." apres insertion 1 par 1",
727
+				"dump"._LOG_ERREUR);
728 728
 			$r = false;
729 729
 		}
730 730
 	}
Please login to merge, or discard this patch.
Indentation   +486 added lines, -486 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
 define('_VERSION_ARCHIVE', '1.3');
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
  * @return string
39 39
  **/
40 40
 function base_dump_meta_name($rub) {
41
-	return $meta = "status_dump_{$rub}_" . abs($GLOBALS['visiteur_session']['id_auteur']);
41
+    return $meta = "status_dump_{$rub}_" . abs($GLOBALS['visiteur_session']['id_auteur']);
42 42
 }
43 43
 
44 44
 /**
@@ -53,15 +53,15 @@  discard block
 block discarded – undo
53 53
  * @return string
54 54
  **/
55 55
 function base_dump_dir($meta) {
56
-	include_spip('inc/documents');
57
-	// determine upload va aussi initialiser l'index "restreint"
58
-	$maindir = determine_upload();
59
-	if (!$GLOBALS['visiteur_session']['restreint']) {
60
-		$maindir = _DIR_DUMP;
61
-	}
62
-	$dir = sous_repertoire($maindir, $meta);
63
-
64
-	return $dir;
56
+    include_spip('inc/documents');
57
+    // determine upload va aussi initialiser l'index "restreint"
58
+    $maindir = determine_upload();
59
+    if (!$GLOBALS['visiteur_session']['restreint']) {
60
+        $maindir = _DIR_DUMP;
61
+    }
62
+    $dir = sous_repertoire($maindir, $meta);
63
+
64
+    return $dir;
65 65
 }
66 66
 
67 67
 /**
@@ -75,28 +75,28 @@  discard block
 block discarded – undo
75 75
  * @return array
76 76
  */
77 77
 function base_lister_toutes_tables(
78
-	$serveur = '',
79
-	$tables = array(),
80
-	$exclude = array(),
81
-	$affiche_vrai_prefixe = false
78
+    $serveur = '',
79
+    $tables = array(),
80
+    $exclude = array(),
81
+    $affiche_vrai_prefixe = false
82 82
 ) {
83
-	spip_connect($serveur);
84
-	$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
85
-	$prefixe = $connexion['prefixe'];
86
-
87
-	$p = '/^' . $prefixe . '/';
88
-	$res = $tables;
89
-	foreach (sql_alltable(null, $serveur) as $t) {
90
-		if (preg_match($p, $t)) {
91
-			$t1 = preg_replace($p, 'spip', $t);
92
-			if (!in_array($t1, $tables) and !in_array($t1, $exclude)) {
93
-				$res[] = ($affiche_vrai_prefixe ? $t : $t1);
94
-			}
95
-		}
96
-	}
97
-	sort($res);
98
-
99
-	return $res;
83
+    spip_connect($serveur);
84
+    $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
85
+    $prefixe = $connexion['prefixe'];
86
+
87
+    $p = '/^' . $prefixe . '/';
88
+    $res = $tables;
89
+    foreach (sql_alltable(null, $serveur) as $t) {
90
+        if (preg_match($p, $t)) {
91
+            $t1 = preg_replace($p, 'spip', $t);
92
+            if (!in_array($t1, $tables) and !in_array($t1, $exclude)) {
93
+                $res[] = ($affiche_vrai_prefixe ? $t : $t1);
94
+            }
95
+        }
96
+    }
97
+    sort($res);
98
+
99
+    return $res;
100 100
 }
101 101
 
102 102
 /**
@@ -106,11 +106,11 @@  discard block
 block discarded – undo
106 106
  * @return string
107 107
  */
108 108
 function base_prefixe_tables($serveur = '') {
109
-	spip_connect($serveur);
110
-	$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
111
-	$prefixe = $connexion['prefixe'];
109
+    spip_connect($serveur);
110
+    $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
111
+    $prefixe = $connexion['prefixe'];
112 112
 
113
-	return $prefixe;
113
+    return $prefixe;
114 114
 }
115 115
 
116 116
 
@@ -125,29 +125,29 @@  discard block
 block discarded – undo
125 125
  * @return array
126 126
  */
127 127
 function base_saisie_tables($name, $tables, $exclude = array(), $post = null, $serveur = '') {
128
-	include_spip('inc/filtres');
129
-	$res = array();
130
-	foreach ($tables as $k => $t) {
131
-		// par defaut tout est coche sauf les tables dans $exclude
132
-		if (is_null($post)) {
133
-			$check = (in_array($t, $exclude) ? false : true);
134
-		} // mais si on a poste une selection, la reprendre
135
-		else {
136
-			$check = in_array($t, $post);
137
-		}
138
-
139
-		$res[$k] = "<input type='checkbox' value='$t' name='$name"
140
-			. "[]' id='$name$k'"
141
-			. ($check ? " checked='checked'" : '')
142
-			. "/>\n"
143
-			. "<label for='$name$k'>$t</label>"
144
-			. " ("
145
-			. sinon(singulier_ou_pluriel(sql_countsel($t, '', '', '', $serveur), 'dump:une_donnee', 'dump:nb_donnees'),
146
-				_T('dump:aucune_donnee'))
147
-			. ")";
148
-	}
149
-
150
-	return $res;
128
+    include_spip('inc/filtres');
129
+    $res = array();
130
+    foreach ($tables as $k => $t) {
131
+        // par defaut tout est coche sauf les tables dans $exclude
132
+        if (is_null($post)) {
133
+            $check = (in_array($t, $exclude) ? false : true);
134
+        } // mais si on a poste une selection, la reprendre
135
+        else {
136
+            $check = in_array($t, $post);
137
+        }
138
+
139
+        $res[$k] = "<input type='checkbox' value='$t' name='$name"
140
+            . "[]' id='$name$k'"
141
+            . ($check ? " checked='checked'" : '')
142
+            . "/>\n"
143
+            . "<label for='$name$k'>$t</label>"
144
+            . " ("
145
+            . sinon(singulier_ou_pluriel(sql_countsel($t, '', '', '', $serveur), 'dump:une_donnee', 'dump:nb_donnees'),
146
+                _T('dump:aucune_donnee'))
147
+            . ")";
148
+    }
149
+
150
+    return $res;
151 151
 }
152 152
 
153 153
 
@@ -159,27 +159,27 @@  discard block
 block discarded – undo
159 159
  * @return array
160 160
  */
161 161
 function lister_tables_noexport() {
162
-	// par defaut tout est exporte sauf les tables ci-dessous
163
-	static $EXPORT_tables_noexport = null;
164
-	if (!is_null($EXPORT_tables_noexport)) {
165
-		return $EXPORT_tables_noexport;
166
-	}
167
-
168
-	$EXPORT_tables_noexport = array(
169
-		'spip_caches', // plugin invalideur
170
-		'spip_resultats', // resultats de recherche ... c'est un cache !
171
-		'spip_test', // c'est un test !
172
-		#'spip_referers',
173
-		#'spip_referers_articles',
174
-		#'spip_visites',
175
-		#'spip_visites_articles',
176
-		#'spip_versions',
177
-		#'spip_versions_fragments'
178
-	);
179
-
180
-	$EXPORT_tables_noexport = pipeline('lister_tables_noexport', $EXPORT_tables_noexport);
181
-
182
-	return $EXPORT_tables_noexport;
162
+    // par defaut tout est exporte sauf les tables ci-dessous
163
+    static $EXPORT_tables_noexport = null;
164
+    if (!is_null($EXPORT_tables_noexport)) {
165
+        return $EXPORT_tables_noexport;
166
+    }
167
+
168
+    $EXPORT_tables_noexport = array(
169
+        'spip_caches', // plugin invalideur
170
+        'spip_resultats', // resultats de recherche ... c'est un cache !
171
+        'spip_test', // c'est un test !
172
+        #'spip_referers',
173
+        #'spip_referers_articles',
174
+        #'spip_visites',
175
+        #'spip_visites_articles',
176
+        #'spip_versions',
177
+        #'spip_versions_fragments'
178
+    );
179
+
180
+    $EXPORT_tables_noexport = pipeline('lister_tables_noexport', $EXPORT_tables_noexport);
181
+
182
+    return $EXPORT_tables_noexport;
183 183
 }
184 184
 
185 185
 /**
@@ -190,25 +190,25 @@  discard block
 block discarded – undo
190 190
  * @return array
191 191
  */
192 192
 function lister_tables_noimport() {
193
-	static $IMPORT_tables_noimport = null;
194
-	if (!is_null($IMPORT_tables_noimport)) {
195
-		return $IMPORT_tables_noimport;
196
-	}
197
-
198
-	$IMPORT_tables_noimport = array();
199
-	// par defaut tout est importe sauf les tables ci-dessous
200
-	// possibiliter de definir cela tables via la meta
201
-	// compatibilite
202
-	if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])) {
203
-		$IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']);
204
-		if (!is_array($IMPORT_tables_noimport)) {
205
-			include_spip('inc/meta');
206
-			effacer_meta('IMPORT_tables_noimport');
207
-		}
208
-	}
209
-	$IMPORT_tables_noimport = pipeline('lister_tables_noimport', $IMPORT_tables_noimport);
210
-
211
-	return $IMPORT_tables_noimport;
193
+    static $IMPORT_tables_noimport = null;
194
+    if (!is_null($IMPORT_tables_noimport)) {
195
+        return $IMPORT_tables_noimport;
196
+    }
197
+
198
+    $IMPORT_tables_noimport = array();
199
+    // par defaut tout est importe sauf les tables ci-dessous
200
+    // possibiliter de definir cela tables via la meta
201
+    // compatibilite
202
+    if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])) {
203
+        $IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']);
204
+        if (!is_array($IMPORT_tables_noimport)) {
205
+            include_spip('inc/meta');
206
+            effacer_meta('IMPORT_tables_noimport');
207
+        }
208
+    }
209
+    $IMPORT_tables_noimport = pipeline('lister_tables_noimport', $IMPORT_tables_noimport);
210
+
211
+    return $IMPORT_tables_noimport;
212 212
 }
213 213
 
214 214
 
@@ -220,23 +220,23 @@  discard block
 block discarded – undo
220 220
  * @return array
221 221
  */
222 222
 function lister_tables_noerase() {
223
-	static $IMPORT_tables_noerase = null;
224
-	if (!is_null($IMPORT_tables_noerase)) {
225
-		return $IMPORT_tables_noerase;
226
-	}
227
-
228
-	$IMPORT_tables_noerase = array(
229
-		'spip_meta',
230
-		// par defaut on ne vide pas les stats, car elles ne figurent pas dans les dump
231
-		// et le cas echeant, un bouton dans l'admin permet de les vider a la main...
232
-		'spip_referers',
233
-		'spip_referers_articles',
234
-		'spip_visites',
235
-		'spip_visites_articles'
236
-	);
237
-	$IMPORT_tables_noerase = pipeline('lister_tables_noerase', $IMPORT_tables_noerase);
238
-
239
-	return $IMPORT_tables_noerase;
223
+    static $IMPORT_tables_noerase = null;
224
+    if (!is_null($IMPORT_tables_noerase)) {
225
+        return $IMPORT_tables_noerase;
226
+    }
227
+
228
+    $IMPORT_tables_noerase = array(
229
+        'spip_meta',
230
+        // par defaut on ne vide pas les stats, car elles ne figurent pas dans les dump
231
+        // et le cas echeant, un bouton dans l'admin permet de les vider a la main...
232
+        'spip_referers',
233
+        'spip_referers_articles',
234
+        'spip_visites',
235
+        'spip_visites_articles'
236
+    );
237
+    $IMPORT_tables_noerase = pipeline('lister_tables_noerase', $IMPORT_tables_noerase);
238
+
239
+    return $IMPORT_tables_noerase;
240 240
 }
241 241
 
242 242
 
@@ -250,83 +250,83 @@  discard block
 block discarded – undo
250 250
  * @return array
251 251
  */
252 252
 function base_liste_table_for_dump($exclude_tables = array()) {
253
-	$tables_for_dump = array();
254
-	$tables_pointees = array();
255
-	$tables = array();
256
-	$tables_principales = $GLOBALS['tables_principales'];
257
-	$tables_auxiliaires = $GLOBALS['tables_auxiliaires'];
258
-	$tables_jointures = $GLOBALS['tables_jointures'];
259
-
260
-	if (include_spip('base/objets')
261
-		and function_exists('lister_tables_objets_sql')
262
-	) {
263
-		$tables = lister_tables_objets_sql();
264
-		foreach ($tables as $t => $infos) {
265
-			if ($infos['principale'] and !isset($tables_principales[$t])) {
266
-				$tables_principales[$t] = true;
267
-			}
268
-			if (!$infos['principale'] and !isset($tables_auxiliaires[$t])) {
269
-				$tables_auxiliaires[$t] = true;
270
-			}
271
-			if (count($infos['tables_jointures'])) {
272
-				$tables_jointures[$t] = array_merge(isset($tables_jointures[$t]) ? $tables_jointures[$t] : array(),
273
-					$infos['tables_jointures']);
274
-			}
275
-		}
276
-	}
277
-
278
-	// on construit un index des tables de liens
279
-	// pour les ajouter SI les deux tables qu'ils connectent sont sauvegardees
280
-	$tables_for_link = array();
281
-	foreach ($tables_jointures as $table => $liste_relations) {
282
-		if (is_array($liste_relations)) {
283
-			$nom = $table;
284
-			if (!isset($tables_auxiliaires[$nom]) && !isset($tables_principales[$nom])) {
285
-				$nom = "spip_$table";
286
-			}
287
-			if (isset($tables_auxiliaires[$nom]) || isset($tables_principales[$nom])) {
288
-				foreach ($liste_relations as $link_table) {
289
-					if (isset($tables_auxiliaires[$link_table])/*||isset($tables_principales[$link_table])*/) {
290
-						$tables_for_link[$link_table][] = $nom;
291
-					} else {
292
-						if (isset($tables_auxiliaires["spip_$link_table"])/*||isset($tables_principales["spip_$link_table"])*/) {
293
-							$tables_for_link["spip_$link_table"][] = $nom;
294
-						}
295
-					}
296
-				}
297
-			}
298
-		}
299
-	}
300
-
301
-	$liste_tables = array_merge(array_keys($tables_principales), array_keys($tables_auxiliaires), array_keys($tables));
302
-	foreach ($liste_tables as $table) {
303
-		//		$name = preg_replace("{^spip_}","",$table);
304
-		if (!isset($tables_pointees[$table])
305
-			&& !in_array($table, $exclude_tables)
306
-			&& !isset($tables_for_link[$table])
307
-		) {
308
-			$tables_for_dump[] = $table;
309
-			$tables_pointees[$table] = 1;
310
-		}
311
-	}
312
-	foreach ($tables_for_link as $link_table => $liste) {
313
-		$connecte = true;
314
-		foreach ($liste as $connect_table) {
315
-			if (!in_array($connect_table, $tables_for_dump)) {
316
-				$connecte = false;
317
-			}
318
-		}
319
-		if ($connecte)
320
-			# on ajoute les liaisons en premier
321
-			# si une restauration est interrompue,
322
-			# cela se verra mieux si il manque des objets
323
-			# que des liens
324
-		{
325
-			array_unshift($tables_for_dump, $link_table);
326
-		}
327
-	}
328
-
329
-	return array($tables_for_dump, $tables_for_link);
253
+    $tables_for_dump = array();
254
+    $tables_pointees = array();
255
+    $tables = array();
256
+    $tables_principales = $GLOBALS['tables_principales'];
257
+    $tables_auxiliaires = $GLOBALS['tables_auxiliaires'];
258
+    $tables_jointures = $GLOBALS['tables_jointures'];
259
+
260
+    if (include_spip('base/objets')
261
+        and function_exists('lister_tables_objets_sql')
262
+    ) {
263
+        $tables = lister_tables_objets_sql();
264
+        foreach ($tables as $t => $infos) {
265
+            if ($infos['principale'] and !isset($tables_principales[$t])) {
266
+                $tables_principales[$t] = true;
267
+            }
268
+            if (!$infos['principale'] and !isset($tables_auxiliaires[$t])) {
269
+                $tables_auxiliaires[$t] = true;
270
+            }
271
+            if (count($infos['tables_jointures'])) {
272
+                $tables_jointures[$t] = array_merge(isset($tables_jointures[$t]) ? $tables_jointures[$t] : array(),
273
+                    $infos['tables_jointures']);
274
+            }
275
+        }
276
+    }
277
+
278
+    // on construit un index des tables de liens
279
+    // pour les ajouter SI les deux tables qu'ils connectent sont sauvegardees
280
+    $tables_for_link = array();
281
+    foreach ($tables_jointures as $table => $liste_relations) {
282
+        if (is_array($liste_relations)) {
283
+            $nom = $table;
284
+            if (!isset($tables_auxiliaires[$nom]) && !isset($tables_principales[$nom])) {
285
+                $nom = "spip_$table";
286
+            }
287
+            if (isset($tables_auxiliaires[$nom]) || isset($tables_principales[$nom])) {
288
+                foreach ($liste_relations as $link_table) {
289
+                    if (isset($tables_auxiliaires[$link_table])/*||isset($tables_principales[$link_table])*/) {
290
+                        $tables_for_link[$link_table][] = $nom;
291
+                    } else {
292
+                        if (isset($tables_auxiliaires["spip_$link_table"])/*||isset($tables_principales["spip_$link_table"])*/) {
293
+                            $tables_for_link["spip_$link_table"][] = $nom;
294
+                        }
295
+                    }
296
+                }
297
+            }
298
+        }
299
+    }
300
+
301
+    $liste_tables = array_merge(array_keys($tables_principales), array_keys($tables_auxiliaires), array_keys($tables));
302
+    foreach ($liste_tables as $table) {
303
+        //		$name = preg_replace("{^spip_}","",$table);
304
+        if (!isset($tables_pointees[$table])
305
+            && !in_array($table, $exclude_tables)
306
+            && !isset($tables_for_link[$table])
307
+        ) {
308
+            $tables_for_dump[] = $table;
309
+            $tables_pointees[$table] = 1;
310
+        }
311
+    }
312
+    foreach ($tables_for_link as $link_table => $liste) {
313
+        $connecte = true;
314
+        foreach ($liste as $connect_table) {
315
+            if (!in_array($connect_table, $tables_for_dump)) {
316
+                $connecte = false;
317
+            }
318
+        }
319
+        if ($connecte)
320
+            # on ajoute les liaisons en premier
321
+            # si une restauration est interrompue,
322
+            # cela se verra mieux si il manque des objets
323
+            # que des liens
324
+        {
325
+            array_unshift($tables_for_dump, $link_table);
326
+        }
327
+    }
328
+
329
+    return array($tables_for_dump, $tables_for_link);
330 330
 }
331 331
 
332 332
 /**
@@ -341,34 +341,34 @@  discard block
 block discarded – undo
341 341
  * @param string $serveur
342 342
  */
343 343
 function base_vider_tables_destination_copie($tables, $exclure_tables = array(), $serveur = '') {
344
-	$trouver_table = charger_fonction('trouver_table', 'base');
345
-
346
-	spip_log('Vider ' . count($tables) . " tables sur serveur '$serveur' : " . join(', ', $tables),
347
-		'base.' . _LOG_INFO_IMPORTANTE);
348
-	foreach ($tables as $table) {
349
-		if (!in_array($table, $exclure_tables)) {
350
-			// sur le serveur principal, il ne faut pas supprimer l'auteur loge !
351
-			if (($table != 'spip_auteurs') or $serveur != '') {
352
-				// regarder si il y a au moins un champ impt='non'
353
-				$desc = $trouver_table($table, $serveur);
354
-				if (isset($desc['field']['impt'])) {
355
-					sql_delete($table, "impt='oui'", $serveur);
356
-				} elseif ($desc) {
357
-					sql_delete($table, "", $serveur);
358
-				}
359
-			}
360
-		}
361
-	}
362
-
363
-	// sur le serveur principal, il ne faut pas supprimer l'auteur loge !
364
-	// Bidouille pour garder l'acces admin actuel pendant toute la restauration
365
-	if ($serveur == ''
366
-		and in_array('spip_auteurs', $tables)
367
-		and !in_array('spip_auteurs', $exclure_tables)
368
-	) {
369
-		base_conserver_copieur(true, $serveur);
370
-		sql_delete("spip_auteurs", "id_auteur>0", $serveur);
371
-	}
344
+    $trouver_table = charger_fonction('trouver_table', 'base');
345
+
346
+    spip_log('Vider ' . count($tables) . " tables sur serveur '$serveur' : " . join(', ', $tables),
347
+        'base.' . _LOG_INFO_IMPORTANTE);
348
+    foreach ($tables as $table) {
349
+        if (!in_array($table, $exclure_tables)) {
350
+            // sur le serveur principal, il ne faut pas supprimer l'auteur loge !
351
+            if (($table != 'spip_auteurs') or $serveur != '') {
352
+                // regarder si il y a au moins un champ impt='non'
353
+                $desc = $trouver_table($table, $serveur);
354
+                if (isset($desc['field']['impt'])) {
355
+                    sql_delete($table, "impt='oui'", $serveur);
356
+                } elseif ($desc) {
357
+                    sql_delete($table, "", $serveur);
358
+                }
359
+            }
360
+        }
361
+    }
362
+
363
+    // sur le serveur principal, il ne faut pas supprimer l'auteur loge !
364
+    // Bidouille pour garder l'acces admin actuel pendant toute la restauration
365
+    if ($serveur == ''
366
+        and in_array('spip_auteurs', $tables)
367
+        and !in_array('spip_auteurs', $exclure_tables)
368
+    ) {
369
+        base_conserver_copieur(true, $serveur);
370
+        sql_delete("spip_auteurs", "id_auteur>0", $serveur);
371
+    }
372 372
 }
373 373
 
374 374
 /**
@@ -379,21 +379,21 @@  discard block
 block discarded – undo
379 379
  * @return void
380 380
  */
381 381
 function base_conserver_copieur($move = true, $serveur = '') {
382
-	// s'asurer qu'on a pas deja fait la manip !
383
-	if ($GLOBALS['visiteur_session']['id_auteur'] > 0 and sql_countsel("spip_auteurs", "id_auteur>0")) {
384
-		spip_log('Conserver copieur dans id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'] . " pour le serveur '$serveur'",
385
-			'dump.' . _LOG_INFO_IMPORTANTE);
386
-		sql_delete("spip_auteurs", "id_auteur<0", $serveur);
387
-		if ($move) {
388
-			sql_updateq('spip_auteurs', array('id_auteur' => -$GLOBALS['visiteur_session']['id_auteur']),
389
-				"id_auteur=" . intval($GLOBALS['visiteur_session']['id_auteur']), array(), $serveur);
390
-		} else {
391
-			$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'], '', '', '', '',
392
-				$serveur);
393
-			$row['id_auteur'] = -$GLOBALS['visiteur_session']['id_auteur'];
394
-			sql_insertq('spip_auteurs', $row, array(), $serveur);
395
-		}
396
-	}
382
+    // s'asurer qu'on a pas deja fait la manip !
383
+    if ($GLOBALS['visiteur_session']['id_auteur'] > 0 and sql_countsel("spip_auteurs", "id_auteur>0")) {
384
+        spip_log('Conserver copieur dans id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'] . " pour le serveur '$serveur'",
385
+            'dump.' . _LOG_INFO_IMPORTANTE);
386
+        sql_delete("spip_auteurs", "id_auteur<0", $serveur);
387
+        if ($move) {
388
+            sql_updateq('spip_auteurs', array('id_auteur' => -$GLOBALS['visiteur_session']['id_auteur']),
389
+                "id_auteur=" . intval($GLOBALS['visiteur_session']['id_auteur']), array(), $serveur);
390
+        } else {
391
+            $row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'], '', '', '', '',
392
+                $serveur);
393
+            $row['id_auteur'] = -$GLOBALS['visiteur_session']['id_auteur'];
394
+            sql_insertq('spip_auteurs', $row, array(), $serveur);
395
+        }
396
+    }
397 397
 }
398 398
 
399 399
 /**
@@ -408,19 +408,19 @@  discard block
 block discarded – undo
408 408
  * @param string $serveur
409 409
  */
410 410
 function base_detruire_copieur_si_besoin($serveur = '') {
411
-	// rien a faire si ce n'est pas le serveur principal !
412
-	if ($serveur == '') {
413
-		if (sql_countsel("spip_auteurs", "id_auteur>0")) {
414
-			spip_log("Detruire copieur id_auteur<0 pour le serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
415
-			sql_delete("spip_auteurs", "id_auteur<0", $serveur);
416
-		} else {
417
-			spip_log("Restaurer copieur id_auteur<0 pour le serveur '$serveur' (aucun autre auteur en base)",
418
-				'dump.' . _LOG_INFO_IMPORTANTE);
419
-			sql_update('spip_auteurs', array('id_auteur' => '-id_auteur'), "id_auteur<0");
420
-		}
421
-	} else {
422
-		spip_log("Pas de destruction copieur sur serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
423
-	}
411
+    // rien a faire si ce n'est pas le serveur principal !
412
+    if ($serveur == '') {
413
+        if (sql_countsel("spip_auteurs", "id_auteur>0")) {
414
+            spip_log("Detruire copieur id_auteur<0 pour le serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
415
+            sql_delete("spip_auteurs", "id_auteur<0", $serveur);
416
+        } else {
417
+            spip_log("Restaurer copieur id_auteur<0 pour le serveur '$serveur' (aucun autre auteur en base)",
418
+                'dump.' . _LOG_INFO_IMPORTANTE);
419
+            sql_update('spip_auteurs', array('id_auteur' => '-id_auteur'), "id_auteur<0");
420
+        }
421
+    } else {
422
+        spip_log("Pas de destruction copieur sur serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
423
+    }
424 424
 }
425 425
 
426 426
 /**
@@ -435,40 +435,40 @@  discard block
 block discarded – undo
435 435
  * @return array
436 436
  */
437 437
 function base_preparer_table_dest($table, $desc, $serveur_dest, $init = false) {
438
-	$upgrade = false;
439
-	// si la table existe et qu'on est a l'init, la dropper
440
-	if ($desc_dest = sql_showtable($table, true, $serveur_dest) and $init) {
441
-		if ($serveur_dest == '' and in_array($table, array('spip_meta', 'spip_auteurs'))) {
442
-			// ne pas dropper auteurs et meta sur le serveur principal
443
-			// faire un simple upgrade a la place
444
-			// pour ajouter les champs manquants
445
-			$upgrade = true;
446
-			// coherence avec le drop sur les autres tables
447
-			base_vider_tables_destination_copie(array($table), array(), $serveur_dest);
448
-			if ($table == 'spip_meta') {
449
-				// virer les version base qui vont venir avec l'import
450
-				sql_delete($table, "nom like '%_base_version'", $serveur_dest);
451
-				// hum casse la base si pas version_installee a l'import ...
452
-				sql_delete($table, "nom='version_installee'", $serveur_dest);
453
-			}
454
-		} else {
455
-			sql_drop_table($table, '', $serveur_dest);
456
-			spip_log("drop table '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
457
-		}
458
-		$desc_dest = false;
459
-	}
460
-	// si la table n'existe pas dans la destination, la creer a l'identique !
461
-	if (!$desc_dest) {
462
-		spip_log("creation '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
463
-		include_spip('base/create');
464
-		creer_ou_upgrader_table($table, $desc, 'auto', $upgrade, $serveur_dest);
465
-		$desc_dest = sql_showtable($table, true, $serveur_dest);
466
-	}
467
-	if (!$desc_dest) {
468
-		spip_log("Erreur creation '$table' sur serveur '$serveur_dest'" . var_export($desc, 1), 'dump.' . _LOG_ERREUR);
469
-	}
470
-
471
-	return $desc_dest;
438
+    $upgrade = false;
439
+    // si la table existe et qu'on est a l'init, la dropper
440
+    if ($desc_dest = sql_showtable($table, true, $serveur_dest) and $init) {
441
+        if ($serveur_dest == '' and in_array($table, array('spip_meta', 'spip_auteurs'))) {
442
+            // ne pas dropper auteurs et meta sur le serveur principal
443
+            // faire un simple upgrade a la place
444
+            // pour ajouter les champs manquants
445
+            $upgrade = true;
446
+            // coherence avec le drop sur les autres tables
447
+            base_vider_tables_destination_copie(array($table), array(), $serveur_dest);
448
+            if ($table == 'spip_meta') {
449
+                // virer les version base qui vont venir avec l'import
450
+                sql_delete($table, "nom like '%_base_version'", $serveur_dest);
451
+                // hum casse la base si pas version_installee a l'import ...
452
+                sql_delete($table, "nom='version_installee'", $serveur_dest);
453
+            }
454
+        } else {
455
+            sql_drop_table($table, '', $serveur_dest);
456
+            spip_log("drop table '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
457
+        }
458
+        $desc_dest = false;
459
+    }
460
+    // si la table n'existe pas dans la destination, la creer a l'identique !
461
+    if (!$desc_dest) {
462
+        spip_log("creation '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
463
+        include_spip('base/create');
464
+        creer_ou_upgrader_table($table, $desc, 'auto', $upgrade, $serveur_dest);
465
+        $desc_dest = sql_showtable($table, true, $serveur_dest);
466
+    }
467
+    if (!$desc_dest) {
468
+        spip_log("Erreur creation '$table' sur serveur '$serveur_dest'" . var_export($desc, 1), 'dump.' . _LOG_ERREUR);
469
+    }
470
+
471
+    return $desc_dest;
472 472
 }
473 473
 
474 474
 /**
@@ -514,186 +514,186 @@  discard block
 block discarded – undo
514 514
  */
515 515
 function base_copier_tables($status_file, $tables, $serveur_source, $serveur_dest, $options = array()) {
516 516
 
517
-	$callback_progression = isset($options['callback_progression']) ? $options['callback_progression'] : '';
518
-	$max_time = isset($options['max_time']) ? $options['max_time'] : 0;
519
-	$drop_source = isset($options['drop_source']) ? $options['drop_source'] : false;
520
-	$no_erase_dest = isset($options['no_erase_dest']) ? $options['no_erase_dest'] : array();
521
-	$where = isset($options['where']) ? $options['where'] : array();
522
-	$fonction_base_inserer = isset($options['fonction_base_inserer']) ? $options['fonction_base_inserer'] : 'inserer_copie';
523
-	$desc_tables_dest = isset($options['desc_tables_dest']) ? $options['desc_tables_dest'] : array();
524
-	$racine_fonctions = (isset($options['racine_fonctions_dest']) ? $options['racine_fonctions_dest'] : 'base');
525
-	$data_pool = (isset($options['data_pool']) ? $options['data_pool'] : 50 * 1024);
526
-
527
-	spip_log("Copier " . count($tables) . " tables de '$serveur_source' vers '$serveur_dest'",
528
-		'dump.' . _LOG_INFO_IMPORTANTE);
529
-
530
-	if (!$inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true)) {
531
-		spip_log("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
532
-
533
-		return true; // echec mais on a fini, donc true
534
-	}
535
-	if (!$preparer_table_dest = charger_fonction('preparer_table_dest', $racine_fonctions, true)) {
536
-		spip_log("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
537
-
538
-		return true; // echec mais on a fini, donc true
539
-	}
540
-
541
-	if (!lire_fichier($status_file, $status)
542
-		or !$status = unserialize($status)
543
-	) {
544
-		$status = array();
545
-	}
546
-	$status['etape'] = 'basecopie';
547
-
548
-	// puis relister les tables a importer
549
-	// et les vider si besoin, au moment du premier passage ici
550
-	$initialisation_copie = (!isset($status["dump_status_copie"])) ? 0 : $status["dump_status_copie"];
551
-
552
-	// si init pas encore faite, vider les tables du serveur destination
553
-	if (!$initialisation_copie) {
554
-		if (!$vider_tables_destination_copie = charger_fonction('vider_tables_destination_copie', $racine_fonctions,
555
-			true)
556
-		) {
557
-			spip_log("Fonction '{$racine_fonctions}_vider_tables_destination_copie' inconnue. Abandon",
558
-				'dump.' . _LOG_INFO_IMPORTANTE);
559
-
560
-			return true; // echec mais on a fini, donc true
561
-		}
562
-		$vider_tables_destination_copie($tables, $no_erase_dest, $serveur_dest);
563
-		$status["dump_status_copie"] = 'ok';
564
-		ecrire_fichier($status_file, serialize($status));
565
-	}
566
-
567
-	// les tables auteurs et meta doivent etre copiees en dernier !
568
-	if (in_array('spip_auteurs', $tables)) {
569
-		$tables = array_diff($tables, array('spip_auteurs'));
570
-		$tables[] = 'spip_auteurs';
571
-	}
572
-	if (in_array('spip_meta', $tables)) {
573
-		$tables = array_diff($tables, array('spip_meta'));
574
-		$tables[] = 'spip_meta';
575
-	}
576
-	spip_log("Tables a copier :" . implode(", ", $tables), 'dump.' . _LOG_INFO);
577
-
578
-	$trouver_table = charger_fonction('trouver_table', 'base');
579
-
580
-	foreach ($tables as $table) {
581
-		// si table commence par spip_ c'est une table SPIP, renommer le prefixe si besoin
582
-		// sinon chercher la vraie table
583
-		$desc_source = false;
584
-		if (strncmp($table, "spip_", 5) == 0) {
585
-			$desc_source = $trouver_table(preg_replace(",^spip_,", "", $table), $serveur_source, true);
586
-		}
587
-		if (!$desc_source or !isset($desc_source['exist']) or !$desc_source['exist']) {
588
-			$desc_source = $trouver_table($table, $serveur_source, false);
589
-		}
590
-
591
-		// verifier que la table est presente dans la base source
592
-		if ($desc_source) {
593
-			// $status['tables_copiees'][$table] contient l'avancement
594
-			// de la copie pour la $table : 0 a N et -N quand elle est finie (-1 si vide et finie...)
595
-			if (!isset($status['tables_copiees'][$table])) {
596
-				$status['tables_copiees'][$table] = 0;
597
-			}
598
-
599
-			if (is_numeric($status['tables_copiees'][$table])
600
-				and $status['tables_copiees'][$table] >= 0
601
-				and $desc_dest = $preparer_table_dest(
602
-					$table,
603
-					isset($desc_tables_dest[$table]) ? $desc_tables_dest[$table] : $desc_source,
604
-					$serveur_dest,
605
-					$status['tables_copiees'][$table] == 0)
606
-			) {
607
-				if ($callback_progression) {
608
-					$callback_progression($status['tables_copiees'][$table], 0, $table);
609
-				}
610
-				while (true) {
611
-					$n = intval($status['tables_copiees'][$table]);
612
-					// on copie par lot de 400
613
-					$res = sql_select('*', $table, isset($where[$table]) ? $where[$table] : '', '', '', "$n,400", '',
614
-						$serveur_source);
615
-					while ($row = sql_fetch($res, $serveur_source)) {
616
-						$rows = array($row);
617
-						// lire un groupe de donnees si demande en option
618
-						// (permet un envoi par lot vers la destination)
619
-						if ($data_pool > 0) {
620
-							$s = strlen(serialize($row));
621
-							while ($s < $data_pool and $row = sql_fetch($res, $serveur_source)) {
622
-								$s += strlen(serialize($row));
623
-								$rows[] = $row;
624
-							}
625
-						}
626
-						// si l'enregistrement est deja en base, ca fera un echec ou un doublon
627
-						// mais si ca renvoie false c'est une erreur fatale => abandon
628
-						if ($inserer_copie($table, $rows, $desc_dest, $serveur_dest) === false) {
629
-							// forcer la sortie, charge a l'appelant de gerer l'echec
630
-							spip_log("Erreur fatale dans $inserer_copie table $table", "dump" . _LOG_ERREUR);
631
-							$status['errors'][] = "Erreur fatale  lors de la copie de la table $table";
632
-							ecrire_fichier($status_file, serialize($status));
633
-
634
-							// copie finie
635
-							return true;
636
-						}
637
-						$status['tables_copiees'][$table] += count($rows);
638
-						if ($max_time and time() > $max_time) {
639
-							break;
640
-						}
641
-					}
642
-					if ($n == $status['tables_copiees'][$table]) {
643
-						break;
644
-					}
645
-					spip_log("recopie $table " . $status['tables_copiees'][$table], 'dump.' . _LOG_INFO_IMPORTANTE);
646
-					if ($callback_progression) {
647
-						$callback_progression($status['tables_copiees'][$table], 0, $table);
648
-					}
649
-					ecrire_fichier($status_file, serialize($status));
650
-					if ($max_time and time() > $max_time) {
651
-						return false;
652
-					} // on a pas fini, mais le temps imparti est ecoule
653
-				}
654
-				if ($drop_source) {
655
-					sql_drop_table($table, '', $serveur_source);
656
-					spip_log("drop $table sur serveur source '$serveur_source'", 'dump.' . _LOG_INFO_IMPORTANTE);
657
-				}
658
-				$status['tables_copiees'][$table] = ($status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : "zero");
659
-				ecrire_fichier($status_file, serialize($status));
660
-				spip_log("tables_recopiees " . implode(',', array_keys($status['tables_copiees'])), 'dump.' . _LOG_INFO);
661
-				if ($callback_progression) {
662
-					$callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table);
663
-				}
664
-			} else {
665
-				if ($status['tables_copiees'][$table] < 0) {
666
-					spip_log("Table $table deja copiee : " . $status['tables_copiees'][$table], "dump." . _LOG_INFO);
667
-				}
668
-				if ($callback_progression) {
669
-					$callback_progression(0, $status['tables_copiees'][$table],
670
-						"$table" . ((is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0) ? "[Echec]" : ""));
671
-				}
672
-			}
673
-		} else {
674
-			$status['errors'][] = "Impossible de lire la description de la table $table";
675
-			ecrire_fichier($status_file, serialize($status));
676
-			spip_log("Impossible de lire la description de la table $table", "dump." . _LOG_ERREUR);
677
-		}
678
-	}
679
-
680
-	// si le nombre de tables envoyees n'est pas egal au nombre de tables demandees
681
-	// abandonner
682
-	if (count($status['tables_copiees']) < count($tables)) {
683
-		spip_log("Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables),
684
-			"dump." . _LOG_ERREUR);
685
-		$status['errors'][] = "Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables);
686
-		ecrire_fichier($status_file, serialize($status));
687
-	}
688
-
689
-	if ($detruire_copieur_si_besoin = charger_fonction('detruire_copieur_si_besoin', $racine_fonctions, true)) {
690
-		$detruire_copieur_si_besoin($serveur_dest);
691
-	} else {
692
-		spip_log("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.", 'dump.' . _LOG_INFO_IMPORTANTE);
693
-	}
694
-
695
-	// OK, copie complete
696
-	return true;
517
+    $callback_progression = isset($options['callback_progression']) ? $options['callback_progression'] : '';
518
+    $max_time = isset($options['max_time']) ? $options['max_time'] : 0;
519
+    $drop_source = isset($options['drop_source']) ? $options['drop_source'] : false;
520
+    $no_erase_dest = isset($options['no_erase_dest']) ? $options['no_erase_dest'] : array();
521
+    $where = isset($options['where']) ? $options['where'] : array();
522
+    $fonction_base_inserer = isset($options['fonction_base_inserer']) ? $options['fonction_base_inserer'] : 'inserer_copie';
523
+    $desc_tables_dest = isset($options['desc_tables_dest']) ? $options['desc_tables_dest'] : array();
524
+    $racine_fonctions = (isset($options['racine_fonctions_dest']) ? $options['racine_fonctions_dest'] : 'base');
525
+    $data_pool = (isset($options['data_pool']) ? $options['data_pool'] : 50 * 1024);
526
+
527
+    spip_log("Copier " . count($tables) . " tables de '$serveur_source' vers '$serveur_dest'",
528
+        'dump.' . _LOG_INFO_IMPORTANTE);
529
+
530
+    if (!$inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true)) {
531
+        spip_log("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
532
+
533
+        return true; // echec mais on a fini, donc true
534
+    }
535
+    if (!$preparer_table_dest = charger_fonction('preparer_table_dest', $racine_fonctions, true)) {
536
+        spip_log("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
537
+
538
+        return true; // echec mais on a fini, donc true
539
+    }
540
+
541
+    if (!lire_fichier($status_file, $status)
542
+        or !$status = unserialize($status)
543
+    ) {
544
+        $status = array();
545
+    }
546
+    $status['etape'] = 'basecopie';
547
+
548
+    // puis relister les tables a importer
549
+    // et les vider si besoin, au moment du premier passage ici
550
+    $initialisation_copie = (!isset($status["dump_status_copie"])) ? 0 : $status["dump_status_copie"];
551
+
552
+    // si init pas encore faite, vider les tables du serveur destination
553
+    if (!$initialisation_copie) {
554
+        if (!$vider_tables_destination_copie = charger_fonction('vider_tables_destination_copie', $racine_fonctions,
555
+            true)
556
+        ) {
557
+            spip_log("Fonction '{$racine_fonctions}_vider_tables_destination_copie' inconnue. Abandon",
558
+                'dump.' . _LOG_INFO_IMPORTANTE);
559
+
560
+            return true; // echec mais on a fini, donc true
561
+        }
562
+        $vider_tables_destination_copie($tables, $no_erase_dest, $serveur_dest);
563
+        $status["dump_status_copie"] = 'ok';
564
+        ecrire_fichier($status_file, serialize($status));
565
+    }
566
+
567
+    // les tables auteurs et meta doivent etre copiees en dernier !
568
+    if (in_array('spip_auteurs', $tables)) {
569
+        $tables = array_diff($tables, array('spip_auteurs'));
570
+        $tables[] = 'spip_auteurs';
571
+    }
572
+    if (in_array('spip_meta', $tables)) {
573
+        $tables = array_diff($tables, array('spip_meta'));
574
+        $tables[] = 'spip_meta';
575
+    }
576
+    spip_log("Tables a copier :" . implode(", ", $tables), 'dump.' . _LOG_INFO);
577
+
578
+    $trouver_table = charger_fonction('trouver_table', 'base');
579
+
580
+    foreach ($tables as $table) {
581
+        // si table commence par spip_ c'est une table SPIP, renommer le prefixe si besoin
582
+        // sinon chercher la vraie table
583
+        $desc_source = false;
584
+        if (strncmp($table, "spip_", 5) == 0) {
585
+            $desc_source = $trouver_table(preg_replace(",^spip_,", "", $table), $serveur_source, true);
586
+        }
587
+        if (!$desc_source or !isset($desc_source['exist']) or !$desc_source['exist']) {
588
+            $desc_source = $trouver_table($table, $serveur_source, false);
589
+        }
590
+
591
+        // verifier que la table est presente dans la base source
592
+        if ($desc_source) {
593
+            // $status['tables_copiees'][$table] contient l'avancement
594
+            // de la copie pour la $table : 0 a N et -N quand elle est finie (-1 si vide et finie...)
595
+            if (!isset($status['tables_copiees'][$table])) {
596
+                $status['tables_copiees'][$table] = 0;
597
+            }
598
+
599
+            if (is_numeric($status['tables_copiees'][$table])
600
+                and $status['tables_copiees'][$table] >= 0
601
+                and $desc_dest = $preparer_table_dest(
602
+                    $table,
603
+                    isset($desc_tables_dest[$table]) ? $desc_tables_dest[$table] : $desc_source,
604
+                    $serveur_dest,
605
+                    $status['tables_copiees'][$table] == 0)
606
+            ) {
607
+                if ($callback_progression) {
608
+                    $callback_progression($status['tables_copiees'][$table], 0, $table);
609
+                }
610
+                while (true) {
611
+                    $n = intval($status['tables_copiees'][$table]);
612
+                    // on copie par lot de 400
613
+                    $res = sql_select('*', $table, isset($where[$table]) ? $where[$table] : '', '', '', "$n,400", '',
614
+                        $serveur_source);
615
+                    while ($row = sql_fetch($res, $serveur_source)) {
616
+                        $rows = array($row);
617
+                        // lire un groupe de donnees si demande en option
618
+                        // (permet un envoi par lot vers la destination)
619
+                        if ($data_pool > 0) {
620
+                            $s = strlen(serialize($row));
621
+                            while ($s < $data_pool and $row = sql_fetch($res, $serveur_source)) {
622
+                                $s += strlen(serialize($row));
623
+                                $rows[] = $row;
624
+                            }
625
+                        }
626
+                        // si l'enregistrement est deja en base, ca fera un echec ou un doublon
627
+                        // mais si ca renvoie false c'est une erreur fatale => abandon
628
+                        if ($inserer_copie($table, $rows, $desc_dest, $serveur_dest) === false) {
629
+                            // forcer la sortie, charge a l'appelant de gerer l'echec
630
+                            spip_log("Erreur fatale dans $inserer_copie table $table", "dump" . _LOG_ERREUR);
631
+                            $status['errors'][] = "Erreur fatale  lors de la copie de la table $table";
632
+                            ecrire_fichier($status_file, serialize($status));
633
+
634
+                            // copie finie
635
+                            return true;
636
+                        }
637
+                        $status['tables_copiees'][$table] += count($rows);
638
+                        if ($max_time and time() > $max_time) {
639
+                            break;
640
+                        }
641
+                    }
642
+                    if ($n == $status['tables_copiees'][$table]) {
643
+                        break;
644
+                    }
645
+                    spip_log("recopie $table " . $status['tables_copiees'][$table], 'dump.' . _LOG_INFO_IMPORTANTE);
646
+                    if ($callback_progression) {
647
+                        $callback_progression($status['tables_copiees'][$table], 0, $table);
648
+                    }
649
+                    ecrire_fichier($status_file, serialize($status));
650
+                    if ($max_time and time() > $max_time) {
651
+                        return false;
652
+                    } // on a pas fini, mais le temps imparti est ecoule
653
+                }
654
+                if ($drop_source) {
655
+                    sql_drop_table($table, '', $serveur_source);
656
+                    spip_log("drop $table sur serveur source '$serveur_source'", 'dump.' . _LOG_INFO_IMPORTANTE);
657
+                }
658
+                $status['tables_copiees'][$table] = ($status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : "zero");
659
+                ecrire_fichier($status_file, serialize($status));
660
+                spip_log("tables_recopiees " . implode(',', array_keys($status['tables_copiees'])), 'dump.' . _LOG_INFO);
661
+                if ($callback_progression) {
662
+                    $callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table);
663
+                }
664
+            } else {
665
+                if ($status['tables_copiees'][$table] < 0) {
666
+                    spip_log("Table $table deja copiee : " . $status['tables_copiees'][$table], "dump." . _LOG_INFO);
667
+                }
668
+                if ($callback_progression) {
669
+                    $callback_progression(0, $status['tables_copiees'][$table],
670
+                        "$table" . ((is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0) ? "[Echec]" : ""));
671
+                }
672
+            }
673
+        } else {
674
+            $status['errors'][] = "Impossible de lire la description de la table $table";
675
+            ecrire_fichier($status_file, serialize($status));
676
+            spip_log("Impossible de lire la description de la table $table", "dump." . _LOG_ERREUR);
677
+        }
678
+    }
679
+
680
+    // si le nombre de tables envoyees n'est pas egal au nombre de tables demandees
681
+    // abandonner
682
+    if (count($status['tables_copiees']) < count($tables)) {
683
+        spip_log("Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables),
684
+            "dump." . _LOG_ERREUR);
685
+        $status['errors'][] = "Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables);
686
+        ecrire_fichier($status_file, serialize($status));
687
+    }
688
+
689
+    if ($detruire_copieur_si_besoin = charger_fonction('detruire_copieur_si_besoin', $racine_fonctions, true)) {
690
+        $detruire_copieur_si_besoin($serveur_dest);
691
+    } else {
692
+        spip_log("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.", 'dump.' . _LOG_INFO_IMPORTANTE);
693
+    }
694
+
695
+    // OK, copie complete
696
+    return true;
697 697
 }
698 698
 
699 699
 /**
@@ -707,27 +707,27 @@  discard block
 block discarded – undo
707 707
  */
708 708
 function base_inserer_copie($table, $rows, $desc_dest, $serveur_dest) {
709 709
 
710
-	// verifier le nombre d'insertion
711
-	$nb1 = sql_countsel($table, '', '', '', $serveur_dest);
712
-	// si l'enregistrement est deja en base, ca fera un echec ou un doublon
713
-	$r = sql_insertq_multi($table, $rows, $desc_dest, $serveur_dest);
714
-	$nb = sql_countsel($table, '', '', '', $serveur_dest);
715
-	if ($nb - $nb1 < count($rows)) {
716
-		spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . ". On retente 1 par 1",
717
-			"dump" . _LOG_INFO_IMPORTANTE);
718
-		foreach ($rows as $row) {
719
-			// si l'enregistrement est deja en base, ca fera un echec ou un doublon
720
-			$r = sql_insertq($table, $row, $desc_dest, $serveur_dest);
721
-		}
722
-		// on reverifie le total
723
-		$r = 0;
724
-		$nb = sql_countsel($table, '', '', '', $serveur_dest);
725
-		if ($nb - $nb1 < count($rows)) {
726
-			spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . " apres insertion 1 par 1",
727
-				"dump" . _LOG_ERREUR);
728
-			$r = false;
729
-		}
730
-	}
731
-
732
-	return $r;
710
+    // verifier le nombre d'insertion
711
+    $nb1 = sql_countsel($table, '', '', '', $serveur_dest);
712
+    // si l'enregistrement est deja en base, ca fera un echec ou un doublon
713
+    $r = sql_insertq_multi($table, $rows, $desc_dest, $serveur_dest);
714
+    $nb = sql_countsel($table, '', '', '', $serveur_dest);
715
+    if ($nb - $nb1 < count($rows)) {
716
+        spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . ". On retente 1 par 1",
717
+            "dump" . _LOG_INFO_IMPORTANTE);
718
+        foreach ($rows as $row) {
719
+            // si l'enregistrement est deja en base, ca fera un echec ou un doublon
720
+            $r = sql_insertq($table, $row, $desc_dest, $serveur_dest);
721
+        }
722
+        // on reverifie le total
723
+        $r = 0;
724
+        $nb = sql_countsel($table, '', '', '', $serveur_dest);
725
+        if ($nb - $nb1 < count($rows)) {
726
+            spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . " apres insertion 1 par 1",
727
+                "dump" . _LOG_ERREUR);
728
+            $r = false;
729
+        }
730
+    }
731
+
732
+    return $r;
733 733
 }
Please login to merge, or discard this patch.
ecrire/inc/modifier.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -83,7 +83,7 @@
 block discarded – undo
83 83
  *     Couples champ/valeur à modifier
84 84
  * @param string $serveur
85 85
  *     Nom du connecteur à la base de données
86
- * @return bool|string
86
+ * @return string|false
87 87
  *     - false  : Aucune modification, aucun champ n'est à modifier
88 88
  *     - chaîne vide : Vide si tout s'est bien passé
89 89
  *     - chaîne : Texte d'un message d'erreur
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -113,7 +113,7 @@  discard block
 block discarded – undo
113 113
 
114 114
 	// Appels incomplets (sans $c)
115 115
 	if (!is_array($c)) {
116
-		spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c');
116
+		spip_log('erreur appel objet_modifier_champs('.$objet.'), manque $c');
117 117
 
118 118
 		return _T('erreur_technique_enregistrement_impossible');
119 119
 	}
@@ -181,7 +181,7 @@  discard block
 block discarded – undo
181 181
 
182 182
 	// Verifier si les mises a jour sont pertinentes, datees, en conflit etc
183 183
 	include_spip('inc/editer');
184
-	if (!isset($options['data']) or is_null($options['data'])){
184
+	if (!isset($options['data']) or is_null($options['data'])) {
185 185
 		$options['data'] = &$_POST;
186 186
 	}
187 187
 	$conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur);
@@ -199,7 +199,7 @@  discard block
 block discarded – undo
199 199
 				$id_rubrique = 0;
200 200
 				if (isset($desc['field']['id_rubrique'])) {
201 201
 					$parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique';
202
-					$id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet));
202
+					$id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=".intval($id_objet));
203 203
 				}
204 204
 				$instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
205 205
 				$champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur);
@@ -220,10 +220,10 @@  discard block
 block discarded – undo
220 220
 		}
221 221
 
222 222
 		// allez on commit la modif
223
-		sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), $serveur);
223
+		sql_updateq($spip_table_objet, $champs, "$id_table_objet=".intval($id_objet), $serveur);
224 224
 
225 225
 		// on verifie si elle est bien passee
226
-		$moof = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=" . intval($id_objet), array(), array(),
226
+		$moof = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=".intval($id_objet), array(), array(),
227 227
 			'', array(), $serveur);
228 228
 		// si difference entre les champs, reperer les champs mal enregistres
229 229
 		if ($moof != $champs) {
@@ -250,11 +250,11 @@  discard block
 block discarded – undo
250 250
 			// si un champ n'a pas ete correctement enregistre, loger et retourner une erreur
251 251
 			// c'est un cas exceptionnel
252 252
 			if (count($liste)) {
253
-				spip_log("Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true),
254
-					'modifier.' . _LOG_CRITIQUE);
253
+				spip_log("Erreur enregistrement en base $objet/$id_objet champs :".var_export($conflits, true),
254
+					'modifier.'._LOG_CRITIQUE);
255 255
 
256 256
 				return _T('erreur_technique_enregistrement_champs',
257
-					array('champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"));
257
+					array('champs' => "<i>'".implode("'</i>,<i>'", $liste)."'</i>"));
258 258
 			}
259 259
 		}
260 260
 
@@ -291,8 +291,8 @@  discard block
 block discarded – undo
291 291
 	// message a affiner :-)
292 292
 	include_spip('inc/filtres_mini');
293 293
 	$qui = isset($GLOBALS['visiteur_session']['nom']) and $GLOBALS['visiteur_session']['nom'] ? $GLOBALS['visiteur_session']['nom'] : $GLOBALS['ip'];
294
-	journal(_L($qui . ' a &#233;dit&#233; l&#8217;' . $objet . ' ' . $id_objet . ' (' . join('+',
295
-			array_diff(array_keys($champs), array('date_modif'))) . ')'), array(
294
+	journal(_L($qui.' a &#233;dit&#233; l&#8217;'.$objet.' '.$id_objet.' ('.join('+',
295
+			array_diff(array_keys($champs), array('date_modif'))).')'), array(
296 296
 		'faire' => 'modifier',
297 297
 		'quoi' => $objet,
298 298
 		'id' => $id_objet
Please login to merge, or discard this patch.
Indentation   +230 added lines, -230 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
 /**
@@ -39,28 +39,28 @@  discard block
 block discarded – undo
39 39
  *     Tableau des champs et valeurs collectées
40 40
  */
41 41
 function collecter_requests($white_list, $black_list = array(), $set = null, $tous = false) {
42
-	$c = $set;
43
-	if (!$c) {
44
-		$c = array();
45
-		foreach ($white_list as $champ) {
46
-			// on ne collecte que les champs reellement envoyes par defaut.
47
-			// le cas d'un envoi de valeur NULL peut du coup poser probleme.
48
-			$val = _request($champ);
49
-			if ($tous or $val !== null) {
50
-				$c[$champ] = $val;
51
-			}
52
-		}
53
-		// on ajoute toujours la lang en saisie possible
54
-		// meme si pas prevu au depart pour l'objet concerne
55
-		if ($l = _request('changer_lang')) {
56
-			$c['lang'] = $l;
57
-		}
58
-	}
59
-	foreach ($black_list as $champ) {
60
-		unset($c[$champ]);
61
-	}
62
-
63
-	return $c;
42
+    $c = $set;
43
+    if (!$c) {
44
+        $c = array();
45
+        foreach ($white_list as $champ) {
46
+            // on ne collecte que les champs reellement envoyes par defaut.
47
+            // le cas d'un envoi de valeur NULL peut du coup poser probleme.
48
+            $val = _request($champ);
49
+            if ($tous or $val !== null) {
50
+                $c[$champ] = $val;
51
+            }
52
+        }
53
+        // on ajoute toujours la lang en saisie possible
54
+        // meme si pas prevu au depart pour l'objet concerne
55
+        if ($l = _request('changer_lang')) {
56
+            $c['lang'] = $l;
57
+        }
58
+    }
59
+    foreach ($black_list as $champ) {
60
+        unset($c[$champ]);
61
+    }
62
+
63
+    return $c;
64 64
 }
65 65
 
66 66
 /**
@@ -97,211 +97,211 @@  discard block
 block discarded – undo
97 97
  *     - chaîne : Texte d'un message d'erreur
98 98
  */
99 99
 function objet_modifier_champs($objet, $id_objet, $options, $c = null, $serveur = '') {
100
-	if (!$id_objet = intval($id_objet)) {
101
-		spip_log('Erreur $id_objet non defini', 'warn');
102
-
103
-		return _T('erreur_technique_enregistrement_impossible');
104
-	}
105
-
106
-	include_spip('inc/filtres');
107
-
108
-	$table_objet = table_objet($objet, $serveur);
109
-	$spip_table_objet = table_objet_sql($objet, $serveur);
110
-	$id_table_objet = id_table_objet($objet, $serveur);
111
-	$trouver_table = charger_fonction('trouver_table', 'base');
112
-	$desc = $trouver_table($spip_table_objet, $serveur);
113
-
114
-	// Appels incomplets (sans $c)
115
-	if (!is_array($c)) {
116
-		spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c');
117
-
118
-		return _T('erreur_technique_enregistrement_impossible');
119
-	}
120
-
121
-	// Securite : certaines variables ne sont jamais acceptees ici
122
-	// car elles ne relevent pas de autoriser(xxx, modifier) ;
123
-	// il faut passer par instituer_XX()
124
-	// TODO: faut-il passer ces variables interdites
125
-	// dans un fichier de description separe ?
126
-	unset($c['statut']);
127
-	unset($c['id_parent']);
128
-	unset($c['id_rubrique']);
129
-	unset($c['id_secteur']);
130
-
131
-	// Gerer les champs non vides
132
-	if (isset($options['nonvide']) and is_array($options['nonvide'])) {
133
-		foreach ($options['nonvide'] as $champ => $sinon) {
134
-			if (isset($c[$champ]) and $c[$champ] === '') {
135
-				$c[$champ] = $sinon;
136
-			}
137
-		}
138
-	}
139
-
140
-
141
-	// N'accepter que les champs qui existent
142
-	// TODO: ici aussi on peut valider les contenus
143
-	// en fonction du type
144
-	$champs = array();
145
-	foreach ($desc['field'] as $champ => $ignore) {
146
-		if (isset($c[$champ])) {
147
-			$champs[$champ] = $c[$champ];
148
-		}
149
-	}
150
-
151
-	// Nettoyer les valeurs
152
-	$champs = array_map('corriger_caracteres', $champs);
153
-
154
-	// Envoyer aux plugins
155
-	$champs = pipeline('pre_edition',
156
-		array(
157
-			'args' => array(
158
-				'table' => $spip_table_objet, // compatibilite
159
-				'table_objet' => $table_objet,
160
-				'spip_table_objet' => $spip_table_objet,
161
-				'desc' => $desc,
162
-				'type' => $objet,
163
-				'id_objet' => $id_objet,
164
-				'data' => isset($options['data']) ? $options['data'] : null,
165
-				'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] c'est quoi ?
166
-				'serveur' => $serveur,
167
-				'action' => isset($options['action']) ? $options['action'] : 'modifier'
168
-			),
169
-			'data' => $champs
170
-		)
171
-	);
172
-
173
-	if (!$champs) {
174
-		return false;
175
-	}
176
-
177
-
178
-	// marquer le fait que l'objet est travaille par toto a telle date
179
-	if ($GLOBALS['meta']['articles_modif'] != 'non') {
180
-		include_spip('inc/drapeau_edition');
181
-		signale_edition($id_objet, $GLOBALS['visiteur_session'], $objet);
182
-	}
183
-
184
-	// Verifier si les mises a jour sont pertinentes, datees, en conflit etc
185
-	include_spip('inc/editer');
186
-	if (!isset($options['data']) or is_null($options['data'])){
187
-		$options['data'] = &$_POST;
188
-	}
189
-	$conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur);
190
-	// cas hypothetique : normalement inc/editer verifie en amont le conflit edition
191
-	// et gere l'interface
192
-	// ici on ne renvoie donc qu'un messsage d'erreur, au cas ou on y arrive quand meme
193
-	if ($conflits) {
194
-		return _T('titre_conflit_edition');
195
-	}
196
-
197
-	if ($champs) {
198
-		// cas particulier de la langue : passer par instituer_langue_objet
199
-		if (isset($champs['lang'])) {
200
-			if ($changer_lang = $champs['lang']) {
201
-				$id_rubrique = 0;
202
-				if (isset($desc['field']['id_rubrique'])) {
203
-					$parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique';
204
-					$id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet));
205
-				}
206
-				$instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
207
-				$champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur);
208
-			}
209
-			// on laisse 'lang' dans $champs,
210
-			// ca permet de passer dans le pipeline post_edition et de journaliser
211
-			// et ca ne gene pas qu'on refasse un sql_updateq dessus apres l'avoir
212
-			// deja pris en compte
213
-		}
214
-
215
-		// la modif peut avoir lieu
216
-
217
-		// faut-il ajouter date_modif ?
218
-		if (isset($options['date_modif']) and $options['date_modif']
219
-			and !isset($champs[$options['date_modif']])
220
-		) {
221
-			$champs[$options['date_modif']] = date('Y-m-d H:i:s');
222
-		}
223
-
224
-		// allez on commit la modif
225
-		sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), $serveur);
226
-
227
-		// on verifie si elle est bien passee
228
-		$moof = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=" . intval($id_objet), array(), array(),
229
-			'', array(), $serveur);
230
-		// si difference entre les champs, reperer les champs mal enregistres
231
-		if ($moof != $champs) {
232
-			$liste = array();
233
-			foreach ($moof as $k => $v) {
234
-				if ($v !== $champs[$k]
235
-					// ne pas alerter si le champ est numerique est que les valeurs sont equivalentes
236
-					and (!is_numeric($v) or intval($v) !== intval($champs[$k]))
237
-					// ne pas alerter si le champ est date, qu'on a envoye une valeur vide et qu'on recupere une date nulle
238
-					and (strlen($champs[$k]) or !in_array($v, ['0000-00-00 00:00:00', '0000-00-00']))
239
-				) {
240
-					$liste[] = $k;
241
-					$conflits[$k]['post'] = $champs[$k];
242
-					$conflits[$k]['save'] = $v;
243
-
244
-					// cas specifique MySQL+emoji : si l'un est la
245
-					// conversion utf8_noplanes de l'autre alors c'est OK
246
-					if (defined('_MYSQL_NOPLANES') && _MYSQL_NOPLANES) {
247
-						include_spip('inc/charsets');
248
-						if ($v == utf8_noplanes($champs[$k])) {
249
-							array_pop($liste);
250
-						}
251
-					}
252
-				}
253
-			}
254
-			// si un champ n'a pas ete correctement enregistre, loger et retourner une erreur
255
-			// c'est un cas exceptionnel
256
-			if (count($liste)) {
257
-				spip_log("Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true),
258
-					'modifier.' . _LOG_CRITIQUE);
259
-
260
-				return _T('erreur_technique_enregistrement_champs',
261
-					array('champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"));
262
-			}
263
-		}
264
-
265
-		// Invalider les caches
266
-		if (isset($options['invalideur']) and $options['invalideur']) {
267
-			include_spip('inc/invalideur');
268
-			if (is_array($options['invalideur'])) {
269
-				array_map('suivre_invalideur', $options['invalideur']);
270
-			} else {
271
-				suivre_invalideur($options['invalideur']);
272
-			}
273
-		}
274
-
275
-		// Notifications, gestion des revisions...
276
-		// en standard, appelle |nouvelle_revision ci-dessous
277
-		pipeline('post_edition',
278
-			array(
279
-				'args' => array(
280
-					'table' => $spip_table_objet,
281
-					'table_objet' => $table_objet,
282
-					'spip_table_objet' => $spip_table_objet,
283
-					'desc' => $desc,
284
-					'type' => $objet,
285
-					'id_objet' => $id_objet,
286
-					'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] kesako ?
287
-					'serveur' => $serveur,
288
-					'action' => isset($options['action']) ? $options['action'] : 'modifier'
289
-				),
290
-				'data' => $champs
291
-			)
292
-		);
293
-	}
294
-
295
-	// journaliser l'affaire
296
-	// message a affiner :-)
297
-	include_spip('inc/filtres_mini');
298
-	$qui = isset($GLOBALS['visiteur_session']['nom']) and $GLOBALS['visiteur_session']['nom'] ? $GLOBALS['visiteur_session']['nom'] : $GLOBALS['ip'];
299
-	journal(_L($qui . ' a &#233;dit&#233; l&#8217;' . $objet . ' ' . $id_objet . ' (' . join('+',
300
-			array_diff(array_keys($champs), array('date_modif'))) . ')'), array(
301
-		'faire' => 'modifier',
302
-		'quoi' => $objet,
303
-		'id' => $id_objet
304
-	));
305
-
306
-	return '';
100
+    if (!$id_objet = intval($id_objet)) {
101
+        spip_log('Erreur $id_objet non defini', 'warn');
102
+
103
+        return _T('erreur_technique_enregistrement_impossible');
104
+    }
105
+
106
+    include_spip('inc/filtres');
107
+
108
+    $table_objet = table_objet($objet, $serveur);
109
+    $spip_table_objet = table_objet_sql($objet, $serveur);
110
+    $id_table_objet = id_table_objet($objet, $serveur);
111
+    $trouver_table = charger_fonction('trouver_table', 'base');
112
+    $desc = $trouver_table($spip_table_objet, $serveur);
113
+
114
+    // Appels incomplets (sans $c)
115
+    if (!is_array($c)) {
116
+        spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c');
117
+
118
+        return _T('erreur_technique_enregistrement_impossible');
119
+    }
120
+
121
+    // Securite : certaines variables ne sont jamais acceptees ici
122
+    // car elles ne relevent pas de autoriser(xxx, modifier) ;
123
+    // il faut passer par instituer_XX()
124
+    // TODO: faut-il passer ces variables interdites
125
+    // dans un fichier de description separe ?
126
+    unset($c['statut']);
127
+    unset($c['id_parent']);
128
+    unset($c['id_rubrique']);
129
+    unset($c['id_secteur']);
130
+
131
+    // Gerer les champs non vides
132
+    if (isset($options['nonvide']) and is_array($options['nonvide'])) {
133
+        foreach ($options['nonvide'] as $champ => $sinon) {
134
+            if (isset($c[$champ]) and $c[$champ] === '') {
135
+                $c[$champ] = $sinon;
136
+            }
137
+        }
138
+    }
139
+
140
+
141
+    // N'accepter que les champs qui existent
142
+    // TODO: ici aussi on peut valider les contenus
143
+    // en fonction du type
144
+    $champs = array();
145
+    foreach ($desc['field'] as $champ => $ignore) {
146
+        if (isset($c[$champ])) {
147
+            $champs[$champ] = $c[$champ];
148
+        }
149
+    }
150
+
151
+    // Nettoyer les valeurs
152
+    $champs = array_map('corriger_caracteres', $champs);
153
+
154
+    // Envoyer aux plugins
155
+    $champs = pipeline('pre_edition',
156
+        array(
157
+            'args' => array(
158
+                'table' => $spip_table_objet, // compatibilite
159
+                'table_objet' => $table_objet,
160
+                'spip_table_objet' => $spip_table_objet,
161
+                'desc' => $desc,
162
+                'type' => $objet,
163
+                'id_objet' => $id_objet,
164
+                'data' => isset($options['data']) ? $options['data'] : null,
165
+                'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] c'est quoi ?
166
+                'serveur' => $serveur,
167
+                'action' => isset($options['action']) ? $options['action'] : 'modifier'
168
+            ),
169
+            'data' => $champs
170
+        )
171
+    );
172
+
173
+    if (!$champs) {
174
+        return false;
175
+    }
176
+
177
+
178
+    // marquer le fait que l'objet est travaille par toto a telle date
179
+    if ($GLOBALS['meta']['articles_modif'] != 'non') {
180
+        include_spip('inc/drapeau_edition');
181
+        signale_edition($id_objet, $GLOBALS['visiteur_session'], $objet);
182
+    }
183
+
184
+    // Verifier si les mises a jour sont pertinentes, datees, en conflit etc
185
+    include_spip('inc/editer');
186
+    if (!isset($options['data']) or is_null($options['data'])){
187
+        $options['data'] = &$_POST;
188
+    }
189
+    $conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur);
190
+    // cas hypothetique : normalement inc/editer verifie en amont le conflit edition
191
+    // et gere l'interface
192
+    // ici on ne renvoie donc qu'un messsage d'erreur, au cas ou on y arrive quand meme
193
+    if ($conflits) {
194
+        return _T('titre_conflit_edition');
195
+    }
196
+
197
+    if ($champs) {
198
+        // cas particulier de la langue : passer par instituer_langue_objet
199
+        if (isset($champs['lang'])) {
200
+            if ($changer_lang = $champs['lang']) {
201
+                $id_rubrique = 0;
202
+                if (isset($desc['field']['id_rubrique'])) {
203
+                    $parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique';
204
+                    $id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet));
205
+                }
206
+                $instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
207
+                $champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur);
208
+            }
209
+            // on laisse 'lang' dans $champs,
210
+            // ca permet de passer dans le pipeline post_edition et de journaliser
211
+            // et ca ne gene pas qu'on refasse un sql_updateq dessus apres l'avoir
212
+            // deja pris en compte
213
+        }
214
+
215
+        // la modif peut avoir lieu
216
+
217
+        // faut-il ajouter date_modif ?
218
+        if (isset($options['date_modif']) and $options['date_modif']
219
+            and !isset($champs[$options['date_modif']])
220
+        ) {
221
+            $champs[$options['date_modif']] = date('Y-m-d H:i:s');
222
+        }
223
+
224
+        // allez on commit la modif
225
+        sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), $serveur);
226
+
227
+        // on verifie si elle est bien passee
228
+        $moof = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=" . intval($id_objet), array(), array(),
229
+            '', array(), $serveur);
230
+        // si difference entre les champs, reperer les champs mal enregistres
231
+        if ($moof != $champs) {
232
+            $liste = array();
233
+            foreach ($moof as $k => $v) {
234
+                if ($v !== $champs[$k]
235
+                    // ne pas alerter si le champ est numerique est que les valeurs sont equivalentes
236
+                    and (!is_numeric($v) or intval($v) !== intval($champs[$k]))
237
+                    // ne pas alerter si le champ est date, qu'on a envoye une valeur vide et qu'on recupere une date nulle
238
+                    and (strlen($champs[$k]) or !in_array($v, ['0000-00-00 00:00:00', '0000-00-00']))
239
+                ) {
240
+                    $liste[] = $k;
241
+                    $conflits[$k]['post'] = $champs[$k];
242
+                    $conflits[$k]['save'] = $v;
243
+
244
+                    // cas specifique MySQL+emoji : si l'un est la
245
+                    // conversion utf8_noplanes de l'autre alors c'est OK
246
+                    if (defined('_MYSQL_NOPLANES') && _MYSQL_NOPLANES) {
247
+                        include_spip('inc/charsets');
248
+                        if ($v == utf8_noplanes($champs[$k])) {
249
+                            array_pop($liste);
250
+                        }
251
+                    }
252
+                }
253
+            }
254
+            // si un champ n'a pas ete correctement enregistre, loger et retourner une erreur
255
+            // c'est un cas exceptionnel
256
+            if (count($liste)) {
257
+                spip_log("Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true),
258
+                    'modifier.' . _LOG_CRITIQUE);
259
+
260
+                return _T('erreur_technique_enregistrement_champs',
261
+                    array('champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"));
262
+            }
263
+        }
264
+
265
+        // Invalider les caches
266
+        if (isset($options['invalideur']) and $options['invalideur']) {
267
+            include_spip('inc/invalideur');
268
+            if (is_array($options['invalideur'])) {
269
+                array_map('suivre_invalideur', $options['invalideur']);
270
+            } else {
271
+                suivre_invalideur($options['invalideur']);
272
+            }
273
+        }
274
+
275
+        // Notifications, gestion des revisions...
276
+        // en standard, appelle |nouvelle_revision ci-dessous
277
+        pipeline('post_edition',
278
+            array(
279
+                'args' => array(
280
+                    'table' => $spip_table_objet,
281
+                    'table_objet' => $table_objet,
282
+                    'spip_table_objet' => $spip_table_objet,
283
+                    'desc' => $desc,
284
+                    'type' => $objet,
285
+                    'id_objet' => $id_objet,
286
+                    'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] kesako ?
287
+                    'serveur' => $serveur,
288
+                    'action' => isset($options['action']) ? $options['action'] : 'modifier'
289
+                ),
290
+                'data' => $champs
291
+            )
292
+        );
293
+    }
294
+
295
+    // journaliser l'affaire
296
+    // message a affiner :-)
297
+    include_spip('inc/filtres_mini');
298
+    $qui = isset($GLOBALS['visiteur_session']['nom']) and $GLOBALS['visiteur_session']['nom'] ? $GLOBALS['visiteur_session']['nom'] : $GLOBALS['ip'];
299
+    journal(_L($qui . ' a &#233;dit&#233; l&#8217;' . $objet . ' ' . $id_objet . ' (' . join('+',
300
+            array_diff(array_keys($champs), array('date_modif'))) . ')'), array(
301
+        'faire' => 'modifier',
302
+        'quoi' => $objet,
303
+        'id' => $id_objet
304
+    ));
305
+
306
+    return '';
307 307
 }
Please login to merge, or discard this patch.
ecrire/inc/filtres_images_mini.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -122,7 +122,7 @@
 block discarded – undo
122 122
  * @param int $height_max
123 123
  *    Hauteur minimale de l'image à traiter (10000 par défaut)
124 124
  * @return
125
- *    Le tag html `<img src=... />` avec une class `filtre_inactif` ou pas
125
+ string    Le tag html `<img src=... />` avec une class `filtre_inactif` ou pas
126 126
  */
127 127
 function image_select($img, $width_min = 0, $height_min = 0, $width_max = 10000, $height_max = 1000) {
128 128
 	if (!$img) {
Please login to merge, or discard this patch.
Indentation   +316 added lines, -316 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
  */
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 include_spip('inc/filtres_images_lib_mini'); // par precaution
24 24
 
@@ -31,161 +31,161 @@  discard block
 block discarded – undo
31 31
  *    Le code hexadécimal de la couleur (sans le #) ou le code couleur textuel si non trouvé
32 32
  */
33 33
 function couleur_html_to_hex($couleur) {
34
-	$couleurs_html = array(
35
-		'aliceblue' => 'F0F8FF',
36
-		'antiquewhite' => 'FAEBD7',
37
-		'aqua' => '00FFFF',
38
-		'aquamarine' => '7FFFD4',
39
-		'azure' => 'F0FFFF',
40
-		'beige' => 'F5F5DC',
41
-		'bisque' => 'FFE4C4',
42
-		'black' => '000000',
43
-		'blanchedalmond' => 'FFEBCD',
44
-		'blue' => '0000FF',
45
-		'blueviolet' => '8A2BE2',
46
-		'brown' => 'A52A2A',
47
-		'burlywood' => 'DEB887',
48
-		'cadetblue' => '5F9EA0',
49
-		'chartreuse' => '7FFF00',
50
-		'chocolate' => 'D2691E',
51
-		'coral' => 'FF7F50',
52
-		'cornflowerblue' => '6495ED',
53
-		'cornsilk' => 'FFF8DC',
54
-		'crimson' => 'DC143C',
55
-		'cyan' => '00FFFF',
56
-		'darkblue' => '00008B',
57
-		'darkcyan' => '008B8B',
58
-		'darkgoldenrod' => 'B8860B',
59
-		'darkgray' => 'A9A9A9',
60
-		'darkgreen' => '006400',
61
-		'darkgrey' => 'A9A9A9',
62
-		'darkkhaki' => 'BDB76B',
63
-		'darkmagenta' => '8B008B',
64
-		'darkolivegreen' => '556B2F',
65
-		'darkorange' => 'FF8C00',
66
-		'darkorchid' => '9932CC',
67
-		'darkred' => '8B0000',
68
-		'darksalmon' => 'E9967A',
69
-		'darkseagreen' => '8FBC8F',
70
-		'darkslateblue' => '483D8B',
71
-		'darkslategray' => '2F4F4F',
72
-		'darkslategrey' => '2F4F4F',
73
-		'darkturquoise' => '00CED1',
74
-		'darkviolet' => '9400D3',
75
-		'deeppink' => 'FF1493',
76
-		'deepskyblue' => '00BFFF',
77
-		'dimgray' => '696969',
78
-		'dimgrey' => '696969',
79
-		'dodgerblue' => '1E90FF',
80
-		'firebrick' => 'B22222',
81
-		'floralwhite' => 'FFFAF0',
82
-		'forestgreen' => '228B22',
83
-		'fuchsia' => 'FF00FF',
84
-		'gainsboro' => 'DCDCDC',
85
-		'ghostwhite' => 'F8F8FF',
86
-		'gold' => 'FFD700',
87
-		'goldenrod' => 'DAA520',
88
-		'gray' => '808080',
89
-		'green' => '008000',
90
-		'greenyellow' => 'ADFF2F',
91
-		'grey' => '808080',
92
-		'honeydew' => 'F0FFF0',
93
-		'hotpink' => 'FF69B4',
94
-		'indianred' => 'CD5C5C',
95
-		'indigo' => '4B0082',
96
-		'ivory' => 'FFFFF0',
97
-		'khaki' => 'F0E68C',
98
-		'lavender' => 'E6E6FA',
99
-		'lavenderblush' => 'FFF0F5',
100
-		'lawngreen' => '7CFC00',
101
-		'lemonchiffon' => 'FFFACD',
102
-		'lightblue' => 'ADD8E6',
103
-		'lightcoral' => 'F08080',
104
-		'lightcyan' => 'E0FFFF',
105
-		'lightgoldenrodyellow' => 'FAFAD2',
106
-		'lightgray' => 'D3D3D3',
107
-		'lightgreen' => '90EE90',
108
-		'lightgrey' => 'D3D3D3',
109
-		'lightpink' => 'FFB6C1',
110
-		'lightsalmon' => 'FFA07A',
111
-		'lightseagreen' => '20B2AA',
112
-		'lightskyblue' => '87CEFA',
113
-		'lightslategray' => '778899',
114
-		'lightslategrey' => '778899',
115
-		'lightsteelblue' => 'B0C4DE',
116
-		'lightyellow' => 'FFFFE0',
117
-		'lime' => '00FF00',
118
-		'limegreen' => '32CD32',
119
-		'linen' => 'FAF0E6',
120
-		'magenta' => 'FF00FF',
121
-		'maroon' => '800000',
122
-		'mediumaquamarine' => '66CDAA',
123
-		'mediumblue' => '0000CD',
124
-		'mediumorchid' => 'BA55D3',
125
-		'mediumpurple' => '9370DB',
126
-		'mediumseagreen' => '3CB371',
127
-		'mediumslateblue' => '7B68EE',
128
-		'mediumspringgreen' => '00FA9A',
129
-		'mediumturquoise' => '48D1CC',
130
-		'mediumvioletred' => 'C71585',
131
-		'midnightblue' => '191970',
132
-		'mintcream' => 'F5FFFA',
133
-		'mistyrose' => 'FFE4E1',
134
-		'moccasin' => 'FFE4B5',
135
-		'navajowhite' => 'FFDEAD',
136
-		'navy' => '000080',
137
-		'oldlace' => 'FDF5E6',
138
-		'olive' => '808000',
139
-		'olivedrab' => '6B8E23',
140
-		'orange' => 'FFA500',
141
-		'orangered' => 'FF4500',
142
-		'orchid' => 'DA70D6',
143
-		'palegoldenrod' => 'EEE8AA',
144
-		'palegreen' => '98FB98',
145
-		'paleturquoise' => 'AFEEEE',
146
-		'palevioletred' => 'DB7093',
147
-		'papayawhip' => 'FFEFD5',
148
-		'peachpuff' => 'FFDAB9',
149
-		'peru' => 'CD853F',
150
-		'pink' => 'FFC0CB',
151
-		'plum' => 'DDA0DD',
152
-		'powderblue' => 'B0E0E6',
153
-		'purple' => '800080',
154
-		'rebeccapurple' => '663399',
155
-		'red' => 'FF0000',
156
-		'rosybrown' => 'BC8F8F',
157
-		'royalblue' => '4169E1',
158
-		'saddlebrown' => '8B4513',
159
-		'salmon' => 'FA8072',
160
-		'sandybrown' => 'F4A460',
161
-		'seagreen' => '2E8B57',
162
-		'seashell' => 'FFF5EE',
163
-		'sienna' => 'A0522D',
164
-		'silver' => 'C0C0C0',
165
-		'skyblue' => '87CEEB',
166
-		'slateblue' => '6A5ACD',
167
-		'slategray' => '708090',
168
-		'slategrey' => '708090',
169
-		'snow' => 'FFFAFA',
170
-		'springgreen' => '00FF7F',
171
-		'steelblue' => '4682B4',
172
-		'tan' => 'D2B48C',
173
-		'teal' => '008080',
174
-		'thistle' => 'D8BFD8',
175
-		'tomato' => 'FF6347',
176
-		'turquoise' => '40E0D0',
177
-		'violet' => 'EE82EE',
178
-		'wheat' => 'F5DEB3',
179
-		'white' => 'FFFFFF',
180
-		'whitesmoke' => 'F5F5F5',
181
-		'yellow' => 'FFFF00',
182
-		'yellowgreen' => '9ACD32',
183
-	);
184
-	if (isset($couleurs_html[$lc = strtolower($couleur)])) {
185
-		return $couleurs_html[$lc];
186
-	}
187
-
188
-	return $couleur;
34
+    $couleurs_html = array(
35
+        'aliceblue' => 'F0F8FF',
36
+        'antiquewhite' => 'FAEBD7',
37
+        'aqua' => '00FFFF',
38
+        'aquamarine' => '7FFFD4',
39
+        'azure' => 'F0FFFF',
40
+        'beige' => 'F5F5DC',
41
+        'bisque' => 'FFE4C4',
42
+        'black' => '000000',
43
+        'blanchedalmond' => 'FFEBCD',
44
+        'blue' => '0000FF',
45
+        'blueviolet' => '8A2BE2',
46
+        'brown' => 'A52A2A',
47
+        'burlywood' => 'DEB887',
48
+        'cadetblue' => '5F9EA0',
49
+        'chartreuse' => '7FFF00',
50
+        'chocolate' => 'D2691E',
51
+        'coral' => 'FF7F50',
52
+        'cornflowerblue' => '6495ED',
53
+        'cornsilk' => 'FFF8DC',
54
+        'crimson' => 'DC143C',
55
+        'cyan' => '00FFFF',
56
+        'darkblue' => '00008B',
57
+        'darkcyan' => '008B8B',
58
+        'darkgoldenrod' => 'B8860B',
59
+        'darkgray' => 'A9A9A9',
60
+        'darkgreen' => '006400',
61
+        'darkgrey' => 'A9A9A9',
62
+        'darkkhaki' => 'BDB76B',
63
+        'darkmagenta' => '8B008B',
64
+        'darkolivegreen' => '556B2F',
65
+        'darkorange' => 'FF8C00',
66
+        'darkorchid' => '9932CC',
67
+        'darkred' => '8B0000',
68
+        'darksalmon' => 'E9967A',
69
+        'darkseagreen' => '8FBC8F',
70
+        'darkslateblue' => '483D8B',
71
+        'darkslategray' => '2F4F4F',
72
+        'darkslategrey' => '2F4F4F',
73
+        'darkturquoise' => '00CED1',
74
+        'darkviolet' => '9400D3',
75
+        'deeppink' => 'FF1493',
76
+        'deepskyblue' => '00BFFF',
77
+        'dimgray' => '696969',
78
+        'dimgrey' => '696969',
79
+        'dodgerblue' => '1E90FF',
80
+        'firebrick' => 'B22222',
81
+        'floralwhite' => 'FFFAF0',
82
+        'forestgreen' => '228B22',
83
+        'fuchsia' => 'FF00FF',
84
+        'gainsboro' => 'DCDCDC',
85
+        'ghostwhite' => 'F8F8FF',
86
+        'gold' => 'FFD700',
87
+        'goldenrod' => 'DAA520',
88
+        'gray' => '808080',
89
+        'green' => '008000',
90
+        'greenyellow' => 'ADFF2F',
91
+        'grey' => '808080',
92
+        'honeydew' => 'F0FFF0',
93
+        'hotpink' => 'FF69B4',
94
+        'indianred' => 'CD5C5C',
95
+        'indigo' => '4B0082',
96
+        'ivory' => 'FFFFF0',
97
+        'khaki' => 'F0E68C',
98
+        'lavender' => 'E6E6FA',
99
+        'lavenderblush' => 'FFF0F5',
100
+        'lawngreen' => '7CFC00',
101
+        'lemonchiffon' => 'FFFACD',
102
+        'lightblue' => 'ADD8E6',
103
+        'lightcoral' => 'F08080',
104
+        'lightcyan' => 'E0FFFF',
105
+        'lightgoldenrodyellow' => 'FAFAD2',
106
+        'lightgray' => 'D3D3D3',
107
+        'lightgreen' => '90EE90',
108
+        'lightgrey' => 'D3D3D3',
109
+        'lightpink' => 'FFB6C1',
110
+        'lightsalmon' => 'FFA07A',
111
+        'lightseagreen' => '20B2AA',
112
+        'lightskyblue' => '87CEFA',
113
+        'lightslategray' => '778899',
114
+        'lightslategrey' => '778899',
115
+        'lightsteelblue' => 'B0C4DE',
116
+        'lightyellow' => 'FFFFE0',
117
+        'lime' => '00FF00',
118
+        'limegreen' => '32CD32',
119
+        'linen' => 'FAF0E6',
120
+        'magenta' => 'FF00FF',
121
+        'maroon' => '800000',
122
+        'mediumaquamarine' => '66CDAA',
123
+        'mediumblue' => '0000CD',
124
+        'mediumorchid' => 'BA55D3',
125
+        'mediumpurple' => '9370DB',
126
+        'mediumseagreen' => '3CB371',
127
+        'mediumslateblue' => '7B68EE',
128
+        'mediumspringgreen' => '00FA9A',
129
+        'mediumturquoise' => '48D1CC',
130
+        'mediumvioletred' => 'C71585',
131
+        'midnightblue' => '191970',
132
+        'mintcream' => 'F5FFFA',
133
+        'mistyrose' => 'FFE4E1',
134
+        'moccasin' => 'FFE4B5',
135
+        'navajowhite' => 'FFDEAD',
136
+        'navy' => '000080',
137
+        'oldlace' => 'FDF5E6',
138
+        'olive' => '808000',
139
+        'olivedrab' => '6B8E23',
140
+        'orange' => 'FFA500',
141
+        'orangered' => 'FF4500',
142
+        'orchid' => 'DA70D6',
143
+        'palegoldenrod' => 'EEE8AA',
144
+        'palegreen' => '98FB98',
145
+        'paleturquoise' => 'AFEEEE',
146
+        'palevioletred' => 'DB7093',
147
+        'papayawhip' => 'FFEFD5',
148
+        'peachpuff' => 'FFDAB9',
149
+        'peru' => 'CD853F',
150
+        'pink' => 'FFC0CB',
151
+        'plum' => 'DDA0DD',
152
+        'powderblue' => 'B0E0E6',
153
+        'purple' => '800080',
154
+        'rebeccapurple' => '663399',
155
+        'red' => 'FF0000',
156
+        'rosybrown' => 'BC8F8F',
157
+        'royalblue' => '4169E1',
158
+        'saddlebrown' => '8B4513',
159
+        'salmon' => 'FA8072',
160
+        'sandybrown' => 'F4A460',
161
+        'seagreen' => '2E8B57',
162
+        'seashell' => 'FFF5EE',
163
+        'sienna' => 'A0522D',
164
+        'silver' => 'C0C0C0',
165
+        'skyblue' => '87CEEB',
166
+        'slateblue' => '6A5ACD',
167
+        'slategray' => '708090',
168
+        'slategrey' => '708090',
169
+        'snow' => 'FFFAFA',
170
+        'springgreen' => '00FF7F',
171
+        'steelblue' => '4682B4',
172
+        'tan' => 'D2B48C',
173
+        'teal' => '008080',
174
+        'thistle' => 'D8BFD8',
175
+        'tomato' => 'FF6347',
176
+        'turquoise' => '40E0D0',
177
+        'violet' => 'EE82EE',
178
+        'wheat' => 'F5DEB3',
179
+        'white' => 'FFFFFF',
180
+        'whitesmoke' => 'F5F5F5',
181
+        'yellow' => 'FFFF00',
182
+        'yellowgreen' => '9ACD32',
183
+    );
184
+    if (isset($couleurs_html[$lc = strtolower($couleur)])) {
185
+        return $couleurs_html[$lc];
186
+    }
187
+
188
+    return $couleur;
189 189
 }
190 190
 
191 191
 /**
@@ -201,16 +201,16 @@  discard block
 block discarded – undo
201 201
  * @return string Couleur tel que "hsl(200, 40%, 34%)" ou valeur formattée
202 202
  */
203 203
 function couleur_hex_to_hsl($couleur, $format = null) {
204
-	$hsl = _couleur_hex_to_hsl($couleur);
205
-	$hsl = [
206
-		'h' => round($hsl['h'] * 360), 
207
-		's' => round($hsl['s'] * 100) . '%', 
208
-		'l' => round($hsl['l'] * 100) . '%'
209
-	];
210
-	if ($format === null) {
211
-		return "hsl({$hsl['h']}, {$hsl['s']}, {$hsl['l']})";
212
-	}
213
-	return str_replace(array_keys($hsl), $hsl, $format);
204
+    $hsl = _couleur_hex_to_hsl($couleur);
205
+    $hsl = [
206
+        'h' => round($hsl['h'] * 360), 
207
+        's' => round($hsl['s'] * 100) . '%', 
208
+        'l' => round($hsl['l'] * 100) . '%'
209
+    ];
210
+    if ($format === null) {
211
+        return "hsl({$hsl['h']}, {$hsl['s']}, {$hsl['l']})";
212
+    }
213
+    return str_replace(array_keys($hsl), $hsl, $format);
214 214
 }
215 215
 
216 216
 
@@ -227,16 +227,16 @@  discard block
 block discarded – undo
227 227
  * @return string Couleur tel que "rgb(200, 40, 84)" ou valeur formattée
228 228
  */
229 229
 function couleur_hex_to_rgb($couleur, $format = null) {
230
-	$rgb = _couleur_hex_to_dec($couleur);
231
-	$rgb = [
232
-		'r' => $rgb['red'], 
233
-		'g' => $rgb['green'], 
234
-		'b' => $rgb['blue'],
235
-	];
236
-	if ($format === null) {
237
-		return "rgb({$rgb['r']}, {$rgb['g']}, {$rgb['b']})";
238
-	}
239
-	return str_replace(array_keys($rgb), $rgb, $format);
230
+    $rgb = _couleur_hex_to_dec($couleur);
231
+    $rgb = [
232
+        'r' => $rgb['red'], 
233
+        'g' => $rgb['green'], 
234
+        'b' => $rgb['blue'],
235
+    ];
236
+    if ($format === null) {
237
+        return "rgb({$rgb['r']}, {$rgb['g']}, {$rgb['b']})";
238
+    }
239
+    return str_replace(array_keys($rgb), $rgb, $format);
240 240
 }
241 241
 
242 242
 /**
@@ -252,15 +252,15 @@  discard block
 block discarded – undo
252 252
  *    Code hexadécimal de la couleur plus foncée
253 253
  */
254 254
 function couleur_foncer($couleur, $coeff = 0.5) {
255
-	$couleurs = _couleur_hex_to_dec($couleur);
255
+    $couleurs = _couleur_hex_to_dec($couleur);
256 256
 
257
-	$red = $couleurs['red'] - round(($couleurs['red']) * $coeff);
258
-	$green = $couleurs['green'] - round(($couleurs['green']) * $coeff);
259
-	$blue = $couleurs['blue'] - round(($couleurs['blue']) * $coeff);
257
+    $red = $couleurs['red'] - round(($couleurs['red']) * $coeff);
258
+    $green = $couleurs['green'] - round(($couleurs['green']) * $coeff);
259
+    $blue = $couleurs['blue'] - round(($couleurs['blue']) * $coeff);
260 260
 
261
-	$couleur = _couleur_dec_to_hex($red, $green, $blue);
261
+    $couleur = _couleur_dec_to_hex($red, $green, $blue);
262 262
 
263
-	return $couleur;
263
+    return $couleur;
264 264
 }
265 265
 
266 266
 /**
@@ -276,15 +276,15 @@  discard block
 block discarded – undo
276 276
  *    Code hexadécimal de la couleur éclaircie
277 277
  */
278 278
 function couleur_eclaircir($couleur, $coeff = 0.5) {
279
-	$couleurs = _couleur_hex_to_dec($couleur);
279
+    $couleurs = _couleur_hex_to_dec($couleur);
280 280
 
281
-	$red = $couleurs['red'] + round((255 - $couleurs['red']) * $coeff);
282
-	$green = $couleurs['green'] + round((255 - $couleurs['green']) * $coeff);
283
-	$blue = $couleurs['blue'] + round((255 - $couleurs['blue']) * $coeff);
281
+    $red = $couleurs['red'] + round((255 - $couleurs['red']) * $coeff);
282
+    $green = $couleurs['green'] + round((255 - $couleurs['green']) * $coeff);
283
+    $blue = $couleurs['blue'] + round((255 - $couleurs['blue']) * $coeff);
284 284
 
285
-	$couleur = _couleur_dec_to_hex($red, $green, $blue);
285
+    $couleur = _couleur_dec_to_hex($red, $green, $blue);
286 286
 
287
-	return $couleur;
287
+    return $couleur;
288 288
 }
289 289
 
290 290
 /**
@@ -307,28 +307,28 @@  discard block
 block discarded – undo
307 307
  *    Le tag html `<img src=... />` avec une class `filtre_inactif` ou pas
308 308
  */
309 309
 function image_select($img, $width_min = 0, $height_min = 0, $width_max = 10000, $height_max = 1000) {
310
-	if (!$img) {
311
-		return $img;
312
-	}
313
-	list($h, $l) = taille_image($img);
314
-	$select = true;
315
-	if ($l < $width_min or $l > $width_max or $h < $height_min or $h > $height_max) {
316
-		$select = false;
317
-	}
318
-
319
-	$class = extraire_attribut($img, 'class');
320
-	$p = strpos($class, 'filtre_inactif');
321
-	if (($select == false) and ($p === false)) {
322
-		$class .= ' filtre_inactif';
323
-		$img = inserer_attribut($img, 'class', $class);
324
-	}
325
-	if (($select == true) and ($p !== false)) {
326
-		// no_image_filtrer : historique, a virer
327
-		$class = preg_replace(',\s*(filtre_inactif|no_image_filtrer),', '', $class);
328
-		$img = inserer_attribut($img, 'class', $class);
329
-	}
330
-
331
-	return $img;
310
+    if (!$img) {
311
+        return $img;
312
+    }
313
+    list($h, $l) = taille_image($img);
314
+    $select = true;
315
+    if ($l < $width_min or $l > $width_max or $h < $height_min or $h > $height_max) {
316
+        $select = false;
317
+    }
318
+
319
+    $class = extraire_attribut($img, 'class');
320
+    $p = strpos($class, 'filtre_inactif');
321
+    if (($select == false) and ($p === false)) {
322
+        $class .= ' filtre_inactif';
323
+        $img = inserer_attribut($img, 'class', $class);
324
+    }
325
+    if (($select == true) and ($p !== false)) {
326
+        // no_image_filtrer : historique, a virer
327
+        $class = preg_replace(',\s*(filtre_inactif|no_image_filtrer),', '', $class);
328
+        $img = inserer_attribut($img, 'class', $class);
329
+    }
330
+
331
+    return $img;
332 332
 }
333 333
 
334 334
 /**
@@ -376,45 +376,45 @@  discard block
 block discarded – undo
376 376
  *     Code HTML de l'image ou du texte.
377 377
  **/
378 378
 function image_passe_partout(
379
-	$img,
380
-	$taille_x = -1,
381
-	$taille_y = -1,
382
-	$force = false,
383
-	$cherche_image = false,
384
-	$process = 'AUTO'
379
+    $img,
380
+    $taille_x = -1,
381
+    $taille_y = -1,
382
+    $force = false,
383
+    $cherche_image = false,
384
+    $process = 'AUTO'
385 385
 ) {
386
-	// PHP 7+ type hint
387
-	$img = (string)$img;
388
-	$taille_x = (int)$taille_x;
389
-	$taille_y = (int)$taille_y;
390
-	$force = (bool)$force;
391
-	$process = (string)$process;
392
-
393
-	if (!$img) {
394
-		return '';
395
-	}
396
-	list($hauteur, $largeur) = taille_image($img);
397
-	if ($taille_x === -1) {
398
-		$taille_x = isset($GLOBALS['meta']['taille_preview']) ? $GLOBALS['meta']['taille_preview'] : 150;
399
-	}
400
-	if ($taille_y === -1) {
401
-		$taille_y = $taille_x;
402
-	}
403
-
404
-	if ($taille_x === 0 and $taille_y > 0) {
405
-		$taille_x = 1;
406
-	} # {0,300} -> c'est 300 qui compte
407
-	elseif ($taille_x > 0 and $taille_y === 0) {
408
-		$taille_y = 1;
409
-	} # {300,0} -> c'est 300 qui compte
410
-	elseif ($taille_x == 0 and $taille_y === 0) {
411
-		return '';
412
-	}
413
-
414
-	list($destWidth, $destHeight, $ratio) = ratio_passe_partout($largeur, $hauteur, $taille_x, $taille_y);
415
-	$fonction = array('image_passe_partout', func_get_args());
416
-
417
-	return process_image_reduire($fonction, $img, $destWidth, $destHeight, $force, $process);
386
+    // PHP 7+ type hint
387
+    $img = (string)$img;
388
+    $taille_x = (int)$taille_x;
389
+    $taille_y = (int)$taille_y;
390
+    $force = (bool)$force;
391
+    $process = (string)$process;
392
+
393
+    if (!$img) {
394
+        return '';
395
+    }
396
+    list($hauteur, $largeur) = taille_image($img);
397
+    if ($taille_x === -1) {
398
+        $taille_x = isset($GLOBALS['meta']['taille_preview']) ? $GLOBALS['meta']['taille_preview'] : 150;
399
+    }
400
+    if ($taille_y === -1) {
401
+        $taille_y = $taille_x;
402
+    }
403
+
404
+    if ($taille_x === 0 and $taille_y > 0) {
405
+        $taille_x = 1;
406
+    } # {0,300} -> c'est 300 qui compte
407
+    elseif ($taille_x > 0 and $taille_y === 0) {
408
+        $taille_y = 1;
409
+    } # {300,0} -> c'est 300 qui compte
410
+    elseif ($taille_x == 0 and $taille_y === 0) {
411
+        return '';
412
+    }
413
+
414
+    list($destWidth, $destHeight, $ratio) = ratio_passe_partout($largeur, $hauteur, $taille_x, $taille_y);
415
+    $fonction = array('image_passe_partout', func_get_args());
416
+
417
+    return process_image_reduire($fonction, $img, $destWidth, $destHeight, $force, $process);
418 418
 }
419 419
 
420 420
 /**
@@ -457,44 +457,44 @@  discard block
 block discarded – undo
457 457
  *     Code HTML de l'image ou du texte.
458 458
  **/
459 459
 function image_reduire(
460
-	$img,
461
-	$taille = -1,
462
-	$taille_y = -1,
463
-	$force = false,
464
-	$cherche_image = false,
465
-	$process = 'AUTO'
460
+    $img,
461
+    $taille = -1,
462
+    $taille_y = -1,
463
+    $force = false,
464
+    $cherche_image = false,
465
+    $process = 'AUTO'
466 466
 ) {
467
-	// PHP 7+ type hint
468
-	$img = (string)$img;
469
-	$taille = (int)$taille;
470
-	$taille_y = (int)$taille_y;
471
-	$force = (bool)$force;
472
-	$process = (string)$process;
473
-
474
-	// Determiner la taille x,y maxi
475
-	// prendre le reglage de previsu par defaut
476
-	if ($taille === -1) {
477
-		$taille = (isset($GLOBALS['meta']['taille_preview']) and intval($GLOBALS['meta']['taille_preview']))
478
-			? intval($GLOBALS['meta']['taille_preview'])
479
-			: 150;
480
-	}
481
-	if ($taille_y === -1) {
482
-		$taille_y = $taille;
483
-	}
484
-
485
-	if ($taille === 0 and $taille_y > 0) {
486
-		$taille = 10000;
487
-	} # {0,300} -> c'est 300 qui compte
488
-	elseif ($taille > 0 and $taille_y === 0) {
489
-		$taille_y = 10000;
490
-	} # {300,0} -> c'est 300 qui compte
491
-	elseif ($taille == 0 and $taille_y === 0) {
492
-		return '';
493
-	}
494
-
495
-	$fonction = array('image_reduire', func_get_args());
496
-
497
-	return process_image_reduire($fonction, $img, $taille, $taille_y, $force, $process);
467
+    // PHP 7+ type hint
468
+    $img = (string)$img;
469
+    $taille = (int)$taille;
470
+    $taille_y = (int)$taille_y;
471
+    $force = (bool)$force;
472
+    $process = (string)$process;
473
+
474
+    // Determiner la taille x,y maxi
475
+    // prendre le reglage de previsu par defaut
476
+    if ($taille === -1) {
477
+        $taille = (isset($GLOBALS['meta']['taille_preview']) and intval($GLOBALS['meta']['taille_preview']))
478
+            ? intval($GLOBALS['meta']['taille_preview'])
479
+            : 150;
480
+    }
481
+    if ($taille_y === -1) {
482
+        $taille_y = $taille;
483
+    }
484
+
485
+    if ($taille === 0 and $taille_y > 0) {
486
+        $taille = 10000;
487
+    } # {0,300} -> c'est 300 qui compte
488
+    elseif ($taille > 0 and $taille_y === 0) {
489
+        $taille_y = 10000;
490
+    } # {300,0} -> c'est 300 qui compte
491
+    elseif ($taille == 0 and $taille_y === 0) {
492
+        return '';
493
+    }
494
+
495
+    $fonction = array('image_reduire', func_get_args());
496
+
497
+    return process_image_reduire($fonction, $img, $taille, $taille_y, $force, $process);
498 498
 }
499 499
 
500 500
 /**
@@ -505,16 +505,16 @@  discard block
 block discarded – undo
505 505
  * 
506 506
  **/
507 507
 function image_recadre_avec_fallback (
508
-	$im,
509
-	$width,
510
-	$height = '-',
511
-	$position = 'focus',
512
-	$background_color = 'white'
508
+    $im,
509
+    $width,
510
+    $height = '-',
511
+    $position = 'focus',
512
+    $background_color = 'white'
513 513
 ) {
514
-	if (function_exists('image_recadre') && ($GLOBALS['meta']['image_process'] ?? '') === 'gd2')
515
-		return image_reduire(image_recadre($im, $width.':'.$height, '-', $position, $background_color), $width, $height);
516
-	else 
517
-		return image_passe_partout($im, $width, $height);
514
+    if (function_exists('image_recadre') && ($GLOBALS['meta']['image_process'] ?? '') === 'gd2')
515
+        return image_reduire(image_recadre($im, $width.':'.$height, '-', $position, $background_color), $width, $height);
516
+    else 
517
+        return image_passe_partout($im, $width, $height);
518 518
 }
519 519
 
520 520
 /**
@@ -532,25 +532,25 @@  discard block
 block discarded – undo
532 532
  *     Code HTML de l'image ou du texte.
533 533
  **/
534 534
 function image_reduire_par($img, $val = 1, $force = false) {
535
-	// PHP 7+ type hint
536
-	$img = (string)$img;
537
-	$val = (int)$val;
538
-	$force = (bool)$force;
535
+    // PHP 7+ type hint
536
+    $img = (string)$img;
537
+    $val = (int)$val;
538
+    $force = (bool)$force;
539 539
 
540
-	list($hauteur, $largeur) = taille_image($img);
540
+    list($hauteur, $largeur) = taille_image($img);
541 541
 
542
-	$l = round($largeur / $val);
543
-	$h = round($hauteur / $val);
542
+    $l = round($largeur / $val);
543
+    $h = round($hauteur / $val);
544 544
 
545
-	if ($l > $h) {
546
-		$h = 0;
547
-	} else {
548
-		$l = 0;
549
-	}
545
+    if ($l > $h) {
546
+        $h = 0;
547
+    } else {
548
+        $l = 0;
549
+    }
550 550
 
551
-	$img = image_reduire($img, $l, $h, $force);
551
+    $img = image_reduire($img, $l, $h, $force);
552 552
 
553
-	return $img;
553
+    return $img;
554 554
 }
555 555
 
556 556
 /**
@@ -573,10 +573,10 @@  discard block
 block discarded – undo
573 573
  *      Couleur en écriture hexadécimale.
574 574
 **/
575 575
 function filtre_couleur_saturation_dist($couleur, $val, $strict = false) {
576
-	if (function_exists('couleur_saturation')) {
577
-		return couleur_saturation($couleur, $val, $strict);
578
-	}
579
-	return $couleur;
576
+    if (function_exists('couleur_saturation')) {
577
+        return couleur_saturation($couleur, $val, $strict);
578
+    }
579
+    return $couleur;
580 580
 }
581 581
 
582 582
 /**
@@ -597,8 +597,8 @@  discard block
 block discarded – undo
597 597
  *      Couleur en écriture hexadécimale.
598 598
 **/
599 599
 function filtre_couleur_luminance_dist($couleur, $val) {
600
-	if (function_exists('couleur_luminance')) {
601
-		return couleur_luminance($couleur, $val);
602
-	}
603
-	return $couleur;
600
+    if (function_exists('couleur_luminance')) {
601
+        return couleur_luminance($couleur, $val);
602
+    }
603
+    return $couleur;
604 604
 }
Please login to merge, or discard this patch.
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -204,8 +204,8 @@  discard block
 block discarded – undo
204 204
 	$hsl = _couleur_hex_to_hsl($couleur);
205 205
 	$hsl = [
206 206
 		'h' => round($hsl['h'] * 360), 
207
-		's' => round($hsl['s'] * 100) . '%', 
208
-		'l' => round($hsl['l'] * 100) . '%'
207
+		's' => round($hsl['s'] * 100).'%', 
208
+		'l' => round($hsl['l'] * 100).'%'
209 209
 	];
210 210
 	if ($format === null) {
211 211
 		return "hsl({$hsl['h']}, {$hsl['s']}, {$hsl['l']})";
@@ -384,11 +384,11 @@  discard block
 block discarded – undo
384 384
 	$process = 'AUTO'
385 385
 ) {
386 386
 	// PHP 7+ type hint
387
-	$img = (string)$img;
388
-	$taille_x = (int)$taille_x;
389
-	$taille_y = (int)$taille_y;
390
-	$force = (bool)$force;
391
-	$process = (string)$process;
387
+	$img = (string) $img;
388
+	$taille_x = (int) $taille_x;
389
+	$taille_y = (int) $taille_y;
390
+	$force = (bool) $force;
391
+	$process = (string) $process;
392 392
 
393 393
 	if (!$img) {
394 394
 		return '';
@@ -465,11 +465,11 @@  discard block
 block discarded – undo
465 465
 	$process = 'AUTO'
466 466
 ) {
467 467
 	// PHP 7+ type hint
468
-	$img = (string)$img;
469
-	$taille = (int)$taille;
470
-	$taille_y = (int)$taille_y;
471
-	$force = (bool)$force;
472
-	$process = (string)$process;
468
+	$img = (string) $img;
469
+	$taille = (int) $taille;
470
+	$taille_y = (int) $taille_y;
471
+	$force = (bool) $force;
472
+	$process = (string) $process;
473 473
 
474 474
 	// Determiner la taille x,y maxi
475 475
 	// prendre le reglage de previsu par defaut
@@ -504,7 +504,7 @@  discard block
 block discarded – undo
504 504
  * sinon retourne le image_passe_partout usuel
505 505
  * 
506 506
  **/
507
-function image_recadre_avec_fallback (
507
+function image_recadre_avec_fallback(
508 508
 	$im,
509 509
 	$width,
510 510
 	$height = '-',
@@ -533,9 +533,9 @@  discard block
 block discarded – undo
533 533
  **/
534 534
 function image_reduire_par($img, $val = 1, $force = false) {
535 535
 	// PHP 7+ type hint
536
-	$img = (string)$img;
537
-	$val = (int)$val;
538
-	$force = (bool)$force;
536
+	$img = (string) $img;
537
+	$val = (int) $val;
538
+	$force = (bool) $force;
539 539
 
540 540
 	list($hauteur, $largeur) = taille_image($img);
541 541
 
Please login to merge, or discard this patch.
Braces   +6 added lines, -5 removed lines patch added patch discarded remove patch
@@ -511,11 +511,12 @@
 block discarded – undo
511 511
 	$position = 'focus',
512 512
 	$background_color = 'white'
513 513
 ) {
514
-	if (function_exists('image_recadre') && ($GLOBALS['meta']['image_process'] ?? '') === 'gd2')
515
-		return image_reduire(image_recadre($im, $width.':'.$height, '-', $position, $background_color), $width, $height);
516
-	else 
517
-		return image_passe_partout($im, $width, $height);
518
-}
514
+	if (function_exists('image_recadre') && ($GLOBALS['meta']['image_process'] ?? '') === 'gd2') {
515
+			return image_reduire(image_recadre($im, $width.':'.$height, '-', $position, $background_color), $width, $height);
516
+	} else {
517
+			return image_passe_partout($im, $width, $height);
518
+	}
519
+	}
519 520
 
520 521
 /**
521 522
  * Réduit les images d'un certain facteur
Please login to merge, or discard this patch.
ecrire/inc/flock.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -644,7 +644,7 @@
 block discarded – undo
644 644
  *
645 645
  * @param string $dir
646 646
  *     Répertoire à parcourir
647
- * @param int|string $pattern
647
+ * @param integer $pattern
648 648
  *     Expression régulière pour trouver des fichiers, tel que `[.]lock$`
649 649
  * @param int $maxfiles
650 650
  *     Nombre de fichiers maximums retournés
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
 		$contenu = @gzfile($fichier);
123 123
 	}
124 124
 
125
-	return is_array($contenu) ? join('', $contenu) : (string)$contenu;
125
+	return is_array($contenu) ? join('', $contenu) : (string) $contenu;
126 126
 }
127 127
 
128 128
 
@@ -315,9 +315,9 @@  discard block
 block discarded – undo
315 315
  */
316 316
 function ecrire_fichier_securise($fichier, $contenu, $ecrire_quand_meme = false, $truncate = true) {
317 317
 	if (substr($fichier, -4) !== '.php') {
318
-		spip_log('Erreur de programmation: ' . $fichier . ' doit finir par .php');
318
+		spip_log('Erreur de programmation: '.$fichier.' doit finir par .php');
319 319
 	}
320
-	$contenu = "<" . "?php die ('Acces interdit'); ?" . ">\n" . $contenu;
320
+	$contenu = "<"."?php die ('Acces interdit'); ?".">\n".$contenu;
321 321
 
322 322
 	return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
323 323
 }
@@ -329,9 +329,9 @@  discard block
 block discarded – undo
329 329
  * @param bool $force
330 330
  * @return bool
331 331
  */
332
-function ecrire_fichier_calcule_si_modifie($fichier, $contenu, $force=false, $use_copy=false) {
333
-	$fichier_tmp = $fichier . '.last';
334
-	if (!ecrire_fichier($fichier_tmp, $contenu, true)){
332
+function ecrire_fichier_calcule_si_modifie($fichier, $contenu, $force = false, $use_copy = false) {
333
+	$fichier_tmp = $fichier.'.last';
334
+	if (!ecrire_fichier($fichier_tmp, $contenu, true)) {
335 335
 		return false;
336 336
 	}
337 337
 	if ($force
@@ -368,7 +368,7 @@  discard block
 block discarded – undo
368 368
  */
369 369
 function lire_fichier_securise($fichier, &$contenu, $options = array()) {
370 370
 	if ($res = lire_fichier($fichier, $contenu, $options)) {
371
-		$contenu = substr($contenu, strlen("<" . "?php die ('Acces interdit'); ?" . ">\n"));
371
+		$contenu = substr($contenu, strlen("<"."?php die ('Acces interdit'); ?".">\n"));
372 372
 	}
373 373
 
374 374
 	return $res;
@@ -488,11 +488,11 @@  discard block
 block discarded – undo
488 488
 		$invalidate = @opcache_invalidate($filepath, true);
489 489
 		// si l'invalidation a echoue lever un flag
490 490
 		if (!$invalidate and !defined('_spip_attend_invalidation_opcode_cache')) {
491
-			define('_spip_attend_invalidation_opcode_cache',true);
491
+			define('_spip_attend_invalidation_opcode_cache', true);
492 492
 		}
493 493
 	} elseif (!defined('_spip_attend_invalidation_opcode_cache')) {
494 494
 		// n'agira que si opcache est effectivement actif (il semble qu'on a pas toujours la fonction opcache_invalidate)
495
-		define('_spip_attend_invalidation_opcode_cache',true);
495
+		define('_spip_attend_invalidation_opcode_cache', true);
496 496
 	}
497 497
 	// APC.
498 498
 	if (function_exists('apc_delete_file')) {
@@ -532,11 +532,11 @@  discard block
 block discarded – undo
532 532
 		$wait = $duree + 1;
533 533
 		if ($timestamp) {
534 534
 			$wait -= (time() - $timestamp);
535
-			if ($wait<0) {
535
+			if ($wait < 0) {
536 536
 				$wait = 0;
537 537
 			}
538 538
 		}
539
-		spip_log('Probleme de configuration opcache.revalidate_freq '. $duree .'s : on attend '.$wait.'s', _LOG_INFO_IMPORTANTE);
539
+		spip_log('Probleme de configuration opcache.revalidate_freq '.$duree.'s : on attend '.$wait.'s', _LOG_INFO_IMPORTANTE);
540 540
 		if ($wait) {
541 541
 			sleep($duree + 1);
542 542
 		}
@@ -564,9 +564,9 @@  discard block
 block discarded – undo
564 564
 		if ($item == '.' || $item == '..') {
565 565
 			continue;
566 566
 		}
567
-		if (!supprimer_repertoire($dir . "/" . $item)) {
568
-			@chmod($dir . "/" . $item, 0777);
569
-			if (!supprimer_repertoire($dir . "/" . $item)) {
567
+		if (!supprimer_repertoire($dir."/".$item)) {
568
+			@chmod($dir."/".$item, 0777);
569
+			if (!supprimer_repertoire($dir."/".$item)) {
570 570
 				return false;
571 571
 			}
572 572
 		};
@@ -611,7 +611,7 @@  discard block
 block discarded – undo
611 611
 	if (!strlen($subdir)) {
612 612
 		$n = strrpos($base, "/");
613 613
 		if ($n === false) {
614
-			return $nobase ? '' : ($base . '/');
614
+			return $nobase ? '' : ($base.'/');
615 615
 		}
616 616
 		$subdir = substr($base, $n + 1);
617 617
 		$base = substr($base, 0, $n + 1);
@@ -621,14 +621,14 @@  discard block
 block discarded – undo
621 621
 	}
622 622
 
623 623
 	$baseaff = $nobase ? '' : $base;
624
-	if (isset($dirs[$base . $subdir])) {
625
-		return $baseaff . $dirs[$base . $subdir];
624
+	if (isset($dirs[$base.$subdir])) {
625
+		return $baseaff.$dirs[$base.$subdir];
626 626
 	}
627 627
 
628
-	$path = $base . $subdir; # $path = 'IMG/distant/pdf' ou 'IMG/distant_pdf'
628
+	$path = $base.$subdir; # $path = 'IMG/distant/pdf' ou 'IMG/distant_pdf'
629 629
 
630 630
 	if (file_exists("$path/.ok")) {
631
-		return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
631
+		return $baseaff.($dirs[$base.$subdir] = "$subdir/");
632 632
 	}
633 633
 
634 634
 	@mkdir($path, _SPIP_CHMOD);
@@ -638,7 +638,7 @@  discard block
 block discarded – undo
638 638
 		@touch("$path/.ok");
639 639
 		spip_log("creation $base$subdir/");
640 640
 
641
-		return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
641
+		return $baseaff.($dirs[$base.$subdir] = "$subdir/");
642 642
 	}
643 643
 
644 644
 	// en cas d'echec c'est peut etre tout simplement que le disque est plein :
@@ -648,10 +648,10 @@  discard block
 block discarded – undo
648 648
 		return '';
649 649
 	}
650 650
 	if (!_DIR_RESTREINT) {
651
-		$base = preg_replace(',^' . _DIR_RACINE . ',', '', $base);
651
+		$base = preg_replace(',^'._DIR_RACINE.',', '', $base);
652 652
 	}
653 653
 	$base .= $subdir;
654
-	raler_fichier($base . '/.ok');
654
+	raler_fichier($base.'/.ok');
655 655
 }
656 656
 
657 657
 
@@ -719,7 +719,7 @@  discard block
 block discarded – undo
719 719
 							$beginning = $fichiers;
720 720
 							$end = preg_files("$f/", $pattern,
721 721
 								$maxfiles - $nbfiles, $recurs);
722
-							$fichiers = array_merge((array)$beginning, (array)$end);
722
+							$fichiers = array_merge((array) $beginning, (array) $end);
723 723
 							$nbfiles = count($fichiers);
724 724
 						}
725 725
 					}
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -339,8 +339,7 @@
 block discarded – undo
339 339
 		or md5_file($fichier) != md5_file($fichier_tmp)) {
340 340
 		if ($use_copy) {
341 341
 			@copy($fichier_tmp, $fichier);
342
-		}
343
-		else {
342
+		} else {
344 343
 			@rename($fichier_tmp, $fichier);
345 344
 		}
346 345
 		// eviter que PHP ne reserve le vieux timestamp
Please login to merge, or discard this patch.
Indentation   +394 added lines, -394 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
 if (!defined('_TEST_FILE_EXISTS')) {
24
-	/** Permettre d'éviter des tests file_exists sur certains hébergeurs */
25
-	define('_TEST_FILE_EXISTS', preg_match(',(online|free)[.]fr$,', isset($_ENV["HTTP_HOST"]) ? $_ENV["HTTP_HOST"] : ""));
24
+    /** Permettre d'éviter des tests file_exists sur certains hébergeurs */
25
+    define('_TEST_FILE_EXISTS', preg_match(',(online|free)[.]fr$,', isset($_ENV["HTTP_HOST"]) ? $_ENV["HTTP_HOST"] : ""));
26 26
 }
27 27
 
28 28
 #define('_SPIP_LOCK_MODE',0); // ne pas utiliser de lock (deconseille)
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
 #define('_SPIP_LOCK_MODE',2); // utiliser le nfslock de spip
31 31
 
32 32
 if (_SPIP_LOCK_MODE == 2) {
33
-	include_spip('inc/nfslock');
33
+    include_spip('inc/nfslock');
34 34
 }
35 35
 
36 36
 $GLOBALS['liste_verrous'] = array();
@@ -53,24 +53,24 @@  discard block
 block discarded – undo
53 53
  *     Ressource sur le fichier ouvert, sinon false.
54 54
  **/
55 55
 function spip_fopen_lock($fichier, $mode, $verrou) {
56
-	if (_SPIP_LOCK_MODE == 1) {
57
-		if ($fl = @fopen($fichier, $mode)) {
58
-			// verrou
59
-			@flock($fl, $verrou);
60
-		}
61
-
62
-		return $fl;
63
-	} elseif (_SPIP_LOCK_MODE == 2) {
64
-		if (($verrou = spip_nfslock($fichier)) && ($fl = @fopen($fichier, $mode))) {
65
-			$GLOBALS['liste_verrous'][$fl] = array($fichier, $verrou);
66
-
67
-			return $fl;
68
-		} else {
69
-			return false;
70
-		}
71
-	}
72
-
73
-	return @fopen($fichier, $mode);
56
+    if (_SPIP_LOCK_MODE == 1) {
57
+        if ($fl = @fopen($fichier, $mode)) {
58
+            // verrou
59
+            @flock($fl, $verrou);
60
+        }
61
+
62
+        return $fl;
63
+    } elseif (_SPIP_LOCK_MODE == 2) {
64
+        if (($verrou = spip_nfslock($fichier)) && ($fl = @fopen($fichier, $mode))) {
65
+            $GLOBALS['liste_verrous'][$fl] = array($fichier, $verrou);
66
+
67
+            return $fl;
68
+        } else {
69
+            return false;
70
+        }
71
+    }
72
+
73
+    return @fopen($fichier, $mode);
74 74
 }
75 75
 
76 76
 /**
@@ -85,14 +85,14 @@  discard block
 block discarded – undo
85 85
  *     true si succès, false sinon.
86 86
  **/
87 87
 function spip_fclose_unlock($handle) {
88
-	if (_SPIP_LOCK_MODE == 1) {
89
-		@flock($handle, LOCK_UN);
90
-	} elseif (_SPIP_LOCK_MODE == 2) {
91
-		spip_nfsunlock(reset($GLOBALS['liste_verrous'][$handle]), end($GLOBALS['liste_verrous'][$handle]));
92
-		unset($GLOBALS['liste_verrous'][$handle]);
93
-	}
94
-
95
-	return @fclose($handle);
88
+    if (_SPIP_LOCK_MODE == 1) {
89
+        @flock($handle, LOCK_UN);
90
+    } elseif (_SPIP_LOCK_MODE == 2) {
91
+        spip_nfsunlock(reset($GLOBALS['liste_verrous'][$handle]), end($GLOBALS['liste_verrous'][$handle]));
92
+        unset($GLOBALS['liste_verrous'][$handle]);
93
+    }
94
+
95
+    return @fclose($handle);
96 96
 }
97 97
 
98 98
 
@@ -106,23 +106,23 @@  discard block
 block discarded – undo
106 106
  *     Contenu du fichier
107 107
  **/
108 108
 function spip_file_get_contents($fichier) {
109
-	if (substr($fichier, -3) != '.gz') {
110
-		if (function_exists('file_get_contents')) {
111
-			// quand on est sous windows on ne sait pas si file_get_contents marche
112
-			// on essaye : si ca retourne du contenu alors c'est bon
113
-			// sinon on fait un file() pour avoir le coeur net
114
-			$contenu = @file_get_contents($fichier);
115
-			if (!$contenu and _OS_SERVEUR == 'windows') {
116
-				$contenu = @file($fichier);
117
-			}
118
-		} else {
119
-			$contenu = @file($fichier);
120
-		}
121
-	} else {
122
-		$contenu = @gzfile($fichier);
123
-	}
124
-
125
-	return is_array($contenu) ? join('', $contenu) : (string)$contenu;
109
+    if (substr($fichier, -3) != '.gz') {
110
+        if (function_exists('file_get_contents')) {
111
+            // quand on est sous windows on ne sait pas si file_get_contents marche
112
+            // on essaye : si ca retourne du contenu alors c'est bon
113
+            // sinon on fait un file() pour avoir le coeur net
114
+            $contenu = @file_get_contents($fichier);
115
+            if (!$contenu and _OS_SERVEUR == 'windows') {
116
+                $contenu = @file($fichier);
117
+            }
118
+        } else {
119
+            $contenu = @file($fichier);
120
+        }
121
+    } else {
122
+        $contenu = @gzfile($fichier);
123
+    }
124
+
125
+    return is_array($contenu) ? join('', $contenu) : (string)$contenu;
126 126
 }
127 127
 
128 128
 
@@ -147,48 +147,48 @@  discard block
 block discarded – undo
147 147
  *     true si l'opération a réussie, false sinon.
148 148
  **/
149 149
 function lire_fichier($fichier, &$contenu, $options = array()) {
150
-	$contenu = '';
151
-	// inutile car si le fichier n'existe pas, le lock va renvoyer false juste apres
152
-	// economisons donc les acces disque, sauf chez free qui rale pour un rien
153
-	if (_TEST_FILE_EXISTS and !@file_exists($fichier)) {
154
-		return false;
155
-	}
156
-
157
-	#spip_timer('lire_fichier');
158
-
159
-	// pas de @ sur spip_fopen_lock qui est silencieux de toute facon
160
-	if ($fl = spip_fopen_lock($fichier, 'r', LOCK_SH)) {
161
-		// lire le fichier avant tout
162
-		$contenu = spip_file_get_contents($fichier);
163
-
164
-		// le fichier a-t-il ete supprime par le locker ?
165
-		// on ne verifie que si la tentative de lecture a echoue
166
-		// pour discriminer un contenu vide d'un fichier absent
167
-		// et eviter un acces disque
168
-		if (!$contenu and !@file_exists($fichier)) {
169
-			spip_fclose_unlock($fl);
170
-
171
-			return false;
172
-		}
173
-
174
-		// liberer le verrou
175
-		spip_fclose_unlock($fl);
176
-
177
-		// Verifications
178
-		$ok = true;
179
-		if (isset($options['phpcheck']) and $options['phpcheck'] == 'oui') {
180
-			$ok &= (preg_match(",[?]>\n?$,", $contenu));
181
-		}
182
-
183
-		#spip_log("$fread $fichier ".spip_timer('lire_fichier'));
184
-		if (!$ok) {
185
-			spip_log("echec lecture $fichier");
186
-		}
187
-
188
-		return $ok;
189
-	}
190
-
191
-	return false;
150
+    $contenu = '';
151
+    // inutile car si le fichier n'existe pas, le lock va renvoyer false juste apres
152
+    // economisons donc les acces disque, sauf chez free qui rale pour un rien
153
+    if (_TEST_FILE_EXISTS and !@file_exists($fichier)) {
154
+        return false;
155
+    }
156
+
157
+    #spip_timer('lire_fichier');
158
+
159
+    // pas de @ sur spip_fopen_lock qui est silencieux de toute facon
160
+    if ($fl = spip_fopen_lock($fichier, 'r', LOCK_SH)) {
161
+        // lire le fichier avant tout
162
+        $contenu = spip_file_get_contents($fichier);
163
+
164
+        // le fichier a-t-il ete supprime par le locker ?
165
+        // on ne verifie que si la tentative de lecture a echoue
166
+        // pour discriminer un contenu vide d'un fichier absent
167
+        // et eviter un acces disque
168
+        if (!$contenu and !@file_exists($fichier)) {
169
+            spip_fclose_unlock($fl);
170
+
171
+            return false;
172
+        }
173
+
174
+        // liberer le verrou
175
+        spip_fclose_unlock($fl);
176
+
177
+        // Verifications
178
+        $ok = true;
179
+        if (isset($options['phpcheck']) and $options['phpcheck'] == 'oui') {
180
+            $ok &= (preg_match(",[?]>\n?$,", $contenu));
181
+        }
182
+
183
+        #spip_log("$fread $fichier ".spip_timer('lire_fichier'));
184
+        if (!$ok) {
185
+            spip_log("echec lecture $fichier");
186
+        }
187
+
188
+        return $ok;
189
+    }
190
+
191
+    return false;
192 192
 }
193 193
 
194 194
 
@@ -216,85 +216,85 @@  discard block
 block discarded – undo
216 216
  **/
217 217
 function ecrire_fichier($fichier, $contenu, $ignorer_echec = false, $truncate = true) {
218 218
 
219
-	#spip_timer('ecrire_fichier');
220
-
221
-	// verrouiller le fichier destination
222
-	if ($fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) {
223
-		// ecrire les donnees, compressees le cas echeant
224
-		// (on ouvre un nouveau pointeur sur le fichier, ce qui a l'avantage
225
-		// de le recreer si le locker qui nous precede l'avait supprime...)
226
-		if (substr($fichier, -3) == '.gz') {
227
-			$contenu = gzencode($contenu);
228
-		}
229
-		// si c'est une ecriture avec troncation , on fait plutot une ecriture complete a cote suivie unlink+rename
230
-		// pour etre sur d'avoir une operation atomique
231
-		// y compris en NFS : http://www.ietf.org/rfc/rfc1094.txt
232
-		// sauf sous wintruc ou ca ne marche pas
233
-		$ok = false;
234
-		if ($truncate and _OS_SERVEUR != 'windows') {
235
-			if (!function_exists('creer_uniqid')) {
236
-				include_spip('inc/acces');
237
-			}
238
-			$id = creer_uniqid();
239
-			// on ouvre un pointeur sur un fichier temporaire en ecriture +raz
240
-			if ($fp2 = spip_fopen_lock("$fichier.$id", 'w', LOCK_EX)) {
241
-				$s = @fputs($fp2, $contenu, $a = strlen($contenu));
242
-				$ok = ($s == $a);
243
-				spip_fclose_unlock($fp2);
244
-				spip_fclose_unlock($fp);
245
-				// unlink direct et pas spip_unlink car on avait deja le verrou
246
-				// a priori pas besoin car rename ecrase la cible
247
-				// @unlink($fichier);
248
-				// le rename aussitot, atomique quand on est pas sous windows
249
-				// au pire on arrive en second en cas de concourance, et le rename echoue
250
-				// --> on a la version de l'autre process qui doit etre identique
251
-				@rename("$fichier.$id", $fichier);
252
-				// precaution en cas d'echec du rename
253
-				if (!_TEST_FILE_EXISTS or @file_exists("$fichier.$id")) {
254
-					@unlink("$fichier.$id");
255
-				}
256
-				if ($ok) {
257
-					$ok = file_exists($fichier);
258
-				}
259
-			} else // echec mais penser a fermer ..
260
-			{
261
-				spip_fclose_unlock($fp);
262
-			}
263
-		}
264
-		// sinon ou si methode precedente a echoueee
265
-		// on se rabat sur la methode ancienne
266
-		if (!$ok) {
267
-			// ici on est en ajout ou sous windows, cas desespere
268
-			if ($truncate) {
269
-				@ftruncate($fp, 0);
270
-			}
271
-			$s = @fputs($fp, $contenu, $a = strlen($contenu));
272
-
273
-			$ok = ($s == $a);
274
-			spip_fclose_unlock($fp);
275
-		}
276
-
277
-		// liberer le verrou et fermer le fichier
278
-		@chmod($fichier, _SPIP_CHMOD & 0666);
279
-		if ($ok) {
280
-			if (strpos($fichier, ".php") !== false) {
281
-				spip_clear_opcode_cache(realpath($fichier));
282
-			}
283
-
284
-			return $ok;
285
-		}
286
-	}
287
-
288
-	if (!$ignorer_echec) {
289
-		include_spip('inc/autoriser');
290
-		if (autoriser('chargerftp')) {
291
-			raler_fichier($fichier);
292
-		}
293
-		spip_unlink($fichier);
294
-	}
295
-	spip_log("Ecriture fichier $fichier impossible", _LOG_INFO_IMPORTANTE);
296
-
297
-	return false;
219
+    #spip_timer('ecrire_fichier');
220
+
221
+    // verrouiller le fichier destination
222
+    if ($fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) {
223
+        // ecrire les donnees, compressees le cas echeant
224
+        // (on ouvre un nouveau pointeur sur le fichier, ce qui a l'avantage
225
+        // de le recreer si le locker qui nous precede l'avait supprime...)
226
+        if (substr($fichier, -3) == '.gz') {
227
+            $contenu = gzencode($contenu);
228
+        }
229
+        // si c'est une ecriture avec troncation , on fait plutot une ecriture complete a cote suivie unlink+rename
230
+        // pour etre sur d'avoir une operation atomique
231
+        // y compris en NFS : http://www.ietf.org/rfc/rfc1094.txt
232
+        // sauf sous wintruc ou ca ne marche pas
233
+        $ok = false;
234
+        if ($truncate and _OS_SERVEUR != 'windows') {
235
+            if (!function_exists('creer_uniqid')) {
236
+                include_spip('inc/acces');
237
+            }
238
+            $id = creer_uniqid();
239
+            // on ouvre un pointeur sur un fichier temporaire en ecriture +raz
240
+            if ($fp2 = spip_fopen_lock("$fichier.$id", 'w', LOCK_EX)) {
241
+                $s = @fputs($fp2, $contenu, $a = strlen($contenu));
242
+                $ok = ($s == $a);
243
+                spip_fclose_unlock($fp2);
244
+                spip_fclose_unlock($fp);
245
+                // unlink direct et pas spip_unlink car on avait deja le verrou
246
+                // a priori pas besoin car rename ecrase la cible
247
+                // @unlink($fichier);
248
+                // le rename aussitot, atomique quand on est pas sous windows
249
+                // au pire on arrive en second en cas de concourance, et le rename echoue
250
+                // --> on a la version de l'autre process qui doit etre identique
251
+                @rename("$fichier.$id", $fichier);
252
+                // precaution en cas d'echec du rename
253
+                if (!_TEST_FILE_EXISTS or @file_exists("$fichier.$id")) {
254
+                    @unlink("$fichier.$id");
255
+                }
256
+                if ($ok) {
257
+                    $ok = file_exists($fichier);
258
+                }
259
+            } else // echec mais penser a fermer ..
260
+            {
261
+                spip_fclose_unlock($fp);
262
+            }
263
+        }
264
+        // sinon ou si methode precedente a echoueee
265
+        // on se rabat sur la methode ancienne
266
+        if (!$ok) {
267
+            // ici on est en ajout ou sous windows, cas desespere
268
+            if ($truncate) {
269
+                @ftruncate($fp, 0);
270
+            }
271
+            $s = @fputs($fp, $contenu, $a = strlen($contenu));
272
+
273
+            $ok = ($s == $a);
274
+            spip_fclose_unlock($fp);
275
+        }
276
+
277
+        // liberer le verrou et fermer le fichier
278
+        @chmod($fichier, _SPIP_CHMOD & 0666);
279
+        if ($ok) {
280
+            if (strpos($fichier, ".php") !== false) {
281
+                spip_clear_opcode_cache(realpath($fichier));
282
+            }
283
+
284
+            return $ok;
285
+        }
286
+    }
287
+
288
+    if (!$ignorer_echec) {
289
+        include_spip('inc/autoriser');
290
+        if (autoriser('chargerftp')) {
291
+            raler_fichier($fichier);
292
+        }
293
+        spip_unlink($fichier);
294
+    }
295
+    spip_log("Ecriture fichier $fichier impossible", _LOG_INFO_IMPORTANTE);
296
+
297
+    return false;
298 298
 }
299 299
 
300 300
 /**
@@ -314,12 +314,12 @@  discard block
 block discarded – undo
314 314
  *     Écriture avec troncation ?
315 315
  */
316 316
 function ecrire_fichier_securise($fichier, $contenu, $ecrire_quand_meme = false, $truncate = true) {
317
-	if (substr($fichier, -4) !== '.php') {
318
-		spip_log('Erreur de programmation: ' . $fichier . ' doit finir par .php');
319
-	}
320
-	$contenu = "<" . "?php die ('Acces interdit'); ?" . ">\n" . $contenu;
317
+    if (substr($fichier, -4) !== '.php') {
318
+        spip_log('Erreur de programmation: ' . $fichier . ' doit finir par .php');
319
+    }
320
+    $contenu = "<" . "?php die ('Acces interdit'); ?" . ">\n" . $contenu;
321 321
 
322
-	return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
322
+    return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
323 323
 }
324 324
 
325 325
 
@@ -330,23 +330,23 @@  discard block
 block discarded – undo
330 330
  * @return bool
331 331
  */
332 332
 function ecrire_fichier_calcule_si_modifie($fichier, $contenu, $force=false, $use_copy=false) {
333
-	$fichier_tmp = $fichier . '.last';
334
-	if (!ecrire_fichier($fichier_tmp, $contenu, true)){
335
-		return false;
336
-	}
337
-	if ($force
338
-	  or !file_exists($fichier)
339
-		or md5_file($fichier) != md5_file($fichier_tmp)) {
340
-		if ($use_copy) {
341
-			@copy($fichier_tmp, $fichier);
342
-		}
343
-		else {
344
-			@rename($fichier_tmp, $fichier);
345
-		}
346
-		// eviter que PHP ne reserve le vieux timestamp
347
-		clearstatcache(true, $fichier);
348
-	}
349
-	return true;
333
+    $fichier_tmp = $fichier . '.last';
334
+    if (!ecrire_fichier($fichier_tmp, $contenu, true)){
335
+        return false;
336
+    }
337
+    if ($force
338
+      or !file_exists($fichier)
339
+        or md5_file($fichier) != md5_file($fichier_tmp)) {
340
+        if ($use_copy) {
341
+            @copy($fichier_tmp, $fichier);
342
+        }
343
+        else {
344
+            @rename($fichier_tmp, $fichier);
345
+        }
346
+        // eviter que PHP ne reserve le vieux timestamp
347
+        clearstatcache(true, $fichier);
348
+    }
349
+    return true;
350 350
 }
351 351
 
352 352
 
@@ -367,11 +367,11 @@  discard block
 block discarded – undo
367 367
  *     true si l'opération a réussie, false sinon.
368 368
  */
369 369
 function lire_fichier_securise($fichier, &$contenu, $options = array()) {
370
-	if ($res = lire_fichier($fichier, $contenu, $options)) {
371
-		$contenu = substr($contenu, strlen("<" . "?php die ('Acces interdit'); ?" . ">\n"));
372
-	}
370
+    if ($res = lire_fichier($fichier, $contenu, $options)) {
371
+        $contenu = substr($contenu, strlen("<" . "?php die ('Acces interdit'); ?" . ">\n"));
372
+    }
373 373
 
374
-	return $res;
374
+    return $res;
375 375
 }
376 376
 
377 377
 /**
@@ -386,20 +386,20 @@  discard block
 block discarded – undo
386 386
  *     Chemin du fichier
387 387
  **/
388 388
 function raler_fichier($fichier) {
389
-	include_spip('inc/minipres');
390
-	$dir = dirname($fichier);
391
-	http_status(401);
392
-	echo minipres(_T('texte_inc_meta_2'), "<h4 style='color: red'>"
393
-		. _T('texte_inc_meta_1', array('fichier' => $fichier))
394
-		. " <a href='"
395
-		. generer_url_ecrire('install', "etape=chmod&test_dir=$dir")
396
-		. "'>"
397
-		. _T('texte_inc_meta_2')
398
-		. "</a> "
399
-		. _T('texte_inc_meta_3',
400
-			array('repertoire' => joli_repertoire($dir)))
401
-		. "</h4>\n");
402
-	exit;
389
+    include_spip('inc/minipres');
390
+    $dir = dirname($fichier);
391
+    http_status(401);
392
+    echo minipres(_T('texte_inc_meta_2'), "<h4 style='color: red'>"
393
+        . _T('texte_inc_meta_1', array('fichier' => $fichier))
394
+        . " <a href='"
395
+        . generer_url_ecrire('install', "etape=chmod&test_dir=$dir")
396
+        . "'>"
397
+        . _T('texte_inc_meta_2')
398
+        . "</a> "
399
+        . _T('texte_inc_meta_3',
400
+            array('repertoire' => joli_repertoire($dir)))
401
+        . "</h4>\n");
402
+    exit;
403 403
 }
404 404
 
405 405
 
@@ -414,14 +414,14 @@  discard block
 block discarded – undo
414 414
  *     - true si récent, false sinon
415 415
  */
416 416
 function jeune_fichier($fichier, $n) {
417
-	if (!file_exists($fichier)) {
418
-		return false;
419
-	}
420
-	if (!$c = @filemtime($fichier)) {
421
-		return false;
422
-	}
423
-
424
-	return (time() - $n <= $c);
417
+    if (!file_exists($fichier)) {
418
+        return false;
419
+    }
420
+    if (!$c = @filemtime($fichier)) {
421
+        return false;
422
+    }
423
+
424
+    return (time() - $n <= $c);
425 425
 }
426 426
 
427 427
 /**
@@ -436,22 +436,22 @@  discard block
 block discarded – undo
436 436
  *     - false si on n'arrive pas poser le verrou ou si la suppression échoue
437 437
  */
438 438
 function supprimer_fichier($fichier, $lock = true) {
439
-	if (!@file_exists($fichier)) {
440
-		return true;
441
-	}
442
-
443
-	if ($lock) {
444
-		// verrouiller le fichier destination
445
-		if (!$fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) {
446
-			return false;
447
-		}
448
-
449
-		// liberer le verrou
450
-		spip_fclose_unlock($fp);
451
-	}
452
-
453
-	// supprimer
454
-	return @unlink($fichier);
439
+    if (!@file_exists($fichier)) {
440
+        return true;
441
+    }
442
+
443
+    if ($lock) {
444
+        // verrouiller le fichier destination
445
+        if (!$fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) {
446
+            return false;
447
+        }
448
+
449
+        // liberer le verrou
450
+        spip_fclose_unlock($fp);
451
+    }
452
+
453
+    // supprimer
454
+    return @unlink($fichier);
455 455
 }
456 456
 
457 457
 /**
@@ -461,12 +461,12 @@  discard block
 block discarded – undo
461 461
  *     Chemin du fichier
462 462
  */
463 463
 function spip_unlink($f) {
464
-	if (!is_dir($f)) {
465
-		supprimer_fichier($f, false);
466
-	} else {
467
-		@unlink("$f/.ok");
468
-		@rmdir($f);
469
-	}
464
+    if (!is_dir($f)) {
465
+        supprimer_fichier($f, false);
466
+    } else {
467
+        @unlink("$f/.ok");
468
+        @rmdir($f);
469
+    }
470 470
 }
471 471
 
472 472
 /**
@@ -480,26 +480,26 @@  discard block
 block discarded – undo
480 480
  *   The absolute path of the PHP file to invalidate.
481 481
  */
482 482
 function spip_clear_opcode_cache($filepath) {
483
-	clearstatcache(true, $filepath);
484
-
485
-	// Zend OPcache
486
-	if (function_exists('opcache_invalidate')) {
487
-		$invalidate = @opcache_invalidate($filepath, true);
488
-		// si l'invalidation a echoue lever un flag
489
-		if (!$invalidate and !defined('_spip_attend_invalidation_opcode_cache')) {
490
-			define('_spip_attend_invalidation_opcode_cache',true);
491
-		}
492
-	} elseif (!defined('_spip_attend_invalidation_opcode_cache')) {
493
-		// n'agira que si opcache est effectivement actif (il semble qu'on a pas toujours la fonction opcache_invalidate)
494
-		define('_spip_attend_invalidation_opcode_cache',true);
495
-	}
496
-	// APC.
497
-	if (function_exists('apc_delete_file')) {
498
-		// apc_delete_file() throws a PHP warning in case the specified file was
499
-		// not compiled yet.
500
-		// @see http://php.net/apc-delete-file
501
-		@apc_delete_file($filepath);
502
-	}
483
+    clearstatcache(true, $filepath);
484
+
485
+    // Zend OPcache
486
+    if (function_exists('opcache_invalidate')) {
487
+        $invalidate = @opcache_invalidate($filepath, true);
488
+        // si l'invalidation a echoue lever un flag
489
+        if (!$invalidate and !defined('_spip_attend_invalidation_opcode_cache')) {
490
+            define('_spip_attend_invalidation_opcode_cache',true);
491
+        }
492
+    } elseif (!defined('_spip_attend_invalidation_opcode_cache')) {
493
+        // n'agira que si opcache est effectivement actif (il semble qu'on a pas toujours la fonction opcache_invalidate)
494
+        define('_spip_attend_invalidation_opcode_cache',true);
495
+    }
496
+    // APC.
497
+    if (function_exists('apc_delete_file')) {
498
+        // apc_delete_file() throws a PHP warning in case the specified file was
499
+        // not compiled yet.
500
+        // @see http://php.net/apc-delete-file
501
+        @apc_delete_file($filepath);
502
+    }
503 503
 }
504 504
 
505 505
 /**
@@ -522,24 +522,24 @@  discard block
 block discarded – undo
522 522
  *
523 523
  */
524 524
 function spip_attend_invalidation_opcode_cache($timestamp = null) {
525
-	if (function_exists('opcache_get_configuration')
526
-		and @ini_get('opcache.enable')
527
-		and @ini_get('opcache.validate_timestamps')
528
-		and ($duree = intval(@ini_get('opcache.revalidate_freq')) or $duree = 2)
529
-		and defined('_spip_attend_invalidation_opcode_cache') // des invalidations ont echouees
530
-	) {
531
-		$wait = $duree + 1;
532
-		if ($timestamp) {
533
-			$wait -= (time() - $timestamp);
534
-			if ($wait<0) {
535
-				$wait = 0;
536
-			}
537
-		}
538
-		spip_log('Probleme de configuration opcache.revalidate_freq '. $duree .'s : on attend '.$wait.'s', _LOG_INFO_IMPORTANTE);
539
-		if ($wait) {
540
-			sleep($duree + 1);
541
-		}
542
-	}
525
+    if (function_exists('opcache_get_configuration')
526
+        and @ini_get('opcache.enable')
527
+        and @ini_get('opcache.validate_timestamps')
528
+        and ($duree = intval(@ini_get('opcache.revalidate_freq')) or $duree = 2)
529
+        and defined('_spip_attend_invalidation_opcode_cache') // des invalidations ont echouees
530
+    ) {
531
+        $wait = $duree + 1;
532
+        if ($timestamp) {
533
+            $wait -= (time() - $timestamp);
534
+            if ($wait<0) {
535
+                $wait = 0;
536
+            }
537
+        }
538
+        spip_log('Probleme de configuration opcache.revalidate_freq '. $duree .'s : on attend '.$wait.'s', _LOG_INFO_IMPORTANTE);
539
+        if ($wait) {
540
+            sleep($duree + 1);
541
+        }
542
+    }
543 543
 }
544 544
 
545 545
 
@@ -552,26 +552,26 @@  discard block
 block discarded – undo
552 552
  * @return bool Suppression reussie.
553 553
  */
554 554
 function supprimer_repertoire($dir) {
555
-	if (!file_exists($dir)) {
556
-		return true;
557
-	}
558
-	if (!is_dir($dir) || is_link($dir)) {
559
-		return @unlink($dir);
560
-	}
561
-
562
-	foreach (scandir($dir) as $item) {
563
-		if ($item == '.' || $item == '..') {
564
-			continue;
565
-		}
566
-		if (!supprimer_repertoire($dir . "/" . $item)) {
567
-			@chmod($dir . "/" . $item, 0777);
568
-			if (!supprimer_repertoire($dir . "/" . $item)) {
569
-				return false;
570
-			}
571
-		};
572
-	}
573
-
574
-	return @rmdir($dir);
555
+    if (!file_exists($dir)) {
556
+        return true;
557
+    }
558
+    if (!is_dir($dir) || is_link($dir)) {
559
+        return @unlink($dir);
560
+    }
561
+
562
+    foreach (scandir($dir) as $item) {
563
+        if ($item == '.' || $item == '..') {
564
+            continue;
565
+        }
566
+        if (!supprimer_repertoire($dir . "/" . $item)) {
567
+            @chmod($dir . "/" . $item, 0777);
568
+            if (!supprimer_repertoire($dir . "/" . $item)) {
569
+                return false;
570
+            }
571
+        };
572
+    }
573
+
574
+    return @rmdir($dir);
575 575
 }
576 576
 
577 577
 
@@ -600,57 +600,57 @@  discard block
 block discarded – undo
600 600
  *     Chemin du répertoire créé.
601 601
  **/
602 602
 function sous_repertoire($base, $subdir = '', $nobase = false, $tantpis = false) {
603
-	static $dirs = array();
604
-
605
-	$base = str_replace("//", "/", $base);
606
-
607
-	# suppr le dernier caractere si c'est un /
608
-	$base = rtrim($base, '/');
609
-
610
-	if (!strlen($subdir)) {
611
-		$n = strrpos($base, "/");
612
-		if ($n === false) {
613
-			return $nobase ? '' : ($base . '/');
614
-		}
615
-		$subdir = substr($base, $n + 1);
616
-		$base = substr($base, 0, $n + 1);
617
-	} else {
618
-		$base .= '/';
619
-		$subdir = str_replace("/", "", $subdir);
620
-	}
621
-
622
-	$baseaff = $nobase ? '' : $base;
623
-	if (isset($dirs[$base . $subdir])) {
624
-		return $baseaff . $dirs[$base . $subdir];
625
-	}
626
-
627
-	$path = $base . $subdir; # $path = 'IMG/distant/pdf' ou 'IMG/distant_pdf'
628
-
629
-	if (file_exists("$path/.ok")) {
630
-		return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
631
-	}
632
-
633
-	@mkdir($path, _SPIP_CHMOD);
634
-	@chmod($path, _SPIP_CHMOD);
635
-
636
-	if (is_dir($path) && is_writable($path)) {
637
-		@touch("$path/.ok");
638
-		spip_log("creation $base$subdir/");
639
-
640
-		return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
641
-	}
642
-
643
-	// en cas d'echec c'est peut etre tout simplement que le disque est plein :
644
-	// l'inode du fichier dir_test existe, mais impossible d'y mettre du contenu
645
-	spip_log("echec creation $base${subdir}");
646
-	if ($tantpis) {
647
-		return '';
648
-	}
649
-	if (!_DIR_RESTREINT) {
650
-		$base = preg_replace(',^' . _DIR_RACINE . ',', '', $base);
651
-	}
652
-	$base .= $subdir;
653
-	raler_fichier($base . '/.ok');
603
+    static $dirs = array();
604
+
605
+    $base = str_replace("//", "/", $base);
606
+
607
+    # suppr le dernier caractere si c'est un /
608
+    $base = rtrim($base, '/');
609
+
610
+    if (!strlen($subdir)) {
611
+        $n = strrpos($base, "/");
612
+        if ($n === false) {
613
+            return $nobase ? '' : ($base . '/');
614
+        }
615
+        $subdir = substr($base, $n + 1);
616
+        $base = substr($base, 0, $n + 1);
617
+    } else {
618
+        $base .= '/';
619
+        $subdir = str_replace("/", "", $subdir);
620
+    }
621
+
622
+    $baseaff = $nobase ? '' : $base;
623
+    if (isset($dirs[$base . $subdir])) {
624
+        return $baseaff . $dirs[$base . $subdir];
625
+    }
626
+
627
+    $path = $base . $subdir; # $path = 'IMG/distant/pdf' ou 'IMG/distant_pdf'
628
+
629
+    if (file_exists("$path/.ok")) {
630
+        return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
631
+    }
632
+
633
+    @mkdir($path, _SPIP_CHMOD);
634
+    @chmod($path, _SPIP_CHMOD);
635
+
636
+    if (is_dir($path) && is_writable($path)) {
637
+        @touch("$path/.ok");
638
+        spip_log("creation $base$subdir/");
639
+
640
+        return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
641
+    }
642
+
643
+    // en cas d'echec c'est peut etre tout simplement que le disque est plein :
644
+    // l'inode du fichier dir_test existe, mais impossible d'y mettre du contenu
645
+    spip_log("echec creation $base${subdir}");
646
+    if ($tantpis) {
647
+        return '';
648
+    }
649
+    if (!_DIR_RESTREINT) {
650
+        $base = preg_replace(',^' . _DIR_RACINE . ',', '', $base);
651
+    }
652
+    $base .= $subdir;
653
+    raler_fichier($base . '/.ok');
654 654
 }
655 655
 
656 656
 
@@ -683,51 +683,51 @@  discard block
 block discarded – undo
683 683
  *     Chemins des fichiers trouvés.
684 684
  **/
685 685
 function preg_files($dir, $pattern = -1 /* AUTO */, $maxfiles = 10000, $recurs = array()) {
686
-	$nbfiles = 0;
687
-	if ($pattern == -1) {
688
-		$pattern = "^$dir";
689
-	}
690
-	$fichiers = array();
691
-	// revenir au repertoire racine si on a recu dossier/truc
692
-	// pour regarder dossier/truc/ ne pas oublier le / final
693
-	$dir = preg_replace(',/[^/]*$,', '', $dir);
694
-	if ($dir == '') {
695
-		$dir = '.';
696
-	}
697
-
698
-	if (@is_dir($dir) and is_readable($dir) and $d = opendir($dir)) {
699
-		while (($f = readdir($d)) !== false && ($nbfiles < $maxfiles)) {
700
-			if ($f[0] != '.' # ignorer . .. .svn etc
701
-				and $f != 'CVS'
702
-				and $f != 'remove.txt'
703
-				and is_readable($f = "$dir/$f")
704
-			) {
705
-				if (is_file($f)) {
706
-					if (preg_match(";$pattern;iS", $f)) {
707
-						$fichiers[] = $f;
708
-						$nbfiles++;
709
-					}
710
-				} else {
711
-					if (is_dir($f) and is_array($recurs)) {
712
-						$rp = @realpath($f);
713
-						if (!is_string($rp) or !strlen($rp)) {
714
-							$rp = $f;
715
-						} # realpath n'est peut etre pas autorise
716
-						if (!isset($recurs[$rp])) {
717
-							$recurs[$rp] = true;
718
-							$beginning = $fichiers;
719
-							$end = preg_files("$f/", $pattern,
720
-								$maxfiles - $nbfiles, $recurs);
721
-							$fichiers = array_merge((array)$beginning, (array)$end);
722
-							$nbfiles = count($fichiers);
723
-						}
724
-					}
725
-				}
726
-			}
727
-		}
728
-		closedir($d);
729
-	}
730
-	sort($fichiers);
731
-
732
-	return $fichiers;
686
+    $nbfiles = 0;
687
+    if ($pattern == -1) {
688
+        $pattern = "^$dir";
689
+    }
690
+    $fichiers = array();
691
+    // revenir au repertoire racine si on a recu dossier/truc
692
+    // pour regarder dossier/truc/ ne pas oublier le / final
693
+    $dir = preg_replace(',/[^/]*$,', '', $dir);
694
+    if ($dir == '') {
695
+        $dir = '.';
696
+    }
697
+
698
+    if (@is_dir($dir) and is_readable($dir) and $d = opendir($dir)) {
699
+        while (($f = readdir($d)) !== false && ($nbfiles < $maxfiles)) {
700
+            if ($f[0] != '.' # ignorer . .. .svn etc
701
+                and $f != 'CVS'
702
+                and $f != 'remove.txt'
703
+                and is_readable($f = "$dir/$f")
704
+            ) {
705
+                if (is_file($f)) {
706
+                    if (preg_match(";$pattern;iS", $f)) {
707
+                        $fichiers[] = $f;
708
+                        $nbfiles++;
709
+                    }
710
+                } else {
711
+                    if (is_dir($f) and is_array($recurs)) {
712
+                        $rp = @realpath($f);
713
+                        if (!is_string($rp) or !strlen($rp)) {
714
+                            $rp = $f;
715
+                        } # realpath n'est peut etre pas autorise
716
+                        if (!isset($recurs[$rp])) {
717
+                            $recurs[$rp] = true;
718
+                            $beginning = $fichiers;
719
+                            $end = preg_files("$f/", $pattern,
720
+                                $maxfiles - $nbfiles, $recurs);
721
+                            $fichiers = array_merge((array)$beginning, (array)$end);
722
+                            $nbfiles = count($fichiers);
723
+                        }
724
+                    }
725
+                }
726
+            }
727
+        }
728
+        closedir($d);
729
+    }
730
+    sort($fichiers);
731
+
732
+    return $fichiers;
733 733
 }
Please login to merge, or discard this patch.
ecrire/inc/queue.php 4 patches
Doc Comments   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
  *
33 33
  * @param $function
34 34
  *   The function name to call.
35
- * @param $description
35
+ * @param string $description
36 36
  *   A human-readable description of the queued job.
37 37
  * @param $arguments
38 38
  *   Optional array of arguments to pass to the function.
@@ -162,7 +162,7 @@  discard block
 block discarded – undo
162 162
  *
163 163
  * @param int $id_job
164 164
  *  id de la tache a retirer
165
- * @return bool
165
+ * @return boolean|string
166 166
  */
167 167
 function queue_remove_job($id_job) {
168 168
 	include_spip('base/abstract_sql');
@@ -466,7 +466,7 @@  discard block
 block discarded – undo
466 466
  *     Nom de la fonction de tâche
467 467
  * @param string $inclure
468 468
  *     Nom de l'inclusion contenant la fonction
469
- * @return bool|int
469
+ * @return integer
470 470
  *     Périodicité de la tâche en secondes, si tâche périodique, sinon false.
471 471
  */
472 472
 function queue_is_cron_job($function, $inclure) {
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -429,9 +429,11 @@
 block discarded – undo
429 429
 	if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
430 430
 		// relancer avec les nouveaux arguments de temps
431 431
 		include_spip('inc/genie');
432
-		if ($result < 0) // relancer tout de suite, mais en baissant la priorite
432
+		if ($result < 0) {
433
+		    // relancer tout de suite, mais en baissant la priorite
433 434
 		{
434 435
 			queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
436
+		}
435 437
 		} else // relancer avec la periode prevue
436 438
 		{
437 439
 			queue_genie_replan_job($row['fonction'], $periode, $time);
Please login to merge, or discard this patch.
Spacing   +37 added lines, -38 removed lines patch added patch discarded remove patch
@@ -70,7 +70,7 @@  discard block
 block discarded – undo
70 70
 	$md5args = md5($arguments);
71 71
 
72 72
 	// si pas de date programee, des que possible
73
-	$duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
73
+	$duplicate_where = 'status='.intval(_JQ_SCHEDULED).' AND ';
74 74
 	if (!$time) {
75 75
 		$time = time();
76 76
 		$duplicate_where = ""; // ne pas dupliquer si deja le meme job en cours d'execution
@@ -94,9 +94,8 @@  discard block
 block discarded – undo
94 94
 		and
95 95
 		$id_job = sql_getfetsel('id_job', 'spip_jobs',
96 96
 			$duplicate_where =
97
-				$duplicate_where . 'fonction=' . sql_quote($function)
98
-				. (($no_duplicate === 'function_only') ? '' :
99
-					' AND md5args=' . sql_quote($md5args) . ' AND inclure=' . sql_quote($file)))
97
+				$duplicate_where.'fonction='.sql_quote($function)
98
+				. (($no_duplicate === 'function_only') ? '' : ' AND md5args='.sql_quote($md5args).' AND inclure='.sql_quote($file)))
100 99
 	) {
101 100
 		return $id_job;
102 101
 	}
@@ -108,9 +107,9 @@  discard block
 block discarded – undo
108 107
 	if (
109 108
 		$no_duplicate
110 109
 		and
111
-		$id_prev = sql_getfetsel('id_job', 'spip_jobs', "id_job<" . intval($id_job) . " AND $duplicate_where")
110
+		$id_prev = sql_getfetsel('id_job', 'spip_jobs', "id_job<".intval($id_job)." AND $duplicate_where")
112 111
 	) {
113
-		sql_delete('spip_jobs', 'id_job=' . intval($id_job));
112
+		sql_delete('spip_jobs', 'id_job='.intval($id_job));
114 113
 
115 114
 		return $id_prev;
116 115
 	}
@@ -122,9 +121,9 @@  discard block
 block discarded – undo
122 121
 	// ie cas d'un char non acceptables sur certains type de champs
123 122
 	// qui coupe la valeur
124 123
 	if (defined('_JQ_INSERT_CHECK_ARGS') and $id_job) {
125
-		$args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
124
+		$args = sql_getfetsel('args', 'spip_jobs', 'id_job='.intval($id_job));
126 125
 		if ($args !== $arguments) {
127
-			spip_log('arguments job errones / longueur ' . strlen($args) . " vs " . strlen($arguments) . ' / valeur : ' . var_export($arguments,
126
+			spip_log('arguments job errones / longueur '.strlen($args)." vs ".strlen($arguments).' / valeur : '.var_export($arguments,
128 127
 					true), 'queue');
129 128
 		}
130 129
 	}
@@ -152,7 +151,7 @@  discard block
 block discarded – undo
152 151
 function queue_purger() {
153 152
 	include_spip('base/abstract_sql');
154 153
 	sql_delete('spip_jobs');
155
-	sql_delete("spip_jobs_liens", "id_job NOT IN (" . sql_get_select("id_job", "spip_jobs") . ")");
154
+	sql_delete("spip_jobs_liens", "id_job NOT IN (".sql_get_select("id_job", "spip_jobs").")");
156 155
 	include_spip('inc/genie');
157 156
 	genie_queue_watch_dist();
158 157
 }
@@ -167,8 +166,8 @@  discard block
 block discarded – undo
167 166
 function queue_remove_job($id_job) {
168 167
 	include_spip('base/abstract_sql');
169 168
 
170
-	if ($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job))
171
-		and $res = sql_delete('spip_jobs', 'id_job=' . intval($id_job))
169
+	if ($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job='.intval($id_job))
170
+		and $res = sql_delete('spip_jobs', 'id_job='.intval($id_job))
172 171
 	) {
173 172
 		queue_unlink_job($id_job);
174 173
 		// est-ce une tache cron qu'il faut relancer ?
@@ -217,7 +216,7 @@  discard block
 block discarded – undo
217 216
  *  resultat du sql_delete
218 217
  */
219 218
 function queue_unlink_job($id_job) {
220
-	return sql_delete("spip_jobs_liens", "id_job=" . intval($id_job));
219
+	return sql_delete("spip_jobs_liens", "id_job=".intval($id_job));
221 220
 }
222 221
 
223 222
 /**
@@ -233,7 +232,7 @@  discard block
 block discarded – undo
233 232
 	// deserialiser les arguments
234 233
 	$args = unserialize($row['args']);
235 234
 	if ($args === false) {
236
-		spip_log('arguments job errones ' . var_export($row, true), 'queue');
235
+		spip_log('arguments job errones '.var_export($row, true), 'queue');
237 236
 		$args = array();
238 237
 	}
239 238
 
@@ -250,12 +249,12 @@  discard block
 block discarded – undo
250 249
 	}
251 250
 
252 251
 	if (!function_exists($fonction)) {
253
-		spip_log("fonction $fonction ($inclure) inexistante " . var_export($row, true), 'queue');
252
+		spip_log("fonction $fonction ($inclure) inexistante ".var_export($row, true), 'queue');
254 253
 
255 254
 		return false;
256 255
 	}
257 256
 
258
-	spip_log("queue [" . $row['id_job'] . "]: $fonction() start", 'queue');
257
+	spip_log("queue [".$row['id_job']."]: $fonction() start", 'queue');
259 258
 	switch (count($args)) {
260 259
 		case 0:
261 260
 			$res = $fonction();
@@ -295,7 +294,7 @@  discard block
 block discarded – undo
295 294
 			# plus lent mais completement generique
296 295
 			$res = call_user_func_array($fonction, $args);
297 296
 	}
298
-	spip_log("queue [" . $row['id_job'] . "]: $fonction() end", 'queue');
297
+	spip_log("queue [".$row['id_job']."]: $fonction() end", 'queue');
299 298
 
300 299
 	return $res;
301 300
 
@@ -327,14 +326,14 @@  discard block
 block discarded – undo
327 326
 function queue_schedule($force_jobs = null) {
328 327
 	$time = time();
329 328
 	if (defined('_DEBUG_BLOCK_QUEUE')) {
330
-		spip_log("_DEBUG_BLOCK_QUEUE : schedule stop", 'jq' . _LOG_DEBUG);
329
+		spip_log("_DEBUG_BLOCK_QUEUE : schedule stop", 'jq'._LOG_DEBUG);
331 330
 
332 331
 		return;
333 332
 	}
334 333
 
335 334
 	// rien a faire si le prochain job est encore dans le futur
336 335
 	if (queue_sleep_time_to_next_job() > 0 and (!$force_jobs or !count($force_jobs))) {
337
-		spip_log("queue_sleep_time_to_next_job", 'jq' . _LOG_DEBUG);
336
+		spip_log("queue_sleep_time_to_next_job", 'jq'._LOG_DEBUG);
338 337
 
339 338
 		return;
340 339
 	}
@@ -355,7 +354,7 @@  discard block
 block discarded – undo
355 354
 	}
356 355
 	$end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
357 356
 
358
-	spip_log("JQ schedule $time / $end_time", 'jq' . _LOG_DEBUG);
357
+	spip_log("JQ schedule $time / $end_time", 'jq'._LOG_DEBUG);
359 358
 
360 359
 	if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
361 360
 		define('_JQ_MAX_JOBS_EXECUTE', 200);
@@ -369,19 +368,19 @@  discard block
 block discarded – undo
369 368
 	// lorsqu'un job cron n'a pas fini, sa priorite est descendue
370 369
 	// pour qu'il ne bloque pas les autres jobs en attente
371 370
 	if (is_array($force_jobs) and count($force_jobs)) {
372
-		$cond = "status=" . intval(_JQ_SCHEDULED) . " AND " . sql_in("id_job", $force_jobs);
371
+		$cond = "status=".intval(_JQ_SCHEDULED)." AND ".sql_in("id_job", $force_jobs);
373 372
 	} else {
374 373
 		$now = date('Y-m-d H:i:s', $time);
375
-		$cond = "status=" . intval(_JQ_SCHEDULED) . " AND date<=" . sql_quote($now);
374
+		$cond = "status=".intval(_JQ_SCHEDULED)." AND date<=".sql_quote($now);
376 375
 	}
377 376
 
378 377
 	register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
379
-	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
378
+	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,'.(_JQ_MAX_JOBS_EXECUTE + 1));
380 379
 	do {
381 380
 		if ($row = array_shift($res)) {
382 381
 			$nbj++;
383 382
 			// il faut un verrou, a base de sql_delete
384
-			if (sql_delete('spip_jobs', "id_job=" . intval($row['id_job']) . " AND status=" . intval(_JQ_SCHEDULED))) {
383
+			if (sql_delete('spip_jobs', "id_job=".intval($row['id_job'])." AND status=".intval(_JQ_SCHEDULED))) {
385 384
 				#spip_log("JQ schedule job ".$nbj." OK",'jq');
386 385
 				// on reinsert dans la base aussitot avec un status=_JQ_PENDING
387 386
 				$row['status'] = _JQ_PENDING;
@@ -396,13 +395,13 @@  discard block
 block discarded – undo
396 395
 				queue_close_job($row, $time, $result);
397 396
 			}
398 397
 		}
399
-		spip_log("JQ schedule job end time " . $time, 'jq' . _LOG_DEBUG);
398
+		spip_log("JQ schedule job end time ".$time, 'jq'._LOG_DEBUG);
400 399
 	} while ($nbj < _JQ_MAX_JOBS_EXECUTE and $row and $time < $end_time);
401
-	spip_log("JQ schedule end time " . time(), 'jq' . _LOG_DEBUG);
400
+	spip_log("JQ schedule end time ".time(), 'jq'._LOG_DEBUG);
402 401
 
403 402
 	if ($row = array_shift($res)) {
404 403
 		queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
405
-		spip_log("JQ encore !", 'jq' . _LOG_DEBUG);
404
+		spip_log("JQ encore !", 'jq'._LOG_DEBUG);
406 405
 	} else {
407 406
 		queue_update_next_job_time();
408 407
 	}
@@ -438,9 +437,9 @@  discard block
 block discarded – undo
438 437
 		}
439 438
 	}
440 439
 	// purger ses liens eventuels avec des objets
441
-	sql_delete("spip_jobs_liens", "id_job=" . intval($row['id_job']));
440
+	sql_delete("spip_jobs_liens", "id_job=".intval($row['id_job']));
442 441
 	// supprimer le job fini
443
-	sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
442
+	sql_delete('spip_jobs', 'id_job='.intval($row['id_job']));
444 443
 }
445 444
 
446 445
 /**
@@ -511,17 +510,17 @@  discard block
 block discarded – undo
511 510
 	// traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
512 511
 	// pour cause de timeout ou autre erreur fatale
513 512
 	$res = sql_allfetsel("*", "spip_jobs",
514
-		"status=" . intval(_JQ_PENDING) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time - 180)));
513
+		"status=".intval(_JQ_PENDING)." AND date<".sql_quote(date('Y-m-d H:i:s', $time - 180)));
515 514
 	if (is_array($res)) {
516 515
 		foreach ($res as $row) {
517 516
 			queue_close_job($row, $time);
518
-			spip_log ("queue_close_job car _JQ_PENDING depuis +180s : ".print_r($row,1), "job_mort"._LOG_ERREUR);
517
+			spip_log("queue_close_job car _JQ_PENDING depuis +180s : ".print_r($row, 1), "job_mort"._LOG_ERREUR);
519 518
 		}
520 519
 	}
521 520
 
522 521
 	// chercher la date du prochain job si pas connu
523 522
 	if (is_null($next) or is_null(queue_sleep_time_to_next_job())) {
524
-		$date = sql_getfetsel('date', 'spip_jobs', "status=" . intval(_JQ_SCHEDULED), '', 'date', '0,1');
523
+		$date = sql_getfetsel('date', 'spip_jobs', "status=".intval(_JQ_SCHEDULED), '', 'date', '0,1');
525 524
 		$next = strtotime($date);
526 525
 	}
527 526
 	if (!is_null($next_time)) {
@@ -533,7 +532,7 @@  discard block
 block discarded – undo
533 532
 	if ($next) {
534 533
 		if (is_null($nb_jobs_scheduled)) {
535 534
 			$nb_jobs_scheduled = sql_countsel('spip_jobs',
536
-				"status=" . intval(_JQ_SCHEDULED) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time)));
535
+				"status=".intval(_JQ_SCHEDULED)." AND date<".sql_quote(date('Y-m-d H:i:s', $time)));
537 536
 		} elseif ($next <= $time) {
538 537
 			$nb_jobs_scheduled++;
539 538
 		}
@@ -601,7 +600,7 @@  discard block
 block discarded – undo
601 600
 	}
602 601
 
603 602
 	// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
604
-	if (file_exists($lock = _DIR_TMP . "cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
603
+	if (file_exists($lock = _DIR_TMP."cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
605 604
 		return $texte;
606 605
 	}
607 606
 
@@ -672,20 +671,20 @@  discard block
 block discarded – undo
672 671
 				$scheme = '';
673 672
 				$port = 80;
674 673
 		}
675
-		$fp = @fsockopen($scheme . $parts['host'],
674
+		$fp = @fsockopen($scheme.$parts['host'],
676 675
 			isset($parts['port']) ? $parts['port'] : $port,
677 676
 			$errno, $errstr, 1);
678 677
 
679 678
 		if ($fp) {
680 679
 			$host_sent = $parts['host'];
681 680
 			if (isset($parts['port']) and $parts['port'] !== $port) {
682
-				$host_sent .= ':' . $parts['port'];
681
+				$host_sent .= ':'.$parts['port'];
683 682
 			}
684 683
 			$timeout = 200; // ms
685 684
 			stream_set_timeout($fp, 0, $timeout * 1000);
686
-			$query = $parts['path'] . ($parts['query'] ? "?" . $parts['query'] : "");
687
-			$out = "GET " . $query . " HTTP/1.1\r\n";
688
-			$out .= "Host: " . $host_sent . "\r\n";
685
+			$query = $parts['path'].($parts['query'] ? "?".$parts['query'] : "");
686
+			$out = "GET ".$query." HTTP/1.1\r\n";
687
+			$out .= "Host: ".$host_sent."\r\n";
689 688
 			$out .= "Connection: Close\r\n\r\n";
690 689
 			fwrite($fp, $out);
691 690
 			spip_timer('read');
Please login to merge, or discard this patch.
Indentation   +486 added lines, -486 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Queue
17 17
  **/
18 18
 if (!defined("_ECRIRE_INC_VERSION")) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 define('_JQ_SCHEDULED', 1);
@@ -50,98 +50,98 @@  discard block
 block discarded – undo
50 50
  *  id of job
51 51
  */
52 52
 function queue_add_job(
53
-	$function,
54
-	$description,
55
-	$arguments = array(),
56
-	$file = '',
57
-	$no_duplicate = false,
58
-	$time = 0,
59
-	$priority = 0
53
+    $function,
54
+    $description,
55
+    $arguments = array(),
56
+    $file = '',
57
+    $no_duplicate = false,
58
+    $time = 0,
59
+    $priority = 0
60 60
 ) {
61
-	include_spip('base/abstract_sql');
62
-
63
-	// cas pourri de ecrire/action/editer_site avec l'option reload=oui
64
-	if (defined('_GENIE_SYNDIC_NOW')) {
65
-		$arguments['id_syndic'] = _GENIE_SYNDIC_NOW;
66
-	}
67
-
68
-	// serialiser les arguments
69
-	$arguments = serialize($arguments);
70
-	$md5args = md5($arguments);
71
-
72
-	// si pas de date programee, des que possible
73
-	$duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
74
-	if (!$time) {
75
-		$time = time();
76
-		$duplicate_where = ""; // ne pas dupliquer si deja le meme job en cours d'execution
77
-	}
78
-	$date = date('Y-m-d H:i:s', $time);
79
-
80
-	$set_job = array(
81
-		'fonction' => $function,
82
-		'descriptif' => $description,
83
-		'args' => $arguments,
84
-		'md5args' => $md5args,
85
-		'inclure' => $file,
86
-		'priorite' => max(-10, min(10, intval($priority))),
87
-		'date' => $date,
88
-		'status' => _JQ_SCHEDULED,
89
-	);
90
-	// si option ne pas dupliquer, regarder si la fonction existe deja
91
-	// avec les memes args et file
92
-	if (
93
-		$no_duplicate
94
-		and
95
-		$id_job = sql_getfetsel('id_job', 'spip_jobs',
96
-			$duplicate_where =
97
-				$duplicate_where . 'fonction=' . sql_quote($function)
98
-				. (($no_duplicate === 'function_only') ? '' :
99
-					' AND md5args=' . sql_quote($md5args) . ' AND inclure=' . sql_quote($file)))
100
-	) {
101
-		return $id_job;
102
-	}
103
-
104
-	$id_job = sql_insertq('spip_jobs', $set_job);
105
-	// en cas de concurrence, deux process peuvent arriver jusqu'ici en parallele
106
-	// avec le meme job unique a inserer. Dans ce cas, celui qui a eu l'id le plus grand
107
-	// doit s'effacer
108
-	if (
109
-		$no_duplicate
110
-		and
111
-		$id_prev = sql_getfetsel('id_job', 'spip_jobs', "id_job<" . intval($id_job) . " AND $duplicate_where")
112
-	) {
113
-		sql_delete('spip_jobs', 'id_job=' . intval($id_job));
114
-
115
-		return $id_prev;
116
-	}
117
-
118
-	// verifier la non duplication qui peut etre problematique en cas de concurence
119
-	// il faut dans ce cas que seul le dernier ajoute se supprime !
120
-
121
-	// une option de debug pour verifier que les arguments en base sont bons
122
-	// ie cas d'un char non acceptables sur certains type de champs
123
-	// qui coupe la valeur
124
-	if (defined('_JQ_INSERT_CHECK_ARGS') and $id_job) {
125
-		$args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
126
-		if ($args !== $arguments) {
127
-			spip_log('arguments job errones / longueur ' . strlen($args) . " vs " . strlen($arguments) . ' / valeur : ' . var_export($arguments,
128
-					true), 'queue');
129
-		}
130
-	}
131
-
132
-	if ($id_job) {
133
-		queue_update_next_job_time($time);
134
-	}
135
-	// si la mise en file d'attente du job echoue,
136
-	// il ne faut pas perdre l'execution de la fonction
137
-	// on la lance immediatement, c'est un fallback
138
-	// sauf en cas d'upgrade necessaire (table spip_jobs inexistante)
139
-	elseif ($GLOBALS['meta']['version_installee'] == $GLOBALS['spip_version_base']) {
140
-		$set_job['id_job'] = 0;
141
-		queue_start_job($set_job);
142
-	}
143
-
144
-	return $id_job;
61
+    include_spip('base/abstract_sql');
62
+
63
+    // cas pourri de ecrire/action/editer_site avec l'option reload=oui
64
+    if (defined('_GENIE_SYNDIC_NOW')) {
65
+        $arguments['id_syndic'] = _GENIE_SYNDIC_NOW;
66
+    }
67
+
68
+    // serialiser les arguments
69
+    $arguments = serialize($arguments);
70
+    $md5args = md5($arguments);
71
+
72
+    // si pas de date programee, des que possible
73
+    $duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
74
+    if (!$time) {
75
+        $time = time();
76
+        $duplicate_where = ""; // ne pas dupliquer si deja le meme job en cours d'execution
77
+    }
78
+    $date = date('Y-m-d H:i:s', $time);
79
+
80
+    $set_job = array(
81
+        'fonction' => $function,
82
+        'descriptif' => $description,
83
+        'args' => $arguments,
84
+        'md5args' => $md5args,
85
+        'inclure' => $file,
86
+        'priorite' => max(-10, min(10, intval($priority))),
87
+        'date' => $date,
88
+        'status' => _JQ_SCHEDULED,
89
+    );
90
+    // si option ne pas dupliquer, regarder si la fonction existe deja
91
+    // avec les memes args et file
92
+    if (
93
+        $no_duplicate
94
+        and
95
+        $id_job = sql_getfetsel('id_job', 'spip_jobs',
96
+            $duplicate_where =
97
+                $duplicate_where . 'fonction=' . sql_quote($function)
98
+                . (($no_duplicate === 'function_only') ? '' :
99
+                    ' AND md5args=' . sql_quote($md5args) . ' AND inclure=' . sql_quote($file)))
100
+    ) {
101
+        return $id_job;
102
+    }
103
+
104
+    $id_job = sql_insertq('spip_jobs', $set_job);
105
+    // en cas de concurrence, deux process peuvent arriver jusqu'ici en parallele
106
+    // avec le meme job unique a inserer. Dans ce cas, celui qui a eu l'id le plus grand
107
+    // doit s'effacer
108
+    if (
109
+        $no_duplicate
110
+        and
111
+        $id_prev = sql_getfetsel('id_job', 'spip_jobs', "id_job<" . intval($id_job) . " AND $duplicate_where")
112
+    ) {
113
+        sql_delete('spip_jobs', 'id_job=' . intval($id_job));
114
+
115
+        return $id_prev;
116
+    }
117
+
118
+    // verifier la non duplication qui peut etre problematique en cas de concurence
119
+    // il faut dans ce cas que seul le dernier ajoute se supprime !
120
+
121
+    // une option de debug pour verifier que les arguments en base sont bons
122
+    // ie cas d'un char non acceptables sur certains type de champs
123
+    // qui coupe la valeur
124
+    if (defined('_JQ_INSERT_CHECK_ARGS') and $id_job) {
125
+        $args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
126
+        if ($args !== $arguments) {
127
+            spip_log('arguments job errones / longueur ' . strlen($args) . " vs " . strlen($arguments) . ' / valeur : ' . var_export($arguments,
128
+                    true), 'queue');
129
+        }
130
+    }
131
+
132
+    if ($id_job) {
133
+        queue_update_next_job_time($time);
134
+    }
135
+    // si la mise en file d'attente du job echoue,
136
+    // il ne faut pas perdre l'execution de la fonction
137
+    // on la lance immediatement, c'est un fallback
138
+    // sauf en cas d'upgrade necessaire (table spip_jobs inexistante)
139
+    elseif ($GLOBALS['meta']['version_installee'] == $GLOBALS['spip_version_base']) {
140
+        $set_job['id_job'] = 0;
141
+        queue_start_job($set_job);
142
+    }
143
+
144
+    return $id_job;
145 145
 }
146 146
 
147 147
 /**
@@ -150,11 +150,11 @@  discard block
 block discarded – undo
150 150
  * @return void
151 151
  */
152 152
 function queue_purger() {
153
-	include_spip('base/abstract_sql');
154
-	sql_delete('spip_jobs');
155
-	sql_delete("spip_jobs_liens", "id_job NOT IN (" . sql_get_select("id_job", "spip_jobs") . ")");
156
-	include_spip('inc/genie');
157
-	genie_queue_watch_dist();
153
+    include_spip('base/abstract_sql');
154
+    sql_delete('spip_jobs');
155
+    sql_delete("spip_jobs_liens", "id_job NOT IN (" . sql_get_select("id_job", "spip_jobs") . ")");
156
+    include_spip('inc/genie');
157
+    genie_queue_watch_dist();
158 158
 }
159 159
 
160 160
 /**
@@ -165,23 +165,23 @@  discard block
 block discarded – undo
165 165
  * @return bool
166 166
  */
167 167
 function queue_remove_job($id_job) {
168
-	include_spip('base/abstract_sql');
169
-
170
-	if ($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job))
171
-		and $res = sql_delete('spip_jobs', 'id_job=' . intval($id_job))
172
-	) {
173
-		queue_unlink_job($id_job);
174
-		// est-ce une tache cron qu'il faut relancer ?
175
-		if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
176
-			// relancer avec les nouveaux arguments de temps
177
-			include_spip('inc/genie');
178
-			// relancer avec la periode prevue
179
-			queue_genie_replan_job($row['fonction'], $periode, strtotime($row['date']));
180
-		}
181
-		queue_update_next_job_time();
182
-	}
183
-
184
-	return $res;
168
+    include_spip('base/abstract_sql');
169
+
170
+    if ($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job))
171
+        and $res = sql_delete('spip_jobs', 'id_job=' . intval($id_job))
172
+    ) {
173
+        queue_unlink_job($id_job);
174
+        // est-ce une tache cron qu'il faut relancer ?
175
+        if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
176
+            // relancer avec les nouveaux arguments de temps
177
+            include_spip('inc/genie');
178
+            // relancer avec la periode prevue
179
+            queue_genie_replan_job($row['fonction'], $periode, strtotime($row['date']));
180
+        }
181
+        queue_update_next_job_time();
182
+    }
183
+
184
+    return $res;
185 185
 }
186 186
 
187 187
 /**
@@ -194,18 +194,18 @@  discard block
 block discarded – undo
194 194
  *  ou un tableau composé de tableaux simples pour lieur plusieurs objets en une fois
195 195
  */
196 196
 function queue_link_job($id_job, $objets) {
197
-	include_spip('base/abstract_sql');
198
-
199
-	if (is_array($objets) and count($objets)) {
200
-		if (is_array(reset($objets))) {
201
-			foreach ($objets as $k => $o) {
202
-				$objets[$k]['id_job'] = $id_job;
203
-			}
204
-			sql_insertq_multi('spip_jobs_liens', $objets);
205
-		} else {
206
-			sql_insertq('spip_jobs_liens', array_merge(array('id_job' => $id_job), $objets));
207
-		}
208
-	}
197
+    include_spip('base/abstract_sql');
198
+
199
+    if (is_array($objets) and count($objets)) {
200
+        if (is_array(reset($objets))) {
201
+            foreach ($objets as $k => $o) {
202
+                $objets[$k]['id_job'] = $id_job;
203
+            }
204
+            sql_insertq_multi('spip_jobs_liens', $objets);
205
+        } else {
206
+            sql_insertq('spip_jobs_liens', array_merge(array('id_job' => $id_job), $objets));
207
+        }
208
+    }
209 209
 }
210 210
 
211 211
 /**
@@ -217,7 +217,7 @@  discard block
 block discarded – undo
217 217
  *  resultat du sql_delete
218 218
  */
219 219
 function queue_unlink_job($id_job) {
220
-	return sql_delete("spip_jobs_liens", "id_job=" . intval($id_job));
220
+    return sql_delete("spip_jobs_liens", "id_job=" . intval($id_job));
221 221
 }
222 222
 
223 223
 /**
@@ -230,74 +230,74 @@  discard block
 block discarded – undo
230 230
  */
231 231
 function queue_start_job($row) {
232 232
 
233
-	// deserialiser les arguments
234
-	$args = unserialize($row['args']);
235
-	if ($args === false) {
236
-		spip_log('arguments job errones ' . var_export($row, true), 'queue');
237
-		$args = array();
238
-	}
239
-
240
-	$fonction = $row['fonction'];
241
-	if (strlen($inclure = trim($row['inclure']))) {
242
-		if (substr($inclure, -1) == '/') { // c'est un chemin pour charger_fonction
243
-			$f = charger_fonction($fonction, rtrim($inclure, '/'), false);
244
-			if ($f) {
245
-				$fonction = $f;
246
-			}
247
-		} else {
248
-			include_spip($inclure);
249
-		}
250
-	}
251
-
252
-	if (!function_exists($fonction)) {
253
-		spip_log("fonction $fonction ($inclure) inexistante " . var_export($row, true), 'queue');
254
-
255
-		return false;
256
-	}
257
-
258
-	spip_log("queue [" . $row['id_job'] . "]: $fonction() start", 'queue');
259
-	switch (count($args)) {
260
-		case 0:
261
-			$res = $fonction();
262
-			break;
263
-		case 1:
264
-			$res = $fonction($args[0]);
265
-			break;
266
-		case 2:
267
-			$res = $fonction($args[0], $args[1]);
268
-			break;
269
-		case 3:
270
-			$res = $fonction($args[0], $args[1], $args[2]);
271
-			break;
272
-		case 4:
273
-			$res = $fonction($args[0], $args[1], $args[2], $args[3]);
274
-			break;
275
-		case 5:
276
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4]);
277
-			break;
278
-		case 6:
279
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
280
-			break;
281
-		case 7:
282
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6]);
283
-			break;
284
-		case 8:
285
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7]);
286
-			break;
287
-		case 9:
288
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8]);
289
-			break;
290
-		case 10:
291
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8],
292
-				$args[9]);
293
-			break;
294
-		default:
295
-			# plus lent mais completement generique
296
-			$res = call_user_func_array($fonction, $args);
297
-	}
298
-	spip_log("queue [" . $row['id_job'] . "]: $fonction() end", 'queue');
299
-
300
-	return $res;
233
+    // deserialiser les arguments
234
+    $args = unserialize($row['args']);
235
+    if ($args === false) {
236
+        spip_log('arguments job errones ' . var_export($row, true), 'queue');
237
+        $args = array();
238
+    }
239
+
240
+    $fonction = $row['fonction'];
241
+    if (strlen($inclure = trim($row['inclure']))) {
242
+        if (substr($inclure, -1) == '/') { // c'est un chemin pour charger_fonction
243
+            $f = charger_fonction($fonction, rtrim($inclure, '/'), false);
244
+            if ($f) {
245
+                $fonction = $f;
246
+            }
247
+        } else {
248
+            include_spip($inclure);
249
+        }
250
+    }
251
+
252
+    if (!function_exists($fonction)) {
253
+        spip_log("fonction $fonction ($inclure) inexistante " . var_export($row, true), 'queue');
254
+
255
+        return false;
256
+    }
257
+
258
+    spip_log("queue [" . $row['id_job'] . "]: $fonction() start", 'queue');
259
+    switch (count($args)) {
260
+        case 0:
261
+            $res = $fonction();
262
+            break;
263
+        case 1:
264
+            $res = $fonction($args[0]);
265
+            break;
266
+        case 2:
267
+            $res = $fonction($args[0], $args[1]);
268
+            break;
269
+        case 3:
270
+            $res = $fonction($args[0], $args[1], $args[2]);
271
+            break;
272
+        case 4:
273
+            $res = $fonction($args[0], $args[1], $args[2], $args[3]);
274
+            break;
275
+        case 5:
276
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4]);
277
+            break;
278
+        case 6:
279
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
280
+            break;
281
+        case 7:
282
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6]);
283
+            break;
284
+        case 8:
285
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7]);
286
+            break;
287
+        case 9:
288
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8]);
289
+            break;
290
+        case 10:
291
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8],
292
+                $args[9]);
293
+            break;
294
+        default:
295
+            # plus lent mais completement generique
296
+            $res = call_user_func_array($fonction, $args);
297
+    }
298
+    spip_log("queue [" . $row['id_job'] . "]: $fonction() end", 'queue');
299
+
300
+    return $res;
301 301
 
302 302
 }
303 303
 
@@ -325,89 +325,89 @@  discard block
 block discarded – undo
325 325
  *     - true : une planification a été faite.
326 326
  */
327 327
 function queue_schedule($force_jobs = null) {
328
-	$time = time();
329
-	if (defined('_DEBUG_BLOCK_QUEUE')) {
330
-		spip_log("_DEBUG_BLOCK_QUEUE : schedule stop", 'jq' . _LOG_DEBUG);
331
-
332
-		return;
333
-	}
334
-
335
-	// rien a faire si le prochain job est encore dans le futur
336
-	if (queue_sleep_time_to_next_job() > 0 and (!$force_jobs or !count($force_jobs))) {
337
-		spip_log("queue_sleep_time_to_next_job", 'jq' . _LOG_DEBUG);
338
-
339
-		return;
340
-	}
341
-
342
-	include_spip('base/abstract_sql');
343
-	// on ne peut rien faire si pas de connexion SQL
344
-	if (!spip_connect()) {
345
-		return false;
346
-	}
347
-
348
-	if (!defined('_JQ_MAX_JOBS_TIME_TO_EXECUTE')) {
349
-		$max_time = ini_get('max_execution_time') / 2;
350
-		// valeur conservatrice si on a pas reussi a lire le max_execution_time
351
-		if (!$max_time) {
352
-			$max_time = 5;
353
-		}
354
-		define('_JQ_MAX_JOBS_TIME_TO_EXECUTE', min($max_time, 15)); // une valeur maxi en temps.
355
-	}
356
-	$end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
357
-
358
-	spip_log("JQ schedule $time / $end_time", 'jq' . _LOG_DEBUG);
359
-
360
-	if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
361
-		define('_JQ_MAX_JOBS_EXECUTE', 200);
362
-	}
363
-	$nbj = 0;
364
-	// attraper les jobs
365
-	// dont la date est passee (echus en attente),
366
-	// par ordre :
367
-	//	- de priorite
368
-	//	- de date
369
-	// lorsqu'un job cron n'a pas fini, sa priorite est descendue
370
-	// pour qu'il ne bloque pas les autres jobs en attente
371
-	if (is_array($force_jobs) and count($force_jobs)) {
372
-		$cond = "status=" . intval(_JQ_SCHEDULED) . " AND " . sql_in("id_job", $force_jobs);
373
-	} else {
374
-		$now = date('Y-m-d H:i:s', $time);
375
-		$cond = "status=" . intval(_JQ_SCHEDULED) . " AND date<=" . sql_quote($now);
376
-	}
377
-
378
-	register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
379
-	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
380
-	do {
381
-		if ($row = array_shift($res)) {
382
-			$nbj++;
383
-			// il faut un verrou, a base de sql_delete
384
-			if (sql_delete('spip_jobs', "id_job=" . intval($row['id_job']) . " AND status=" . intval(_JQ_SCHEDULED))) {
385
-				#spip_log("JQ schedule job ".$nbj." OK",'jq');
386
-				// on reinsert dans la base aussitot avec un status=_JQ_PENDING
387
-				$row['status'] = _JQ_PENDING;
388
-				$row['date'] = date('Y-m-d H:i:s', $time);
389
-				sql_insertq('spip_jobs', $row);
390
-
391
-				// on a la main sur le job :
392
-				// l'executer
393
-				$result = queue_start_job($row);
394
-
395
-				$time = time();
396
-				queue_close_job($row, $time, $result);
397
-			}
398
-		}
399
-		spip_log("JQ schedule job end time " . $time, 'jq' . _LOG_DEBUG);
400
-	} while ($nbj < _JQ_MAX_JOBS_EXECUTE and $row and $time < $end_time);
401
-	spip_log("JQ schedule end time " . time(), 'jq' . _LOG_DEBUG);
402
-
403
-	if ($row = array_shift($res)) {
404
-		queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
405
-		spip_log("JQ encore !", 'jq' . _LOG_DEBUG);
406
-	} else {
407
-		queue_update_next_job_time();
408
-	}
409
-
410
-	return true;
328
+    $time = time();
329
+    if (defined('_DEBUG_BLOCK_QUEUE')) {
330
+        spip_log("_DEBUG_BLOCK_QUEUE : schedule stop", 'jq' . _LOG_DEBUG);
331
+
332
+        return;
333
+    }
334
+
335
+    // rien a faire si le prochain job est encore dans le futur
336
+    if (queue_sleep_time_to_next_job() > 0 and (!$force_jobs or !count($force_jobs))) {
337
+        spip_log("queue_sleep_time_to_next_job", 'jq' . _LOG_DEBUG);
338
+
339
+        return;
340
+    }
341
+
342
+    include_spip('base/abstract_sql');
343
+    // on ne peut rien faire si pas de connexion SQL
344
+    if (!spip_connect()) {
345
+        return false;
346
+    }
347
+
348
+    if (!defined('_JQ_MAX_JOBS_TIME_TO_EXECUTE')) {
349
+        $max_time = ini_get('max_execution_time') / 2;
350
+        // valeur conservatrice si on a pas reussi a lire le max_execution_time
351
+        if (!$max_time) {
352
+            $max_time = 5;
353
+        }
354
+        define('_JQ_MAX_JOBS_TIME_TO_EXECUTE', min($max_time, 15)); // une valeur maxi en temps.
355
+    }
356
+    $end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
357
+
358
+    spip_log("JQ schedule $time / $end_time", 'jq' . _LOG_DEBUG);
359
+
360
+    if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
361
+        define('_JQ_MAX_JOBS_EXECUTE', 200);
362
+    }
363
+    $nbj = 0;
364
+    // attraper les jobs
365
+    // dont la date est passee (echus en attente),
366
+    // par ordre :
367
+    //	- de priorite
368
+    //	- de date
369
+    // lorsqu'un job cron n'a pas fini, sa priorite est descendue
370
+    // pour qu'il ne bloque pas les autres jobs en attente
371
+    if (is_array($force_jobs) and count($force_jobs)) {
372
+        $cond = "status=" . intval(_JQ_SCHEDULED) . " AND " . sql_in("id_job", $force_jobs);
373
+    } else {
374
+        $now = date('Y-m-d H:i:s', $time);
375
+        $cond = "status=" . intval(_JQ_SCHEDULED) . " AND date<=" . sql_quote($now);
376
+    }
377
+
378
+    register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
379
+    $res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
380
+    do {
381
+        if ($row = array_shift($res)) {
382
+            $nbj++;
383
+            // il faut un verrou, a base de sql_delete
384
+            if (sql_delete('spip_jobs', "id_job=" . intval($row['id_job']) . " AND status=" . intval(_JQ_SCHEDULED))) {
385
+                #spip_log("JQ schedule job ".$nbj." OK",'jq');
386
+                // on reinsert dans la base aussitot avec un status=_JQ_PENDING
387
+                $row['status'] = _JQ_PENDING;
388
+                $row['date'] = date('Y-m-d H:i:s', $time);
389
+                sql_insertq('spip_jobs', $row);
390
+
391
+                // on a la main sur le job :
392
+                // l'executer
393
+                $result = queue_start_job($row);
394
+
395
+                $time = time();
396
+                queue_close_job($row, $time, $result);
397
+            }
398
+        }
399
+        spip_log("JQ schedule job end time " . $time, 'jq' . _LOG_DEBUG);
400
+    } while ($nbj < _JQ_MAX_JOBS_EXECUTE and $row and $time < $end_time);
401
+    spip_log("JQ schedule end time " . time(), 'jq' . _LOG_DEBUG);
402
+
403
+    if ($row = array_shift($res)) {
404
+        queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
405
+        spip_log("JQ encore !", 'jq' . _LOG_DEBUG);
406
+    } else {
407
+        queue_update_next_job_time();
408
+    }
409
+
410
+    return true;
411 411
 }
412 412
 
413 413
 /**
@@ -425,22 +425,22 @@  discard block
 block discarded – undo
425 425
  * @param int $result
426 426
  */
427 427
 function queue_close_job(&$row, $time, $result = 0) {
428
-	// est-ce une tache cron qu'il faut relancer ?
429
-	if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
430
-		// relancer avec les nouveaux arguments de temps
431
-		include_spip('inc/genie');
432
-		if ($result < 0) // relancer tout de suite, mais en baissant la priorite
433
-		{
434
-			queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
435
-		} else // relancer avec la periode prevue
436
-		{
437
-			queue_genie_replan_job($row['fonction'], $periode, $time);
438
-		}
439
-	}
440
-	// purger ses liens eventuels avec des objets
441
-	sql_delete("spip_jobs_liens", "id_job=" . intval($row['id_job']));
442
-	// supprimer le job fini
443
-	sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
428
+    // est-ce une tache cron qu'il faut relancer ?
429
+    if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
430
+        // relancer avec les nouveaux arguments de temps
431
+        include_spip('inc/genie');
432
+        if ($result < 0) // relancer tout de suite, mais en baissant la priorite
433
+        {
434
+            queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
435
+        } else // relancer avec la periode prevue
436
+        {
437
+            queue_genie_replan_job($row['fonction'], $periode, $time);
438
+        }
439
+    }
440
+    // purger ses liens eventuels avec des objets
441
+    sql_delete("spip_jobs_liens", "id_job=" . intval($row['id_job']));
442
+    // supprimer le job fini
443
+    sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
444 444
 }
445 445
 
446 446
 /**
@@ -450,10 +450,10 @@  discard block
 block discarded – undo
450 450
  * @uses queue_update_next_job_time()
451 451
  */
452 452
 function queue_error_handler() {
453
-	// se remettre dans le bon dossier, car Apache le change parfois (toujours?)
454
-	chdir(_ROOT_CWD);
453
+    // se remettre dans le bon dossier, car Apache le change parfois (toujours?)
454
+    chdir(_ROOT_CWD);
455 455
 
456
-	queue_update_next_job_time();
456
+    queue_update_next_job_time();
457 457
 }
458 458
 
459 459
 
@@ -470,18 +470,18 @@  discard block
 block discarded – undo
470 470
  *     Périodicité de la tâche en secondes, si tâche périodique, sinon false.
471 471
  */
472 472
 function queue_is_cron_job($function, $inclure) {
473
-	static $taches = null;
474
-	if (strncmp($inclure, 'genie/', 6) == 0) {
475
-		if (is_null($taches)) {
476
-			include_spip('inc/genie');
477
-			$taches = taches_generales();
478
-		}
479
-		if (isset($taches[$function])) {
480
-			return $taches[$function];
481
-		}
482
-	}
483
-
484
-	return false;
473
+    static $taches = null;
474
+    if (strncmp($inclure, 'genie/', 6) == 0) {
475
+        if (is_null($taches)) {
476
+            include_spip('inc/genie');
477
+            $taches = taches_generales();
478
+        }
479
+        if (isset($taches[$function])) {
480
+            return $taches[$function];
481
+        }
482
+    }
483
+
484
+    return false;
485 485
 }
486 486
 
487 487
 /**
@@ -495,57 +495,57 @@  discard block
 block discarded – undo
495 495
  *  temps de la tache ajoutee ou 0 pour ASAP
496 496
  */
497 497
 function queue_update_next_job_time($next_time = null) {
498
-	static $nb_jobs_scheduled = null;
499
-	static $deja_la = false;
500
-	// prendre le min des $next_time que l'on voit passer ici, en cas de reentrance
501
-	static $next = null;
502
-	// queue_close_job peut etre reentrant ici
503
-	if ($deja_la) {
504
-		return;
505
-	}
506
-	$deja_la = true;
507
-
508
-	include_spip('base/abstract_sql');
509
-	$time = time();
510
-
511
-	// traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
512
-	// pour cause de timeout ou autre erreur fatale
513
-	$res = sql_allfetsel("*", "spip_jobs",
514
-		"status=" . intval(_JQ_PENDING) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time - 180)));
515
-	if (is_array($res)) {
516
-		foreach ($res as $row) {
517
-			queue_close_job($row, $time);
518
-			spip_log ("queue_close_job car _JQ_PENDING depuis +180s : ".print_r($row,1), "job_mort"._LOG_ERREUR);
519
-		}
520
-	}
521
-
522
-	// chercher la date du prochain job si pas connu
523
-	if (is_null($next) or is_null(queue_sleep_time_to_next_job())) {
524
-		$date = sql_getfetsel('date', 'spip_jobs', "status=" . intval(_JQ_SCHEDULED), '', 'date', '0,1');
525
-		$next = strtotime($date);
526
-	}
527
-	if (!is_null($next_time)) {
528
-		if (is_null($next) or $next > $next_time) {
529
-			$next = $next_time;
530
-		}
531
-	}
532
-
533
-	if ($next) {
534
-		if (is_null($nb_jobs_scheduled)) {
535
-			$nb_jobs_scheduled = sql_countsel('spip_jobs',
536
-				"status=" . intval(_JQ_SCHEDULED) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time)));
537
-		} elseif ($next <= $time) {
538
-			$nb_jobs_scheduled++;
539
-		}
540
-		// si trop de jobs en attente, on force la purge en fin de hit
541
-		// pour assurer le coup
542
-		if ($nb_jobs_scheduled > (defined('_JQ_NB_JOBS_OVERFLOW') ? _JQ_NB_JOBS_OVERFLOW : 10000)) {
543
-			define('_DIRECT_CRON_FORCE', true);
544
-		}
545
-	}
546
-
547
-	queue_set_next_job_time($next);
548
-	$deja_la = false;
498
+    static $nb_jobs_scheduled = null;
499
+    static $deja_la = false;
500
+    // prendre le min des $next_time que l'on voit passer ici, en cas de reentrance
501
+    static $next = null;
502
+    // queue_close_job peut etre reentrant ici
503
+    if ($deja_la) {
504
+        return;
505
+    }
506
+    $deja_la = true;
507
+
508
+    include_spip('base/abstract_sql');
509
+    $time = time();
510
+
511
+    // traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
512
+    // pour cause de timeout ou autre erreur fatale
513
+    $res = sql_allfetsel("*", "spip_jobs",
514
+        "status=" . intval(_JQ_PENDING) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time - 180)));
515
+    if (is_array($res)) {
516
+        foreach ($res as $row) {
517
+            queue_close_job($row, $time);
518
+            spip_log ("queue_close_job car _JQ_PENDING depuis +180s : ".print_r($row,1), "job_mort"._LOG_ERREUR);
519
+        }
520
+    }
521
+
522
+    // chercher la date du prochain job si pas connu
523
+    if (is_null($next) or is_null(queue_sleep_time_to_next_job())) {
524
+        $date = sql_getfetsel('date', 'spip_jobs', "status=" . intval(_JQ_SCHEDULED), '', 'date', '0,1');
525
+        $next = strtotime($date);
526
+    }
527
+    if (!is_null($next_time)) {
528
+        if (is_null($next) or $next > $next_time) {
529
+            $next = $next_time;
530
+        }
531
+    }
532
+
533
+    if ($next) {
534
+        if (is_null($nb_jobs_scheduled)) {
535
+            $nb_jobs_scheduled = sql_countsel('spip_jobs',
536
+                "status=" . intval(_JQ_SCHEDULED) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time)));
537
+        } elseif ($next <= $time) {
538
+            $nb_jobs_scheduled++;
539
+        }
540
+        // si trop de jobs en attente, on force la purge en fin de hit
541
+        // pour assurer le coup
542
+        if ($nb_jobs_scheduled > (defined('_JQ_NB_JOBS_OVERFLOW') ? _JQ_NB_JOBS_OVERFLOW : 10000)) {
543
+            define('_DIRECT_CRON_FORCE', true);
544
+        }
545
+    }
546
+
547
+    queue_set_next_job_time($next);
548
+    $deja_la = false;
549 549
 }
550 550
 
551 551
 
@@ -556,26 +556,26 @@  discard block
 block discarded – undo
556 556
  */
557 557
 function queue_set_next_job_time($next) {
558 558
 
559
-	// utiliser le temps courant reel plutot que temps de la requete ici
560
-	$time = time();
561
-
562
-	// toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes
563
-	// et ne mettre a jour que si il y a un interet a le faire
564
-	// permet ausis d'initialiser le nom de fichier a coup sur
565
-	$curr_next = $_SERVER['REQUEST_TIME'] + max(0, queue_sleep_time_to_next_job(true));
566
-	if (
567
-		($curr_next <= $time and $next > $time) // le prochain job est dans le futur mais pas la date planifiee actuelle
568
-		or $curr_next > $next // le prochain job est plus tot que la date planifiee actuelle
569
-	) {
570
-		if (function_exists("cache_set") and defined('_MEMOIZE_MEMORY') and _MEMOIZE_MEMORY) {
571
-			cache_set(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
572
-		} else {
573
-			ecrire_fichier(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
574
-		}
575
-		queue_sleep_time_to_next_job($next);
576
-	}
577
-
578
-	return queue_sleep_time_to_next_job();
559
+    // utiliser le temps courant reel plutot que temps de la requete ici
560
+    $time = time();
561
+
562
+    // toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes
563
+    // et ne mettre a jour que si il y a un interet a le faire
564
+    // permet ausis d'initialiser le nom de fichier a coup sur
565
+    $curr_next = $_SERVER['REQUEST_TIME'] + max(0, queue_sleep_time_to_next_job(true));
566
+    if (
567
+        ($curr_next <= $time and $next > $time) // le prochain job est dans le futur mais pas la date planifiee actuelle
568
+        or $curr_next > $next // le prochain job est plus tot que la date planifiee actuelle
569
+    ) {
570
+        if (function_exists("cache_set") and defined('_MEMOIZE_MEMORY') and _MEMOIZE_MEMORY) {
571
+            cache_set(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
572
+        } else {
573
+            ecrire_fichier(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
574
+        }
575
+        queue_sleep_time_to_next_job($next);
576
+    }
577
+
578
+    return queue_sleep_time_to_next_job();
579 579
 }
580 580
 
581 581
 /**
@@ -592,60 +592,60 @@  discard block
 block discarded – undo
592 592
  * @return string
593 593
  */
594 594
 function queue_affichage_cron() {
595
-	$texte = "";
595
+    $texte = "";
596 596
 
597
-	$time_to_next = queue_sleep_time_to_next_job();
598
-	// rien a faire si le prochain job est encore dans le futur
599
-	if ($time_to_next > 0 or defined('_DEBUG_BLOCK_QUEUE')) {
600
-		return $texte;
601
-	}
597
+    $time_to_next = queue_sleep_time_to_next_job();
598
+    // rien a faire si le prochain job est encore dans le futur
599
+    if ($time_to_next > 0 or defined('_DEBUG_BLOCK_QUEUE')) {
600
+        return $texte;
601
+    }
602 602
 
603
-	// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
604
-	if (file_exists($lock = _DIR_TMP . "cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
605
-		return $texte;
606
-	}
603
+    // ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
604
+    if (file_exists($lock = _DIR_TMP . "cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
605
+        return $texte;
606
+    }
607 607
 
608
-	@touch($lock);
608
+    @touch($lock);
609 609
 
610
-	// il y a des taches en attentes
611
-	// si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
612
-	// on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
613
-	$urgent = false;
614
-	if ($time_to_next < -300) {
615
-		$urgent = true;
616
-	}
610
+    // il y a des taches en attentes
611
+    // si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
612
+    // on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
613
+    $urgent = false;
614
+    if ($time_to_next < -300) {
615
+        $urgent = true;
616
+    }
617 617
 
618
-	$url_cron = generer_url_action('cron', '', false, true);
618
+    $url_cron = generer_url_action('cron', '', false, true);
619 619
 
620
-	if (!defined('_HTML_BG_CRON_FORCE') or !_HTML_BG_CRON_FORCE) {
620
+    if (!defined('_HTML_BG_CRON_FORCE') or !_HTML_BG_CRON_FORCE) {
621 621
 
622
-		if (queue_lancer_url_http_async($url_cron) and !$urgent) {
623
-			return $texte;
624
-		}
622
+        if (queue_lancer_url_http_async($url_cron) and !$urgent) {
623
+            return $texte;
624
+        }
625 625
 
626
-	}
626
+    }
627 627
 
628
-	// si deja force, on retourne sans rien
629
-	if (defined('_DIRECT_CRON_FORCE')) {
630
-		return $texte;
631
-	}
628
+    // si deja force, on retourne sans rien
629
+    if (defined('_DIRECT_CRON_FORCE')) {
630
+        return $texte;
631
+    }
632 632
 
633
-	// si c'est un bot
634
-	// inutile de faire un appel par image background,
635
-	// on force un appel direct en fin de hit
636
-	if ((defined('_IS_BOT') and _IS_BOT)) {
637
-		define('_DIRECT_CRON_FORCE', true);
633
+    // si c'est un bot
634
+    // inutile de faire un appel par image background,
635
+    // on force un appel direct en fin de hit
636
+    if ((defined('_IS_BOT') and _IS_BOT)) {
637
+        define('_DIRECT_CRON_FORCE', true);
638 638
 
639
-		return $texte;
640
-	}
639
+        return $texte;
640
+    }
641 641
 
642
-	// en derniere solution, on insere un appel xhr non bloquant ou une image background dans la page si pas de JS
643
-	$url_cron = generer_url_action('cron');
644
-	$texte = '<!-- SPIP-CRON -->'
645
-	  . "<script>setTimeout(function(){var xo = new XMLHttpRequest();xo.open('GET', '$url_cron', true);xo.send('');},100);</script>"
646
-	  . "<noscript><div style=\"background-image: url('$url_cron');\"></div></noscript>";
642
+    // en derniere solution, on insere un appel xhr non bloquant ou une image background dans la page si pas de JS
643
+    $url_cron = generer_url_action('cron');
644
+    $texte = '<!-- SPIP-CRON -->'
645
+        . "<script>setTimeout(function(){var xo = new XMLHttpRequest();xo.open('GET', '$url_cron', true);xo.send('');},100);</script>"
646
+        . "<noscript><div style=\"background-image: url('$url_cron');\"></div></noscript>";
647 647
 
648
-	return $texte;
648
+    return $texte;
649 649
 }
650 650
 
651 651
 /**
@@ -654,69 +654,69 @@  discard block
 block discarded – undo
654 654
  * @return bool : true si l'url a pu être appelée en asynchrone, false sinon
655 655
  */
656 656
 function queue_lancer_url_http_async($url_cron) {
657
-	// methode la plus rapide :
658
-	// Si fsockopen est possible, on lance le cron via un socket en asynchrone
659
-	// si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL
660
-	// car on a toutes les chances d'echouer pareil mais sans moyen de le savoir
661
-	// mais on renvoie false direct
662
-	if (function_exists('fsockopen')) {
663
-		$parts = parse_url($url_cron);
664
-
665
-		switch ($parts['scheme']) {
666
-			case 'https':
667
-				$scheme = 'ssl://';
668
-				$port = 443;
669
-				break;
670
-			case 'http':
671
-			default:
672
-				$scheme = '';
673
-				$port = 80;
674
-		}
675
-		$fp = @fsockopen($scheme . $parts['host'],
676
-			isset($parts['port']) ? $parts['port'] : $port,
677
-			$errno, $errstr, 1);
678
-
679
-		if ($fp) {
680
-			$host_sent = $parts['host'];
681
-			if (isset($parts['port']) and $parts['port'] !== $port) {
682
-				$host_sent .= ':' . $parts['port'];
683
-			}
684
-			$timeout = 200; // ms
685
-			stream_set_timeout($fp, 0, $timeout * 1000);
686
-			$query = $parts['path'] . ($parts['query'] ? "?" . $parts['query'] : "");
687
-			$out = "GET " . $query . " HTTP/1.1\r\n";
688
-			$out .= "Host: " . $host_sent . "\r\n";
689
-			$out .= "Connection: Close\r\n\r\n";
690
-			fwrite($fp, $out);
691
-			spip_timer('read');
692
-			$t = 0;
693
-			// on lit la reponse si possible pour fermer proprement la connexion
694
-			// avec un timeout total de 200ms pour ne pas se bloquer
695
-			while (!feof($fp) and $t < $timeout) {
696
-				@fgets($fp, 1024);
697
-				$t += spip_timer('read', true);
698
-				spip_timer('read');
699
-			}
700
-			fclose($fp);
701
-			return true;
702
-		}
703
-	}
704
-	// si fsockopen n'est pas dispo on essaye cURL :
705
-	// lancer le cron par un cURL asynchrone si cURL est present
706
-	elseif (function_exists("curl_init")) {
707
-		//setting the curl parameters.
708
-		$ch = curl_init($url_cron);
709
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
710
-		// cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
711
-		curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
712
-		// valeur mini pour que la requete soit lancee
713
-		curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
714
-		// lancer
715
-		curl_exec($ch);
716
-		// fermer
717
-		curl_close($ch);
718
-		return true;
719
-	}
720
-
721
-	return false;
657
+    // methode la plus rapide :
658
+    // Si fsockopen est possible, on lance le cron via un socket en asynchrone
659
+    // si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL
660
+    // car on a toutes les chances d'echouer pareil mais sans moyen de le savoir
661
+    // mais on renvoie false direct
662
+    if (function_exists('fsockopen')) {
663
+        $parts = parse_url($url_cron);
664
+
665
+        switch ($parts['scheme']) {
666
+            case 'https':
667
+                $scheme = 'ssl://';
668
+                $port = 443;
669
+                break;
670
+            case 'http':
671
+            default:
672
+                $scheme = '';
673
+                $port = 80;
674
+        }
675
+        $fp = @fsockopen($scheme . $parts['host'],
676
+            isset($parts['port']) ? $parts['port'] : $port,
677
+            $errno, $errstr, 1);
678
+
679
+        if ($fp) {
680
+            $host_sent = $parts['host'];
681
+            if (isset($parts['port']) and $parts['port'] !== $port) {
682
+                $host_sent .= ':' . $parts['port'];
683
+            }
684
+            $timeout = 200; // ms
685
+            stream_set_timeout($fp, 0, $timeout * 1000);
686
+            $query = $parts['path'] . ($parts['query'] ? "?" . $parts['query'] : "");
687
+            $out = "GET " . $query . " HTTP/1.1\r\n";
688
+            $out .= "Host: " . $host_sent . "\r\n";
689
+            $out .= "Connection: Close\r\n\r\n";
690
+            fwrite($fp, $out);
691
+            spip_timer('read');
692
+            $t = 0;
693
+            // on lit la reponse si possible pour fermer proprement la connexion
694
+            // avec un timeout total de 200ms pour ne pas se bloquer
695
+            while (!feof($fp) and $t < $timeout) {
696
+                @fgets($fp, 1024);
697
+                $t += spip_timer('read', true);
698
+                spip_timer('read');
699
+            }
700
+            fclose($fp);
701
+            return true;
702
+        }
703
+    }
704
+    // si fsockopen n'est pas dispo on essaye cURL :
705
+    // lancer le cron par un cURL asynchrone si cURL est present
706
+    elseif (function_exists("curl_init")) {
707
+        //setting the curl parameters.
708
+        $ch = curl_init($url_cron);
709
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
710
+        // cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
711
+        curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
712
+        // valeur mini pour que la requete soit lancee
713
+        curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
714
+        // lancer
715
+        curl_exec($ch);
716
+        // fermer
717
+        curl_close($ch);
718
+        return true;
719
+    }
720
+
721
+    return false;
722 722
 }
723 723
\ No newline at end of file
Please login to merge, or discard this patch.
ecrire/req/mysql.php 4 patches
Doc Comments   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -337,8 +337,8 @@  discard block
 block discarded – undo
337 337
  * @param string|array $select Champs sélectionnés
338 338
  * @param string|array $from Tables sélectionnées
339 339
  * @param string|array $where Contraintes
340
- * @param string|array $groupby Regroupements
341
- * @param string|array $orderby Tris
340
+ * @param string $groupby Regroupements
341
+ * @param string $orderby Tris
342 342
  * @param string $limit Limites de résultats
343 343
  * @param string|array $having Contraintes posts sélections
344 344
  * @param string $serveur Nom de la connexion
@@ -970,7 +970,7 @@  discard block
 block discarded – undo
970 970
  * @param int $row_number Position. Déplacer le pointeur à cette ligne
971 971
  * @param string $serveur Nom de la connexion
972 972
  * @param bool $requeter Inutilisé
973
- * @return bool True si déplacement réussi, false sinon.
973
+ * @return boolean|null True si déplacement réussi, false sinon.
974 974
  **/
975 975
 function spip_mysql_seek($r, $row_number, $serveur = '', $requeter = true) {
976 976
 	if ($r and mysqli_num_rows($r)) {
Please login to merge, or discard this patch.
Braces   +3 added lines, -6 removed lines patch added patch discarded remove patch
@@ -50,11 +50,9 @@  discard block
 block discarded – undo
50 50
 		$port and !is_numeric($socket = $port)
51 51
 		and (!$host or $host=='localhost')) {
52 52
 		$link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53
-	}
54
-	elseif ($port) {
53
+	} elseif ($port) {
55 54
 		$link = @mysqli_connect($host, $login, $pass, '', $port);
56
-	}
57
-	else {
55
+	} else {
58 56
 		$link = @mysqli_connect($host, $login, $pass);
59 57
 	}
60 58
 
@@ -1612,8 +1610,7 @@  discard block
 block discarded – undo
1612 1610
 	if (!$type) {
1613 1611
 		if (is_bool($v)) {
1614 1612
 			return strval(intval($v));
1615
-		}
1616
-		elseif (is_numeric($v)) {
1613
+		} elseif (is_numeric($v)) {
1617 1614
 			return strval($v);
1618 1615
 		}
1619 1616
 		return "'" . addslashes($v) . "'";
Please login to merge, or discard this patch.
Indentation   +789 added lines, -789 removed lines patch added patch discarded remove patch
@@ -20,11 +20,11 @@  discard block
 block discarded – undo
20 20
  */
21 21
 
22 22
 if (!defined('_ECRIRE_INC_VERSION')) {
23
-	return;
23
+    return;
24 24
 }
25 25
 
26 26
 if (!defined('_MYSQL_NOPLANES')) {
27
-	define('_MYSQL_NOPLANES', true);
27
+    define('_MYSQL_NOPLANES', true);
28 28
 }
29 29
 
30 30
 /**
@@ -41,104 +41,104 @@  discard block
 block discarded – undo
41 41
  *     - tableau décrivant la connexion sinon
42 42
  */
43 43
 function req_mysql_dist($host, $port, $login, $pass, $db = '', $prefixe = '') {
44
-	if (!extension_loaded('mysqli')) {
45
-		return false;
46
-	}
47
-
48
-	// si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
49
-	if (
50
-		$port and !is_numeric($socket = $port)
51
-		and (!$host or $host=='localhost')) {
52
-		$link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53
-	}
54
-	elseif ($port) {
55
-		$link = @mysqli_connect($host, $login, $pass, '', $port);
56
-	}
57
-	else {
58
-		$link = @mysqli_connect($host, $login, $pass);
59
-	}
60
-
61
-	if (!$link) {
62
-		spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
63
-
64
-		return false;
65
-	}
66
-	$last = '';
67
-	if (!$db) {
68
-		$ok = $link;
69
-		$db = 'spip';
70
-	} else {
71
-		$ok = mysqli_select_db($link, $db);
72
-		if (defined('_MYSQL_SET_SQL_MODE')
73
-			or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
74
-		) {
75
-			mysqli_query($link, $last = "set sql_mode=''");
76
-		}
77
-	}
78
-
79
-	spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle" : 'impossible'),
80
-		_LOG_DEBUG);
81
-
82
-	return !$ok ? false : array(
83
-		'db' => $db,
84
-		'last' => $last,
85
-		'prefixe' => $prefixe ? $prefixe : $db,
86
-		'link' => $link,
87
-		'total_requetes' => 0,
88
-	);
44
+    if (!extension_loaded('mysqli')) {
45
+        return false;
46
+    }
47
+
48
+    // si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
49
+    if (
50
+        $port and !is_numeric($socket = $port)
51
+        and (!$host or $host=='localhost')) {
52
+        $link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53
+    }
54
+    elseif ($port) {
55
+        $link = @mysqli_connect($host, $login, $pass, '', $port);
56
+    }
57
+    else {
58
+        $link = @mysqli_connect($host, $login, $pass);
59
+    }
60
+
61
+    if (!$link) {
62
+        spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
63
+
64
+        return false;
65
+    }
66
+    $last = '';
67
+    if (!$db) {
68
+        $ok = $link;
69
+        $db = 'spip';
70
+    } else {
71
+        $ok = mysqli_select_db($link, $db);
72
+        if (defined('_MYSQL_SET_SQL_MODE')
73
+            or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
74
+        ) {
75
+            mysqli_query($link, $last = "set sql_mode=''");
76
+        }
77
+    }
78
+
79
+    spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle" : 'impossible'),
80
+        _LOG_DEBUG);
81
+
82
+    return !$ok ? false : array(
83
+        'db' => $db,
84
+        'last' => $last,
85
+        'prefixe' => $prefixe ? $prefixe : $db,
86
+        'link' => $link,
87
+        'total_requetes' => 0,
88
+    );
89 89
 }
90 90
 
91 91
 
92 92
 $GLOBALS['spip_mysql_functions_1'] = array(
93
-	'alter' => 'spip_mysql_alter',
94
-	'count' => 'spip_mysql_count',
95
-	'countsel' => 'spip_mysql_countsel',
96
-	'create' => 'spip_mysql_create',
97
-	'create_base' => 'spip_mysql_create_base',
98
-	'create_view' => 'spip_mysql_create_view',
99
-	'date_proche' => 'spip_mysql_date_proche',
100
-	'delete' => 'spip_mysql_delete',
101
-	'drop_table' => 'spip_mysql_drop_table',
102
-	'drop_view' => 'spip_mysql_drop_view',
103
-	'errno' => 'spip_mysql_errno',
104
-	'error' => 'spip_mysql_error',
105
-	'explain' => 'spip_mysql_explain',
106
-	'fetch' => 'spip_mysql_fetch',
107
-	'seek' => 'spip_mysql_seek',
108
-	'free' => 'spip_mysql_free',
109
-	'hex' => 'spip_mysql_hex',
110
-	'in' => 'spip_mysql_in',
111
-	'insert' => 'spip_mysql_insert',
112
-	'insertq' => 'spip_mysql_insertq',
113
-	'insertq_multi' => 'spip_mysql_insertq_multi',
114
-	'listdbs' => 'spip_mysql_listdbs',
115
-	'multi' => 'spip_mysql_multi',
116
-	'optimize' => 'spip_mysql_optimize',
117
-	'query' => 'spip_mysql_query',
118
-	'quote' => 'spip_mysql_quote',
119
-	'replace' => 'spip_mysql_replace',
120
-	'replace_multi' => 'spip_mysql_replace_multi',
121
-	'repair' => 'spip_mysql_repair',
122
-	'select' => 'spip_mysql_select',
123
-	'selectdb' => 'spip_mysql_selectdb',
124
-	'set_charset' => 'spip_mysql_set_charset',
125
-	'get_charset' => 'spip_mysql_get_charset',
126
-	'showbase' => 'spip_mysql_showbase',
127
-	'showtable' => 'spip_mysql_showtable',
128
-	'update' => 'spip_mysql_update',
129
-	'updateq' => 'spip_mysql_updateq',
130
-
131
-	// association de chaque nom http d'un charset aux couples MySQL
132
-	'charsets' => array(
133
-		'cp1250' => array('charset' => 'cp1250', 'collation' => 'cp1250_general_ci'),
134
-		'cp1251' => array('charset' => 'cp1251', 'collation' => 'cp1251_general_ci'),
135
-		'cp1256' => array('charset' => 'cp1256', 'collation' => 'cp1256_general_ci'),
136
-		'iso-8859-1' => array('charset' => 'latin1', 'collation' => 'latin1_swedish_ci'),
93
+    'alter' => 'spip_mysql_alter',
94
+    'count' => 'spip_mysql_count',
95
+    'countsel' => 'spip_mysql_countsel',
96
+    'create' => 'spip_mysql_create',
97
+    'create_base' => 'spip_mysql_create_base',
98
+    'create_view' => 'spip_mysql_create_view',
99
+    'date_proche' => 'spip_mysql_date_proche',
100
+    'delete' => 'spip_mysql_delete',
101
+    'drop_table' => 'spip_mysql_drop_table',
102
+    'drop_view' => 'spip_mysql_drop_view',
103
+    'errno' => 'spip_mysql_errno',
104
+    'error' => 'spip_mysql_error',
105
+    'explain' => 'spip_mysql_explain',
106
+    'fetch' => 'spip_mysql_fetch',
107
+    'seek' => 'spip_mysql_seek',
108
+    'free' => 'spip_mysql_free',
109
+    'hex' => 'spip_mysql_hex',
110
+    'in' => 'spip_mysql_in',
111
+    'insert' => 'spip_mysql_insert',
112
+    'insertq' => 'spip_mysql_insertq',
113
+    'insertq_multi' => 'spip_mysql_insertq_multi',
114
+    'listdbs' => 'spip_mysql_listdbs',
115
+    'multi' => 'spip_mysql_multi',
116
+    'optimize' => 'spip_mysql_optimize',
117
+    'query' => 'spip_mysql_query',
118
+    'quote' => 'spip_mysql_quote',
119
+    'replace' => 'spip_mysql_replace',
120
+    'replace_multi' => 'spip_mysql_replace_multi',
121
+    'repair' => 'spip_mysql_repair',
122
+    'select' => 'spip_mysql_select',
123
+    'selectdb' => 'spip_mysql_selectdb',
124
+    'set_charset' => 'spip_mysql_set_charset',
125
+    'get_charset' => 'spip_mysql_get_charset',
126
+    'showbase' => 'spip_mysql_showbase',
127
+    'showtable' => 'spip_mysql_showtable',
128
+    'update' => 'spip_mysql_update',
129
+    'updateq' => 'spip_mysql_updateq',
130
+
131
+    // association de chaque nom http d'un charset aux couples MySQL
132
+    'charsets' => array(
133
+        'cp1250' => array('charset' => 'cp1250', 'collation' => 'cp1250_general_ci'),
134
+        'cp1251' => array('charset' => 'cp1251', 'collation' => 'cp1251_general_ci'),
135
+        'cp1256' => array('charset' => 'cp1256', 'collation' => 'cp1256_general_ci'),
136
+        'iso-8859-1' => array('charset' => 'latin1', 'collation' => 'latin1_swedish_ci'),
137 137
 //'iso-8859-6'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
138
-		'iso-8859-9' => array('charset' => 'latin5', 'collation' => 'latin5_turkish_ci'),
138
+        'iso-8859-9' => array('charset' => 'latin5', 'collation' => 'latin5_turkish_ci'),
139 139
 //'iso-8859-15'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
140
-		'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci')
141
-	)
140
+        'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci')
141
+    )
142 142
 );
143 143
 
144 144
 
@@ -149,9 +149,9 @@  discard block
 block discarded – undo
149 149
  * @return Object Information de connexion pour mysqli
150 150
  */
151 151
 function _mysql_link($serveur = '') {
152
-	$link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
152
+    $link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
153 153
 
154
-	return $link;
154
+    return $link;
155 155
 }
156 156
 
157 157
 
@@ -164,10 +164,10 @@  discard block
 block discarded – undo
164 164
  * @return resource       Ressource de résultats pour fetch()
165 165
  */
166 166
 function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) {
167
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
168
-	spip_log("changement de charset sql : " . "SET NAMES " . _q($charset), _LOG_DEBUG);
167
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
168
+    spip_log("changement de charset sql : " . "SET NAMES " . _q($charset), _LOG_DEBUG);
169 169
 
170
-	return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES " . _q($charset));
170
+    return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES " . _q($charset));
171 171
 }
172 172
 
173 173
 
@@ -180,11 +180,11 @@  discard block
 block discarded – undo
180 180
  * @return array                Description du charset (son nom est dans 'charset')
181 181
  */
182 182
 function spip_mysql_get_charset($charset = array(), $serveur = '', $requeter = true) {
183
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
184
-	$connexion['last'] = $c = "SHOW CHARACTER SET"
185
-		. (!$charset ? '' : (" LIKE " . _q($charset['charset'])));
183
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
184
+    $connexion['last'] = $c = "SHOW CHARACTER SET"
185
+        . (!$charset ? '' : (" LIKE " . _q($charset['charset'])));
186 186
 
187
-	return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
187
+    return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
188 188
 }
189 189
 
190 190
 /**
@@ -200,66 +200,66 @@  discard block
 block discarded – undo
200 200
  */
201 201
 function spip_mysql_query($query, $serveur = '', $requeter = true) {
202 202
 
203
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
204
-	$prefixe = $connexion['prefixe'];
205
-	$link = $connexion['link'];
206
-	$db = $connexion['db'];
207
-
208
-	$query = _mysql_traite_query($query, $db, $prefixe);
209
-
210
-	// renvoyer la requete inerte si demandee
211
-	if (!$requeter) {
212
-		return $query;
213
-	}
214
-
215
-	if (isset($_GET['var_profile'])) {
216
-		include_spip('public/tracer');
217
-		$t = trace_query_start();
218
-	} else {
219
-		$t = 0;
220
-	}
221
-
222
-	$connexion['last'] = $query;
223
-	$connexion['total_requetes']++;
224
-
225
-	// ajouter un debug utile dans log/mysql-slow.log ?
226
-	$debug = '';
227
-	if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
228
-		if (isset($GLOBALS['debug']['aucasou'])) {
229
-			list(, $id, , $infos) = $GLOBALS['debug']['aucasou'];
230
-			$debug .= "BOUCLE$id @ " . (isset($infos[0]) ? $infos[0] : '') . " | ";
231
-		}
232
-		if (isset($_SERVER['REQUEST_URI'])) {
233
-			$debug .= $_SERVER['REQUEST_URI'];
234
-		}
235
-		if (!empty($GLOBALS['ip'])) {
236
-			$debug .= ' + ' . $GLOBALS['ip'];
237
-		}
238
-		$debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
239
-	}
240
-
241
-	$r = mysqli_query($link, $query . $debug);
242
-
243
-	//Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
244
-	if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
245
-		if ($e == 2006) { //Si Gone Away on relance une connexion vierge
246
-			//Fermer la connexion defaillante
247
-			mysqli_close($connexion['link']);
248
-			unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
249
-			//Relancer une connexion vierge
250
-			spip_connect($serveur);
251
-			$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
252
-			$link = $connexion['link'];
253
-			//On retente au cas où
254
-			$r = mysqli_query($link, $query . $debug);
255
-		}
256
-	}
257
-
258
-	// Log de l'erreur eventuelle
259
-	if ($e = spip_mysql_errno($serveur)) {
260
-		$e .= spip_mysql_error($query, $serveur);
261
-	} // et du fautif
262
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
203
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
204
+    $prefixe = $connexion['prefixe'];
205
+    $link = $connexion['link'];
206
+    $db = $connexion['db'];
207
+
208
+    $query = _mysql_traite_query($query, $db, $prefixe);
209
+
210
+    // renvoyer la requete inerte si demandee
211
+    if (!$requeter) {
212
+        return $query;
213
+    }
214
+
215
+    if (isset($_GET['var_profile'])) {
216
+        include_spip('public/tracer');
217
+        $t = trace_query_start();
218
+    } else {
219
+        $t = 0;
220
+    }
221
+
222
+    $connexion['last'] = $query;
223
+    $connexion['total_requetes']++;
224
+
225
+    // ajouter un debug utile dans log/mysql-slow.log ?
226
+    $debug = '';
227
+    if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
228
+        if (isset($GLOBALS['debug']['aucasou'])) {
229
+            list(, $id, , $infos) = $GLOBALS['debug']['aucasou'];
230
+            $debug .= "BOUCLE$id @ " . (isset($infos[0]) ? $infos[0] : '') . " | ";
231
+        }
232
+        if (isset($_SERVER['REQUEST_URI'])) {
233
+            $debug .= $_SERVER['REQUEST_URI'];
234
+        }
235
+        if (!empty($GLOBALS['ip'])) {
236
+            $debug .= ' + ' . $GLOBALS['ip'];
237
+        }
238
+        $debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
239
+    }
240
+
241
+    $r = mysqli_query($link, $query . $debug);
242
+
243
+    //Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
244
+    if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
245
+        if ($e == 2006) { //Si Gone Away on relance une connexion vierge
246
+            //Fermer la connexion defaillante
247
+            mysqli_close($connexion['link']);
248
+            unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
249
+            //Relancer une connexion vierge
250
+            spip_connect($serveur);
251
+            $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
252
+            $link = $connexion['link'];
253
+            //On retente au cas où
254
+            $r = mysqli_query($link, $query . $debug);
255
+        }
256
+    }
257
+
258
+    // Log de l'erreur eventuelle
259
+    if ($e = spip_mysql_errno($serveur)) {
260
+        $e .= spip_mysql_error($query, $serveur);
261
+    } // et du fautif
262
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
263 263
 }
264 264
 
265 265
 /**
@@ -274,12 +274,12 @@  discard block
 block discarded – undo
274 274
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
275 275
  */
276 276
 function spip_mysql_alter($query, $serveur = '', $requeter = true) {
277
-	// ici on supprime les ` entourant le nom de table pour permettre
278
-	// la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
279
-	// d'utiliser ceux-ci, copie-colle de phpmyadmin
280
-	$query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
277
+    // ici on supprime les ` entourant le nom de table pour permettre
278
+    // la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
279
+    // d'utiliser ceux-ci, copie-colle de phpmyadmin
280
+    $query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
281 281
 
282
-	return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
282
+    return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
283 283
 }
284 284
 
285 285
 
@@ -292,9 +292,9 @@  discard block
 block discarded – undo
292 292
  * @return bool            Toujours true
293 293
  */
294 294
 function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
295
-	spip_mysql_query("OPTIMIZE TABLE " . $table);
295
+    spip_mysql_query("OPTIMIZE TABLE " . $table);
296 296
 
297
-	return true;
297
+    return true;
298 298
 }
299 299
 
300 300
 
@@ -307,18 +307,18 @@  discard block
 block discarded – undo
307 307
  * @return array           Tableau de l'explication
308 308
  */
309 309
 function spip_mysql_explain($query, $serveur = '', $requeter = true) {
310
-	if (strpos(ltrim($query), 'SELECT') !== 0) {
311
-		return array();
312
-	}
313
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
314
-	$prefixe = $connexion['prefixe'];
315
-	$link = $connexion['link'];
316
-	$db = $connexion['db'];
317
-
318
-	$query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
319
-	$r = mysqli_query($link, $query);
320
-
321
-	return spip_mysql_fetch($r, null, $serveur);
310
+    if (strpos(ltrim($query), 'SELECT') !== 0) {
311
+        return array();
312
+    }
313
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
314
+    $prefixe = $connexion['prefixe'];
315
+    $link = $connexion['link'];
316
+    $db = $connexion['db'];
317
+
318
+    $query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
319
+    $r = mysqli_query($link, $query);
320
+
321
+    return spip_mysql_fetch($r, null, $serveur);
322 322
 }
323 323
 
324 324
 
@@ -347,35 +347,35 @@  discard block
 block discarded – undo
347 347
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
348 348
  */
349 349
 function spip_mysql_select(
350
-	$select,
351
-	$from,
352
-	$where = '',
353
-	$groupby = '',
354
-	$orderby = '',
355
-	$limit = '',
356
-	$having = '',
357
-	$serveur = '',
358
-	$requeter = true
350
+    $select,
351
+    $from,
352
+    $where = '',
353
+    $groupby = '',
354
+    $orderby = '',
355
+    $limit = '',
356
+    $having = '',
357
+    $serveur = '',
358
+    $requeter = true
359 359
 ) {
360 360
 
361 361
 
362
-	$from = (!is_array($from) ? $from : spip_mysql_select_as($from));
363
-	$query =
364
-		calculer_mysql_expression('SELECT', $select, ', ')
365
-		. calculer_mysql_expression('FROM', $from, ', ')
366
-		. calculer_mysql_expression('WHERE', $where)
367
-		. calculer_mysql_expression('GROUP BY', $groupby, ',')
368
-		. calculer_mysql_expression('HAVING', $having)
369
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
370
-		. ($limit ? "\nLIMIT $limit" : '');
362
+    $from = (!is_array($from) ? $from : spip_mysql_select_as($from));
363
+    $query =
364
+        calculer_mysql_expression('SELECT', $select, ', ')
365
+        . calculer_mysql_expression('FROM', $from, ', ')
366
+        . calculer_mysql_expression('WHERE', $where)
367
+        . calculer_mysql_expression('GROUP BY', $groupby, ',')
368
+        . calculer_mysql_expression('HAVING', $having)
369
+        . ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
370
+        . ($limit ? "\nLIMIT $limit" : '');
371 371
 
372
-	// renvoyer la requete inerte si demandee
373
-	if ($requeter === false) {
374
-		return $query;
375
-	}
376
-	$r = spip_mysql_query($query, $serveur, $requeter);
372
+    // renvoyer la requete inerte si demandee
373
+    if ($requeter === false) {
374
+        return $query;
375
+    }
376
+    $r = spip_mysql_query($query, $serveur, $requeter);
377 377
 
378
-	return $r ? $r : $query;
378
+    return $r ? $r : $query;
379 379
 }
380 380
 
381 381
 
@@ -392,7 +392,7 @@  discard block
 block discarded – undo
392 392
  * @return string Texte du orderby préparé
393 393
  */
394 394
 function spip_mysql_order($orderby) {
395
-	return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
395
+    return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
396 396
 }
397 397
 
398 398
 
@@ -415,26 +415,26 @@  discard block
 block discarded – undo
415 415
  *     Contrainte pour clause WHERE
416 416
  */
417 417
 function calculer_mysql_where($v) {
418
-	if (!is_array($v)) {
419
-		return $v;
420
-	}
421
-
422
-	$op = array_shift($v);
423
-	if (!($n = count($v))) {
424
-		return $op;
425
-	} else {
426
-		$arg = calculer_mysql_where(array_shift($v));
427
-		if ($n == 1) {
428
-			return "$op($arg)";
429
-		} else {
430
-			$arg2 = calculer_mysql_where(array_shift($v));
431
-			if ($n == 2) {
432
-				return "($arg $op $arg2)";
433
-			} else {
434
-				return "($arg $op ($arg2) : $v[0])";
435
-			}
436
-		}
437
-	}
418
+    if (!is_array($v)) {
419
+        return $v;
420
+    }
421
+
422
+    $op = array_shift($v);
423
+    if (!($n = count($v))) {
424
+        return $op;
425
+    } else {
426
+        $arg = calculer_mysql_where(array_shift($v));
427
+        if ($n == 1) {
428
+            return "$op($arg)";
429
+        } else {
430
+            $arg2 = calculer_mysql_where(array_shift($v));
431
+            if ($n == 2) {
432
+                return "($arg $op $arg2)";
433
+            } else {
434
+                return "($arg $op ($arg2) : $v[0])";
435
+            }
436
+        }
437
+    }
438 438
 }
439 439
 
440 440
 /**
@@ -449,21 +449,21 @@  discard block
 block discarded – undo
449 449
  * @return string            Texte de l'expression, une partie donc, du texte la requête.
450 450
  */
451 451
 function calculer_mysql_expression($expression, $v, $join = 'AND') {
452
-	if (empty($v)) {
453
-		return '';
454
-	}
455
-
456
-	$exp = "\n$expression ";
457
-
458
-	if (!is_array($v)) {
459
-		return $exp . $v;
460
-	} else {
461
-		if (strtoupper($join) === 'AND') {
462
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
463
-		} else {
464
-			return $exp . join($join, $v);
465
-		}
466
-	}
452
+    if (empty($v)) {
453
+        return '';
454
+    }
455
+
456
+    $exp = "\n$expression ";
457
+
458
+    if (!is_array($v)) {
459
+        return $exp . $v;
460
+    } else {
461
+        if (strtoupper($join) === 'AND') {
462
+            return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
463
+        } else {
464
+            return $exp . join($join, $v);
465
+        }
466
+    }
467 467
 }
468 468
 
469 469
 
@@ -474,26 +474,26 @@  discard block
 block discarded – undo
474 474
  * @return string Sélection de colonnes pour une clause SELECT
475 475
  */
476 476
 function spip_mysql_select_as($args) {
477
-	$res = '';
478
-	foreach ($args as $k => $v) {
479
-		if (substr($k, -1) == '@') {
480
-			// c'est une jointure qui se refere au from precedent
481
-			// pas de virgule
482
-			$res .= '  ' . $v;
483
-		} else {
484
-			if (!is_numeric($k)) {
485
-				$p = strpos($v, " ");
486
-				if ($p) {
487
-					$v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
488
-				} else {
489
-					$v .= " AS `$k`";
490
-				}
491
-			}
492
-			$res .= ', ' . $v;
493
-		}
494
-	}
495
-
496
-	return substr($res, 2);
477
+    $res = '';
478
+    foreach ($args as $k => $v) {
479
+        if (substr($k, -1) == '@') {
480
+            // c'est une jointure qui se refere au from precedent
481
+            // pas de virgule
482
+            $res .= '  ' . $v;
483
+        } else {
484
+            if (!is_numeric($k)) {
485
+                $p = strpos($v, " ");
486
+                if ($p) {
487
+                    $v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
488
+                } else {
489
+                    $v .= " AS `$k`";
490
+                }
491
+            }
492
+            $res .= ', ' . $v;
493
+        }
494
+    }
495
+
496
+    return substr($res, 2);
497 497
 }
498 498
 
499 499
 
@@ -517,46 +517,46 @@  discard block
 block discarded – undo
517 517
  */
518 518
 function _mysql_traite_query($query, $db = '', $prefixe = '') {
519 519
 
520
-	if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
521
-		$pref = '`' . $db . '`.';
522
-	} else {
523
-		$pref = '';
524
-	}
525
-
526
-	if ($prefixe) {
527
-		$pref .= $prefixe . "_";
528
-	}
529
-
530
-	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
531
-		$suite = '';
532
-	} else {
533
-		$suite = strstr($query, $regs[0]);
534
-		$query = substr($query, 0, -strlen($suite));
535
-		// propager le prefixe en cas de requete imbriquee
536
-		// il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
537
-		// modifier une requete qui est en fait juste du texte dans un champ
538
-		if (stripos($suite, "SELECT") !== false) {
539
-			list($suite, $textes) = query_echappe_textes($suite);
540
-			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
541
-				$suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
542
-			}
543
-			$suite = query_reinjecte_textes($suite, $textes);
544
-		}
545
-	}
546
-	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
547
-
548
-	// en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
549
-	// remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
550
-	if (defined('_MYSQL_NOPLANES')
551
-		and _MYSQL_NOPLANES
552
-		and !empty($GLOBALS['meta']['charset_sql_connexion'])
553
-		and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8') {
554
-		include_spip('inc/charsets');
555
-		$r = utf8_noplanes($r);
556
-	}
557
-
558
-	#spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
559
-	return $r;
520
+    if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
521
+        $pref = '`' . $db . '`.';
522
+    } else {
523
+        $pref = '';
524
+    }
525
+
526
+    if ($prefixe) {
527
+        $pref .= $prefixe . "_";
528
+    }
529
+
530
+    if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
531
+        $suite = '';
532
+    } else {
533
+        $suite = strstr($query, $regs[0]);
534
+        $query = substr($query, 0, -strlen($suite));
535
+        // propager le prefixe en cas de requete imbriquee
536
+        // il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
537
+        // modifier une requete qui est en fait juste du texte dans un champ
538
+        if (stripos($suite, "SELECT") !== false) {
539
+            list($suite, $textes) = query_echappe_textes($suite);
540
+            if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
541
+                $suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
542
+            }
543
+            $suite = query_reinjecte_textes($suite, $textes);
544
+        }
545
+    }
546
+    $r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
547
+
548
+    // en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
549
+    // remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
550
+    if (defined('_MYSQL_NOPLANES')
551
+        and _MYSQL_NOPLANES
552
+        and !empty($GLOBALS['meta']['charset_sql_connexion'])
553
+        and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8') {
554
+        include_spip('inc/charsets');
555
+        $r = utf8_noplanes($r);
556
+    }
557
+
558
+    #spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
559
+    return $r;
560 560
 }
561 561
 
562 562
 /**
@@ -574,13 +574,13 @@  discard block
 block discarded – undo
574 574
  *     - False en cas d'erreur.
575 575
  **/
576 576
 function spip_mysql_selectdb($db, $serveur = '', $requeter = true) {
577
-	$link = _mysql_link($serveur);
578
-	$ok = mysqli_select_db($link, $db);
579
-	if (!$ok) {
580
-		spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
581
-	}
577
+    $link = _mysql_link($serveur);
578
+    $ok = mysqli_select_db($link, $db);
579
+    if (!$ok) {
580
+        spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
581
+    }
582 582
 
583
-	return $ok;
583
+    return $ok;
584 584
 }
585 585
 
586 586
 
@@ -601,14 +601,14 @@  discard block
 block discarded – undo
601 601
  *     Liste de noms de bases de données
602 602
  **/
603 603
 function spip_mysql_listdbs($serveur = '', $requeter = true) {
604
-	$dbs = array();
605
-	if ($res = spip_mysql_query("SHOW DATABASES", $serveur)) {
606
-		while ($row = mysqli_fetch_assoc($res)) {
607
-			$dbs[] = $row['Database'];
608
-		}
609
-	}
610
-
611
-	return $dbs;
604
+    $dbs = array();
605
+    if ($res = spip_mysql_query("SHOW DATABASES", $serveur)) {
606
+        while ($row = mysqli_fetch_assoc($res)) {
607
+            $dbs[] = $row['Database'];
608
+        }
609
+    }
610
+
611
+    return $dbs;
612 612
 }
613 613
 
614 614
 
@@ -631,72 +631,72 @@  discard block
 block discarded – undo
631 631
  *     - true si la requête réussie, false sinon.
632 632
  */
633 633
 function spip_mysql_create(
634
-	$nom,
635
-	$champs,
636
-	$cles,
637
-	$autoinc = false,
638
-	$temporary = false,
639
-	$serveur = '',
640
-	$requeter = true
634
+    $nom,
635
+    $champs,
636
+    $cles,
637
+    $autoinc = false,
638
+    $temporary = false,
639
+    $serveur = '',
640
+    $requeter = true
641 641
 ) {
642 642
 
643
-	$query = '';
644
-	$keys = '';
645
-	$s = '';
646
-	$p = '';
647
-
648
-	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
649
-	// sans les renseigner (laisse le compilo recuperer la description)
650
-	if (!is_array($champs) || !is_array($cles)) {
651
-		return;
652
-	}
653
-
654
-	$res = spip_mysql_query("SELECT version() as v", $serveur);
655
-	if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
656
-		spip_mysql_query("SET sql_mode=''", $serveur);
657
-	}
658
-
659
-	foreach ($cles as $k => $v) {
660
-		$keys .= "$s\n\t\t$k ($v)";
661
-		if ($k == "PRIMARY KEY") {
662
-			$p = $v;
663
-		}
664
-		$s = ",";
665
-	}
666
-	$s = '';
667
-
668
-	$character_set = "";
669
-	if (@$GLOBALS['meta']['charset_sql_base']) {
670
-		$character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
671
-	}
672
-	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
673
-		$character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
674
-	}
675
-
676
-	foreach ($champs as $k => $v) {
677
-		$v = _mysql_remplacements_definitions_table($v);
678
-		if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
679
-			if (preg_match(',(char|text),i', $defs[1])
680
-				and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
681
-			) {
682
-				$v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
683
-			}
684
-		}
685
-
686
-		$query .= "$s\n\t\t$k $v"
687
-			. (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
688
-				? " auto_increment"
689
-				: ''
690
-			);
691
-		$s = ",";
692
-	}
693
-	$temporary = $temporary ? 'TEMPORARY' : '';
694
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
695
-		. " ENGINE=MyISAM"
696
-		. ($character_set ? " DEFAULT $character_set" : "")
697
-		. "\n";
698
-
699
-	return spip_mysql_query($q, $serveur);
643
+    $query = '';
644
+    $keys = '';
645
+    $s = '';
646
+    $p = '';
647
+
648
+    // certains plugins declarent les tables  (permet leur inclusion dans le dump)
649
+    // sans les renseigner (laisse le compilo recuperer la description)
650
+    if (!is_array($champs) || !is_array($cles)) {
651
+        return;
652
+    }
653
+
654
+    $res = spip_mysql_query("SELECT version() as v", $serveur);
655
+    if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
656
+        spip_mysql_query("SET sql_mode=''", $serveur);
657
+    }
658
+
659
+    foreach ($cles as $k => $v) {
660
+        $keys .= "$s\n\t\t$k ($v)";
661
+        if ($k == "PRIMARY KEY") {
662
+            $p = $v;
663
+        }
664
+        $s = ",";
665
+    }
666
+    $s = '';
667
+
668
+    $character_set = "";
669
+    if (@$GLOBALS['meta']['charset_sql_base']) {
670
+        $character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
671
+    }
672
+    if (@$GLOBALS['meta']['charset_collation_sql_base']) {
673
+        $character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
674
+    }
675
+
676
+    foreach ($champs as $k => $v) {
677
+        $v = _mysql_remplacements_definitions_table($v);
678
+        if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
679
+            if (preg_match(',(char|text),i', $defs[1])
680
+                and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
681
+            ) {
682
+                $v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
683
+            }
684
+        }
685
+
686
+        $query .= "$s\n\t\t$k $v"
687
+            . (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
688
+                ? " auto_increment"
689
+                : ''
690
+            );
691
+        $s = ",";
692
+    }
693
+    $temporary = $temporary ? 'TEMPORARY' : '';
694
+    $q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
695
+        . " ENGINE=MyISAM"
696
+        . ($character_set ? " DEFAULT $character_set" : "")
697
+        . "\n";
698
+
699
+    return spip_mysql_query($q, $serveur);
700 700
 }
701 701
 
702 702
 
@@ -709,25 +709,25 @@  discard block
 block discarded – undo
709 709
  *     Définition SQL adaptée pour MySQL d'un champ de table
710 710
  */
711 711
 function _mysql_remplacements_definitions_table($query) {
712
-	// quelques remplacements
713
-	$num = "(\s*\([0-9]*\))?";
714
-	$enum = "(\s*\([^\)]*\))?";
715
-
716
-	$remplace = array(
717
-		'/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
718
-		'/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
719
-	);
720
-
721
-	if (is_string($query)) {
722
-		$query = preg_replace(array_keys($remplace), $remplace, $query);
723
-	} elseif (is_array($query)) {
724
-		$keys = array_keys($remplace);
725
-		foreach ($query as $k => $q) {
726
-			$query[$k] = preg_replace($keys, $remplace, $q);
727
-		}
728
-	}
729
-
730
-	return $query;
712
+    // quelques remplacements
713
+    $num = "(\s*\([0-9]*\))?";
714
+    $enum = "(\s*\([^\)]*\))?";
715
+
716
+    $remplace = array(
717
+        '/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
718
+        '/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
719
+    );
720
+
721
+    if (is_string($query)) {
722
+        $query = preg_replace(array_keys($remplace), $remplace, $query);
723
+    } elseif (is_array($query)) {
724
+        $keys = array_keys($remplace);
725
+        foreach ($query as $k => $q) {
726
+            $query[$k] = preg_replace($keys, $remplace, $q);
727
+        }
728
+    }
729
+
730
+    return $query;
731 731
 }
732 732
 
733 733
 
@@ -740,7 +740,7 @@  discard block
 block discarded – undo
740 740
  * @return bool true si la base est créee.
741 741
  **/
742 742
 function spip_mysql_create_base($nom, $serveur = '', $requeter = true) {
743
-	return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
743
+    return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
744 744
 }
745 745
 
746 746
 
@@ -761,19 +761,19 @@  discard block
 block discarded – undo
761 761
  *     - string texte de la requête si $requeter vaut false
762 762
  */
763 763
 function spip_mysql_create_view($nom, $query_select, $serveur = '', $requeter = true) {
764
-	if (!$query_select) {
765
-		return false;
766
-	}
767
-	// vue deja presente
768
-	if (sql_showtable($nom, false, $serveur)) {
769
-		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
764
+    if (!$query_select) {
765
+        return false;
766
+    }
767
+    // vue deja presente
768
+    if (sql_showtable($nom, false, $serveur)) {
769
+        spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
770 770
 
771
-		return false;
772
-	}
771
+        return false;
772
+    }
773 773
 
774
-	$query = "CREATE VIEW $nom AS " . $query_select;
774
+    $query = "CREATE VIEW $nom AS " . $query_select;
775 775
 
776
-	return spip_mysql_query($query, $serveur, $requeter);
776
+    return spip_mysql_query($query, $serveur, $requeter);
777 777
 }
778 778
 
779 779
 
@@ -789,11 +789,11 @@  discard block
 block discarded – undo
789 789
  *     - true si la requête a réussie, false sinon
790 790
  */
791 791
 function spip_mysql_drop_table($table, $exist = '', $serveur = '', $requeter = true) {
792
-	if ($exist) {
793
-		$exist = " IF EXISTS";
794
-	}
792
+    if ($exist) {
793
+        $exist = " IF EXISTS";
794
+    }
795 795
 
796
-	return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
796
+    return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
797 797
 }
798 798
 
799 799
 /**
@@ -808,11 +808,11 @@  discard block
 block discarded – undo
808 808
  *     - true si la requête a réussie, false sinon
809 809
  */
810 810
 function spip_mysql_drop_view($view, $exist = '', $serveur = '', $requeter = true) {
811
-	if ($exist) {
812
-		$exist = " IF EXISTS";
813
-	}
811
+    if ($exist) {
812
+        $exist = " IF EXISTS";
813
+    }
814 814
 
815
-	return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
815
+    return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
816 816
 }
817 817
 
818 818
 /**
@@ -829,7 +829,7 @@  discard block
 block discarded – undo
829 829
  *     Ressource à utiliser avec sql_fetch()
830 830
  **/
831 831
 function spip_mysql_showbase($match, $serveur = '', $requeter = true) {
832
-	return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
832
+    return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
833 833
 }
834 834
 
835 835
 /**
@@ -845,7 +845,7 @@  discard block
 block discarded – undo
845 845
  *     - true si la requête a réussie, false sinon
846 846
  */
847 847
 function spip_mysql_repair($table, $serveur = '', $requeter = true) {
848
-	return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
848
+    return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
849 849
 }
850 850
 
851 851
 
@@ -869,86 +869,86 @@  discard block
 block discarded – undo
869 869
  *     - array description de la table sinon
870 870
  */
871 871
 function spip_mysql_showtable($nom_table, $serveur = '', $requeter = true) {
872
-	$s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
873
-	if (!$s) {
874
-		return '';
875
-	}
876
-	if (!$requeter) {
877
-		return $s;
878
-	}
879
-
880
-	list(, $a) = mysqli_fetch_array($s, MYSQLI_NUM);
881
-	if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
882
-		$desc = $r[1];
883
-		// extraction d'une KEY éventuelle en prenant garde de ne pas
884
-		// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
885
-		if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
886
-			$namedkeys = $r[2];
887
-			$desc = $r[1];
888
-		} else {
889
-			$namedkeys = "";
890
-		}
891
-
892
-		$fields = array();
893
-		foreach (preg_split("/,\s*`/", $desc) as $v) {
894
-			preg_match("/^\s*`?([^`]*)`\s*(.*)/", $v, $r);
895
-			$fields[strtolower($r[1])] = $r[2];
896
-		}
897
-		$keys = array();
898
-
899
-		foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
900
-			if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
901
-				$k = str_replace("`", '', trim($r[1]));
902
-				$t = strtolower(str_replace("`", '', $r[2]));
903
-				if ($k && !isset($keys[$k])) {
904
-					$keys[$k] = $t;
905
-				} else {
906
-					$keys[] = $t;
907
-				}
908
-			}
909
-		}
910
-		spip_mysql_free($s);
911
-
912
-		return array('field' => $fields, 'key' => $keys);
913
-	}
914
-
915
-	$res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
916
-	if ($res) {
917
-		$nfields = array();
918
-		$nkeys = array();
919
-		while ($val = spip_mysql_fetch($res)) {
920
-			$nfields[$val["Field"]] = $val['Type'];
921
-			if ($val['Null'] == 'NO') {
922
-				$nfields[$val["Field"]] .= ' NOT NULL';
923
-			}
924
-			if ($val['Default'] === '0' || $val['Default']) {
925
-				if (preg_match('/[A-Z_]/', $val['Default'])) {
926
-					$nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
927
-				} else {
928
-					$nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
929
-				}
930
-			}
931
-			if ($val['Extra']) {
932
-				$nfields[$val["Field"]] .= ' ' . $val['Extra'];
933
-			}
934
-			if ($val['Key'] == 'PRI') {
935
-				$nkeys['PRIMARY KEY'] = $val["Field"];
936
-			} else {
937
-				if ($val['Key'] == 'MUL') {
938
-					$nkeys['KEY ' . $val["Field"]] = $val["Field"];
939
-				} else {
940
-					if ($val['Key'] == 'UNI') {
941
-						$nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
942
-					}
943
-				}
944
-			}
945
-		}
946
-		spip_mysql_free($res);
947
-
948
-		return array('field' => $nfields, 'key' => $nkeys);
949
-	}
950
-
951
-	return "";
872
+    $s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
873
+    if (!$s) {
874
+        return '';
875
+    }
876
+    if (!$requeter) {
877
+        return $s;
878
+    }
879
+
880
+    list(, $a) = mysqli_fetch_array($s, MYSQLI_NUM);
881
+    if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
882
+        $desc = $r[1];
883
+        // extraction d'une KEY éventuelle en prenant garde de ne pas
884
+        // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
885
+        if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
886
+            $namedkeys = $r[2];
887
+            $desc = $r[1];
888
+        } else {
889
+            $namedkeys = "";
890
+        }
891
+
892
+        $fields = array();
893
+        foreach (preg_split("/,\s*`/", $desc) as $v) {
894
+            preg_match("/^\s*`?([^`]*)`\s*(.*)/", $v, $r);
895
+            $fields[strtolower($r[1])] = $r[2];
896
+        }
897
+        $keys = array();
898
+
899
+        foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
900
+            if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
901
+                $k = str_replace("`", '', trim($r[1]));
902
+                $t = strtolower(str_replace("`", '', $r[2]));
903
+                if ($k && !isset($keys[$k])) {
904
+                    $keys[$k] = $t;
905
+                } else {
906
+                    $keys[] = $t;
907
+                }
908
+            }
909
+        }
910
+        spip_mysql_free($s);
911
+
912
+        return array('field' => $fields, 'key' => $keys);
913
+    }
914
+
915
+    $res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
916
+    if ($res) {
917
+        $nfields = array();
918
+        $nkeys = array();
919
+        while ($val = spip_mysql_fetch($res)) {
920
+            $nfields[$val["Field"]] = $val['Type'];
921
+            if ($val['Null'] == 'NO') {
922
+                $nfields[$val["Field"]] .= ' NOT NULL';
923
+            }
924
+            if ($val['Default'] === '0' || $val['Default']) {
925
+                if (preg_match('/[A-Z_]/', $val['Default'])) {
926
+                    $nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
927
+                } else {
928
+                    $nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
929
+                }
930
+            }
931
+            if ($val['Extra']) {
932
+                $nfields[$val["Field"]] .= ' ' . $val['Extra'];
933
+            }
934
+            if ($val['Key'] == 'PRI') {
935
+                $nkeys['PRIMARY KEY'] = $val["Field"];
936
+            } else {
937
+                if ($val['Key'] == 'MUL') {
938
+                    $nkeys['KEY ' . $val["Field"]] = $val["Field"];
939
+                } else {
940
+                    if ($val['Key'] == 'UNI') {
941
+                        $nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
942
+                    }
943
+                }
944
+            }
945
+        }
946
+        spip_mysql_free($res);
947
+
948
+        return array('field' => $nfields, 'key' => $nkeys);
949
+    }
950
+
951
+    return "";
952 952
 }
953 953
 
954 954
 
@@ -964,12 +964,12 @@  discard block
 block discarded – undo
964 964
  * @return array           Ligne de résultat
965 965
  */
966 966
 function spip_mysql_fetch($r, $t = '', $serveur = '', $requeter = true) {
967
-	if (!$t) {
968
-		$t = MYSQLI_ASSOC;
969
-	}
970
-	if ($r) {
971
-		return mysqli_fetch_array($r, $t);
972
-	}
967
+    if (!$t) {
968
+        $t = MYSQLI_ASSOC;
969
+    }
970
+    if ($r) {
971
+        return mysqli_fetch_array($r, $t);
972
+    }
973 973
 }
974 974
 
975 975
 /**
@@ -982,9 +982,9 @@  discard block
 block discarded – undo
982 982
  * @return bool True si déplacement réussi, false sinon.
983 983
  **/
984 984
 function spip_mysql_seek($r, $row_number, $serveur = '', $requeter = true) {
985
-	if ($r and mysqli_num_rows($r)) {
986
-		return mysqli_data_seek($r, $row_number);
987
-	}
985
+    if ($r and mysqli_num_rows($r)) {
986
+        return mysqli_data_seek($r, $row_number);
987
+    }
988 988
 }
989 989
 
990 990
 
@@ -1002,26 +1002,26 @@  discard block
 block discarded – undo
1002 1002
  *     - int Nombre de lignes (0 si la requête n'a pas réussie)
1003 1003
  **/
1004 1004
 function spip_mysql_countsel(
1005
-	$from = array(),
1006
-	$where = array(),
1007
-	$groupby = '',
1008
-	$having = array(),
1009
-	$serveur = '',
1010
-	$requeter = true
1005
+    $from = array(),
1006
+    $where = array(),
1007
+    $groupby = '',
1008
+    $having = array(),
1009
+    $serveur = '',
1010
+    $requeter = true
1011 1011
 ) {
1012
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1013
-
1014
-	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1015
-	if (!$requeter) {
1016
-		return $r;
1017
-	}
1018
-	if (!$r instanceof mysqli_result) {
1019
-		return 0;
1020
-	}
1021
-	list($c) = mysqli_fetch_array($r, MYSQLI_NUM);
1022
-	mysqli_free_result($r);
1023
-
1024
-	return $c;
1012
+    $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1013
+
1014
+    $r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1015
+    if (!$requeter) {
1016
+        return $r;
1017
+    }
1018
+    if (!$r instanceof mysqli_result) {
1019
+        return 0;
1020
+    }
1021
+    list($c) = mysqli_fetch_array($r, MYSQLI_NUM);
1022
+    mysqli_free_result($r);
1023
+
1024
+    return $c;
1025 1025
 }
1026 1026
 
1027 1027
 
@@ -1044,16 +1044,16 @@  discard block
 block discarded – undo
1044 1044
  *     Erreur eventuelle
1045 1045
  **/
1046 1046
 function spip_mysql_error($query = '', $serveur = '', $requeter = true) {
1047
-	$link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1048
-	$s = mysqli_error($link);
1049
-	if ($s) {
1050
-		$trace = debug_backtrace();
1051
-		if ($trace[0]['function'] != "spip_mysql_error") {
1052
-			spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1053
-		}
1054
-	}
1055
-
1056
-	return $s;
1047
+    $link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1048
+    $s = mysqli_error($link);
1049
+    if ($s) {
1050
+        $trace = debug_backtrace();
1051
+        if ($trace[0]['function'] != "spip_mysql_error") {
1052
+            spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1053
+        }
1054
+    }
1055
+
1056
+    return $s;
1057 1057
 }
1058 1058
 
1059 1059
 
@@ -1068,18 +1068,18 @@  discard block
 block discarded – undo
1068 1068
  *     0, pas d'erreur. Autre, numéro de l'erreur.
1069 1069
  **/
1070 1070
 function spip_mysql_errno($serveur = '', $requeter = true) {
1071
-	$link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1072
-	$s = mysqli_errno($link);
1073
-	// 2006 MySQL server has gone away
1074
-	// 2013 Lost connection to MySQL server during query
1075
-	if (in_array($s, array(2006, 2013))) {
1076
-		define('spip_interdire_cache', true);
1077
-	}
1078
-	if ($s) {
1079
-		spip_log("Erreur mysql $s", _LOG_ERREUR);
1080
-	}
1081
-
1082
-	return $s;
1071
+    $link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1072
+    $s = mysqli_errno($link);
1073
+    // 2006 MySQL server has gone away
1074
+    // 2013 Lost connection to MySQL server during query
1075
+    if (in_array($s, array(2006, 2013))) {
1076
+        define('spip_interdire_cache', true);
1077
+    }
1078
+    if ($s) {
1079
+        spip_log("Erreur mysql $s", _LOG_ERREUR);
1080
+    }
1081
+
1082
+    return $s;
1083 1083
 }
1084 1084
 
1085 1085
 
@@ -1093,9 +1093,9 @@  discard block
 block discarded – undo
1093 1093
  * @return int               Nombre de lignes
1094 1094
  */
1095 1095
 function spip_mysql_count($r, $serveur = '', $requeter = true) {
1096
-	if ($r) {
1097
-		return mysqli_num_rows($r);
1098
-	}
1096
+    if ($r) {
1097
+        return mysqli_num_rows($r);
1098
+    }
1099 1099
 }
1100 1100
 
1101 1101
 
@@ -1111,7 +1111,7 @@  discard block
 block discarded – undo
1111 1111
  * @return bool              True si réussi
1112 1112
  */
1113 1113
 function spip_mysql_free($r, $serveur = '', $requeter = true) {
1114
-	return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1114
+    return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1115 1115
 }
1116 1116
 
1117 1117
 
@@ -1139,47 +1139,47 @@  discard block
 block discarded – undo
1139 1139
  **/
1140 1140
 function spip_mysql_insert($table, $champs, $valeurs, $desc = array(), $serveur = '', $requeter = true) {
1141 1141
 
1142
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1143
-	$link = $connexion['link'];
1144
-	$table = prefixer_table_spip($table, $connexion['prefixe']);
1145
-
1146
-	// remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
1147
-	if (defined('_MYSQL_NOPLANES')
1148
-		and _MYSQL_NOPLANES
1149
-		and !empty($GLOBALS['meta']['charset_sql_connexion'])
1150
-		and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8') {
1151
-		include_spip('inc/charsets');
1152
-		$valeurs = utf8_noplanes($valeurs);
1153
-	}
1154
-
1155
-	$query = "INSERT INTO $table $champs VALUES $valeurs";
1156
-	if (!$requeter) {
1157
-		return $query;
1158
-	}
1159
-
1160
-	if (isset($_GET['var_profile'])) {
1161
-		include_spip('public/tracer');
1162
-		$t = trace_query_start();
1163
-		$e = '';
1164
-	} else {
1165
-		$t = 0;
1166
-	}
1167
-
1168
-	$connexion['last'] = $query;
1169
-	#spip_log($query, 'mysql.'._LOG_DEBUG);
1170
-	$r = false;
1171
-	if (mysqli_query($link, $query)) {
1172
-		$r = mysqli_insert_id($link);
1173
-	} else {
1174
-		// Log de l'erreur eventuelle
1175
-		if ($e = spip_mysql_errno($serveur)) {
1176
-			$e .= spip_mysql_error($query, $serveur);
1177
-		} // et du fautif
1178
-	}
1179
-
1180
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1181
-
1182
-	// return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1142
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1143
+    $link = $connexion['link'];
1144
+    $table = prefixer_table_spip($table, $connexion['prefixe']);
1145
+
1146
+    // remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
1147
+    if (defined('_MYSQL_NOPLANES')
1148
+        and _MYSQL_NOPLANES
1149
+        and !empty($GLOBALS['meta']['charset_sql_connexion'])
1150
+        and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8') {
1151
+        include_spip('inc/charsets');
1152
+        $valeurs = utf8_noplanes($valeurs);
1153
+    }
1154
+
1155
+    $query = "INSERT INTO $table $champs VALUES $valeurs";
1156
+    if (!$requeter) {
1157
+        return $query;
1158
+    }
1159
+
1160
+    if (isset($_GET['var_profile'])) {
1161
+        include_spip('public/tracer');
1162
+        $t = trace_query_start();
1163
+        $e = '';
1164
+    } else {
1165
+        $t = 0;
1166
+    }
1167
+
1168
+    $connexion['last'] = $query;
1169
+    #spip_log($query, 'mysql.'._LOG_DEBUG);
1170
+    $r = false;
1171
+    if (mysqli_query($link, $query)) {
1172
+        $r = mysqli_insert_id($link);
1173
+    } else {
1174
+        // Log de l'erreur eventuelle
1175
+        if ($e = spip_mysql_errno($serveur)) {
1176
+            $e .= spip_mysql_error($query, $serveur);
1177
+        } // et du fautif
1178
+    }
1179
+
1180
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1181
+
1182
+    // return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1183 1183
 }
1184 1184
 
1185 1185
 /**
@@ -1204,20 +1204,20 @@  discard block
 block discarded – undo
1204 1204
  **/
1205 1205
 function spip_mysql_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1206 1206
 
1207
-	if (!$desc) {
1208
-		$desc = description_table($table, $serveur);
1209
-	}
1210
-	if (!$desc) {
1211
-		$couples = array();
1212
-	}
1213
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1207
+    if (!$desc) {
1208
+        $desc = description_table($table, $serveur);
1209
+    }
1210
+    if (!$desc) {
1211
+        $couples = array();
1212
+    }
1213
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1214 1214
 
1215
-	foreach ($couples as $champ => $val) {
1216
-		$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1217
-	}
1215
+    foreach ($couples as $champ => $val) {
1216
+        $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1217
+    }
1218 1218
 
1219
-	return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1220
-		$serveur, $requeter);
1219
+    return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1220
+        $serveur, $requeter);
1221 1221
 }
1222 1222
 
1223 1223
 
@@ -1242,34 +1242,34 @@  discard block
 block discarded – undo
1242 1242
  **/
1243 1243
 function spip_mysql_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1244 1244
 
1245
-	if (!$desc) {
1246
-		$desc = description_table($table, $serveur);
1247
-	}
1248
-	if (!$desc) {
1249
-		$tab_couples = array();
1250
-	}
1251
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1252
-
1253
-	$cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1254
-	$valeurs = array();
1255
-	$r = false;
1256
-
1257
-	// Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1258
-	foreach ($tab_couples as $couples) {
1259
-		foreach ($couples as $champ => $val) {
1260
-			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1261
-		}
1262
-		$valeurs[] = '(' . join(',', $couples) . ')';
1263
-		if (count($valeurs) >= 100) {
1264
-			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1265
-			$valeurs = array();
1266
-		}
1267
-	}
1268
-	if (count($valeurs)) {
1269
-		$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1270
-	}
1271
-
1272
-	return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1245
+    if (!$desc) {
1246
+        $desc = description_table($table, $serveur);
1247
+    }
1248
+    if (!$desc) {
1249
+        $tab_couples = array();
1250
+    }
1251
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1252
+
1253
+    $cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1254
+    $valeurs = array();
1255
+    $r = false;
1256
+
1257
+    // Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1258
+    foreach ($tab_couples as $couples) {
1259
+        foreach ($couples as $champ => $val) {
1260
+            $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1261
+        }
1262
+        $valeurs[] = '(' . join(',', $couples) . ')';
1263
+        if (count($valeurs) >= 100) {
1264
+            $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1265
+            $valeurs = array();
1266
+        }
1267
+    }
1268
+    if (count($valeurs)) {
1269
+        $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1270
+    }
1271
+
1272
+    return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1273 1273
 }
1274 1274
 
1275 1275
 /**
@@ -1294,17 +1294,17 @@  discard block
 block discarded – undo
1294 1294
  *     - array Tableau décrivant la requête et son temps d'exécution si var_profile est actif
1295 1295
  */
1296 1296
 function spip_mysql_update($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1297
-	$set = array();
1298
-	foreach ($champs as $champ => $val) {
1299
-		$set[] = $champ . "=$val";
1300
-	}
1301
-	if (!empty($set)) {
1302
-		return spip_mysql_query(
1303
-			calculer_mysql_expression('UPDATE', $table, ',')
1304
-			. calculer_mysql_expression('SET', $set, ',')
1305
-			. calculer_mysql_expression('WHERE', $where),
1306
-			$serveur, $requeter);
1307
-	}
1297
+    $set = array();
1298
+    foreach ($champs as $champ => $val) {
1299
+        $set[] = $champ . "=$val";
1300
+    }
1301
+    if (!empty($set)) {
1302
+        return spip_mysql_query(
1303
+            calculer_mysql_expression('UPDATE', $table, ',')
1304
+            . calculer_mysql_expression('SET', $set, ',')
1305
+            . calculer_mysql_expression('WHERE', $where),
1306
+            $serveur, $requeter);
1307
+    }
1308 1308
 }
1309 1309
 
1310 1310
 /**
@@ -1337,27 +1337,27 @@  discard block
 block discarded – undo
1337 1337
  */
1338 1338
 function spip_mysql_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1339 1339
 
1340
-	if (!$champs) {
1341
-		return;
1342
-	}
1343
-	if (!$desc) {
1344
-		$desc = description_table($table, $serveur);
1345
-	}
1346
-	if (!$desc) {
1347
-		$champs = array();
1348
-	} else {
1349
-		$fields = $desc['field'];
1350
-	}
1351
-	$set = array();
1352
-	foreach ($champs as $champ => $val) {
1353
-		$set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1354
-	}
1355
-
1356
-	return spip_mysql_query(
1357
-		calculer_mysql_expression('UPDATE', $table, ',')
1358
-		. calculer_mysql_expression('SET', $set, ',')
1359
-		. calculer_mysql_expression('WHERE', $where),
1360
-		$serveur, $requeter);
1340
+    if (!$champs) {
1341
+        return;
1342
+    }
1343
+    if (!$desc) {
1344
+        $desc = description_table($table, $serveur);
1345
+    }
1346
+    if (!$desc) {
1347
+        $champs = array();
1348
+    } else {
1349
+        $fields = $desc['field'];
1350
+    }
1351
+    $set = array();
1352
+    foreach ($champs as $champ => $val) {
1353
+        $set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1354
+    }
1355
+
1356
+    return spip_mysql_query(
1357
+        calculer_mysql_expression('UPDATE', $table, ',')
1358
+        . calculer_mysql_expression('SET', $set, ',')
1359
+        . calculer_mysql_expression('WHERE', $where),
1360
+        $serveur, $requeter);
1361 1361
 }
1362 1362
 
1363 1363
 /**
@@ -1373,20 +1373,20 @@  discard block
 block discarded – undo
1373 1373
  *     - False en cas d'erreur.
1374 1374
  **/
1375 1375
 function spip_mysql_delete($table, $where = '', $serveur = '', $requeter = true) {
1376
-	$res = spip_mysql_query(
1377
-		calculer_mysql_expression('DELETE FROM', $table, ',')
1378
-		. calculer_mysql_expression('WHERE', $where),
1379
-		$serveur, $requeter);
1380
-	if (!$requeter) {
1381
-		return $res;
1382
-	}
1383
-	if ($res) {
1384
-		$link = _mysql_link($serveur);
1385
-
1386
-		return mysqli_affected_rows($link);
1387
-	} else {
1388
-		return false;
1389
-	}
1376
+    $res = spip_mysql_query(
1377
+        calculer_mysql_expression('DELETE FROM', $table, ',')
1378
+        . calculer_mysql_expression('WHERE', $where),
1379
+        $serveur, $requeter);
1380
+    if (!$requeter) {
1381
+        return $res;
1382
+    }
1383
+    if ($res) {
1384
+        $link = _mysql_link($serveur);
1385
+
1386
+        return mysqli_affected_rows($link);
1387
+    } else {
1388
+        return false;
1389
+    }
1390 1390
 }
1391 1391
 
1392 1392
 
@@ -1415,8 +1415,8 @@  discard block
 block discarded – undo
1415 1415
  *     - False en cas d'erreur.
1416 1416
  **/
1417 1417
 function spip_mysql_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1418
-	return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1419
-			array_map('_q', $couples)) . ')', $serveur, $requeter);
1418
+    return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1419
+            array_map('_q', $couples)) . ')', $serveur, $requeter);
1420 1420
 }
1421 1421
 
1422 1422
 
@@ -1445,14 +1445,14 @@  discard block
 block discarded – undo
1445 1445
  *     - False en cas d'erreur.
1446 1446
  **/
1447 1447
 function spip_mysql_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1448
-	$cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1449
-	$valeurs = array();
1450
-	foreach ($tab_couples as $couples) {
1451
-		$valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1452
-	}
1453
-	$valeurs = implode(', ', $valeurs);
1454
-
1455
-	return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1448
+    $cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1449
+    $valeurs = array();
1450
+    foreach ($tab_couples as $couples) {
1451
+        $valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1452
+    }
1453
+    $valeurs = implode(', ', $valeurs);
1454
+
1455
+    return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1456 1456
 }
1457 1457
 
1458 1458
 
@@ -1467,32 +1467,32 @@  discard block
 block discarded – undo
1467 1467
  * @return string       Texte de sélection pour la requête
1468 1468
  */
1469 1469
 function spip_mysql_multi($objet, $lang) {
1470
-	$lengthlang = strlen("[$lang]");
1471
-	$posmulti = "INSTR(" . $objet . ", '<multi>')";
1472
-	$posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1473
-	$debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1474
-	$finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1475
-	$chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1476
-	$poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1477
-	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1478
-	$chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1479
-	$posfinlang = "INSTR(" . $chainelang . ", '[')";
1480
-	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1481
-	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1482
-	$retour = "(TRIM(IF($posmulti = 0 , " .
1483
-		"     TRIM(" . $objet . "), " .
1484
-		"     CONCAT( " .
1485
-		"          $debutchaine, " .
1486
-		"          IF( " .
1487
-		"               $poslang = 0, " .
1488
-		"                     $chainemulti, " .
1489
-		"               $chainelang" .
1490
-		"          ), " .
1491
-		"          $finchaine" .
1492
-		"     ) " .
1493
-		"))) AS multi";
1494
-
1495
-	return $retour;
1470
+    $lengthlang = strlen("[$lang]");
1471
+    $posmulti = "INSTR(" . $objet . ", '<multi>')";
1472
+    $posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1473
+    $debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1474
+    $finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1475
+    $chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1476
+    $poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1477
+    $poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1478
+    $chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1479
+    $posfinlang = "INSTR(" . $chainelang . ", '[')";
1480
+    $chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1481
+    //$chainelang = "LEFT($chainelang,$posfinlang-1)";
1482
+    $retour = "(TRIM(IF($posmulti = 0 , " .
1483
+        "     TRIM(" . $objet . "), " .
1484
+        "     CONCAT( " .
1485
+        "          $debutchaine, " .
1486
+        "          IF( " .
1487
+        "               $poslang = 0, " .
1488
+        "                     $chainemulti, " .
1489
+        "               $chainelang" .
1490
+        "          ), " .
1491
+        "          $finchaine" .
1492
+        "     ) " .
1493
+        "))) AS multi";
1494
+
1495
+    return $retour;
1496 1496
 }
1497 1497
 
1498 1498
 /**
@@ -1506,7 +1506,7 @@  discard block
 block discarded – undo
1506 1506
  *     Valeur hexadécimale pour MySQL
1507 1507
  **/
1508 1508
 function spip_mysql_hex($v) {
1509
-	return "0x" . $v;
1509
+    return "0x" . $v;
1510 1510
 }
1511 1511
 
1512 1512
 /**
@@ -1522,15 +1522,15 @@  discard block
 block discarded – undo
1522 1522
  *    Donnée prête à être utilisée par le gestionnaire SQL
1523 1523
  */
1524 1524
 function spip_mysql_quote($v, $type = '') {
1525
-	if (!is_array($v)) {
1526
-		return spip_mysql_cite($v, $type);
1527
-	}
1528
-
1529
-	// si c'est un tableau, le parcourir en propageant le type
1530
-	foreach ($v as $k => $r) {
1531
-		$v[$k] = spip_mysql_quote($r, $type);
1532
-	}
1533
-	return implode(',', $v);
1525
+    if (!is_array($v)) {
1526
+        return spip_mysql_cite($v, $type);
1527
+    }
1528
+
1529
+    // si c'est un tableau, le parcourir en propageant le type
1530
+    foreach ($v as $k => $r) {
1531
+        $v[$k] = spip_mysql_quote($r, $type);
1532
+    }
1533
+    return implode(',', $v);
1534 1534
 }
1535 1535
 
1536 1536
 /**
@@ -1546,18 +1546,18 @@  discard block
 block discarded – undo
1546 1546
  *     Expression SQL
1547 1547
  **/
1548 1548
 function spip_mysql_date_proche($champ, $interval, $unite) {
1549
-	$use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1550
-	return '('
1551
-	. $champ
1552
-	. (($interval <= 0) ? '>' : '<')
1553
-	. (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1554
-	. '('
1555
-	. ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s')))
1556
-	. ', INTERVAL '
1557
-	. (($interval > 0) ? $interval : (0 - $interval))
1558
-	. ' '
1559
-	. $unite
1560
-	. '))';
1549
+    $use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1550
+    return '('
1551
+    . $champ
1552
+    . (($interval <= 0) ? '>' : '<')
1553
+    . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1554
+    . '('
1555
+    . ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s')))
1556
+    . ', INTERVAL '
1557
+    . (($interval > 0) ? $interval : (0 - $interval))
1558
+    . ' '
1559
+    . $unite
1560
+    . '))';
1561 1561
 }
1562 1562
 
1563 1563
 
@@ -1581,7 +1581,7 @@  discard block
 block discarded – undo
1581 1581
  *     Expression de requête SQL
1582 1582
  **/
1583 1583
 function spip_mysql_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) {
1584
-	return "($val $not IN ($valeurs))";
1584
+    return "($val $not IN ($valeurs))";
1585 1585
 }
1586 1586
 
1587 1587
 
@@ -1593,36 +1593,36 @@  discard block
 block discarded – undo
1593 1593
  * @return string|number     Texte ou nombre échappé
1594 1594
  */
1595 1595
 function spip_mysql_cite($v, $type) {
1596
-	if (!$type) {
1597
-		if (is_bool($v)) {
1598
-			return strval(intval($v));
1599
-		}
1600
-		elseif (is_numeric($v)) {
1601
-			return strval($v);
1602
-		}
1603
-		return "'" . addslashes($v) . "'";
1604
-	}
1605
-
1606
-	if (is_null($v)
1607
-		and stripos($type, "NOT NULL") === false
1608
-	) {
1609
-		return 'NULL';
1610
-	} // null php se traduit en NULL SQL
1611
-	if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1612
-		return $v;
1613
-	}
1614
-	if (sql_test_int($type)) {
1615
-		if (is_numeric($v) or (ctype_xdigit(substr($v, 2))
1616
-				and $v[0] == '0' and $v[1] == 'x')
1617
-		) {
1618
-			return $v;
1619
-		} // si pas numerique, forcer le intval
1620
-		else {
1621
-			return intval($v);
1622
-		}
1623
-	}
1624
-
1625
-	return ("'" . addslashes($v) . "'");
1596
+    if (!$type) {
1597
+        if (is_bool($v)) {
1598
+            return strval(intval($v));
1599
+        }
1600
+        elseif (is_numeric($v)) {
1601
+            return strval($v);
1602
+        }
1603
+        return "'" . addslashes($v) . "'";
1604
+    }
1605
+
1606
+    if (is_null($v)
1607
+        and stripos($type, "NOT NULL") === false
1608
+    ) {
1609
+        return 'NULL';
1610
+    } // null php se traduit en NULL SQL
1611
+    if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1612
+        return $v;
1613
+    }
1614
+    if (sql_test_int($type)) {
1615
+        if (is_numeric($v) or (ctype_xdigit(substr($v, 2))
1616
+                and $v[0] == '0' and $v[1] == 'x')
1617
+        ) {
1618
+            return $v;
1619
+        } // si pas numerique, forcer le intval
1620
+        else {
1621
+            return intval($v);
1622
+        }
1623
+    }
1624
+
1625
+    return ("'" . addslashes($v) . "'");
1626 1626
 }
1627 1627
 
1628 1628
 /**
@@ -1632,7 +1632,7 @@  discard block
 block discarded – undo
1632 1632
  *     True si on a les fonctions, false sinon
1633 1633
  */
1634 1634
 function spip_versions_mysql() {
1635
-	return function_exists('mysqli_query');
1635
+    return function_exists('mysqli_query');
1636 1636
 }
1637 1637
 
1638 1638
 
@@ -1645,20 +1645,20 @@  discard block
 block discarded – undo
1645 1645
  *     - chaîne : code compilé pour le faire désactiver par SPIP sinon
1646 1646
  */
1647 1647
 function test_rappel_nom_base_mysql($server_db) {
1648
-	$GLOBALS['mysql_rappel_nom_base'] = true;
1649
-	sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1650
-	$ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1648
+    $GLOBALS['mysql_rappel_nom_base'] = true;
1649
+    sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1650
+    $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1651 1651
 
1652
-	if ($ok) {
1653
-		sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1652
+    if ($ok) {
1653
+        sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1654 1654
 
1655
-		return '';
1656
-	} else {
1657
-		$GLOBALS['mysql_rappel_nom_base'] = false;
1655
+        return '';
1656
+    } else {
1657
+        $GLOBALS['mysql_rappel_nom_base'] = false;
1658 1658
 
1659
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1660
-		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1661
-	}
1659
+        return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1660
+        "/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1661
+    }
1662 1662
 }
1663 1663
 
1664 1664
 /**
@@ -1672,13 +1672,13 @@  discard block
 block discarded – undo
1672 1672
  *     - chaîne : code compilé pour l'indiquer le résultat du test à SPIP
1673 1673
  */
1674 1674
 function test_sql_mode_mysql($server_db) {
1675
-	$res = sql_select("version() as v", '', '', '', '', '', '', $server_db);
1676
-	$row = sql_fetch($res, $server_db);
1677
-	if (version_compare($row['v'], '5.0.0', '>=')) {
1678
-		defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1675
+    $res = sql_select("version() as v", '', '', '', '', '', '', $server_db);
1676
+    $row = sql_fetch($res, $server_db);
1677
+    if (version_compare($row['v'], '5.0.0', '>=')) {
1678
+        defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1679 1679
 
1680
-		return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1681
-	}
1680
+        return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1681
+    }
1682 1682
 
1683
-	return '';
1683
+    return '';
1684 1684
 }
Please login to merge, or discard this patch.
Spacing   +73 added lines, -73 removed lines patch added patch discarded remove patch
@@ -48,7 +48,7 @@  discard block
 block discarded – undo
48 48
 	// si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
49 49
 	if (
50 50
 		$port and !is_numeric($socket = $port)
51
-		and (!$host or $host=='localhost')) {
51
+		and (!$host or $host == 'localhost')) {
52 52
 		$link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53 53
 	}
54 54
 	elseif ($port) {
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 	}
60 60
 
61 61
 	if (!$link) {
62
-		spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
62
+		spip_log('Echec mysqli_connect. Erreur : '.mysqli_connect_error(), 'mysql.'._LOG_HS);
63 63
 
64 64
 		return false;
65 65
 	}
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
 		}
77 77
 	}
78 78
 
79
-	spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle" : 'impossible'),
79
+	spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe ".($ok ? "operationnelle" : 'impossible'),
80 80
 		_LOG_DEBUG);
81 81
 
82 82
 	return !$ok ? false : array(
@@ -165,9 +165,9 @@  discard block
 block discarded – undo
165 165
  */
166 166
 function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) {
167 167
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
168
-	spip_log("changement de charset sql : " . "SET NAMES " . _q($charset), _LOG_DEBUG);
168
+	spip_log("changement de charset sql : "."SET NAMES "._q($charset), _LOG_DEBUG);
169 169
 
170
-	return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES " . _q($charset));
170
+	return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES "._q($charset));
171 171
 }
172 172
 
173 173
 
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
 function spip_mysql_get_charset($charset = array(), $serveur = '', $requeter = true) {
183 183
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
184 184
 	$connexion['last'] = $c = "SHOW CHARACTER SET"
185
-		. (!$charset ? '' : (" LIKE " . _q($charset['charset'])));
185
+		. (!$charset ? '' : (" LIKE "._q($charset['charset'])));
186 186
 
187 187
 	return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
188 188
 }
@@ -226,19 +226,19 @@  discard block
 block discarded – undo
226 226
 	$debug = '';
227 227
 	if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
228 228
 		if (isset($GLOBALS['debug']['aucasou'])) {
229
-			list(, $id, , $infos) = $GLOBALS['debug']['aucasou'];
230
-			$debug .= "BOUCLE$id @ " . (isset($infos[0]) ? $infos[0] : '') . " | ";
229
+			list(, $id,, $infos) = $GLOBALS['debug']['aucasou'];
230
+			$debug .= "BOUCLE$id @ ".(isset($infos[0]) ? $infos[0] : '')." | ";
231 231
 		}
232 232
 		if (isset($_SERVER['REQUEST_URI'])) {
233 233
 			$debug .= $_SERVER['REQUEST_URI'];
234 234
 		}
235 235
 		if (!empty($GLOBALS['ip'])) {
236
-			$debug .= ' + ' . $GLOBALS['ip'];
236
+			$debug .= ' + '.$GLOBALS['ip'];
237 237
 		}
238
-		$debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
238
+		$debug = ' /* '.mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)).' */';
239 239
 	}
240 240
 
241
-	$r = mysqli_query($link, $query . $debug);
241
+	$r = mysqli_query($link, $query.$debug);
242 242
 
243 243
 	//Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
244 244
 	if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
@@ -251,7 +251,7 @@  discard block
 block discarded – undo
251 251
 			$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
252 252
 			$link = $connexion['link'];
253 253
 			//On retente au cas où
254
-			$r = mysqli_query($link, $query . $debug);
254
+			$r = mysqli_query($link, $query.$debug);
255 255
 		}
256 256
 	}
257 257
 
@@ -279,7 +279,7 @@  discard block
 block discarded – undo
279 279
 	// d'utiliser ceux-ci, copie-colle de phpmyadmin
280 280
 	$query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
281 281
 
282
-	return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
282
+	return spip_mysql_query("ALTER ".$query, $serveur, $requeter); # i.e. que PG se debrouille
283 283
 }
284 284
 
285 285
 
@@ -292,7 +292,7 @@  discard block
 block discarded – undo
292 292
  * @return bool            Toujours true
293 293
  */
294 294
 function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
295
-	spip_mysql_query("OPTIMIZE TABLE " . $table);
295
+	spip_mysql_query("OPTIMIZE TABLE ".$table);
296 296
 
297 297
 	return true;
298 298
 }
@@ -315,7 +315,7 @@  discard block
 block discarded – undo
315 315
 	$link = $connexion['link'];
316 316
 	$db = $connexion['db'];
317 317
 
318
-	$query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
318
+	$query = 'EXPLAIN '._mysql_traite_query($query, $db, $prefixe);
319 319
 	$r = mysqli_query($link, $query);
320 320
 
321 321
 	return spip_mysql_fetch($r, null, $serveur);
@@ -366,7 +366,7 @@  discard block
 block discarded – undo
366 366
 		. calculer_mysql_expression('WHERE', $where)
367 367
 		. calculer_mysql_expression('GROUP BY', $groupby, ',')
368 368
 		. calculer_mysql_expression('HAVING', $having)
369
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
369
+		. ($orderby ? ("\nORDER BY ".spip_mysql_order($orderby)) : '')
370 370
 		. ($limit ? "\nLIMIT $limit" : '');
371 371
 
372 372
 	// renvoyer la requete inerte si demandee
@@ -456,12 +456,12 @@  discard block
 block discarded – undo
456 456
 	$exp = "\n$expression ";
457 457
 
458 458
 	if (!is_array($v)) {
459
-		return $exp . $v;
459
+		return $exp.$v;
460 460
 	} else {
461 461
 		if (strtoupper($join) === 'AND') {
462
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
462
+			return $exp.join("\n\t$join ", array_map('calculer_mysql_where', $v));
463 463
 		} else {
464
-			return $exp . join($join, $v);
464
+			return $exp.join($join, $v);
465 465
 		}
466 466
 	}
467 467
 }
@@ -479,17 +479,17 @@  discard block
 block discarded – undo
479 479
 		if (substr($k, -1) == '@') {
480 480
 			// c'est une jointure qui se refere au from precedent
481 481
 			// pas de virgule
482
-			$res .= '  ' . $v;
482
+			$res .= '  '.$v;
483 483
 		} else {
484 484
 			if (!is_numeric($k)) {
485 485
 				$p = strpos($v, " ");
486 486
 				if ($p) {
487
-					$v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
487
+					$v = substr($v, 0, $p)." AS `$k`".substr($v, $p);
488 488
 				} else {
489 489
 					$v .= " AS `$k`";
490 490
 				}
491 491
 			}
492
-			$res .= ', ' . $v;
492
+			$res .= ', '.$v;
493 493
 		}
494 494
 	}
495 495
 
@@ -518,13 +518,13 @@  discard block
 block discarded – undo
518 518
 function _mysql_traite_query($query, $db = '', $prefixe = '') {
519 519
 
520 520
 	if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
521
-		$pref = '`' . $db . '`.';
521
+		$pref = '`'.$db.'`.';
522 522
 	} else {
523 523
 		$pref = '';
524 524
 	}
525 525
 
526 526
 	if ($prefixe) {
527
-		$pref .= $prefixe . "_";
527
+		$pref .= $prefixe."_";
528 528
 	}
529 529
 
530 530
 	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
@@ -538,12 +538,12 @@  discard block
 block discarded – undo
538 538
 		if (stripos($suite, "SELECT") !== false) {
539 539
 			list($suite, $textes) = query_echappe_textes($suite);
540 540
 			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
541
-				$suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
541
+				$suite = $r[1]._mysql_traite_query($r[2], $db, $prefixe);
542 542
 			}
543 543
 			$suite = query_reinjecte_textes($suite, $textes);
544 544
 		}
545 545
 	}
546
-	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
546
+	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1'.$pref, $query).$suite;
547 547
 
548 548
 	// en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
549 549
 	// remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
@@ -577,7 +577,7 @@  discard block
 block discarded – undo
577 577
 	$link = _mysql_link($serveur);
578 578
 	$ok = mysqli_select_db($link, $db);
579 579
 	if (!$ok) {
580
-		spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
580
+		spip_log('Echec mysqli_selectdb. Erreur : '.mysqli_error($link), 'mysql.'._LOG_CRITIQUE);
581 581
 	}
582 582
 
583 583
 	return $ok;
@@ -667,10 +667,10 @@  discard block
 block discarded – undo
667 667
 
668 668
 	$character_set = "";
669 669
 	if (@$GLOBALS['meta']['charset_sql_base']) {
670
-		$character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
670
+		$character_set .= " CHARACTER SET ".$GLOBALS['meta']['charset_sql_base'];
671 671
 	}
672 672
 	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
673
-		$character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
673
+		$character_set .= " COLLATE ".$GLOBALS['meta']['charset_collation_sql_base'];
674 674
 	}
675 675
 
676 676
 	foreach ($champs as $k => $v) {
@@ -679,7 +679,7 @@  discard block
 block discarded – undo
679 679
 			if (preg_match(',(char|text),i', $defs[1])
680 680
 				and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
681 681
 			) {
682
-				$v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
682
+				$v = $defs[1].$character_set.' '.substr($v, strlen($defs[1]));
683 683
 			}
684 684
 		}
685 685
 
@@ -691,7 +691,7 @@  discard block
 block discarded – undo
691 691
 		$s = ",";
692 692
 	}
693 693
 	$temporary = $temporary ? 'TEMPORARY' : '';
694
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
694
+	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query".($keys ? ",$keys" : '').")"
695 695
 		. " ENGINE=MyISAM"
696 696
 		. ($character_set ? " DEFAULT $character_set" : "")
697 697
 		. "\n";
@@ -771,7 +771,7 @@  discard block
 block discarded – undo
771 771
 		return false;
772 772
 	}
773 773
 
774
-	$query = "CREATE VIEW $nom AS " . $query_select;
774
+	$query = "CREATE VIEW $nom AS ".$query_select;
775 775
 
776 776
 	return spip_mysql_query($query, $serveur, $requeter);
777 777
 }
@@ -829,7 +829,7 @@  discard block
 block discarded – undo
829 829
  *     Ressource à utiliser avec sql_fetch()
830 830
  **/
831 831
 function spip_mysql_showbase($match, $serveur = '', $requeter = true) {
832
-	return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
832
+	return spip_mysql_query("SHOW TABLES LIKE "._q($match), $serveur, $requeter);
833 833
 }
834 834
 
835 835
 /**
@@ -923,22 +923,22 @@  discard block
 block discarded – undo
923 923
 			}
924 924
 			if ($val['Default'] === '0' || $val['Default']) {
925 925
 				if (preg_match('/[A-Z_]/', $val['Default'])) {
926
-					$nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
926
+					$nfields[$val["Field"]] .= ' DEFAULT '.$val['Default'];
927 927
 				} else {
928
-					$nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
928
+					$nfields[$val["Field"]] .= " DEFAULT '".$val['Default']."'";
929 929
 				}
930 930
 			}
931 931
 			if ($val['Extra']) {
932
-				$nfields[$val["Field"]] .= ' ' . $val['Extra'];
932
+				$nfields[$val["Field"]] .= ' '.$val['Extra'];
933 933
 			}
934 934
 			if ($val['Key'] == 'PRI') {
935 935
 				$nkeys['PRIMARY KEY'] = $val["Field"];
936 936
 			} else {
937 937
 				if ($val['Key'] == 'MUL') {
938
-					$nkeys['KEY ' . $val["Field"]] = $val["Field"];
938
+					$nkeys['KEY '.$val["Field"]] = $val["Field"];
939 939
 				} else {
940 940
 					if ($val['Key'] == 'UNI') {
941
-						$nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
941
+						$nkeys['UNIQUE KEY '.$val["Field"]] = $val["Field"];
942 942
 					}
943 943
 				}
944 944
 			}
@@ -1009,7 +1009,7 @@  discard block
 block discarded – undo
1009 1009
 	$serveur = '',
1010 1010
 	$requeter = true
1011 1011
 ) {
1012
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1012
+	$c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby)));
1013 1013
 
1014 1014
 	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1015 1015
 	if (!$requeter) {
@@ -1049,7 +1049,7 @@  discard block
 block discarded – undo
1049 1049
 	if ($s) {
1050 1050
 		$trace = debug_backtrace();
1051 1051
 		if ($trace[0]['function'] != "spip_mysql_error") {
1052
-			spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1052
+			spip_log("$s - $query - ".sql_error_backtrace(), 'mysql.'._LOG_ERREUR);
1053 1053
 		}
1054 1054
 	}
1055 1055
 
@@ -1216,7 +1216,7 @@  discard block
 block discarded – undo
1216 1216
 		$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1217 1217
 	}
1218 1218
 
1219
-	return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1219
+	return spip_mysql_insert($table, "(".join(',', array_keys($couples)).")", "(".join(',', $couples).")", $desc,
1220 1220
 		$serveur, $requeter);
1221 1221
 }
1222 1222
 
@@ -1250,7 +1250,7 @@  discard block
 block discarded – undo
1250 1250
 	}
1251 1251
 	$fields = isset($desc['field']) ? $desc['field'] : array();
1252 1252
 
1253
-	$cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1253
+	$cles = "(".join(',', array_keys(reset($tab_couples))).')';
1254 1254
 	$valeurs = array();
1255 1255
 	$r = false;
1256 1256
 
@@ -1259,7 +1259,7 @@  discard block
 block discarded – undo
1259 1259
 		foreach ($couples as $champ => $val) {
1260 1260
 			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1261 1261
 		}
1262
-		$valeurs[] = '(' . join(',', $couples) . ')';
1262
+		$valeurs[] = '('.join(',', $couples).')';
1263 1263
 		if (count($valeurs) >= 100) {
1264 1264
 			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1265 1265
 			$valeurs = array();
@@ -1296,7 +1296,7 @@  discard block
 block discarded – undo
1296 1296
 function spip_mysql_update($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1297 1297
 	$set = array();
1298 1298
 	foreach ($champs as $champ => $val) {
1299
-		$set[] = $champ . "=$val";
1299
+		$set[] = $champ."=$val";
1300 1300
 	}
1301 1301
 	if (!empty($set)) {
1302 1302
 		return spip_mysql_query(
@@ -1350,7 +1350,7 @@  discard block
 block discarded – undo
1350 1350
 	}
1351 1351
 	$set = array();
1352 1352
 	foreach ($champs as $champ => $val) {
1353
-		$set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1353
+		$set[] = $champ.'='.spip_mysql_cite($val, @$fields[$champ]);
1354 1354
 	}
1355 1355
 
1356 1356
 	return spip_mysql_query(
@@ -1415,8 +1415,8 @@  discard block
 block discarded – undo
1415 1415
  *     - False en cas d'erreur.
1416 1416
  **/
1417 1417
 function spip_mysql_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1418
-	return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1419
-			array_map('_q', $couples)) . ')', $serveur, $requeter);
1418
+	return spip_mysql_query("REPLACE $table (".join(',', array_keys($couples)).') VALUES ('.join(',',
1419
+			array_map('_q', $couples)).')', $serveur, $requeter);
1420 1420
 }
1421 1421
 
1422 1422
 
@@ -1445,10 +1445,10 @@  discard block
 block discarded – undo
1445 1445
  *     - False en cas d'erreur.
1446 1446
  **/
1447 1447
 function spip_mysql_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1448
-	$cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1448
+	$cles = "(".join(',', array_keys($tab_couples[0])).')';
1449 1449
 	$valeurs = array();
1450 1450
 	foreach ($tab_couples as $couples) {
1451
-		$valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1451
+		$valeurs[] = '('.join(',', array_map('_q', $couples)).')';
1452 1452
 	}
1453 1453
 	$valeurs = implode(', ', $valeurs);
1454 1454
 
@@ -1468,28 +1468,28 @@  discard block
 block discarded – undo
1468 1468
  */
1469 1469
 function spip_mysql_multi($objet, $lang) {
1470 1470
 	$lengthlang = strlen("[$lang]");
1471
-	$posmulti = "INSTR(" . $objet . ", '<multi>')";
1472
-	$posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1473
-	$debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1474
-	$finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1475
-	$chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1476
-	$poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1471
+	$posmulti = "INSTR(".$objet.", '<multi>')";
1472
+	$posfinmulti = "INSTR(".$objet.", '</multi>')";
1473
+	$debutchaine = "LEFT(".$objet.", $posmulti-1)";
1474
+	$finchaine = "RIGHT(".$objet.", CHAR_LENGTH(".$objet.") -(7+$posfinmulti))";
1475
+	$chainemulti = "TRIM(SUBSTRING(".$objet.", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1476
+	$poslang = "INSTR($chainemulti,'[".$lang."]')";
1477 1477
 	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1478
-	$chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1479
-	$posfinlang = "INSTR(" . $chainelang . ", '[')";
1478
+	$chainelang = "TRIM(SUBSTRING(".$objet.", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1479
+	$posfinlang = "INSTR(".$chainelang.", '[')";
1480 1480
 	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1481 1481
 	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1482
-	$retour = "(TRIM(IF($posmulti = 0 , " .
1483
-		"     TRIM(" . $objet . "), " .
1484
-		"     CONCAT( " .
1485
-		"          $debutchaine, " .
1486
-		"          IF( " .
1487
-		"               $poslang = 0, " .
1488
-		"                     $chainemulti, " .
1489
-		"               $chainelang" .
1490
-		"          ), " .
1491
-		"          $finchaine" .
1492
-		"     ) " .
1482
+	$retour = "(TRIM(IF($posmulti = 0 , ".
1483
+		"     TRIM(".$objet."), ".
1484
+		"     CONCAT( ".
1485
+		"          $debutchaine, ".
1486
+		"          IF( ".
1487
+		"               $poslang = 0, ".
1488
+		"                     $chainemulti, ".
1489
+		"               $chainelang".
1490
+		"          ), ".
1491
+		"          $finchaine".
1492
+		"     ) ".
1493 1493
 		"))) AS multi";
1494 1494
 
1495 1495
 	return $retour;
@@ -1506,7 +1506,7 @@  discard block
 block discarded – undo
1506 1506
  *     Valeur hexadécimale pour MySQL
1507 1507
  **/
1508 1508
 function spip_mysql_hex($v) {
1509
-	return "0x" . $v;
1509
+	return "0x".$v;
1510 1510
 }
1511 1511
 
1512 1512
 /**
@@ -1546,7 +1546,7 @@  discard block
 block discarded – undo
1546 1546
  *     Expression SQL
1547 1547
  **/
1548 1548
 function spip_mysql_date_proche($champ, $interval, $unite) {
1549
-	$use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1549
+	$use_now = (($champ === 'maj' or strpos($champ, '.maj')) ? true : false);
1550 1550
 	return '('
1551 1551
 	. $champ
1552 1552
 	. (($interval <= 0) ? '>' : '<')
@@ -1600,7 +1600,7 @@  discard block
 block discarded – undo
1600 1600
 		elseif (is_numeric($v)) {
1601 1601
 			return strval($v);
1602 1602
 		}
1603
-		return "'" . addslashes($v) . "'";
1603
+		return "'".addslashes($v)."'";
1604 1604
 	}
1605 1605
 
1606 1606
 	if (is_null($v)
@@ -1622,7 +1622,7 @@  discard block
 block discarded – undo
1622 1622
 		}
1623 1623
 	}
1624 1624
 
1625
-	return ("'" . addslashes($v) . "'");
1625
+	return ("'".addslashes($v)."'");
1626 1626
 }
1627 1627
 
1628 1628
 /**
@@ -1656,7 +1656,7 @@  discard block
 block discarded – undo
1656 1656
 	} else {
1657 1657
 		$GLOBALS['mysql_rappel_nom_base'] = false;
1658 1658
 
1659
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1659
+		return "\$GLOBALS['mysql_rappel_nom_base'] = false; ".
1660 1660
 		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1661 1661
 	}
1662 1662
 }
Please login to merge, or discard this patch.
ecrire/xml/valider.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -319,7 +319,7 @@
 block discarded – undo
319 319
 	/**
320 320
 	 * Constructeur
321 321
 	 *
322
-	 * @param array $process ?
322
+	 * @param boolean $process ?
323 323
 	 **/
324 324
 	public function __construct($process = array()) {
325 325
 		if (is_array($process)) {
Please login to merge, or discard this patch.
Indentation   +331 added lines, -331 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 /**
@@ -23,333 +23,333 @@  discard block
 block discarded – undo
23 23
  **/
24 24
 class ValidateurXML {
25 25
 
26
-	// https://code.spip.net/@validerElement
27
-	public function validerElement($phraseur, $name, $attrs) {
28
-		if (!($p = isset($this->dtc->elements[$name]))) {
29
-			if ($p = strpos($name, ':')) {
30
-				$name = substr($name, $p + 1);
31
-				$p = isset($this->dtc->elements[$name]);
32
-			}
33
-			if (!$p) {
34
-				coordonnees_erreur($this, " <b>$name</b>&nbsp;: "
35
-					. _T('zxml_inconnu_balise'));
36
-
37
-				return;
38
-			}
39
-		}
40
-		// controler les filles illegitimes, ca suffit 
41
-		$depth = $this->depth;
42
-		$ouvrant = $this->ouvrant;
43
-		#spip_log("trouve $name apres " . $ouvrant[$depth]);
44
-		if (isset($ouvrant[$depth])) {
45
-			if (preg_match('/^\s*(\w+)/', $ouvrant[$depth], $r)) {
46
-				$pere = $r[1];
47
-				#spip_log("pere $pere");
48
-				if (isset($this->dtc->elements[$pere])) {
49
-					$fils = $this->dtc->elements[$pere];
50
-					#spip_log("rejeton $name fils " . @join(',',$fils));
51
-					if (!($p = @in_array($name, $fils))) {
52
-						if ($p = strpos($name, ':')) {
53
-							$p = substr($name, $p + 1);
54
-							$p = @in_array($p, $fils);
55
-						}
56
-					}
57
-					if (!$p) {
58
-						$bons_peres = @join('</b>, <b>', $this->dtc->peres[$name]);
59
-						coordonnees_erreur($this, " <b>$name</b> "
60
-							. _T('zxml_non_fils')
61
-							. ' <b>'
62
-							. $pere
63
-							. '</b>'
64
-							. (!$bons_peres ? ''
65
-								: ('<p style="font-size: 80%"> ' . _T('zxml_mais_de') . ' <b>' . $bons_peres . '</b></p>')));
66
-					} elseif ($this->dtc->regles[$pere][0] == '/') {
67
-						$frat = substr($depth, 2);
68
-						if (!isset($this->fratrie[$frat])) {
69
-							$this->fratrie[$frat] = '';
70
-						}
71
-						$this->fratrie[$frat] .= "$name ";
72
-					}
73
-				}
74
-			}
75
-		}
76
-		// Init de la suite des balises a memoriser si regle difficile
77
-		if ($this->dtc->regles[$name] and $this->dtc->regles[$name][0] == '/') {
78
-			$this->fratrie[$depth] = '';
79
-		}
80
-		if (isset($this->dtc->attributs[$name])) {
81
-			foreach ($this->dtc->attributs[$name] as $n => $v) {
82
-				if (($v[1] == '#REQUIRED') and (!isset($attrs[$n]))) {
83
-					coordonnees_erreur($this, " <b>$n</b>"
84
-						. '&nbsp;:&nbsp;'
85
-						. _T('zxml_obligatoire_attribut')
86
-						. " <b>$name</b>");
87
-				}
88
-			}
89
-		}
90
-	}
91
-
92
-	// https://code.spip.net/@validerAttribut
93
-	public function validerAttribut($phraseur, $name, $val, $bal) {
94
-		// Si la balise est inconnue, eviter d'insister
95
-		if (!isset($this->dtc->attributs[$bal])) {
96
-			return;
97
-		}
98
-
99
-		$a = $this->dtc->attributs[$bal];
100
-		if (!isset($a[$name])) {
101
-			$bons = join(', ', array_keys($a));
102
-			if ($bons) {
103
-				$bons = " title=' " .
104
-					_T('zxml_connus_attributs') .
105
-					'&nbsp;: ' .
106
-					$bons .
107
-					"'";
108
-			}
109
-			$bons .= " style='font-weight: bold'";
110
-			coordonnees_erreur($this, " <b>$name</b> "
111
-				. _T('zxml_inconnu_attribut') . ' ' . _T('zxml_de')
112
-				. " <a$bons>$bal</a> ("
113
-				. _T('zxml_survoler')
114
-				. ")");
115
-		} else {
116
-			$type = $a[$name][0];
117
-			if (!preg_match('/^\w+$/', $type)) {
118
-				$this->valider_motif($phraseur, $name, $val, $bal, $type);
119
-			} else {
120
-				if (method_exists($this, $f = 'validerAttribut_' . $type)) {
121
-					$this->$f($phraseur, $name, $val, $bal);
122
-				}
123
-			}
124
-			#		else spip_log("$type type d'attribut inconnu");
125
-		}
126
-	}
127
-
128
-	public function validerAttribut_NMTOKEN($phraseur, $name, $val, $bal) {
129
-		$this->valider_motif($phraseur, $name, $val, $bal, _REGEXP_NMTOKEN);
130
-	}
131
-
132
-	public function validerAttribut_NMTOKENS($phraseur, $name, $val, $bal) {
133
-		$this->valider_motif($phraseur, $name, $val, $bal, _REGEXP_NMTOKENS);
134
-	}
135
-
136
-	// https://code.spip.net/@validerAttribut_ID
137
-	public function validerAttribut_ID($phraseur, $name, $val, $bal) {
138
-		if (isset($this->ids[$val])) {
139
-			list($l, $c) = $this->ids[$val];
140
-			coordonnees_erreur($this, " <p><b>$val</b> "
141
-				. _T('zxml_valeur_attribut')
142
-				. " <b>$name</b> "
143
-				. _T('zxml_de')
144
-				. " <b>$bal</b> "
145
-				. _T('zxml_vu')
146
-				. " (L$l,C$c)");
147
-		} else {
148
-			$this->valider_motif($phraseur, $name, $val, $bal, _REGEXP_ID);
149
-			$this->ids[$val] = array(xml_get_current_line_number($phraseur), xml_get_current_column_number($phraseur));
150
-		}
151
-	}
152
-
153
-	// https://code.spip.net/@validerAttribut_IDREF
154
-	public function validerAttribut_IDREF($phraseur, $name, $val, $bal) {
155
-		$this->idrefs[] = array($val, xml_get_current_line_number($phraseur), xml_get_current_column_number($phraseur));
156
-	}
157
-
158
-	// https://code.spip.net/@validerAttribut_IDREFS
159
-	public function validerAttribut_IDREFS($phraseur, $name, $val, $bal) {
160
-		$this->idrefss[] = array($val, xml_get_current_line_number($phraseur), xml_get_current_column_number($phraseur));
161
-	}
162
-
163
-	// https://code.spip.net/@valider_motif
164
-	public function valider_motif($phraseur, $name, $val, $bal, $motif) {
165
-		if (!preg_match($motif, $val)) {
166
-			coordonnees_erreur($this, "<b>$val</b> "
167
-				. _T('zxml_valeur_attribut')
168
-				. " <b>$name</b> "
169
-				. _T('zxml_de')
170
-				. " <b>$bal</b> "
171
-				. _T('zxml_non_conforme')
172
-				. "</p><p>"
173
-				. "<b>" . $motif . "</b>");
174
-		}
175
-	}
176
-
177
-	// https://code.spip.net/@valider_idref
178
-	public function valider_idref($nom, $ligne, $col) {
179
-		if (!isset($this->ids[$nom])) {
180
-			$this->err[] = array(" <p><b>$nom</b> " . _T('zxml_inconnu_id'), $ligne, $col);
181
-		}
182
-	}
183
-
184
-	// https://code.spip.net/@valider_passe2
185
-	public function valider_passe2() {
186
-		if (!$this->err) {
187
-			foreach ($this->idrefs as $idref) {
188
-				list($nom, $ligne, $col) = $idref;
189
-				$this->valider_idref($nom, $ligne, $col);
190
-			}
191
-			foreach ($this->idrefss as $idref) {
192
-				list($noms, $ligne, $col) = $idref;
193
-				foreach (preg_split('/\s+/', $noms) as $nom) {
194
-					$this->valider_idref($nom, $ligne, $col);
195
-				}
196
-			}
197
-		}
198
-	}
199
-
200
-	// https://code.spip.net/@debutElement
201
-	public function debutElement($phraseur, $name, $attrs) {
202
-		if ($this->dtc->elements) {
203
-			$this->validerElement($phraseur, $name, $attrs);
204
-		}
205
-
206
-		if ($f = $this->process['debut']) {
207
-			$f($this, $name, $attrs);
208
-		}
209
-		$depth = $this->depth;
210
-		$this->debuts[$depth] = strlen($this->res);
211
-		foreach ($attrs as $k => $v) {
212
-			$this->validerAttribut($phraseur, $k, $v, $name);
213
-		}
214
-	}
215
-
216
-	// https://code.spip.net/@finElement
217
-	public function finElement($phraseur, $name) {
218
-		$depth = $this->depth;
219
-		$contenu = $this->contenu;
220
-
221
-		$n = strlen($this->res);
222
-		$c = strlen(trim($contenu[$depth]));
223
-		$k = $this->debuts[$depth];
224
-
225
-		$regle = isset($this->dtc->regles[$name]) ? $this->dtc->regles[$name] : false;
226
-		$vide = ($regle == 'EMPTY');
227
-		// controler que les balises devant etre vides le sont 
228
-		if ($vide) {
229
-			if ($n <> ($k + $c)) {
230
-				coordonnees_erreur($this, " <p><b>$name</b> " . _T('zxml_nonvide_balise'));
231
-			}
232
-			// pour les regles PCDATA ou iteration de disjonction, tout est fait
233
-		} elseif ($regle and ($regle != '*')) {
234
-			if ($regle == '+') {
235
-				// iteration de disjonction non vide: 1 balise au -
236
-				if ($n == $k) {
237
-					coordonnees_erreur($this, "<p>\n<b>$name</b> "
238
-						. _T('zxml_vide_balise'));
239
-				}
240
-			} else {
241
-				$f = isset($this->fratrie[substr($depth, 2)]) ? $this->fratrie[substr($depth, 2)] : null;
242
-				if (is_null($f) or !preg_match($regle, $f)) {
243
-					coordonnees_erreur($this,
244
-						" <p>\n<b>$name</b> "
245
-						. _T('zxml_succession_fils_incorrecte')
246
-						. '&nbsp;: <b>'
247
-						. $f
248
-						. '</b>');
249
-				}
250
-			}
251
-
252
-		}
253
-		if ($f = $this->process['fin']) {
254
-			$f($this, $name, $vide);
255
-		}
256
-	}
257
-
258
-	// https://code.spip.net/@textElement
259
-	public function textElement($phraseur, $data) {
260
-		if (trim($data)) {
261
-			$d = $this->depth;
262
-			$d = $this->ouvrant[$d];
263
-			preg_match('/^\s*(\S+)/', $d, $m);
264
-			if (isset($this->dtc->pcdata[$m[1]]) and ($this->dtc->pcdata[$m[1]])) {
265
-				coordonnees_erreur($this, " <p><b>" . $m[1] . "</b> "
266
-					. _T('zxml_nonvide_balise') // message a affiner
267
-				);
268
-			}
269
-		}
270
-		if ($f = $this->process['text']) {
271
-			$f($this, $data);
272
-		}
273
-	}
274
-
275
-	public function piElement($phraseur, $target, $data) {
276
-		if ($f = $this->process['pi']) {
277
-			$f($this, $target, $data);
278
-		}
279
-	}
280
-
281
-	// Denonciation des entitees XML inconnues
282
-	// Pour contourner le bug de conception de SAX qui ne signale pas si elles
283
-	// sont dans un attribut, les  entites les plus frequentes ont ete
284
-	// transcodees au prealable  (sauf & < > " que SAX traite correctement).
285
-	// On ne les verra donc pas passer a cette etape, contrairement a ce que 
286
-	// le source de la page laisse legitimement supposer. 
287
-
288
-	// https://code.spip.net/@defautElement
289
-	public function defaultElement($phraseur, $data) {
290
-		if (!preg_match('/^<!--/', $data)
291
-			and (preg_match_all('/&([^;]*)?/', $data, $r, PREG_SET_ORDER))
292
-		) {
293
-			foreach ($r as $m) {
294
-				list($t, $e) = $m;
295
-				if (!isset($this->dtc->entites[$e])) {
296
-					coordonnees_erreur($this, " <b>$e</b> "
297
-						. _T('zxml_inconnu_entite')
298
-						. ' '
299
-					);
300
-				}
301
-			}
302
-		}
303
-		if (isset($this->process['default']) and ($f = $this->process['default'])) {
304
-			$f($this, $data);
305
-		}
306
-	}
307
-
308
-	// https://code.spip.net/@phraserTout
309
-	public function phraserTout($phraseur, $data) {
310
-		xml_parsestring($this, $data);
311
-
312
-		if (!$this->dtc or preg_match(',^' . _MESSAGE_DOCTYPE . ',', $data)) {
313
-			$this->err[] = array('DOCTYPE ?', 0, 0);
314
-		} else {
315
-			$this->valider_passe2($this);
316
-		}
317
-	}
318
-
319
-	/**
320
-	 * Constructeur
321
-	 *
322
-	 * @param array $process ?
323
-	 **/
324
-	public function __construct($process = array()) {
325
-		if (is_array($process)) {
326
-			$this->process = $process;
327
-		}
328
-	}
329
-
330
-	public $ids = array();
331
-	public $idrefs = array();
332
-	public $idrefss = array();
333
-	public $debuts = array();
334
-	public $fratrie = array();
335
-
336
-	public $dtc = null;
337
-	public $sax = null;
338
-	public $depth = "";
339
-	public $entete = '';
340
-	public $page = '';
341
-	public $res = "";
342
-	public $err = array();
343
-	public $contenu = array();
344
-	public $ouvrant = array();
345
-	public $reperes = array();
346
-	public $process = array(
347
-		'debut' => 'xml_debutElement',
348
-		'fin' => 'xml_finElement',
349
-		'text' => 'xml_textElement',
350
-		'pi' => 'xml_piElement',
351
-		'default' => 'xml_defaultElement'
352
-	);
26
+    // https://code.spip.net/@validerElement
27
+    public function validerElement($phraseur, $name, $attrs) {
28
+        if (!($p = isset($this->dtc->elements[$name]))) {
29
+            if ($p = strpos($name, ':')) {
30
+                $name = substr($name, $p + 1);
31
+                $p = isset($this->dtc->elements[$name]);
32
+            }
33
+            if (!$p) {
34
+                coordonnees_erreur($this, " <b>$name</b>&nbsp;: "
35
+                    . _T('zxml_inconnu_balise'));
36
+
37
+                return;
38
+            }
39
+        }
40
+        // controler les filles illegitimes, ca suffit 
41
+        $depth = $this->depth;
42
+        $ouvrant = $this->ouvrant;
43
+        #spip_log("trouve $name apres " . $ouvrant[$depth]);
44
+        if (isset($ouvrant[$depth])) {
45
+            if (preg_match('/^\s*(\w+)/', $ouvrant[$depth], $r)) {
46
+                $pere = $r[1];
47
+                #spip_log("pere $pere");
48
+                if (isset($this->dtc->elements[$pere])) {
49
+                    $fils = $this->dtc->elements[$pere];
50
+                    #spip_log("rejeton $name fils " . @join(',',$fils));
51
+                    if (!($p = @in_array($name, $fils))) {
52
+                        if ($p = strpos($name, ':')) {
53
+                            $p = substr($name, $p + 1);
54
+                            $p = @in_array($p, $fils);
55
+                        }
56
+                    }
57
+                    if (!$p) {
58
+                        $bons_peres = @join('</b>, <b>', $this->dtc->peres[$name]);
59
+                        coordonnees_erreur($this, " <b>$name</b> "
60
+                            . _T('zxml_non_fils')
61
+                            . ' <b>'
62
+                            . $pere
63
+                            . '</b>'
64
+                            . (!$bons_peres ? ''
65
+                                : ('<p style="font-size: 80%"> ' . _T('zxml_mais_de') . ' <b>' . $bons_peres . '</b></p>')));
66
+                    } elseif ($this->dtc->regles[$pere][0] == '/') {
67
+                        $frat = substr($depth, 2);
68
+                        if (!isset($this->fratrie[$frat])) {
69
+                            $this->fratrie[$frat] = '';
70
+                        }
71
+                        $this->fratrie[$frat] .= "$name ";
72
+                    }
73
+                }
74
+            }
75
+        }
76
+        // Init de la suite des balises a memoriser si regle difficile
77
+        if ($this->dtc->regles[$name] and $this->dtc->regles[$name][0] == '/') {
78
+            $this->fratrie[$depth] = '';
79
+        }
80
+        if (isset($this->dtc->attributs[$name])) {
81
+            foreach ($this->dtc->attributs[$name] as $n => $v) {
82
+                if (($v[1] == '#REQUIRED') and (!isset($attrs[$n]))) {
83
+                    coordonnees_erreur($this, " <b>$n</b>"
84
+                        . '&nbsp;:&nbsp;'
85
+                        . _T('zxml_obligatoire_attribut')
86
+                        . " <b>$name</b>");
87
+                }
88
+            }
89
+        }
90
+    }
91
+
92
+    // https://code.spip.net/@validerAttribut
93
+    public function validerAttribut($phraseur, $name, $val, $bal) {
94
+        // Si la balise est inconnue, eviter d'insister
95
+        if (!isset($this->dtc->attributs[$bal])) {
96
+            return;
97
+        }
98
+
99
+        $a = $this->dtc->attributs[$bal];
100
+        if (!isset($a[$name])) {
101
+            $bons = join(', ', array_keys($a));
102
+            if ($bons) {
103
+                $bons = " title=' " .
104
+                    _T('zxml_connus_attributs') .
105
+                    '&nbsp;: ' .
106
+                    $bons .
107
+                    "'";
108
+            }
109
+            $bons .= " style='font-weight: bold'";
110
+            coordonnees_erreur($this, " <b>$name</b> "
111
+                . _T('zxml_inconnu_attribut') . ' ' . _T('zxml_de')
112
+                . " <a$bons>$bal</a> ("
113
+                . _T('zxml_survoler')
114
+                . ")");
115
+        } else {
116
+            $type = $a[$name][0];
117
+            if (!preg_match('/^\w+$/', $type)) {
118
+                $this->valider_motif($phraseur, $name, $val, $bal, $type);
119
+            } else {
120
+                if (method_exists($this, $f = 'validerAttribut_' . $type)) {
121
+                    $this->$f($phraseur, $name, $val, $bal);
122
+                }
123
+            }
124
+            #		else spip_log("$type type d'attribut inconnu");
125
+        }
126
+    }
127
+
128
+    public function validerAttribut_NMTOKEN($phraseur, $name, $val, $bal) {
129
+        $this->valider_motif($phraseur, $name, $val, $bal, _REGEXP_NMTOKEN);
130
+    }
131
+
132
+    public function validerAttribut_NMTOKENS($phraseur, $name, $val, $bal) {
133
+        $this->valider_motif($phraseur, $name, $val, $bal, _REGEXP_NMTOKENS);
134
+    }
135
+
136
+    // https://code.spip.net/@validerAttribut_ID
137
+    public function validerAttribut_ID($phraseur, $name, $val, $bal) {
138
+        if (isset($this->ids[$val])) {
139
+            list($l, $c) = $this->ids[$val];
140
+            coordonnees_erreur($this, " <p><b>$val</b> "
141
+                . _T('zxml_valeur_attribut')
142
+                . " <b>$name</b> "
143
+                . _T('zxml_de')
144
+                . " <b>$bal</b> "
145
+                . _T('zxml_vu')
146
+                . " (L$l,C$c)");
147
+        } else {
148
+            $this->valider_motif($phraseur, $name, $val, $bal, _REGEXP_ID);
149
+            $this->ids[$val] = array(xml_get_current_line_number($phraseur), xml_get_current_column_number($phraseur));
150
+        }
151
+    }
152
+
153
+    // https://code.spip.net/@validerAttribut_IDREF
154
+    public function validerAttribut_IDREF($phraseur, $name, $val, $bal) {
155
+        $this->idrefs[] = array($val, xml_get_current_line_number($phraseur), xml_get_current_column_number($phraseur));
156
+    }
157
+
158
+    // https://code.spip.net/@validerAttribut_IDREFS
159
+    public function validerAttribut_IDREFS($phraseur, $name, $val, $bal) {
160
+        $this->idrefss[] = array($val, xml_get_current_line_number($phraseur), xml_get_current_column_number($phraseur));
161
+    }
162
+
163
+    // https://code.spip.net/@valider_motif
164
+    public function valider_motif($phraseur, $name, $val, $bal, $motif) {
165
+        if (!preg_match($motif, $val)) {
166
+            coordonnees_erreur($this, "<b>$val</b> "
167
+                . _T('zxml_valeur_attribut')
168
+                . " <b>$name</b> "
169
+                . _T('zxml_de')
170
+                . " <b>$bal</b> "
171
+                . _T('zxml_non_conforme')
172
+                . "</p><p>"
173
+                . "<b>" . $motif . "</b>");
174
+        }
175
+    }
176
+
177
+    // https://code.spip.net/@valider_idref
178
+    public function valider_idref($nom, $ligne, $col) {
179
+        if (!isset($this->ids[$nom])) {
180
+            $this->err[] = array(" <p><b>$nom</b> " . _T('zxml_inconnu_id'), $ligne, $col);
181
+        }
182
+    }
183
+
184
+    // https://code.spip.net/@valider_passe2
185
+    public function valider_passe2() {
186
+        if (!$this->err) {
187
+            foreach ($this->idrefs as $idref) {
188
+                list($nom, $ligne, $col) = $idref;
189
+                $this->valider_idref($nom, $ligne, $col);
190
+            }
191
+            foreach ($this->idrefss as $idref) {
192
+                list($noms, $ligne, $col) = $idref;
193
+                foreach (preg_split('/\s+/', $noms) as $nom) {
194
+                    $this->valider_idref($nom, $ligne, $col);
195
+                }
196
+            }
197
+        }
198
+    }
199
+
200
+    // https://code.spip.net/@debutElement
201
+    public function debutElement($phraseur, $name, $attrs) {
202
+        if ($this->dtc->elements) {
203
+            $this->validerElement($phraseur, $name, $attrs);
204
+        }
205
+
206
+        if ($f = $this->process['debut']) {
207
+            $f($this, $name, $attrs);
208
+        }
209
+        $depth = $this->depth;
210
+        $this->debuts[$depth] = strlen($this->res);
211
+        foreach ($attrs as $k => $v) {
212
+            $this->validerAttribut($phraseur, $k, $v, $name);
213
+        }
214
+    }
215
+
216
+    // https://code.spip.net/@finElement
217
+    public function finElement($phraseur, $name) {
218
+        $depth = $this->depth;
219
+        $contenu = $this->contenu;
220
+
221
+        $n = strlen($this->res);
222
+        $c = strlen(trim($contenu[$depth]));
223
+        $k = $this->debuts[$depth];
224
+
225
+        $regle = isset($this->dtc->regles[$name]) ? $this->dtc->regles[$name] : false;
226
+        $vide = ($regle == 'EMPTY');
227
+        // controler que les balises devant etre vides le sont 
228
+        if ($vide) {
229
+            if ($n <> ($k + $c)) {
230
+                coordonnees_erreur($this, " <p><b>$name</b> " . _T('zxml_nonvide_balise'));
231
+            }
232
+            // pour les regles PCDATA ou iteration de disjonction, tout est fait
233
+        } elseif ($regle and ($regle != '*')) {
234
+            if ($regle == '+') {
235
+                // iteration de disjonction non vide: 1 balise au -
236
+                if ($n == $k) {
237
+                    coordonnees_erreur($this, "<p>\n<b>$name</b> "
238
+                        . _T('zxml_vide_balise'));
239
+                }
240
+            } else {
241
+                $f = isset($this->fratrie[substr($depth, 2)]) ? $this->fratrie[substr($depth, 2)] : null;
242
+                if (is_null($f) or !preg_match($regle, $f)) {
243
+                    coordonnees_erreur($this,
244
+                        " <p>\n<b>$name</b> "
245
+                        . _T('zxml_succession_fils_incorrecte')
246
+                        . '&nbsp;: <b>'
247
+                        . $f
248
+                        . '</b>');
249
+                }
250
+            }
251
+
252
+        }
253
+        if ($f = $this->process['fin']) {
254
+            $f($this, $name, $vide);
255
+        }
256
+    }
257
+
258
+    // https://code.spip.net/@textElement
259
+    public function textElement($phraseur, $data) {
260
+        if (trim($data)) {
261
+            $d = $this->depth;
262
+            $d = $this->ouvrant[$d];
263
+            preg_match('/^\s*(\S+)/', $d, $m);
264
+            if (isset($this->dtc->pcdata[$m[1]]) and ($this->dtc->pcdata[$m[1]])) {
265
+                coordonnees_erreur($this, " <p><b>" . $m[1] . "</b> "
266
+                    . _T('zxml_nonvide_balise') // message a affiner
267
+                );
268
+            }
269
+        }
270
+        if ($f = $this->process['text']) {
271
+            $f($this, $data);
272
+        }
273
+    }
274
+
275
+    public function piElement($phraseur, $target, $data) {
276
+        if ($f = $this->process['pi']) {
277
+            $f($this, $target, $data);
278
+        }
279
+    }
280
+
281
+    // Denonciation des entitees XML inconnues
282
+    // Pour contourner le bug de conception de SAX qui ne signale pas si elles
283
+    // sont dans un attribut, les  entites les plus frequentes ont ete
284
+    // transcodees au prealable  (sauf & < > " que SAX traite correctement).
285
+    // On ne les verra donc pas passer a cette etape, contrairement a ce que 
286
+    // le source de la page laisse legitimement supposer. 
287
+
288
+    // https://code.spip.net/@defautElement
289
+    public function defaultElement($phraseur, $data) {
290
+        if (!preg_match('/^<!--/', $data)
291
+            and (preg_match_all('/&([^;]*)?/', $data, $r, PREG_SET_ORDER))
292
+        ) {
293
+            foreach ($r as $m) {
294
+                list($t, $e) = $m;
295
+                if (!isset($this->dtc->entites[$e])) {
296
+                    coordonnees_erreur($this, " <b>$e</b> "
297
+                        . _T('zxml_inconnu_entite')
298
+                        . ' '
299
+                    );
300
+                }
301
+            }
302
+        }
303
+        if (isset($this->process['default']) and ($f = $this->process['default'])) {
304
+            $f($this, $data);
305
+        }
306
+    }
307
+
308
+    // https://code.spip.net/@phraserTout
309
+    public function phraserTout($phraseur, $data) {
310
+        xml_parsestring($this, $data);
311
+
312
+        if (!$this->dtc or preg_match(',^' . _MESSAGE_DOCTYPE . ',', $data)) {
313
+            $this->err[] = array('DOCTYPE ?', 0, 0);
314
+        } else {
315
+            $this->valider_passe2($this);
316
+        }
317
+    }
318
+
319
+    /**
320
+     * Constructeur
321
+     *
322
+     * @param array $process ?
323
+     **/
324
+    public function __construct($process = array()) {
325
+        if (is_array($process)) {
326
+            $this->process = $process;
327
+        }
328
+    }
329
+
330
+    public $ids = array();
331
+    public $idrefs = array();
332
+    public $idrefss = array();
333
+    public $debuts = array();
334
+    public $fratrie = array();
335
+
336
+    public $dtc = null;
337
+    public $sax = null;
338
+    public $depth = "";
339
+    public $entete = '';
340
+    public $page = '';
341
+    public $res = "";
342
+    public $err = array();
343
+    public $contenu = array();
344
+    public $ouvrant = array();
345
+    public $reperes = array();
346
+    public $process = array(
347
+        'debut' => 'xml_debutElement',
348
+        'fin' => 'xml_finElement',
349
+        'text' => 'xml_textElement',
350
+        'pi' => 'xml_piElement',
351
+        'default' => 'xml_defaultElement'
352
+    );
353 353
 }
354 354
 
355 355
 
@@ -359,8 +359,8 @@  discard block
 block discarded – undo
359 359
  *
360 360
  **/
361 361
 function xml_valider_dist($page, $apply = false, $process = false, $doctype = '', $charset = null) {
362
-	$f = new ValidateurXML($process);
363
-	$sax = charger_fonction('sax', 'xml');
362
+    $f = new ValidateurXML($process);
363
+    $sax = charger_fonction('sax', 'xml');
364 364
 
365
-	return $sax($page, $apply, $f, $doctype, $charset);
365
+    return $sax($page, $apply, $f, $doctype, $charset);
366 366
 }
Please login to merge, or discard this patch.
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
 							. $pere
63 63
 							. '</b>'
64 64
 							. (!$bons_peres ? ''
65
-								: ('<p style="font-size: 80%"> ' . _T('zxml_mais_de') . ' <b>' . $bons_peres . '</b></p>')));
65
+								: ('<p style="font-size: 80%"> '._T('zxml_mais_de').' <b>'.$bons_peres.'</b></p>')));
66 66
 					} elseif ($this->dtc->regles[$pere][0] == '/') {
67 67
 						$frat = substr($depth, 2);
68 68
 						if (!isset($this->fratrie[$frat])) {
@@ -100,15 +100,15 @@  discard block
 block discarded – undo
100 100
 		if (!isset($a[$name])) {
101 101
 			$bons = join(', ', array_keys($a));
102 102
 			if ($bons) {
103
-				$bons = " title=' " .
104
-					_T('zxml_connus_attributs') .
105
-					'&nbsp;: ' .
106
-					$bons .
103
+				$bons = " title=' ".
104
+					_T('zxml_connus_attributs').
105
+					'&nbsp;: '.
106
+					$bons.
107 107
 					"'";
108 108
 			}
109 109
 			$bons .= " style='font-weight: bold'";
110 110
 			coordonnees_erreur($this, " <b>$name</b> "
111
-				. _T('zxml_inconnu_attribut') . ' ' . _T('zxml_de')
111
+				. _T('zxml_inconnu_attribut').' '._T('zxml_de')
112 112
 				. " <a$bons>$bal</a> ("
113 113
 				. _T('zxml_survoler')
114 114
 				. ")");
@@ -117,7 +117,7 @@  discard block
 block discarded – undo
117 117
 			if (!preg_match('/^\w+$/', $type)) {
118 118
 				$this->valider_motif($phraseur, $name, $val, $bal, $type);
119 119
 			} else {
120
-				if (method_exists($this, $f = 'validerAttribut_' . $type)) {
120
+				if (method_exists($this, $f = 'validerAttribut_'.$type)) {
121 121
 					$this->$f($phraseur, $name, $val, $bal);
122 122
 				}
123 123
 			}
@@ -170,14 +170,14 @@  discard block
 block discarded – undo
170 170
 				. " <b>$bal</b> "
171 171
 				. _T('zxml_non_conforme')
172 172
 				. "</p><p>"
173
-				. "<b>" . $motif . "</b>");
173
+				. "<b>".$motif."</b>");
174 174
 		}
175 175
 	}
176 176
 
177 177
 	// https://code.spip.net/@valider_idref
178 178
 	public function valider_idref($nom, $ligne, $col) {
179 179
 		if (!isset($this->ids[$nom])) {
180
-			$this->err[] = array(" <p><b>$nom</b> " . _T('zxml_inconnu_id'), $ligne, $col);
180
+			$this->err[] = array(" <p><b>$nom</b> "._T('zxml_inconnu_id'), $ligne, $col);
181 181
 		}
182 182
 	}
183 183
 
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
 		// controler que les balises devant etre vides le sont 
228 228
 		if ($vide) {
229 229
 			if ($n <> ($k + $c)) {
230
-				coordonnees_erreur($this, " <p><b>$name</b> " . _T('zxml_nonvide_balise'));
230
+				coordonnees_erreur($this, " <p><b>$name</b> "._T('zxml_nonvide_balise'));
231 231
 			}
232 232
 			// pour les regles PCDATA ou iteration de disjonction, tout est fait
233 233
 		} elseif ($regle and ($regle != '*')) {
@@ -262,7 +262,7 @@  discard block
 block discarded – undo
262 262
 			$d = $this->ouvrant[$d];
263 263
 			preg_match('/^\s*(\S+)/', $d, $m);
264 264
 			if (isset($this->dtc->pcdata[$m[1]]) and ($this->dtc->pcdata[$m[1]])) {
265
-				coordonnees_erreur($this, " <p><b>" . $m[1] . "</b> "
265
+				coordonnees_erreur($this, " <p><b>".$m[1]."</b> "
266 266
 					. _T('zxml_nonvide_balise') // message a affiner
267 267
 				);
268 268
 			}
@@ -309,7 +309,7 @@  discard block
 block discarded – undo
309 309
 	public function phraserTout($phraseur, $data) {
310 310
 		xml_parsestring($this, $data);
311 311
 
312
-		if (!$this->dtc or preg_match(',^' . _MESSAGE_DOCTYPE . ',', $data)) {
312
+		if (!$this->dtc or preg_match(',^'._MESSAGE_DOCTYPE.',', $data)) {
313 313
 			$this->err[] = array('DOCTYPE ?', 0, 0);
314 314
 		} else {
315 315
 			$this->valider_passe2($this);
Please login to merge, or discard this patch.
ecrire/inc/idna_convert.class.php 2 patches
Doc Comments   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -88,7 +88,7 @@  discard block
 block discarded – undo
88 88
      * the constructor
89 89
      *
90 90
      * @param array $options
91
-     * @return boolean
91
+     * @return boolean|null
92 92
      * @since 0.5.2
93 93
      */
94 94
     public function __construct($options = false)
@@ -393,7 +393,7 @@  discard block
 block discarded – undo
393 393
     /**
394 394
      * Use this method to get the last error ocurred
395 395
      * @param    void
396
-     * @return   string   The last error, that occured
396
+     * @return   boolean   The last error, that occured
397 397
      */
398 398
     public function get_last_error()
399 399
     {
@@ -403,7 +403,7 @@  discard block
 block discarded – undo
403 403
     /**
404 404
      * The actual decoding algorithm
405 405
      * @param string
406
-     * @return mixed
406
+     * @return false|string
407 407
      */
408 408
     protected function _decode($encoded)
409 409
     {
@@ -464,7 +464,7 @@  discard block
 block discarded – undo
464 464
     /**
465 465
      * The actual encoding algorithm
466 466
      * @param  string
467
-     * @return mixed
467
+     * @return false|string
468 468
      */
469 469
     protected function _encode($decoded)
470 470
     {
@@ -699,7 +699,7 @@  discard block
 block discarded – undo
699 699
      * Decomposes a Hangul syllable
700 700
      * (see http://www.unicode.org/unicode/reports/tr15/#Hangul
701 701
      * @param    integer  32bit UCS4 code point
702
-     * @return   array    Either Hangul Syllable decomposed or original 32bit value as one value array
702
+     * @return   integer[]    Either Hangul Syllable decomposed or original 32bit value as one value array
703 703
      */
704 704
     protected function _hangul_decompose($char)
705 705
     {
Please login to merge, or discard this patch.
Spacing   +43 added lines, -46 removed lines patch added patch discarded remove patch
@@ -73,16 +73,16 @@  discard block
 block discarded – undo
73 73
     protected $_lcount = 19;
74 74
     protected $_vcount = 21;
75 75
     protected $_tcount = 28;
76
-    protected $_ncount = 588;   // _vcount * _tcount
76
+    protected $_ncount = 588; // _vcount * _tcount
77 77
     protected $_scount = 11172; // _lcount * _tcount * _vcount
78 78
     protected $_error = false;
79 79
     protected static $_mb_string_overload = null;
80 80
     // See {@link set_paramter()} for details of how to change the following
81 81
     // settings from within your script / application
82
-    protected $_api_encoding = 'utf8';   // Default input charset is UTF-8
83
-    protected $_allow_overlong = false;  // Overlong UTF-8 encodings are forbidden
84
-    protected $_strict_mode = false;     // Behave strict or not
85
-    protected $_idn_version = 2003;      // Can be either 2003 (old, default) or 2008
82
+    protected $_api_encoding = 'utf8'; // Default input charset is UTF-8
83
+    protected $_allow_overlong = false; // Overlong UTF-8 encodings are forbidden
84
+    protected $_strict_mode = false; // Behave strict or not
85
+    protected $_idn_version = 2003; // Can be either 2003 (old, default) or 2008
86 86
 
87 87
     /**
88 88
      * the constructor
@@ -140,7 +140,7 @@  discard block
 block discarded – undo
140 140
                             $this->_api_encoding = $v;
141 141
                             break;
142 142
                         default:
143
-                            $this->_error('Set Parameter: Unknown parameter ' . $v . ' for option ' . $k);
143
+                            $this->_error('Set Parameter: Unknown parameter '.$v.' for option '.$k);
144 144
                             return false;
145 145
                     }
146 146
                     break;
@@ -154,7 +154,7 @@  discard block
 block discarded – undo
154 154
                     if (in_array($v, array('2003', '2008'))) {
155 155
                         $this->_idn_version = $v;
156 156
                     } else {
157
-                        $this->_error('Set Parameter: Unknown parameter ' . $v . ' for option ' . $k);
157
+                        $this->_error('Set Parameter: Unknown parameter '.$v.' for option '.$k);
158 158
                     }
159 159
                     break;
160 160
                 case 'encode_german_sz': // Deprecated
@@ -165,7 +165,7 @@  discard block
 block discarded – undo
165 165
                     }
166 166
                     break;
167 167
                 default:
168
-                    $this->_error('Set Parameter: Unknown option ' . $k);
168
+                    $this->_error('Set Parameter: Unknown option '.$k);
169 169
                     return false;
170 170
             }
171 171
         }
@@ -188,7 +188,7 @@  discard block
 block discarded – undo
188 188
                 case 'ucs4_array':
189 189
                     break;
190 190
                 default:
191
-                    $this->_error('Unknown encoding ' . $one_time_encoding);
191
+                    $this->_error('Unknown encoding '.$one_time_encoding);
192 192
                     return false;
193 193
             }
194 194
         }
@@ -206,7 +206,7 @@  discard block
 block discarded – undo
206 206
             list ($email_pref, $input) = explode('@', $input, 2);
207 207
             $arr = explode('.', $input);
208 208
             foreach ($arr as $k => $v) {
209
-                if (preg_match('!^' . preg_quote($this->_punycode_prefix, '!') . '!', $v)) {
209
+                if (preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $v)) {
210 210
                     $conv = $this->_decode($v);
211 211
                     if ($conv) {
212 212
                         $arr[$k] = $conv;
@@ -216,7 +216,7 @@  discard block
 block discarded – undo
216 216
             $input = join('.', $arr);
217 217
             $arr = explode('.', $email_pref);
218 218
             foreach ($arr as $k => $v) {
219
-                if (preg_match('!^' . preg_quote($this->_punycode_prefix, '!') . '!', $v)) {
219
+                if (preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $v)) {
220 220
                     $conv = $this->_decode($v);
221 221
                     if ($conv) {
222 222
                         $arr[$k] = $conv;
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
                 }
225 225
             }
226 226
             $email_pref = join('.', $arr);
227
-            $return = $email_pref . '@' . $input;
227
+            $return = $email_pref.'@'.$input;
228 228
         } elseif (preg_match('![:\./]!', $input)) { // Or a complete domain name (with or without paths / parameters)
229 229
             // No no in strict mode
230 230
             if ($this->_strict_mode) {
@@ -241,13 +241,13 @@  discard block
 block discarded – undo
241 241
                     }
242 242
                 }
243 243
                 $parsed['host'] = join('.', $arr);
244
-                $return = (empty($parsed['scheme']) ? '' : $parsed['scheme'] . (strtolower($parsed['scheme']) == 'mailto' ? ':' : '://')).
245
-                        (empty($parsed['user']) ? '' : $parsed['user'] . (empty($parsed['pass']) ? '' : ':' . $parsed['pass']) . '@').
244
+                $return = (empty($parsed['scheme']) ? '' : $parsed['scheme'].(strtolower($parsed['scheme']) == 'mailto' ? ':' : '://')).
245
+                        (empty($parsed['user']) ? '' : $parsed['user'].(empty($parsed['pass']) ? '' : ':'.$parsed['pass']).'@').
246 246
                         $parsed['host'].
247
-                        (empty($parsed['port']) ? '' : ':' . $parsed['port']).
247
+                        (empty($parsed['port']) ? '' : ':'.$parsed['port']).
248 248
                         (empty($parsed['path']) ? '' : $parsed['path']).
249
-                        (empty($parsed['query']) ? '' : '?' . $parsed['query']).
250
-                        (empty($parsed['fragment']) ? '' : '#' . $parsed['fragment']);
249
+                        (empty($parsed['query']) ? '' : '?'.$parsed['query']).
250
+                        (empty($parsed['fragment']) ? '' : '#'.$parsed['fragment']);
251 251
             } else { // parse_url seems to have failed, try without it
252 252
                 $arr = explode('.', $input);
253 253
                 foreach ($arr as $k => $v) {
@@ -265,8 +265,8 @@  discard block
 block discarded – undo
265 265
         // The output is UTF-8 by default, other output formats need conversion here
266 266
         // If one time encoding is given, use this, else the objects property
267 267
         switch (($one_time_encoding) ? $one_time_encoding : $this->_api_encoding) {
268
-            case 'utf8':        return $return; // break;
269
-            case 'ucs4_string': return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return));  // break;
268
+            case 'utf8' : return $return; // break;
269
+            case 'ucs4_string': return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return)); // break;
270 270
             case 'ucs4_array':  return $this->_utf8_to_ucs4($return); // break;
271 271
             default:            $this->_error('Unsupported output format'); return false;
272 272
         }
@@ -283,15 +283,14 @@  discard block
 block discarded – undo
283 283
         // Forcing conversion of input to UCS4 array
284 284
         // If one time encoding is given, use this, else the objects property
285 285
         switch ($one_time_encoding ? $one_time_encoding : $this->_api_encoding) {
286
-            case 'utf8':
287
-                $decoded = $this->_utf8_to_ucs4($decoded);
286
+            case 'utf8' : $decoded = $this->_utf8_to_ucs4($decoded);
288 287
                 break;
289 288
             case 'ucs4_string':
290 289
                 $decoded = $this->_ucs4_string_to_ucs4($decoded);
291 290
             case 'ucs4_array':
292 291
                 break;
293 292
             default:
294
-                $this->_error('Unsupported input format: ' . ($one_time_encoding ? $one_time_encoding : $this->_api_encoding));
293
+                $this->_error('Unsupported input format: '.($one_time_encoding ? $one_time_encoding : $this->_api_encoding));
295 294
                 return false;
296 295
         }
297 296
 
@@ -380,13 +379,13 @@  discard block
 block discarded – undo
380 379
             }
381 380
         }
382 381
         $parsed['host'] = join('.', $arr);
383
-        $return = (empty($parsed['scheme']) ? '' : $parsed['scheme'] . (strtolower($parsed['scheme']) == 'mailto' ? ':' : '://')).
384
-                (empty($parsed['user']) ? '' : $parsed['user'] . (empty($parsed['pass']) ? '' : ':' . $parsed['pass']) . '@').
382
+        $return = (empty($parsed['scheme']) ? '' : $parsed['scheme'].(strtolower($parsed['scheme']) == 'mailto' ? ':' : '://')).
383
+                (empty($parsed['user']) ? '' : $parsed['user'].(empty($parsed['pass']) ? '' : ':'.$parsed['pass']).'@').
385 384
                 $parsed['host'].
386
-                (empty($parsed['port']) ? '' : ':' . $parsed['port']).
385
+                (empty($parsed['port']) ? '' : ':'.$parsed['port']).
387 386
                 (empty($parsed['path']) ? '' : $parsed['path']).
388
-                (empty($parsed['query']) ? '' : '?' . $parsed['query']).
389
-                (empty($parsed['fragment']) ? '' : '#' . $parsed['fragment']);
387
+                (empty($parsed['query']) ? '' : '?'.$parsed['query']).
388
+                (empty($parsed['fragment']) ? '' : '#'.$parsed['fragment']);
390 389
         return $return;
391 390
     }
392 391
 
@@ -409,11 +408,11 @@  discard block
 block discarded – undo
409 408
     {
410 409
         $decoded = array();
411 410
         // find the Punycode prefix
412
-        if (!preg_match('!^' . preg_quote($this->_punycode_prefix, '!') . '!', $encoded)) {
411
+        if (!preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $encoded)) {
413 412
             $this->_error('This is not a punycode string');
414 413
             return false;
415 414
         }
416
-        $encode_test = preg_replace('!^' . preg_quote($this->_punycode_prefix, '!') . '!', '', $encoded);
415
+        $encode_test = preg_replace('!^'.preg_quote($this->_punycode_prefix, '!').'!', '', $encoded);
417 416
         // If nothing left after removing the prefix, it is hopeless
418 417
         if (!$encode_test) {
419 418
             $this->_error('The given encoded string was empty');
@@ -439,8 +438,7 @@  discard block
 block discarded – undo
439 438
             for ($old_idx = $idx, $w = 1, $k = $this->_base; 1; $k += $this->_base) {
440 439
                 $digit = $this->_decode_digit($encoded[$enco_idx++]);
441 440
                 $idx += $digit * $w;
442
-                $t = ($k <= $bias) ? $this->_tmin :
443
-                        (($k >= $bias + $this->_tmax) ? $this->_tmax : ($k - $bias));
441
+                $t = ($k <= $bias) ? $this->_tmin : (($k >= $bias + $this->_tmax) ? $this->_tmax : ($k - $bias));
444 442
                 if ($digit < $t) {
445 443
                     break;
446 444
                 }
@@ -513,7 +511,7 @@  discard block
 block discarded – undo
513 511
             return $encoded; // All codepoints were basic ones
514 512
         }
515 513
         // Start with the prefix; copy it to output
516
-        $encoded = $this->_punycode_prefix . $encoded;
514
+        $encoded = $this->_punycode_prefix.$encoded;
517 515
         // If we have basic code points in output, add an hyphen to the end
518 516
         if ($codecount) {
519 517
             $encoded .= '-';
@@ -540,8 +538,7 @@  discard block
 block discarded – undo
540 538
                     $delta++;
541 539
                 } elseif ($decoded[$i] == $cur_code) {
542 540
                     for ($q = $delta, $k = $this->_base; 1; $k += $this->_base) {
543
-                        $t = ($k <= $bias) ? $this->_tmin :
544
-                                (($k >= $bias + $this->_tmax) ? $this->_tmax : $k - $bias);
541
+                        $t = ($k <= $bias) ? $this->_tmin : (($k >= $bias + $this->_tmax) ? $this->_tmax : $k - $bias);
545 542
                         if ($q < $t) {
546 543
                             break;
547 544
                         }
@@ -628,12 +625,12 @@  discard block
 block discarded – undo
628 625
             }
629 626
             // Try to find prohibited input
630 627
             if (in_array($v, self::$NP['prohibit']) || in_array($v, self::$NP['general_prohibited'])) {
631
-                $this->_error('NAMEPREP: Prohibited input U+' . sprintf('%08X', $v));
628
+                $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X', $v));
632 629
                 return false;
633 630
             }
634 631
             foreach (self::$NP['prohibit_ranges'] as $range) {
635 632
                 if ($range[0] <= $v && $v <= $range[1]) {
636
-                    $this->_error('NAMEPREP: Prohibited input U+' . sprintf('%08X', $v));
633
+                    $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X', $v));
637 634
                     return false;
638 635
                 }
639 636
             }
@@ -869,7 +866,7 @@  discard block
 block discarded – undo
869 866
                 $output[$out_len] = $v;
870 867
                 ++$out_len;
871 868
                 if ('add' == $mode) {
872
-                    $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte ' . $k);
869
+                    $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
873 870
                     return false;
874 871
                 }
875 872
                 continue;
@@ -894,7 +891,7 @@  discard block
 block discarded – undo
894 891
                     $next_byte = 4;
895 892
                     $v = ($v - 252) << 30;
896 893
                 } else {
897
-                    $this->_error('This might be UTF-8, but I don\'t understand it at byte ' . $k);
894
+                    $this->_error('This might be UTF-8, but I don\'t understand it at byte '.$k);
898 895
                     return false;
899 896
                 }
900 897
                 if ('add' == $mode) {
@@ -907,7 +904,7 @@  discard block
 block discarded – undo
907 904
                 if (!$this->_allow_overlong && $test == 'range') {
908 905
                     $test = 'none';
909 906
                     if (($v < 0xA0 && $start_byte == 0xE0) || ($v < 0x90 && $start_byte == 0xF0) || ($v > 0x8F && $start_byte == 0xF4)) {
910
-                        $this->_error('Bogus UTF-8 character detected (out of legal range) at byte ' . $k);
907
+                        $this->_error('Bogus UTF-8 character detected (out of legal range) at byte '.$k);
911 908
                         return false;
912 909
                     }
913 910
                 }
@@ -916,7 +913,7 @@  discard block
 block discarded – undo
916 913
                     $output[($out_len - 1)] += $v;
917 914
                     --$next_byte;
918 915
                 } else {
919
-                    $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte ' . $k);
916
+                    $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
920 917
                     return false;
921 918
                 }
922 919
                 if ($next_byte < 0) {
@@ -940,13 +937,13 @@  discard block
 block discarded – undo
940 937
             if ($v < 128) { // 7bit are transferred literally
941 938
                 $output .= chr($v);
942 939
             } elseif ($v < (1 << 11)) { // 2 bytes
943
-                $output .= chr(192 + ($v >> 6)) . chr(128 + ($v & 63));
940
+                $output .= chr(192 + ($v >> 6)).chr(128 + ($v & 63));
944 941
             } elseif ($v < (1 << 16)) { // 3 bytes
945
-                $output .= chr(224 + ($v >> 12)) . chr(128 + (($v >> 6) & 63)) . chr(128 + ($v & 63));
942
+                $output .= chr(224 + ($v >> 12)).chr(128 + (($v >> 6) & 63)).chr(128 + ($v & 63));
946 943
             } elseif ($v < (1 << 21)) { // 4 bytes
947
-                $output .= chr(240 + ($v >> 18)) . chr(128 + (($v >> 12) & 63)) . chr(128 + (($v >> 6) & 63)) . chr(128 + ($v & 63));
944
+                $output .= chr(240 + ($v >> 18)).chr(128 + (($v >> 12) & 63)).chr(128 + (($v >> 6) & 63)).chr(128 + ($v & 63));
948 945
             } else {
949
-                $this->_error('Conversion from UCS-4 to UTF-8 failed: malformed input at byte ' . $k);
946
+                $this->_error('Conversion from UCS-4 to UTF-8 failed: malformed input at byte '.$k);
950 947
                 return false;
951 948
             }
952 949
         }
@@ -965,7 +962,7 @@  discard block
 block discarded – undo
965 962
         // Take array values and split output to 4 bytes per value
966 963
         // The bit mask is 255, which reads &11111111
967 964
         foreach ($input as $v) {
968
-            $output .= chr(($v >> 24) & 255) . chr(($v >> 16) & 255) . chr(($v >> 8) & 255) . chr($v & 255);
965
+            $output .= chr(($v >> 24) & 255).chr(($v >> 16) & 255).chr(($v >> 8) & 255).chr($v & 255);
969 966
         }
970 967
         return $output;
971 968
     }
@@ -995,7 +992,7 @@  discard block
 block discarded – undo
995 992
                 $out_len++;
996 993
                 $output[$out_len] = 0;
997 994
             }
998
-            $output[$out_len] += ord($input[$i]) << (8 * (3 - ($i % 4) ) );
995
+            $output[$out_len] += ord($input[$i]) << (8 * (3 - ($i % 4)));
999 996
         }
1000 997
         return $output;
1001 998
     }
Please login to merge, or discard this patch.
ecrire/action/inscrire_auteur.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -369,7 +369,7 @@
 block discarded – undo
369 369
  * Effacer le jeton d'un auteur apres utilisation
370 370
  *
371 371
  * @param int $id_auteur
372
- * @return bool
372
+ * @return boolean|string
373 373
  */
374 374
 function auteur_effacer_jeton($id_auteur) {
375 375
 	return sql_updateq("spip_auteurs", array("cookie_oubli" => ''), "id_auteur=" . intval($id_auteur));
Please login to merge, or discard this patch.
Indentation   +205 added lines, -205 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Inscription
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 
@@ -39,68 +39,68 @@  discard block
 block discarded – undo
39 39
  * @return array|string
40 40
  */
41 41
 function action_inscrire_auteur_dist($statut, $mail_complet, $nom, $options = array()) {
42
-	if (!is_array($options)) {
43
-		$options = array('id' => $options);
44
-	}
45
-
46
-	if (function_exists('test_inscription')) {
47
-		$f = 'test_inscription';
48
-	} else {
49
-		$f = 'test_inscription_dist';
50
-	}
51
-	$desc = $f($statut, $mail_complet, $nom, $options);
52
-
53
-	// erreur ?
54
-	if (!is_array($desc)) {
55
-		return _T($desc);
56
-	}
57
-
58
-	include_spip('base/abstract_sql');
59
-	$res = sql_select("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($desc['email']));
60
-	// erreur ?
61
-	if (!$res) {
62
-		return _T('titre_probleme_technique');
63
-	}
64
-
65
-	$row = sql_fetch($res);
66
-	sql_free($res);
67
-	if ($row) {
68
-		if (isset($options['force_nouveau']) and $options['force_nouveau'] == true) {
69
-			$desc['id_auteur'] = $row['id_auteur'];
70
-			$desc = inscription_nouveau($desc);
71
-		} else {
72
-			$desc = $row;
73
-		}
74
-	} else // s'il n'existe pas deja, creer les identifiants
75
-	{
76
-		$desc = inscription_nouveau($desc);
77
-	}
78
-
79
-	// erreur ?
80
-	if (!is_array($desc)) {
81
-		return $desc;
82
-	}
83
-
84
-
85
-	// generer le mot de passe (ou le refaire si compte inutilise)
86
-	$desc['pass'] = creer_pass_pour_auteur($desc['id_auteur']);
87
-
88
-	// attribuer un jeton pour confirmation par clic sur un lien
89
-	$desc['jeton'] = auteur_attribuer_jeton($desc['id_auteur']);
90
-
91
-	// charger de suite cette fonction, pour ses utilitaires
92
-	$envoyer_inscription = charger_fonction("envoyer_inscription", "");
93
-	list($sujet, $msg, $from, $head) = $envoyer_inscription($desc, $nom, $statut, $options);
94
-
95
-	$notifications = charger_fonction('notifications', 'inc');
96
-	notifications_envoyer_mails($mail_complet, $msg, $sujet, $from, $head);
97
-
98
-	// Notifications
99
-	$notifications('inscription', $desc['id_auteur'],
100
-		array('nom' => $desc['nom'], 'email' => $desc['email'])
101
-	);
102
-
103
-	return $desc;
42
+    if (!is_array($options)) {
43
+        $options = array('id' => $options);
44
+    }
45
+
46
+    if (function_exists('test_inscription')) {
47
+        $f = 'test_inscription';
48
+    } else {
49
+        $f = 'test_inscription_dist';
50
+    }
51
+    $desc = $f($statut, $mail_complet, $nom, $options);
52
+
53
+    // erreur ?
54
+    if (!is_array($desc)) {
55
+        return _T($desc);
56
+    }
57
+
58
+    include_spip('base/abstract_sql');
59
+    $res = sql_select("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($desc['email']));
60
+    // erreur ?
61
+    if (!$res) {
62
+        return _T('titre_probleme_technique');
63
+    }
64
+
65
+    $row = sql_fetch($res);
66
+    sql_free($res);
67
+    if ($row) {
68
+        if (isset($options['force_nouveau']) and $options['force_nouveau'] == true) {
69
+            $desc['id_auteur'] = $row['id_auteur'];
70
+            $desc = inscription_nouveau($desc);
71
+        } else {
72
+            $desc = $row;
73
+        }
74
+    } else // s'il n'existe pas deja, creer les identifiants
75
+    {
76
+        $desc = inscription_nouveau($desc);
77
+    }
78
+
79
+    // erreur ?
80
+    if (!is_array($desc)) {
81
+        return $desc;
82
+    }
83
+
84
+
85
+    // generer le mot de passe (ou le refaire si compte inutilise)
86
+    $desc['pass'] = creer_pass_pour_auteur($desc['id_auteur']);
87
+
88
+    // attribuer un jeton pour confirmation par clic sur un lien
89
+    $desc['jeton'] = auteur_attribuer_jeton($desc['id_auteur']);
90
+
91
+    // charger de suite cette fonction, pour ses utilitaires
92
+    $envoyer_inscription = charger_fonction("envoyer_inscription", "");
93
+    list($sujet, $msg, $from, $head) = $envoyer_inscription($desc, $nom, $statut, $options);
94
+
95
+    $notifications = charger_fonction('notifications', 'inc');
96
+    notifications_envoyer_mails($mail_complet, $msg, $sujet, $from, $head);
97
+
98
+    // Notifications
99
+    $notifications('inscription', $desc['id_auteur'],
100
+        array('nom' => $desc['nom'], 'email' => $desc['email'])
101
+    );
102
+
103
+    return $desc;
104 104
 }
105 105
 
106 106
 
@@ -123,23 +123,23 @@  discard block
 block discarded – undo
123 123
  *
124 124
  */
125 125
 function test_inscription_dist($statut, $mail, $nom, $options) {
126
-	include_spip('inc/filtres');
127
-	if (!$r = email_valide($mail)) {
128
-		return 'info_email_invalide';
129
-	}
130
-	$nom = trim(corriger_caracteres($nom));
131
-	$res = array('email' => $r, 'nom' => $nom, 'prefs' => $statut);
132
-	if (isset($options['login'])) {
133
-		$login = trim(corriger_caracteres($options['login']));
134
-		if ((strlen($login) >= _LOGIN_TROP_COURT) and (strlen($nom) <= 64)) {
135
-			$res['login'] = $login;
136
-		}
137
-	}
138
-	if (!isset($res['login']) and ((strlen($nom) < _LOGIN_TROP_COURT) or (strlen($nom) > 64))) {
139
-		return 'ecrire:info_login_trop_court';
140
-	}
141
-
142
-	return $res;
126
+    include_spip('inc/filtres');
127
+    if (!$r = email_valide($mail)) {
128
+        return 'info_email_invalide';
129
+    }
130
+    $nom = trim(corriger_caracteres($nom));
131
+    $res = array('email' => $r, 'nom' => $nom, 'prefs' => $statut);
132
+    if (isset($options['login'])) {
133
+        $login = trim(corriger_caracteres($options['login']));
134
+        if ((strlen($login) >= _LOGIN_TROP_COURT) and (strlen($nom) <= 64)) {
135
+            $res['login'] = $login;
136
+        }
137
+    }
138
+    if (!isset($res['login']) and ((strlen($nom) < _LOGIN_TROP_COURT) or (strlen($nom) > 64))) {
139
+        return 'ecrire:info_login_trop_court';
140
+    }
141
+
142
+    return $res;
143 143
 }
144 144
 
145 145
 
@@ -152,33 +152,33 @@  discard block
 block discarded – undo
152 152
  * @return mixed|string
153 153
  */
154 154
 function inscription_nouveau($desc) {
155
-	if (!isset($desc['login']) or !strlen($desc['login'])) {
156
-		$desc['login'] = test_login($desc['nom'], $desc['email']);
157
-	}
155
+    if (!isset($desc['login']) or !strlen($desc['login'])) {
156
+        $desc['login'] = test_login($desc['nom'], $desc['email']);
157
+    }
158 158
 
159
-	$desc['statut'] = 'nouveau';
160
-	include_spip('action/editer_auteur');
161
-	if (isset($desc['id_auteur'])) {
162
-		$id_auteur = $desc['id_auteur'];
163
-	} else {
164
-		$id_auteur = auteur_inserer();
165
-	}
159
+    $desc['statut'] = 'nouveau';
160
+    include_spip('action/editer_auteur');
161
+    if (isset($desc['id_auteur'])) {
162
+        $id_auteur = $desc['id_auteur'];
163
+    } else {
164
+        $id_auteur = auteur_inserer();
165
+    }
166 166
 
167
-	if (!$id_auteur) {
168
-		return _T('titre_probleme_technique');
169
-	}
167
+    if (!$id_auteur) {
168
+        return _T('titre_probleme_technique');
169
+    }
170 170
 
171
-	$desc['lang'] = $GLOBALS['spip_lang'];
171
+    $desc['lang'] = $GLOBALS['spip_lang'];
172 172
 
173
-	include_spip('inc/autoriser');
174
-	// lever l'autorisation pour pouvoir modifier le statut
175
-	autoriser_exception('modifier', 'auteur', $id_auteur);
176
-	auteur_modifier($id_auteur, $desc);
177
-	autoriser_exception('modifier', 'auteur', $id_auteur, false);
173
+    include_spip('inc/autoriser');
174
+    // lever l'autorisation pour pouvoir modifier le statut
175
+    autoriser_exception('modifier', 'auteur', $id_auteur);
176
+    auteur_modifier($id_auteur, $desc);
177
+    autoriser_exception('modifier', 'auteur', $id_auteur, false);
178 178
 
179
-	$desc['id_auteur'] = $id_auteur;
179
+    $desc['id_auteur'] = $id_auteur;
180 180
 
181
-	return $desc;
181
+    return $desc;
182 182
 }
183 183
 
184 184
 
@@ -190,29 +190,29 @@  discard block
 block discarded – undo
190 190
  * @return string
191 191
  */
192 192
 function test_login($nom, $mail) {
193
-	include_spip('inc/charsets');
194
-	$nom = strtolower(translitteration($nom));
195
-	$login_base = preg_replace("/[^\w\d_]/", "_", $nom);
196
-
197
-	// il faut eviter que le login soit vraiment trop court
198
-	if (strlen($login_base) < 3) {
199
-		$mail = strtolower(translitteration(preg_replace('/@.*/', '', $mail)));
200
-		$login_base = preg_replace("/[^\w\d]/", "_", $mail);
201
-	}
202
-	if (strlen($login_base) < 3) {
203
-		$login_base = 'user';
204
-	}
205
-
206
-	$login = $login_base;
207
-
208
-	for ($i = 1; ; $i++) {
209
-		if (!sql_countsel('spip_auteurs', "login='$login'")) {
210
-			return $login;
211
-		}
212
-		$login = $login_base . $i;
213
-	}
214
-
215
-	return $login;
193
+    include_spip('inc/charsets');
194
+    $nom = strtolower(translitteration($nom));
195
+    $login_base = preg_replace("/[^\w\d_]/", "_", $nom);
196
+
197
+    // il faut eviter que le login soit vraiment trop court
198
+    if (strlen($login_base) < 3) {
199
+        $mail = strtolower(translitteration(preg_replace('/@.*/', '', $mail)));
200
+        $login_base = preg_replace("/[^\w\d]/", "_", $mail);
201
+    }
202
+    if (strlen($login_base) < 3) {
203
+        $login_base = 'user';
204
+    }
205
+
206
+    $login = $login_base;
207
+
208
+    for ($i = 1; ; $i++) {
209
+        if (!sql_countsel('spip_auteurs', "login='$login'")) {
210
+            return $login;
211
+        }
212
+        $login = $login_base . $i;
213
+    }
214
+
215
+    return $login;
216 216
 }
217 217
 
218 218
 
@@ -230,26 +230,26 @@  discard block
 block discarded – undo
230 230
  */
231 231
 function envoyer_inscription_dist($desc, $nom, $mode, $options = array()) {
232 232
 
233
-	$contexte = array_merge($desc, $options);
234
-	$contexte['nom'] = $nom;
235
-	$contexte['mode'] = $mode;
236
-	$contexte['url_confirm'] = generer_url_action('confirmer_inscription', '', true, true);
237
-	$contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'email', $desc['email']);
238
-	$contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'jeton', $desc['jeton']);
239
-	// S'il y a l'option redirect, on l'ajoute directement ici
240
-	if (isset($options['redirect'])) {
241
-		$contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'redirect', $options['redirect']);
242
-	}
243
-
244
-	$modele_mail = 'modeles/mail_inscription';
245
-	if (isset($options['modele_mail']) and $options['modele_mail']){
246
-		$modele_mail = $options['modele_mail'];
247
-	}
248
-	$message = recuperer_fond($modele_mail, $contexte);
249
-	$from = (isset($options['from']) ? $options['from'] : null);
250
-	$head = null;
251
-
252
-	return array("", $message, $from, $head);
233
+    $contexte = array_merge($desc, $options);
234
+    $contexte['nom'] = $nom;
235
+    $contexte['mode'] = $mode;
236
+    $contexte['url_confirm'] = generer_url_action('confirmer_inscription', '', true, true);
237
+    $contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'email', $desc['email']);
238
+    $contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'jeton', $desc['jeton']);
239
+    // S'il y a l'option redirect, on l'ajoute directement ici
240
+    if (isset($options['redirect'])) {
241
+        $contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'redirect', $options['redirect']);
242
+    }
243
+
244
+    $modele_mail = 'modeles/mail_inscription';
245
+    if (isset($options['modele_mail']) and $options['modele_mail']){
246
+        $modele_mail = $options['modele_mail'];
247
+    }
248
+    $message = recuperer_fond($modele_mail, $contexte);
249
+    $from = (isset($options['from']) ? $options['from'] : null);
250
+    $head = null;
251
+
252
+    return array("", $message, $from, $head);
253 253
 }
254 254
 
255 255
 
@@ -260,12 +260,12 @@  discard block
 block discarded – undo
260 260
  * @return string
261 261
  */
262 262
 function creer_pass_pour_auteur($id_auteur) {
263
-	include_spip('inc/acces');
264
-	$pass = creer_pass_aleatoire(16, $id_auteur);
265
-	include_spip('action/editer_auteur');
266
-	auteur_instituer($id_auteur, array('pass' => $pass));
263
+    include_spip('inc/acces');
264
+    $pass = creer_pass_aleatoire(16, $id_auteur);
265
+    include_spip('action/editer_auteur');
266
+    auteur_instituer($id_auteur, array('pass' => $pass));
267 267
 
268
-	return $pass;
268
+    return $pass;
269 269
 }
270 270
 
271 271
 /**
@@ -278,17 +278,17 @@  discard block
 block discarded – undo
278 278
  * @return string
279 279
  */
280 280
 function tester_statut_inscription($statut_tmp, $id) {
281
-	include_spip('inc/autoriser');
282
-	if ($statut_tmp) {
283
-		return autoriser('inscrireauteur', $statut_tmp, $id) ? $statut_tmp : '';
284
-	} elseif (
285
-		autoriser('inscrireauteur', $statut_tmp = "1comite", $id)
286
-		or autoriser('inscrireauteur', $statut_tmp = "6forum", $id)
287
-	) {
288
-		return $statut_tmp;
289
-	}
290
-
291
-	return '';
281
+    include_spip('inc/autoriser');
282
+    if ($statut_tmp) {
283
+        return autoriser('inscrireauteur', $statut_tmp, $id) ? $statut_tmp : '';
284
+    } elseif (
285
+        autoriser('inscrireauteur', $statut_tmp = "1comite", $id)
286
+        or autoriser('inscrireauteur', $statut_tmp = "6forum", $id)
287
+    ) {
288
+        return $statut_tmp;
289
+    }
290
+
291
+    return '';
292 292
 }
293 293
 
294 294
 
@@ -302,35 +302,35 @@  discard block
 block discarded – undo
302 302
  * @return array
303 303
  */
304 304
 function confirmer_statut_inscription($auteur) {
305
-	// securite
306
-	if ($auteur['statut'] != 'nouveau') {
307
-		return $auteur;
308
-	}
309
-
310
-	$s = $auteur['prefs'];
311
-	// securite, au cas ou prefs aurait ete corrompu (ou deja ecrase par un tableau serialize)
312
-	if (!preg_match(',^\w+$,', $s)) {
313
-		$s = '6forum';
314
-	}
315
-	include_spip('inc/autoriser');
316
-	if (!autoriser('inscrireauteur', $s)) {
317
-		return $auteur;
318
-	}
319
-
320
-	include_spip('inc/autoriser');
321
-	// accorder l'autorisation de modif du statut auteur
322
-	autoriser_exception('modifier', 'auteur', $auteur['id_auteur']);
323
-	include_spip('action/editer_auteur');
324
-	// changer le statut
325
-	auteur_modifier($auteur['id_auteur'], array('statut' => $s));
326
-	unset($_COOKIE['spip_session']); // forcer la maj de la session
327
-	// lever l'autorisation de modif du statut auteur
328
-	autoriser_exception('modifier', 'auteur', $auteur['id_auteur'], false);
329
-
330
-	// mettre a jour le statut
331
-	$auteur['statut'] = $s;
332
-
333
-	return $auteur;
305
+    // securite
306
+    if ($auteur['statut'] != 'nouveau') {
307
+        return $auteur;
308
+    }
309
+
310
+    $s = $auteur['prefs'];
311
+    // securite, au cas ou prefs aurait ete corrompu (ou deja ecrase par un tableau serialize)
312
+    if (!preg_match(',^\w+$,', $s)) {
313
+        $s = '6forum';
314
+    }
315
+    include_spip('inc/autoriser');
316
+    if (!autoriser('inscrireauteur', $s)) {
317
+        return $auteur;
318
+    }
319
+
320
+    include_spip('inc/autoriser');
321
+    // accorder l'autorisation de modif du statut auteur
322
+    autoriser_exception('modifier', 'auteur', $auteur['id_auteur']);
323
+    include_spip('action/editer_auteur');
324
+    // changer le statut
325
+    auteur_modifier($auteur['id_auteur'], array('statut' => $s));
326
+    unset($_COOKIE['spip_session']); // forcer la maj de la session
327
+    // lever l'autorisation de modif du statut auteur
328
+    autoriser_exception('modifier', 'auteur', $auteur['id_auteur'], false);
329
+
330
+    // mettre a jour le statut
331
+    $auteur['statut'] = $s;
332
+
333
+    return $auteur;
334 334
 }
335 335
 
336 336
 
@@ -342,14 +342,14 @@  discard block
 block discarded – undo
342 342
  * @return string
343 343
  */
344 344
 function auteur_attribuer_jeton($id_auteur) {
345
-	include_spip('inc/acces');
346
-	// s'assurer de l'unicite du jeton pour le couple (email,cookie)
347
-	do {
348
-		$jeton = creer_uniqid();
349
-		sql_updateq("spip_auteurs", array("cookie_oubli" => $jeton), "id_auteur=" . intval($id_auteur));
350
-	} while (sql_countsel("spip_auteurs", "cookie_oubli=" . sql_quote($jeton)) > 1);
351
-
352
-	return $jeton;
345
+    include_spip('inc/acces');
346
+    // s'assurer de l'unicite du jeton pour le couple (email,cookie)
347
+    do {
348
+        $jeton = creer_uniqid();
349
+        sql_updateq("spip_auteurs", array("cookie_oubli" => $jeton), "id_auteur=" . intval($id_auteur));
350
+    } while (sql_countsel("spip_auteurs", "cookie_oubli=" . sql_quote($jeton)) > 1);
351
+
352
+    return $jeton;
353 353
 }
354 354
 
355 355
 /**
@@ -359,15 +359,15 @@  discard block
 block discarded – undo
359 359
  * @return array|bool
360 360
  */
361 361
 function auteur_verifier_jeton($jeton) {
362
-	// refuser un jeton corrompu
363
-	if (preg_match(',[^0-9a-f.],i', $jeton)) {
364
-		return false;
365
-	}
362
+    // refuser un jeton corrompu
363
+    if (preg_match(',[^0-9a-f.],i', $jeton)) {
364
+        return false;
365
+    }
366 366
 
367
-	// on peut tomber sur un jeton compose uniquement de chiffres, il faut forcer le $type pour sql_quote pour eviter de planter
368
-	$desc = sql_fetsel('*', 'spip_auteurs', "cookie_oubli=" . sql_quote($jeton, '', 'string'));
367
+    // on peut tomber sur un jeton compose uniquement de chiffres, il faut forcer le $type pour sql_quote pour eviter de planter
368
+    $desc = sql_fetsel('*', 'spip_auteurs', "cookie_oubli=" . sql_quote($jeton, '', 'string'));
369 369
 
370
-	return $desc;
370
+    return $desc;
371 371
 }
372 372
 
373 373
 /**
@@ -377,5 +377,5 @@  discard block
 block discarded – undo
377 377
  * @return bool
378 378
  */
379 379
 function auteur_effacer_jeton($id_auteur) {
380
-	return sql_updateq("spip_auteurs", array("cookie_oubli" => ''), "id_auteur=" . intval($id_auteur));
380
+    return sql_updateq("spip_auteurs", array("cookie_oubli" => ''), "id_auteur=" . intval($id_auteur));
381 381
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -56,7 +56,7 @@  discard block
 block discarded – undo
56 56
 	}
57 57
 
58 58
 	include_spip('base/abstract_sql');
59
-	$res = sql_select("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($desc['email']));
59
+	$res = sql_select("statut, id_auteur, login, email", "spip_auteurs", "email=".sql_quote($desc['email']));
60 60
 	// erreur ?
61 61
 	if (!$res) {
62 62
 		return _T('titre_probleme_technique');
@@ -209,7 +209,7 @@  discard block
 block discarded – undo
209 209
 		if (!sql_countsel('spip_auteurs', "login='$login'")) {
210 210
 			return $login;
211 211
 		}
212
-		$login = $login_base . $i;
212
+		$login = $login_base.$i;
213 213
 	}
214 214
 
215 215
 	return $login;
@@ -242,7 +242,7 @@  discard block
 block discarded – undo
242 242
 	}
243 243
 
244 244
 	$modele_mail = 'modeles/mail_inscription';
245
-	if (isset($options['modele_mail']) and $options['modele_mail']){
245
+	if (isset($options['modele_mail']) and $options['modele_mail']) {
246 246
 		$modele_mail = $options['modele_mail'];
247 247
 	}
248 248
 	$message = recuperer_fond($modele_mail, $contexte);
@@ -346,8 +346,8 @@  discard block
 block discarded – undo
346 346
 	// s'assurer de l'unicite du jeton pour le couple (email,cookie)
347 347
 	do {
348 348
 		$jeton = creer_uniqid();
349
-		sql_updateq("spip_auteurs", array("cookie_oubli" => $jeton), "id_auteur=" . intval($id_auteur));
350
-	} while (sql_countsel("spip_auteurs", "cookie_oubli=" . sql_quote($jeton)) > 1);
349
+		sql_updateq("spip_auteurs", array("cookie_oubli" => $jeton), "id_auteur=".intval($id_auteur));
350
+	} while (sql_countsel("spip_auteurs", "cookie_oubli=".sql_quote($jeton)) > 1);
351 351
 
352 352
 	return $jeton;
353 353
 }
@@ -365,7 +365,7 @@  discard block
 block discarded – undo
365 365
 	}
366 366
 
367 367
 	// on peut tomber sur un jeton compose uniquement de chiffres, il faut forcer le $type pour sql_quote pour eviter de planter
368
-	$desc = sql_fetsel('*', 'spip_auteurs', "cookie_oubli=" . sql_quote($jeton, '', 'string'));
368
+	$desc = sql_fetsel('*', 'spip_auteurs', "cookie_oubli=".sql_quote($jeton, '', 'string'));
369 369
 
370 370
 	return $desc;
371 371
 }
@@ -377,5 +377,5 @@  discard block
 block discarded – undo
377 377
  * @return bool
378 378
  */
379 379
 function auteur_effacer_jeton($id_auteur) {
380
-	return sql_updateq("spip_auteurs", array("cookie_oubli" => ''), "id_auteur=" . intval($id_auteur));
380
+	return sql_updateq("spip_auteurs", array("cookie_oubli" => ''), "id_auteur=".intval($id_auteur));
381 381
 }
Please login to merge, or discard this patch.