Completed
Push — master ( 8b5a3c...b0cbd6 )
by cam
01:56
created
ecrire/action/editer_liens.php 1 patch
Indentation   +558 added lines, -558 removed lines patch added patch discarded remove patch
@@ -28,7 +28,7 @@  discard block
 block discarded – undo
28 28
  */
29 29
 
30 30
 if (!defined('_ECRIRE_INC_VERSION')) {
31
-	return;
31
+    return;
32 32
 }
33 33
 
34 34
 // charger la gestion les rôles sur les objets
@@ -46,22 +46,22 @@  discard block
 block discarded – undo
46 46
  *     - array(clé primaire, nom de la table de lien) si associable
47 47
  */
48 48
 function objet_associable($objet) {
49
-	$trouver_table = charger_fonction('trouver_table', 'base');
50
-	$table_sql = table_objet_sql($objet);
51
-
52
-	$l = '';
53
-	if (
54
-		($primary = id_table_objet($objet))
55
-		&& $trouver_table($l = $table_sql . '_liens', '', true, ['log_missing' => false])
56
-		&& !preg_match(',[^\w],', $primary)
57
-		&& !preg_match(',[^\w],', $l)
58
-	) {
59
-		return [$primary, $l];
60
-	}
61
-
62
-	spip_log("Objet $objet non associable : ne dispose pas d'une cle primaire $primary OU d'une table liens $l");
63
-
64
-	return false;
49
+    $trouver_table = charger_fonction('trouver_table', 'base');
50
+    $table_sql = table_objet_sql($objet);
51
+
52
+    $l = '';
53
+    if (
54
+        ($primary = id_table_objet($objet))
55
+        && $trouver_table($l = $table_sql . '_liens', '', true, ['log_missing' => false])
56
+        && !preg_match(',[^\w],', $primary)
57
+        && !preg_match(',[^\w],', $l)
58
+    ) {
59
+        return [$primary, $l];
60
+    }
61
+
62
+    spip_log("Objet $objet non associable : ne dispose pas d'une cle primaire $primary OU d'une table liens $l");
63
+
64
+    return false;
65 65
 }
66 66
 
67 67
 /**
@@ -87,13 +87,13 @@  discard block
 block discarded – undo
87 87
  * @return bool|int
88 88
  */
89 89
 function objet_associer($objets_source, $objets_lies, $qualif = null) {
90
-	$modifs = objet_traiter_liaisons('lien_insert', $objets_source, $objets_lies, $qualif);
90
+    $modifs = objet_traiter_liaisons('lien_insert', $objets_source, $objets_lies, $qualif);
91 91
 
92
-	if ($qualif) {
93
-		objet_qualifier_liens($objets_source, $objets_lies, $qualif);
94
-	}
92
+    if ($qualif) {
93
+        objet_qualifier_liens($objets_source, $objets_lies, $qualif);
94
+    }
95 95
 
96
-	return $modifs; // pas d'erreur
96
+    return $modifs; // pas d'erreur
97 97
 }
98 98
 
99 99
 
@@ -127,7 +127,7 @@  discard block
 block discarded – undo
127 127
  * @return bool|int
128 128
  */
129 129
 function objet_dissocier($objets_source, $objets_lies, $cond = null) {
130
-	return objet_traiter_liaisons('lien_delete', $objets_source, $objets_lies, $cond);
130
+    return objet_traiter_liaisons('lien_delete', $objets_source, $objets_lies, $cond);
131 131
 }
132 132
 
133 133
 
@@ -152,7 +152,7 @@  discard block
 block discarded – undo
152 152
  * @return bool|int
153 153
  */
154 154
 function objet_qualifier_liens($objets_source, $objets_lies, $qualif) {
155
-	return objet_traiter_liaisons('lien_set', $objets_source, $objets_lies, $qualif);
155
+    return objet_traiter_liaisons('lien_set', $objets_source, $objets_lies, $qualif);
156 156
 }
157 157
 
158 158
 
@@ -187,7 +187,7 @@  discard block
 block discarded – undo
187 187
  *     Liste des trouvailles
188 188
  */
189 189
 function objet_trouver_liens($objets_source, $objets_lies, $cond = null) {
190
-	return objet_traiter_liaisons('lien_find', $objets_source, $objets_lies, $cond);
190
+    return objet_traiter_liaisons('lien_find', $objets_source, $objets_lies, $cond);
191 191
 }
192 192
 
193 193
 
@@ -211,8 +211,8 @@  discard block
 block discarded – undo
211 211
  * @return int
212 212
  */
213 213
 function objet_optimiser_liens($objets_source, $objets_lies) {
214
-	spip_log('objet_optimiser_liens : ' . json_encode($objets_source, JSON_THROW_ON_ERROR) . ', ' . json_encode($objets_lies, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG);
215
-	return objet_traiter_liaisons('lien_optimise', $objets_source, $objets_lies);
214
+    spip_log('objet_optimiser_liens : ' . json_encode($objets_source, JSON_THROW_ON_ERROR) . ', ' . json_encode($objets_lies, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG);
215
+    return objet_traiter_liaisons('lien_optimise', $objets_source, $objets_lies);
216 216
 }
217 217
 
218 218
 
@@ -232,30 +232,30 @@  discard block
 block discarded – undo
232 232
  *     Nombre de liens copiés
233 233
  */
234 234
 function objet_dupliquer_liens($objet, $id_source, $id_cible, $types = null, $exclure_types = null) {
235
-	include_spip('base/objets');
236
-	$tables = lister_tables_objets_sql();
237
-	$n = 0;
238
-	foreach ($tables as $table_sql => $infos) {
239
-		if ((is_null($types) || in_array($infos['type'], $types)) && (is_null($exclure_types) || !in_array($infos['type'], $exclure_types)) && objet_associable($infos['type'])) {
240
-			$liens = (($infos['type'] == $objet)
241
-				? objet_trouver_liens([$objet => $id_source], '*')
242
-				: objet_trouver_liens([$infos['type'] => '*'], [$objet => $id_source]));
243
-			foreach ($liens as $lien) {
244
-				$n++;
245
-				if ($infos['type'] == $objet) {
246
-					if (
247
-						(is_null($types) || in_array($lien['objet'], $types)) && (is_null($exclure_types) || !in_array($lien['objet'], $exclure_types))
248
-					) {
249
-						objet_associer([$objet => $id_cible], [$lien['objet'] => $lien[$lien['objet']]], $lien);
250
-					}
251
-				} else {
252
-					objet_associer([$infos['type'] => $lien[$infos['type']]], [$objet => $id_cible], $lien);
253
-				}
254
-			}
255
-		}
256
-	}
257
-
258
-	return $n;
235
+    include_spip('base/objets');
236
+    $tables = lister_tables_objets_sql();
237
+    $n = 0;
238
+    foreach ($tables as $table_sql => $infos) {
239
+        if ((is_null($types) || in_array($infos['type'], $types)) && (is_null($exclure_types) || !in_array($infos['type'], $exclure_types)) && objet_associable($infos['type'])) {
240
+            $liens = (($infos['type'] == $objet)
241
+                ? objet_trouver_liens([$objet => $id_source], '*')
242
+                : objet_trouver_liens([$infos['type'] => '*'], [$objet => $id_source]));
243
+            foreach ($liens as $lien) {
244
+                $n++;
245
+                if ($infos['type'] == $objet) {
246
+                    if (
247
+                        (is_null($types) || in_array($lien['objet'], $types)) && (is_null($exclure_types) || !in_array($lien['objet'], $exclure_types))
248
+                    ) {
249
+                        objet_associer([$objet => $id_cible], [$lien['objet'] => $lien[$lien['objet']]], $lien);
250
+                    }
251
+                } else {
252
+                    objet_associer([$infos['type'] => $lien[$infos['type']]], [$objet => $id_cible], $lien);
253
+                }
254
+            }
255
+        }
256
+    }
257
+
258
+    return $n;
259 259
 }
260 260
 
261 261
 /**
@@ -297,38 +297,38 @@  discard block
 block discarded – undo
297 297
  * @return bool|int|array
298 298
  */
299 299
 function objet_traiter_liaisons($operation, $objets_source, $objets_lies, $set = null) {
300
-	// accepter une syntaxe minimale pour supprimer tous les liens
301
-	if ($objets_lies == '*') {
302
-		$objets_lies = ['*' => '*'];
303
-	}
304
-	$modifs = 0; // compter le nombre de modifications
305
-	$echec = null;
306
-	foreach ($objets_source as $objet => $ids) {
307
-		if ($a = objet_associable($objet)) {
308
-			[$primary, $l] = $a;
309
-			if (!is_array($ids)) {
310
-				$ids = [$ids];
311
-			} elseif (reset($ids) == 'NOT') {
312
-				// si on demande un array('NOT',...) => recuperer la liste d'ids correspondants
313
-				$where = lien_where($primary, $ids, '*', '*');
314
-				$ids = sql_allfetsel($primary, $l, $where);
315
-				$ids = array_map('reset', $ids);
316
-			}
317
-			foreach ($ids as $id) {
318
-				$res = $operation($objet, $primary, $l, $id, $objets_lies, $set);
319
-				if ($res === false) {
320
-					spip_log("objet_traiter_liaisons [Echec] : $operation sur $objet/$primary/$l/$id", _LOG_ERREUR);
321
-					$echec = true;
322
-				} else {
323
-					$modifs = ($modifs ? (is_array($res) ? array_merge($modifs, $res) : $modifs + $res) : $res);
324
-				}
325
-			}
326
-		} else {
327
-			$echec = true;
328
-		}
329
-	}
330
-
331
-	return ($echec ? false : $modifs); // pas d'erreur
300
+    // accepter une syntaxe minimale pour supprimer tous les liens
301
+    if ($objets_lies == '*') {
302
+        $objets_lies = ['*' => '*'];
303
+    }
304
+    $modifs = 0; // compter le nombre de modifications
305
+    $echec = null;
306
+    foreach ($objets_source as $objet => $ids) {
307
+        if ($a = objet_associable($objet)) {
308
+            [$primary, $l] = $a;
309
+            if (!is_array($ids)) {
310
+                $ids = [$ids];
311
+            } elseif (reset($ids) == 'NOT') {
312
+                // si on demande un array('NOT',...) => recuperer la liste d'ids correspondants
313
+                $where = lien_where($primary, $ids, '*', '*');
314
+                $ids = sql_allfetsel($primary, $l, $where);
315
+                $ids = array_map('reset', $ids);
316
+            }
317
+            foreach ($ids as $id) {
318
+                $res = $operation($objet, $primary, $l, $id, $objets_lies, $set);
319
+                if ($res === false) {
320
+                    spip_log("objet_traiter_liaisons [Echec] : $operation sur $objet/$primary/$l/$id", _LOG_ERREUR);
321
+                    $echec = true;
322
+                } else {
323
+                    $modifs = ($modifs ? (is_array($res) ? array_merge($modifs, $res) : $modifs + $res) : $res);
324
+                }
325
+            }
326
+        } else {
327
+            $echec = true;
328
+        }
329
+    }
330
+
331
+    return ($echec ? false : $modifs); // pas d'erreur
332 332
 }
333 333
 
334 334
 
@@ -357,116 +357,116 @@  discard block
 block discarded – undo
357 357
  *     Nombre d'insertions faites, false si échec.
358 358
  */
359 359
 function lien_insert($objet_source, $primary, $table_lien, $id, $objets, $qualif) {
360
-	$ins = 0;
361
-	$echec = null;
362
-	if (is_null($qualif)) {
363
-		$qualif = [];
364
-	}
365
-
366
-	foreach ($objets as $objet => $id_objets) {
367
-		if (!is_array($id_objets)) {
368
-			$id_objets = [$id_objets];
369
-		}
370
-
371
-		// role, colonne, where par défaut
372
-		[$role, $colonne_role, $cond] =
373
-			roles_trouver_dans_qualif($objet_source, $objet, $qualif);
374
-
375
-		foreach ($id_objets as $id_objet) {
376
-			$objet = (($objet == '*') ? $objet : objet_type($objet)); # securite
377
-
378
-			$insertions = [
379
-				'id_objet' => $id_objet,
380
-				'objet' => $objet,
381
-				$primary => $id
382
-			];
383
-			// rôle en plus s'il est défini
384
-			if ($role) {
385
-				$insertions += [
386
-					$colonne_role => $role
387
-				];
388
-			}
389
-
390
-			if (lien_triables($table_lien)) {
391
-				if (isset($qualif['rang_lien'])) {
392
-					$rang = $qualif['rang_lien'];
393
-				}
394
-				else {
395
-					$where = lien_where($primary, $id, $objet, $id_objet);
396
-					// si il y a deja un lien pour ce couple (avec un autre role?) on reprend le meme rang si non nul
397
-					if (!$rang = (int) sql_getfetsel('rang_lien', $table_lien, $where)) {
398
-						$where = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet);
399
-						$rang = (int) sql_getfetsel('max(rang_lien)', $table_lien, $where);
400
-						// si aucun lien n'a de rang, on en introduit pas, on garde zero
401
-						if ($rang > 0) {
402
-							$rang = (int) $rang + 1;
403
-						}
404
-					}
405
-				}
406
-				$insertions['rang_lien'] = $rang;
407
-			}
408
-
409
-			$args = [
410
-				'table_lien' => $table_lien,
411
-				'objet_source' => $objet_source,
412
-				'id_objet_source' => $id,
413
-				'objet' => $objet,
414
-				'id_objet' => $id_objet,
415
-				'role' => $role,
416
-				'colonne_role' => $colonne_role,
417
-				'action' => 'insert',
418
-			];
419
-
420
-			// Envoyer aux plugins
421
-			$insertions = pipeline(
422
-				'pre_edition_lien',
423
-				[
424
-					'args' => $args,
425
-					'data' => $insertions
426
-				]
427
-			);
428
-			$args['id_objet'] = $insertions['id_objet'];
429
-
430
-			$where = lien_where($primary, $id, $objet, $id_objet, $cond);
431
-
432
-			if (
433
-				(($id_objet = (int) $insertions['id_objet']) || in_array($objet, ['site', 'rubrique'])) && !sql_getfetsel($primary, $table_lien, $where)
434
-			) {
435
-				if (lien_triables($table_lien) && isset($insertions['rang_lien']) && (int) $insertions['rang_lien']) {
436
-					$where_meme_lien = lien_where($primary, $id, $objet, $id_objet);
437
-					$where_meme_lien = implode(' AND ', $where_meme_lien);
438
-					// on decale les liens de rang_lien>=la valeur inseree pour faire la place
439
-					// sauf sur le meme lien avec un role eventuellement different
440
-					$w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . (int) $insertions['rang_lien'], "NOT($where_meme_lien)"]);
441
-					sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w);
442
-				}
443
-
444
-				$e = sql_insertq($table_lien, $insertions);
445
-				if ($e !== false) {
446
-					$ins++;
447
-					lien_propage_date_modif($objet, $id_objet);
448
-					lien_propage_date_modif($objet_source, $id);
449
-					// Envoyer aux plugins
450
-					pipeline(
451
-						'post_edition_lien',
452
-						[
453
-							'args' => $args,
454
-							'data' => $insertions
455
-						]
456
-					);
457
-				} else {
458
-					$echec = true;
459
-				}
460
-			}
461
-		}
462
-	}
463
-	// si on a fait des insertions, on reordonne les liens concernes
464
-	// pas la peine si $qualif['rang_lien'] etait fournie, on va passer dans lien_set a suivre et donc finir le recomptage
465
-	if ($ins > 0 && empty($qualif['rang_lien'])) {
466
-		lien_ordonner($objet_source, $primary, $table_lien, $id, $objets);
467
-	}
468
-
469
-	return ($echec ? false : $ins);
360
+    $ins = 0;
361
+    $echec = null;
362
+    if (is_null($qualif)) {
363
+        $qualif = [];
364
+    }
365
+
366
+    foreach ($objets as $objet => $id_objets) {
367
+        if (!is_array($id_objets)) {
368
+            $id_objets = [$id_objets];
369
+        }
370
+
371
+        // role, colonne, where par défaut
372
+        [$role, $colonne_role, $cond] =
373
+            roles_trouver_dans_qualif($objet_source, $objet, $qualif);
374
+
375
+        foreach ($id_objets as $id_objet) {
376
+            $objet = (($objet == '*') ? $objet : objet_type($objet)); # securite
377
+
378
+            $insertions = [
379
+                'id_objet' => $id_objet,
380
+                'objet' => $objet,
381
+                $primary => $id
382
+            ];
383
+            // rôle en plus s'il est défini
384
+            if ($role) {
385
+                $insertions += [
386
+                    $colonne_role => $role
387
+                ];
388
+            }
389
+
390
+            if (lien_triables($table_lien)) {
391
+                if (isset($qualif['rang_lien'])) {
392
+                    $rang = $qualif['rang_lien'];
393
+                }
394
+                else {
395
+                    $where = lien_where($primary, $id, $objet, $id_objet);
396
+                    // si il y a deja un lien pour ce couple (avec un autre role?) on reprend le meme rang si non nul
397
+                    if (!$rang = (int) sql_getfetsel('rang_lien', $table_lien, $where)) {
398
+                        $where = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet);
399
+                        $rang = (int) sql_getfetsel('max(rang_lien)', $table_lien, $where);
400
+                        // si aucun lien n'a de rang, on en introduit pas, on garde zero
401
+                        if ($rang > 0) {
402
+                            $rang = (int) $rang + 1;
403
+                        }
404
+                    }
405
+                }
406
+                $insertions['rang_lien'] = $rang;
407
+            }
408
+
409
+            $args = [
410
+                'table_lien' => $table_lien,
411
+                'objet_source' => $objet_source,
412
+                'id_objet_source' => $id,
413
+                'objet' => $objet,
414
+                'id_objet' => $id_objet,
415
+                'role' => $role,
416
+                'colonne_role' => $colonne_role,
417
+                'action' => 'insert',
418
+            ];
419
+
420
+            // Envoyer aux plugins
421
+            $insertions = pipeline(
422
+                'pre_edition_lien',
423
+                [
424
+                    'args' => $args,
425
+                    'data' => $insertions
426
+                ]
427
+            );
428
+            $args['id_objet'] = $insertions['id_objet'];
429
+
430
+            $where = lien_where($primary, $id, $objet, $id_objet, $cond);
431
+
432
+            if (
433
+                (($id_objet = (int) $insertions['id_objet']) || in_array($objet, ['site', 'rubrique'])) && !sql_getfetsel($primary, $table_lien, $where)
434
+            ) {
435
+                if (lien_triables($table_lien) && isset($insertions['rang_lien']) && (int) $insertions['rang_lien']) {
436
+                    $where_meme_lien = lien_where($primary, $id, $objet, $id_objet);
437
+                    $where_meme_lien = implode(' AND ', $where_meme_lien);
438
+                    // on decale les liens de rang_lien>=la valeur inseree pour faire la place
439
+                    // sauf sur le meme lien avec un role eventuellement different
440
+                    $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . (int) $insertions['rang_lien'], "NOT($where_meme_lien)"]);
441
+                    sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w);
442
+                }
443
+
444
+                $e = sql_insertq($table_lien, $insertions);
445
+                if ($e !== false) {
446
+                    $ins++;
447
+                    lien_propage_date_modif($objet, $id_objet);
448
+                    lien_propage_date_modif($objet_source, $id);
449
+                    // Envoyer aux plugins
450
+                    pipeline(
451
+                        'post_edition_lien',
452
+                        [
453
+                            'args' => $args,
454
+                            'data' => $insertions
455
+                        ]
456
+                    );
457
+                } else {
458
+                    $echec = true;
459
+                }
460
+            }
461
+        }
462
+    }
463
+    // si on a fait des insertions, on reordonne les liens concernes
464
+    // pas la peine si $qualif['rang_lien'] etait fournie, on va passer dans lien_set a suivre et donc finir le recomptage
465
+    if ($ins > 0 && empty($qualif['rang_lien'])) {
466
+        lien_ordonner($objet_source, $primary, $table_lien, $id, $objets);
467
+    }
468
+
469
+    return ($echec ? false : $ins);
470 470
 }
471 471
 
472 472
 
@@ -479,47 +479,47 @@  discard block
 block discarded – undo
479 479
  * @param array|string $objets
480 480
  */
481 481
 function lien_ordonner($objet_source, $primary, $table_lien, $id, $objets) {
482
-	if (!lien_triables($table_lien)) {
483
-		return;
484
-	}
485
-
486
-	$deja_reordonne = [];
487
-
488
-	foreach ($objets as $objet => $id_objets) {
489
-		if (!is_array($id_objets)) {
490
-			$id_objets = [$id_objets];
491
-		}
492
-
493
-		foreach ($id_objets as $id_objet) {
494
-			if (empty($deja_reordonne[$id][$objet][$id_objet])) {
495
-				$objet = (($objet == '*') ? $objet : objet_type($objet)); # securite
496
-
497
-				$where = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet);
498
-				$liens = sql_allfetsel("$primary, id_objet, objet, rang_lien", $table_lien, $where, '', 'rang_lien');
499
-
500
-				$rangs = array_column($liens, 'rang_lien');
501
-				if (count($rangs) && (max($rangs) > 0 || min($rangs) < 0)) {
502
-					$rang = 1;
503
-					foreach ($liens as $lien) {
504
-						if (empty($deja_reordonne[$lien[$primary]][$lien['objet']][$lien['id_objet']])) {
505
-							$where = lien_where($primary, $lien[$primary], $lien['objet'], $lien['id_objet'], ['rang_lien!=' . (int) $rang]);
506
-							sql_updateq($table_lien, ['rang_lien' => $rang], $where);
507
-
508
-							if (empty($deja_reordonne[$lien[$primary]])) {
509
-								$deja_reordonne[$lien[$primary]] = [];
510
-							}
511
-							if (empty($deja_reordonne[$lien[$primary]][$lien['objet']])) {
512
-								$deja_reordonne[$lien[$primary]][$lien['objet']] = [];
513
-							}
514
-							$deja_reordonne[$lien[$primary]][$lien['objet']][$lien['id_objet']] = $rang;
515
-
516
-							$rang++;
517
-						}
518
-					}
519
-				}
520
-			}
521
-		}
522
-	}
482
+    if (!lien_triables($table_lien)) {
483
+        return;
484
+    }
485
+
486
+    $deja_reordonne = [];
487
+
488
+    foreach ($objets as $objet => $id_objets) {
489
+        if (!is_array($id_objets)) {
490
+            $id_objets = [$id_objets];
491
+        }
492
+
493
+        foreach ($id_objets as $id_objet) {
494
+            if (empty($deja_reordonne[$id][$objet][$id_objet])) {
495
+                $objet = (($objet == '*') ? $objet : objet_type($objet)); # securite
496
+
497
+                $where = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet);
498
+                $liens = sql_allfetsel("$primary, id_objet, objet, rang_lien", $table_lien, $where, '', 'rang_lien');
499
+
500
+                $rangs = array_column($liens, 'rang_lien');
501
+                if (count($rangs) && (max($rangs) > 0 || min($rangs) < 0)) {
502
+                    $rang = 1;
503
+                    foreach ($liens as $lien) {
504
+                        if (empty($deja_reordonne[$lien[$primary]][$lien['objet']][$lien['id_objet']])) {
505
+                            $where = lien_where($primary, $lien[$primary], $lien['objet'], $lien['id_objet'], ['rang_lien!=' . (int) $rang]);
506
+                            sql_updateq($table_lien, ['rang_lien' => $rang], $where);
507
+
508
+                            if (empty($deja_reordonne[$lien[$primary]])) {
509
+                                $deja_reordonne[$lien[$primary]] = [];
510
+                            }
511
+                            if (empty($deja_reordonne[$lien[$primary]][$lien['objet']])) {
512
+                                $deja_reordonne[$lien[$primary]][$lien['objet']] = [];
513
+                            }
514
+                            $deja_reordonne[$lien[$primary]][$lien['objet']][$lien['id_objet']] = $rang;
515
+
516
+                            $rang++;
517
+                        }
518
+                    }
519
+                }
520
+            }
521
+        }
522
+    }
523 523
 }
524 524
 
525 525
 
@@ -530,13 +530,13 @@  discard block
 block discarded – undo
530 530
  * @return mixed
531 531
  */
532 532
 function lien_triables($table_lien) {
533
-	static $triables = [];
534
-	if (!isset($triables[$table_lien])) {
535
-		$trouver_table = charger_fonction('trouver_table', 'base');
536
-		$desc = $trouver_table($table_lien);
537
-		$triables[$table_lien] = $desc && isset($desc['field']['rang_lien']);
538
-	}
539
-	return $triables[$table_lien];
533
+    static $triables = [];
534
+    if (!isset($triables[$table_lien])) {
535
+        $trouver_table = charger_fonction('trouver_table', 'base');
536
+        $desc = $trouver_table($table_lien);
537
+        $triables[$table_lien] = $desc && isset($desc['field']['rang_lien']);
538
+    }
539
+    return $triables[$table_lien];
540 540
 }
541 541
 
542 542
 
@@ -552,50 +552,50 @@  discard block
 block discarded – undo
552 552
  * @return array                        Liste des conditions
553 553
  */
554 554
 function lien_where($primary, $id_source, $objet, $id_objet, $cond = []) {
555
-	if (
556
-		!is_array($id_source) && !strlen($id_source) || !strlen($objet) || !is_array($id_objet) && !strlen($id_objet)
557
-	) {
558
-		return ['0=1'];
559
-	} // securite
560
-
561
-	$not = '';
562
-	if (is_array($id_source) && reset($id_source) == 'NOT') {
563
-		$not = array_shift($id_source);
564
-		$id_source = reset($id_source);
565
-	}
566
-
567
-	$where = $cond;
568
-
569
-	if ($id_source !== '*') {
570
-		$where[] = (is_array($id_source) ? sql_in(
571
-			addslashes($primary),
572
-			array_map('intval', $id_source),
573
-			$not
574
-		) : addslashes($primary) . ($not ? '<>' : '=') . (int) $id_source);
575
-	} elseif ($not) {
576
-		$where[] = '0=1';
577
-	} // idiot mais quand meme
578
-
579
-	$not = '';
580
-	if (is_array($id_objet) && reset($id_objet) == 'NOT') {
581
-		$not = array_shift($id_objet);
582
-		$id_objet = reset($id_objet);
583
-	}
584
-
585
-	if ($objet !== '*') {
586
-		$where[] = 'objet=' . sql_quote($objet);
587
-	}
588
-	if ($id_objet !== '*') {
589
-		$where[] = (is_array($id_objet) ? sql_in(
590
-			'id_objet',
591
-			array_map('intval', $id_objet),
592
-			$not
593
-		) : 'id_objet' . ($not ? '<>' : '=') . (int) $id_objet);
594
-	} elseif ($not) {
595
-		$where[] = '0=1';
596
-	} // idiot mais quand meme
597
-
598
-	return $where;
555
+    if (
556
+        !is_array($id_source) && !strlen($id_source) || !strlen($objet) || !is_array($id_objet) && !strlen($id_objet)
557
+    ) {
558
+        return ['0=1'];
559
+    } // securite
560
+
561
+    $not = '';
562
+    if (is_array($id_source) && reset($id_source) == 'NOT') {
563
+        $not = array_shift($id_source);
564
+        $id_source = reset($id_source);
565
+    }
566
+
567
+    $where = $cond;
568
+
569
+    if ($id_source !== '*') {
570
+        $where[] = (is_array($id_source) ? sql_in(
571
+            addslashes($primary),
572
+            array_map('intval', $id_source),
573
+            $not
574
+        ) : addslashes($primary) . ($not ? '<>' : '=') . (int) $id_source);
575
+    } elseif ($not) {
576
+        $where[] = '0=1';
577
+    } // idiot mais quand meme
578
+
579
+    $not = '';
580
+    if (is_array($id_objet) && reset($id_objet) == 'NOT') {
581
+        $not = array_shift($id_objet);
582
+        $id_objet = reset($id_objet);
583
+    }
584
+
585
+    if ($objet !== '*') {
586
+        $where[] = 'objet=' . sql_quote($objet);
587
+    }
588
+    if ($id_objet !== '*') {
589
+        $where[] = (is_array($id_objet) ? sql_in(
590
+            'id_objet',
591
+            array_map('intval', $id_objet),
592
+            $not
593
+        ) : 'id_objet' . ($not ? '<>' : '=') . (int) $id_objet);
594
+    } elseif ($not) {
595
+        $where[] = '0=1';
596
+    } // idiot mais quand meme
597
+
598
+    return $where;
599 599
 }
600 600
 
601 601
 /**
@@ -610,13 +610,13 @@  discard block
 block discarded – undo
610 610
  */
611 611
 function lien_rang_where($table_lien, $primary, $id_source, $objet, $id_objet, $cond = []) {
612 612
 
613
-	// si on veut compter les rangs autrement que le core ne le fait par defaut, fournir le where adhoc
614
-	if (function_exists($f = 'lien_rang_where_' . $table_lien)) {
615
-		return $f($primary, $id_source, $objet, $id_objet, $cond);
616
-	}
613
+    // si on veut compter les rangs autrement que le core ne le fait par defaut, fournir le where adhoc
614
+    if (function_exists($f = 'lien_rang_where_' . $table_lien)) {
615
+        return $f($primary, $id_source, $objet, $id_objet, $cond);
616
+    }
617 617
 
618
-	// par defaut c'est un rang compté pour tous les id_source d'un couple objet-id_objet
619
-	return lien_where($primary, '*', $objet, $id_objet, $cond);
618
+    // par defaut c'est un rang compté pour tous les id_source d'un couple objet-id_objet
619
+    return lien_where($primary, '*', $objet, $id_objet, $cond);
620 620
 }
621 621
 
622 622
 /**
@@ -647,90 +647,90 @@  discard block
 block discarded – undo
647 647
  */
648 648
 function lien_delete($objet_source, $primary, $table_lien, $id, $objets, $cond = null) {
649 649
 
650
-	$retire = [];
651
-	$dels = 0;
652
-	$echec = false;
653
-	if (is_null($cond)) {
654
-		$cond = [];
655
-	}
656
-
657
-	foreach ($objets as $objet => $id_objets) {
658
-		$objet = ($objet == '*') ? $objet : objet_type($objet); # securite
659
-		if (!is_array($id_objets) || reset($id_objets) == 'NOT') {
660
-			$id_objets = [$id_objets];
661
-		}
662
-		foreach ($id_objets as $id_objet) {
663
-			[$cond, $colonne_role, $role] = roles_creer_condition_role($objet_source, $objet, $cond);
664
-			// id_objet peut valoir '*'
665
-			$where = lien_where($primary, $id, $objet, $id_objet, $cond);
666
-
667
-			// lire les liens existants pour propager la date de modif
668
-			$select = "$primary,id_objet,objet";
669
-			if ($colonne_role) {
670
-				$select .= ",$colonne_role";
671
-			}
672
-			$liens = sql_allfetsel($select, $table_lien, $where);
673
-
674
-			// iterer sur les liens pour permettre aux plugins de gerer
675
-			foreach ($liens as $l) {
676
-				$args = [
677
-					'table_lien' => $table_lien,
678
-					'objet_source' => $objet_source,
679
-					'id_objet_source' => $l[$primary],
680
-					'objet' => $l['objet'],
681
-					'id_objet' => $l['id_objet'],
682
-					'colonne_role' => $colonne_role,
683
-					'role' => ($colonne_role ? $l[$colonne_role] : ''),
684
-					'action' => 'delete',
685
-				];
686
-
687
-				// Envoyer aux plugins
688
-				$l = pipeline(
689
-					'pre_edition_lien',
690
-					[
691
-						'args' => $args,
692
-						'data' => $l
693
-					]
694
-				);
695
-				$args['id_objet'] = $id_o = $l['id_objet'];
696
-
697
-				if (($id_o = (int) $l['id_objet']) || in_array($l['objet'], ['site', 'rubrique'])) {
698
-					$where = lien_where($primary, $l[$primary], $l['objet'], $id_o, $cond);
699
-					$e = sql_delete($table_lien, $where);
700
-					if ($e !== false) {
701
-						$dels += $e;
702
-						lien_propage_date_modif($l['objet'], $id_o);
703
-						lien_propage_date_modif($objet_source, $l[$primary]);
704
-					} else {
705
-						$echec = true;
706
-					}
707
-					$retire[] = [
708
-						'source' => [$objet_source => $l[$primary]],
709
-						'lien' => [$l['objet'] => $id_o],
710
-						'type' => $l['objet'],
711
-						'role' => ($colonne_role ? $l[$colonne_role] : ''),
712
-						'id' => $id_o
713
-					];
714
-					// Envoyer aux plugins
715
-					pipeline(
716
-						'post_edition_lien',
717
-						[
718
-							'args' => $args,
719
-							'data' => $l
720
-						]
721
-					);
722
-				}
723
-			}
724
-		}
725
-	}
726
-	// si on a supprime des liens, on reordonne les liens concernes
727
-	if ($dels) {
728
-		lien_ordonner($objet_source, $primary, $table_lien, $id, $objets);
729
-	}
730
-
731
-	pipeline('trig_supprimer_objets_lies', $retire);
732
-
733
-	return ($echec ? false : $dels);
650
+    $retire = [];
651
+    $dels = 0;
652
+    $echec = false;
653
+    if (is_null($cond)) {
654
+        $cond = [];
655
+    }
656
+
657
+    foreach ($objets as $objet => $id_objets) {
658
+        $objet = ($objet == '*') ? $objet : objet_type($objet); # securite
659
+        if (!is_array($id_objets) || reset($id_objets) == 'NOT') {
660
+            $id_objets = [$id_objets];
661
+        }
662
+        foreach ($id_objets as $id_objet) {
663
+            [$cond, $colonne_role, $role] = roles_creer_condition_role($objet_source, $objet, $cond);
664
+            // id_objet peut valoir '*'
665
+            $where = lien_where($primary, $id, $objet, $id_objet, $cond);
666
+
667
+            // lire les liens existants pour propager la date de modif
668
+            $select = "$primary,id_objet,objet";
669
+            if ($colonne_role) {
670
+                $select .= ",$colonne_role";
671
+            }
672
+            $liens = sql_allfetsel($select, $table_lien, $where);
673
+
674
+            // iterer sur les liens pour permettre aux plugins de gerer
675
+            foreach ($liens as $l) {
676
+                $args = [
677
+                    'table_lien' => $table_lien,
678
+                    'objet_source' => $objet_source,
679
+                    'id_objet_source' => $l[$primary],
680
+                    'objet' => $l['objet'],
681
+                    'id_objet' => $l['id_objet'],
682
+                    'colonne_role' => $colonne_role,
683
+                    'role' => ($colonne_role ? $l[$colonne_role] : ''),
684
+                    'action' => 'delete',
685
+                ];
686
+
687
+                // Envoyer aux plugins
688
+                $l = pipeline(
689
+                    'pre_edition_lien',
690
+                    [
691
+                        'args' => $args,
692
+                        'data' => $l
693
+                    ]
694
+                );
695
+                $args['id_objet'] = $id_o = $l['id_objet'];
696
+
697
+                if (($id_o = (int) $l['id_objet']) || in_array($l['objet'], ['site', 'rubrique'])) {
698
+                    $where = lien_where($primary, $l[$primary], $l['objet'], $id_o, $cond);
699
+                    $e = sql_delete($table_lien, $where);
700
+                    if ($e !== false) {
701
+                        $dels += $e;
702
+                        lien_propage_date_modif($l['objet'], $id_o);
703
+                        lien_propage_date_modif($objet_source, $l[$primary]);
704
+                    } else {
705
+                        $echec = true;
706
+                    }
707
+                    $retire[] = [
708
+                        'source' => [$objet_source => $l[$primary]],
709
+                        'lien' => [$l['objet'] => $id_o],
710
+                        'type' => $l['objet'],
711
+                        'role' => ($colonne_role ? $l[$colonne_role] : ''),
712
+                        'id' => $id_o
713
+                    ];
714
+                    // Envoyer aux plugins
715
+                    pipeline(
716
+                        'post_edition_lien',
717
+                        [
718
+                            'args' => $args,
719
+                            'data' => $l
720
+                        ]
721
+                    );
722
+                }
723
+            }
724
+        }
725
+    }
726
+    // si on a supprime des liens, on reordonne les liens concernes
727
+    if ($dels) {
728
+        lien_ordonner($objet_source, $primary, $table_lien, $id, $objets);
729
+    }
730
+
731
+    pipeline('trig_supprimer_objets_lies', $retire);
732
+
733
+    return ($echec ? false : $dels);
734 734
 }
735 735
 
736 736
 
@@ -753,67 +753,67 @@  discard block
 block discarded – undo
753 753
  * @return bool|int
754 754
  */
755 755
 function lien_optimise($objet_source, $primary, $table_lien, $id, $objets) {
756
-	include_spip('genie/optimiser');
757
-	$echec = false;
758
-	$dels = 0;
759
-	foreach ($objets as $objet => $id_objets) {
760
-		$objet = ($objet == '*') ? $objet : objet_type($objet); # securite
761
-		if (!is_array($id_objets) || reset($id_objets) == 'NOT') {
762
-			$id_objets = [$id_objets];
763
-		}
764
-		foreach ($id_objets as $id_objet) {
765
-			$where = lien_where($primary, $id, $objet, $id_objet);
766
-			# les liens vers un objet inexistant
767
-			$r = sql_select('DISTINCT objet', $table_lien, $where);
768
-			while ($t = sql_fetch($r)) {
769
-				$type = $t['objet'];
770
-				$spip_table_objet = table_objet_sql($type);
771
-				$id_table_objet = id_table_objet($type);
772
-				$res = sql_select(
773
-					"L.$primary AS id,L.id_objet",
774
-					// la condition de jointure inclue L.objet='xxx' pour ne joindre que les bonnes lignes
775
-					// du coups toutes les lignes avec un autre objet ont un id_xxx=NULL puisque LEFT JOIN
776
-					// il faut les eliminier en repetant la condition dans le where L.objet='xxx'
777
-					"$table_lien AS L
756
+    include_spip('genie/optimiser');
757
+    $echec = false;
758
+    $dels = 0;
759
+    foreach ($objets as $objet => $id_objets) {
760
+        $objet = ($objet == '*') ? $objet : objet_type($objet); # securite
761
+        if (!is_array($id_objets) || reset($id_objets) == 'NOT') {
762
+            $id_objets = [$id_objets];
763
+        }
764
+        foreach ($id_objets as $id_objet) {
765
+            $where = lien_where($primary, $id, $objet, $id_objet);
766
+            # les liens vers un objet inexistant
767
+            $r = sql_select('DISTINCT objet', $table_lien, $where);
768
+            while ($t = sql_fetch($r)) {
769
+                $type = $t['objet'];
770
+                $spip_table_objet = table_objet_sql($type);
771
+                $id_table_objet = id_table_objet($type);
772
+                $res = sql_select(
773
+                    "L.$primary AS id,L.id_objet",
774
+                    // la condition de jointure inclue L.objet='xxx' pour ne joindre que les bonnes lignes
775
+                    // du coups toutes les lignes avec un autre objet ont un id_xxx=NULL puisque LEFT JOIN
776
+                    // il faut les eliminier en repetant la condition dans le where L.objet='xxx'
777
+                    "$table_lien AS L
778 778
 									LEFT JOIN $spip_table_objet AS O
779 779
 										ON (O.$id_table_objet=L.id_objet AND L.objet=" . sql_quote($type) . ')',
780
-					'L.objet=' . sql_quote($type) . " AND O.$id_table_objet IS NULL"
781
-				);
782
-				// sur une cle primaire composee, pas d'autres solutions que de virer un a un
783
-				while ($row = sql_fetch($res)) {
784
-					if ($primary === 'id_document' && in_array($type, ['site', 'rubrique']) && !(int) $row['id_objet']) {
785
-						continue; // gaffe, c'est le logo du site ou des rubriques!
786
-					}
787
-					$e = sql_delete(
788
-						$table_lien,
789
-						["$primary=" . $row['id'], 'id_objet=' . $row['id_objet'], 'objet=' . sql_quote($type)]
790
-					);
791
-					if ($e != false) {
792
-						$dels += $e;
793
-						spip_log(
794
-							'lien_optimise: Entree ' . $row['id'] . '/' . $row['id_objet'] . "/$type supprimee dans la table $table_lien",
795
-							'genie' . _LOG_INFO_IMPORTANTE
796
-						);
797
-					}
798
-				}
799
-			}
800
-
801
-			# les liens depuis un objet inexistant
802
-			$table_source = table_objet_sql($objet_source);
803
-			// filtrer selon $id, $objet, $id_objet eventuellement fournis
804
-			// (en general '*' pour chaque)
805
-			$where = lien_where("L.$primary", $id, $objet, $id_objet);
806
-			$where[] = "O.$primary IS NULL";
807
-			$res = sql_select(
808
-				"L.$primary AS id",
809
-				"$table_lien AS L LEFT JOIN $table_source AS O ON L.$primary=O.$primary",
810
-				$where
811
-			);
812
-			$dels += optimiser_sansref($table_lien, $primary, $res);
813
-		}
814
-	}
815
-
816
-	return ($echec ? false : $dels);
780
+                    'L.objet=' . sql_quote($type) . " AND O.$id_table_objet IS NULL"
781
+                );
782
+                // sur une cle primaire composee, pas d'autres solutions que de virer un a un
783
+                while ($row = sql_fetch($res)) {
784
+                    if ($primary === 'id_document' && in_array($type, ['site', 'rubrique']) && !(int) $row['id_objet']) {
785
+                        continue; // gaffe, c'est le logo du site ou des rubriques!
786
+                    }
787
+                    $e = sql_delete(
788
+                        $table_lien,
789
+                        ["$primary=" . $row['id'], 'id_objet=' . $row['id_objet'], 'objet=' . sql_quote($type)]
790
+                    );
791
+                    if ($e != false) {
792
+                        $dels += $e;
793
+                        spip_log(
794
+                            'lien_optimise: Entree ' . $row['id'] . '/' . $row['id_objet'] . "/$type supprimee dans la table $table_lien",
795
+                            'genie' . _LOG_INFO_IMPORTANTE
796
+                        );
797
+                    }
798
+                }
799
+            }
800
+
801
+            # les liens depuis un objet inexistant
802
+            $table_source = table_objet_sql($objet_source);
803
+            // filtrer selon $id, $objet, $id_objet eventuellement fournis
804
+            // (en general '*' pour chaque)
805
+            $where = lien_where("L.$primary", $id, $objet, $id_objet);
806
+            $where[] = "O.$primary IS NULL";
807
+            $res = sql_select(
808
+                "L.$primary AS id",
809
+                "$table_lien AS L LEFT JOIN $table_source AS O ON L.$primary=O.$primary",
810
+                $where
811
+            );
812
+            $dels += optimiser_sansref($table_lien, $primary, $res);
813
+        }
814
+    }
815
+
816
+    return ($echec ? false : $dels);
817 817
 }
818 818
 
819 819
 
@@ -845,92 +845,92 @@  discard block
 block discarded – undo
845 845
  *     Nombre de modifications faites, false si échec.
846 846
  */
847 847
 function lien_set($objet_source, $primary, $table_lien, $id, $objets, $qualif) {
848
-	$echec = null;
849
-	$ok = 0;
850
-	$reordonner = false;
851
-	if (!$qualif) {
852
-		return false;
853
-	}
854
-	// nettoyer qualif qui peut venir directement d'un objet_trouver_lien :
855
-	unset($qualif[$primary]);
856
-	unset($qualif[$objet_source]);
857
-	if (isset($qualif['objet'])) {
858
-		unset($qualif[$qualif['objet']]);
859
-	}
860
-	unset($qualif['objet']);
861
-	unset($qualif['id_objet']);
862
-	foreach ($objets as $objet => $id_objets) {
863
-		// role, colonne, where par défaut
864
-		[$role, $colonne_role, $cond] =
865
-			roles_trouver_dans_qualif($objet_source, $objet, $qualif);
866
-
867
-		$objet = ($objet == '*') ? $objet : objet_type($objet); # securite
868
-		if (!is_array($id_objets) || reset($id_objets) == 'NOT') {
869
-			$id_objets = [$id_objets];
870
-		}
871
-		foreach ($id_objets as $id_objet) {
872
-			$args = [
873
-				'table_lien' => $table_lien,
874
-				'objet_source' => $objet_source,
875
-				'id_objet_source' => $id,
876
-				'objet' => $objet,
877
-				'id_objet' => $id_objet,
878
-				'role' => $role,
879
-				'colonne_role' => $colonne_role,
880
-				'action' => 'modifier',
881
-			];
882
-
883
-			// Envoyer aux plugins
884
-			$qualif = pipeline(
885
-				'pre_edition_lien',
886
-				[
887
-					'args' => $args,
888
-					'data' => $qualif,
889
-				]
890
-			);
891
-			$args['id_objet'] = $id_objet;
892
-
893
-			if (lien_triables($table_lien) && isset($qualif['rang_lien'])) {
894
-				if ((int) $qualif['rang_lien']) {
895
-					// on decale les liens de rang_lien>=la valeur inseree pour faire la place
896
-					// sauf sur le meme lien avec un role eventuellement different
897
-					$where_meme_lien = lien_where($primary, $id, $objet, $id_objet);
898
-					$where_meme_lien = implode(' AND ', $where_meme_lien);
899
-					$w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . (int) $qualif['rang_lien'], "NOT($where_meme_lien)"]);
900
-					sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w);
901
-				}
902
-				// tous les liens de même rôle recoivent le rang indiqué aussi
903
-				if (roles_colonne($objet_source, $objet)) {
904
-					$w = lien_where($primary, $id, $objet, $id_objet);
905
-					sql_updateq($table_lien, ['rang_lien' => (int) $qualif['rang_lien']], $w);
906
-				}
907
-				$reordonner = true;
908
-			}
909
-
910
-			$where = lien_where($primary, $id, $objet, $id_objet, $cond);
911
-			$e = sql_updateq($table_lien, $qualif, $where);
912
-
913
-			if ($e === false) {
914
-				$echec = true;
915
-			} else {
916
-				// Envoyer aux plugins
917
-				pipeline(
918
-					'post_edition_lien',
919
-					[
920
-						'args' => $args,
921
-						'data' => $qualif
922
-					]
923
-				);
924
-				$ok++;
925
-			}
926
-		}
927
-	}
928
-	// si on a fait des modif de rang, on reordonne les liens concernes
929
-	if ($reordonner) {
930
-		lien_ordonner($objet_source, $primary, $table_lien, $id, $objets);
931
-	}
932
-
933
-	return ($echec ? false : $ok);
848
+    $echec = null;
849
+    $ok = 0;
850
+    $reordonner = false;
851
+    if (!$qualif) {
852
+        return false;
853
+    }
854
+    // nettoyer qualif qui peut venir directement d'un objet_trouver_lien :
855
+    unset($qualif[$primary]);
856
+    unset($qualif[$objet_source]);
857
+    if (isset($qualif['objet'])) {
858
+        unset($qualif[$qualif['objet']]);
859
+    }
860
+    unset($qualif['objet']);
861
+    unset($qualif['id_objet']);
862
+    foreach ($objets as $objet => $id_objets) {
863
+        // role, colonne, where par défaut
864
+        [$role, $colonne_role, $cond] =
865
+            roles_trouver_dans_qualif($objet_source, $objet, $qualif);
866
+
867
+        $objet = ($objet == '*') ? $objet : objet_type($objet); # securite
868
+        if (!is_array($id_objets) || reset($id_objets) == 'NOT') {
869
+            $id_objets = [$id_objets];
870
+        }
871
+        foreach ($id_objets as $id_objet) {
872
+            $args = [
873
+                'table_lien' => $table_lien,
874
+                'objet_source' => $objet_source,
875
+                'id_objet_source' => $id,
876
+                'objet' => $objet,
877
+                'id_objet' => $id_objet,
878
+                'role' => $role,
879
+                'colonne_role' => $colonne_role,
880
+                'action' => 'modifier',
881
+            ];
882
+
883
+            // Envoyer aux plugins
884
+            $qualif = pipeline(
885
+                'pre_edition_lien',
886
+                [
887
+                    'args' => $args,
888
+                    'data' => $qualif,
889
+                ]
890
+            );
891
+            $args['id_objet'] = $id_objet;
892
+
893
+            if (lien_triables($table_lien) && isset($qualif['rang_lien'])) {
894
+                if ((int) $qualif['rang_lien']) {
895
+                    // on decale les liens de rang_lien>=la valeur inseree pour faire la place
896
+                    // sauf sur le meme lien avec un role eventuellement different
897
+                    $where_meme_lien = lien_where($primary, $id, $objet, $id_objet);
898
+                    $where_meme_lien = implode(' AND ', $where_meme_lien);
899
+                    $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . (int) $qualif['rang_lien'], "NOT($where_meme_lien)"]);
900
+                    sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w);
901
+                }
902
+                // tous les liens de même rôle recoivent le rang indiqué aussi
903
+                if (roles_colonne($objet_source, $objet)) {
904
+                    $w = lien_where($primary, $id, $objet, $id_objet);
905
+                    sql_updateq($table_lien, ['rang_lien' => (int) $qualif['rang_lien']], $w);
906
+                }
907
+                $reordonner = true;
908
+            }
909
+
910
+            $where = lien_where($primary, $id, $objet, $id_objet, $cond);
911
+            $e = sql_updateq($table_lien, $qualif, $where);
912
+
913
+            if ($e === false) {
914
+                $echec = true;
915
+            } else {
916
+                // Envoyer aux plugins
917
+                pipeline(
918
+                    'post_edition_lien',
919
+                    [
920
+                        'args' => $args,
921
+                        'data' => $qualif
922
+                    ]
923
+                );
924
+                $ok++;
925
+            }
926
+        }
927
+    }
928
+    // si on a fait des modif de rang, on reordonne les liens concernes
929
+    if ($reordonner) {
930
+        lien_ordonner($objet_source, $primary, $table_lien, $id, $objets);
931
+    }
932
+
933
+    return ($echec ? false : $ok);
934 934
 }
935 935
 
936 936
 /**
@@ -960,23 +960,23 @@  discard block
 block discarded – undo
960 960
  * @return array
961 961
  */
962 962
 function lien_find($objet_source, $primary, $table_lien, $id, $objets, $cond = null) {
963
-	$trouve = [];
964
-	foreach ($objets as $objet => $id_objets) {
965
-		$objet = ($objet == '*') ? $objet : objet_type($objet); # securite
966
-		// gerer les roles s'il y en a dans $cond
967
-		[$cond] = roles_creer_condition_role($objet_source, $objet, $cond, true);
968
-		// lien_where prend en charge les $id_objets sous forme int ou array
969
-		$where = lien_where($primary, $id, $objet, $id_objets, $cond);
970
-		$liens = sql_allfetsel('*', $table_lien, $where);
971
-		// ajouter les entrees objet_source et objet cible par convenance
972
-		foreach ($liens as $l) {
973
-			$l[$objet_source] = $l[$primary];
974
-			$l[$l['objet']] = $l['id_objet'];
975
-			$trouve[] = $l;
976
-		}
977
-	}
978
-
979
-	return $trouve;
963
+    $trouve = [];
964
+    foreach ($objets as $objet => $id_objets) {
965
+        $objet = ($objet == '*') ? $objet : objet_type($objet); # securite
966
+        // gerer les roles s'il y en a dans $cond
967
+        [$cond] = roles_creer_condition_role($objet_source, $objet, $cond, true);
968
+        // lien_where prend en charge les $id_objets sous forme int ou array
969
+        $where = lien_where($primary, $id, $objet, $id_objets, $cond);
970
+        $liens = sql_allfetsel('*', $table_lien, $where);
971
+        // ajouter les entrees objet_source et objet cible par convenance
972
+        foreach ($liens as $l) {
973
+            $l[$objet_source] = $l[$primary];
974
+            $l[$l['objet']] = $l['id_objet'];
975
+            $trouve[] = $l;
976
+        }
977
+    }
978
+
979
+    return $trouve;
980 980
 }
981 981
 
982 982
 /**
@@ -987,25 +987,25 @@  discard block
 block discarded – undo
987 987
  * @param array|int $ids
988 988
  */
989 989
 function lien_propage_date_modif($objet, $ids) {
990
-	static $done = [];
991
-	$hash = md5($objet . serialize($ids));
992
-
993
-	// sql_updateq, peut être un rien lent.
994
-	// On évite de l'appeler 2 fois sur les mêmes choses
995
-	if (isset($done[$hash])) {
996
-		return;
997
-	}
998
-
999
-	$trouver_table = charger_fonction('trouver_table', 'base');
1000
-
1001
-	$table = table_objet_sql($objet);
1002
-	if (
1003
-		($desc = $trouver_table($table)) && isset($desc['field']['date_modif'])
1004
-	) {
1005
-		$primary = id_table_objet($objet);
1006
-		$where = (is_array($ids) ? sql_in($primary, array_map('intval', $ids)) : "$primary=" . (int) $ids);
1007
-		sql_updateq($table, ['date_modif' => date('Y-m-d H:i:s')], $where);
1008
-	}
1009
-
1010
-	$done[$hash] = true;
990
+    static $done = [];
991
+    $hash = md5($objet . serialize($ids));
992
+
993
+    // sql_updateq, peut être un rien lent.
994
+    // On évite de l'appeler 2 fois sur les mêmes choses
995
+    if (isset($done[$hash])) {
996
+        return;
997
+    }
998
+
999
+    $trouver_table = charger_fonction('trouver_table', 'base');
1000
+
1001
+    $table = table_objet_sql($objet);
1002
+    if (
1003
+        ($desc = $trouver_table($table)) && isset($desc['field']['date_modif'])
1004
+    ) {
1005
+        $primary = id_table_objet($objet);
1006
+        $where = (is_array($ids) ? sql_in($primary, array_map('intval', $ids)) : "$primary=" . (int) $ids);
1007
+        sql_updateq($table, ['date_modif' => date('Y-m-d H:i:s')], $where);
1008
+    }
1009
+
1010
+    $done[$hash] = true;
1011 1011
 }
Please login to merge, or discard this patch.
ecrire/action/instituer_langue_rubrique.php 1 patch
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -24,41 +24,41 @@  discard block
 block discarded – undo
24 24
  **/
25 25
 function action_instituer_langue_rubrique_dist() {
26 26
 
27
-	$securiser_action = charger_fonction('securiser_action', 'inc');
28
-	$arg = $securiser_action();
29
-	$changer_lang = _request('changer_lang');
27
+    $securiser_action = charger_fonction('securiser_action', 'inc');
28
+    $arg = $securiser_action();
29
+    $changer_lang = _request('changer_lang');
30 30
 
31
-	[$id_rubrique, $id_parent] = preg_split('/\W/', (string) $arg);
31
+    [$id_rubrique, $id_parent] = preg_split('/\W/', (string) $arg);
32 32
 
33
-	if (
34
-		$changer_lang
35
-		&& $id_rubrique > 0
36
-		&& $GLOBALS['meta']['multi_rubriques'] == 'oui'
37
-		&& ($GLOBALS['meta']['multi_secteurs'] == 'non' || $id_parent == 0)
38
-	) {
39
-		if ($changer_lang != 'herit') {
40
-			sql_updateq(
41
-				'spip_rubriques',
42
-				['lang' => $changer_lang, 'langue_choisie' => 'oui'],
43
-				"id_rubrique=$id_rubrique"
44
-			);
45
-		} else {
46
-			if ($id_parent == 0) {
47
-				$langue_parent = $GLOBALS['meta']['langue_site'];
48
-			} else {
49
-				$langue_parent = sql_getfetsel('lang', 'spip_rubriques', "id_rubrique=$id_parent");
50
-			}
51
-			sql_updateq(
52
-				'spip_rubriques',
53
-				['lang' => $langue_parent, 'langue_choisie' => 'non'],
54
-				"id_rubrique=$id_rubrique"
55
-			);
56
-		}
57
-		include_spip('inc/rubriques');
58
-		calculer_langues_rubriques();
33
+    if (
34
+        $changer_lang
35
+        && $id_rubrique > 0
36
+        && $GLOBALS['meta']['multi_rubriques'] == 'oui'
37
+        && ($GLOBALS['meta']['multi_secteurs'] == 'non' || $id_parent == 0)
38
+    ) {
39
+        if ($changer_lang != 'herit') {
40
+            sql_updateq(
41
+                'spip_rubriques',
42
+                ['lang' => $changer_lang, 'langue_choisie' => 'oui'],
43
+                "id_rubrique=$id_rubrique"
44
+            );
45
+        } else {
46
+            if ($id_parent == 0) {
47
+                $langue_parent = $GLOBALS['meta']['langue_site'];
48
+            } else {
49
+                $langue_parent = sql_getfetsel('lang', 'spip_rubriques', "id_rubrique=$id_parent");
50
+            }
51
+            sql_updateq(
52
+                'spip_rubriques',
53
+                ['lang' => $langue_parent, 'langue_choisie' => 'non'],
54
+                "id_rubrique=$id_rubrique"
55
+            );
56
+        }
57
+        include_spip('inc/rubriques');
58
+        calculer_langues_rubriques();
59 59
 
60
-		// invalider les caches marques de cette rubrique
61
-		include_spip('inc/invalideur');
62
-		suivre_invalideur("id='rubrique/$id_rubrique'");
63
-	}
60
+        // invalider les caches marques de cette rubrique
61
+        include_spip('inc/invalideur');
62
+        suivre_invalideur("id='rubrique/$id_rubrique'");
63
+    }
64 64
 }
Please login to merge, or discard this patch.
ecrire/action/api_transmettre.php 1 patch
Indentation   +80 added lines, -80 removed lines patch added patch discarded remove patch
@@ -16,92 +16,92 @@
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 
23 23
 function action_api_transmettre_dist($arg = null) {
24 24
 
25
-	// Obtenir l'argument 'id_auteur/cle/format/fond'
26
-	if (is_null($arg)) {
27
-		$arg = _request('arg');
28
-	}
29
-
30
-	$args = explode('/', (string) $arg);
31
-
32
-	if (count($args) !== 4) {
33
-		action_api_transmettre_fail($arg);
34
-	}
35
-
36
-	[$id_auteur, $cle, $format, $fond] = $args;
37
-	$id_auteur = (int) $id_auteur;
38
-
39
-	if (preg_match(',[^\w\\.-],', $format)) {
40
-		action_api_transmettre_fail("format $format ??");
41
-	}
42
-	if (preg_match(',[^\w\\.-],', $fond)) {
43
-		action_api_transmettre_fail("fond $fond ??");
44
-	}
45
-
46
-	// verifier la cle
47
-	//[(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})]
48
-	//[(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})]
49
-
50
-	$qs = $_SERVER['QUERY_STRING'];
51
-	// retirer action et arg de la qs
52
-	$contexte = [];
53
-	parse_str((string) $qs, $contexte);
54
-	foreach (array_keys($contexte) as $k) {
55
-		if (in_array($k, ['action', 'arg', 'var_mode'])) {
56
-			unset($contexte[$k]);
57
-		}
58
-	}
59
-	$qs = http_build_query($contexte);
60
-	include_spip('inc/acces');
61
-	if (!securiser_acces_low_sec((int) $id_auteur, $cle, "transmettre/$format", $fond, $qs)) {
62
-		// si le autoriser low_sec n'est pas bon, on peut valider l'appel si l'auteur est identifie
63
-		include_spip('inc/autoriser');
64
-		$autoriser_type = preg_replace(',\W+,', '', "_{$format}{$fond}");
65
-		if (
66
-			!$id_auteur
67
-			|| empty($GLOBALS['visiteur_session']['id_auteur'])
68
-			|| $GLOBALS['visiteur_session']['id_auteur'] != $id_auteur
69
-			|| !autoriser('transmettre', $autoriser_type, $id_auteur)
70
-		) {
71
-			action_api_transmettre_fail("auth QS $qs ??");
72
-		}
73
-	}
74
-
75
-	$contexte['id_auteur'] = $id_auteur;
76
-
77
-	$fond = "transmettre/$format/$fond";
78
-
79
-	if (!trouver_fond($fond)) {
80
-		$fond = "prive/$fond";
81
-	}
82
-
83
-	if (!trouver_fond($fond)) {
84
-		action_api_transmettre_fail("fond $fond ??");
85
-	}
86
-
87
-	$res = recuperer_fond($fond, $contexte, ['raw' => true]);
88
-	if (!empty($res['entetes'])) {
89
-		foreach ($res['entetes'] as $h => $v) {
90
-			header("$h: $v");
91
-		}
92
-	}
93
-
94
-	$res = ltrim((string) $res['texte']);
95
-	if (empty($res)) {
96
-		spip_log("$arg $qs resultat vide", 'transmettre' . _LOG_INFO_IMPORTANTE);
97
-	}
98
-
99
-	echo $res;
100
-	exit();
25
+    // Obtenir l'argument 'id_auteur/cle/format/fond'
26
+    if (is_null($arg)) {
27
+        $arg = _request('arg');
28
+    }
29
+
30
+    $args = explode('/', (string) $arg);
31
+
32
+    if (count($args) !== 4) {
33
+        action_api_transmettre_fail($arg);
34
+    }
35
+
36
+    [$id_auteur, $cle, $format, $fond] = $args;
37
+    $id_auteur = (int) $id_auteur;
38
+
39
+    if (preg_match(',[^\w\\.-],', $format)) {
40
+        action_api_transmettre_fail("format $format ??");
41
+    }
42
+    if (preg_match(',[^\w\\.-],', $fond)) {
43
+        action_api_transmettre_fail("fond $fond ??");
44
+    }
45
+
46
+    // verifier la cle
47
+    //[(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})]
48
+    //[(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})]
49
+
50
+    $qs = $_SERVER['QUERY_STRING'];
51
+    // retirer action et arg de la qs
52
+    $contexte = [];
53
+    parse_str((string) $qs, $contexte);
54
+    foreach (array_keys($contexte) as $k) {
55
+        if (in_array($k, ['action', 'arg', 'var_mode'])) {
56
+            unset($contexte[$k]);
57
+        }
58
+    }
59
+    $qs = http_build_query($contexte);
60
+    include_spip('inc/acces');
61
+    if (!securiser_acces_low_sec((int) $id_auteur, $cle, "transmettre/$format", $fond, $qs)) {
62
+        // si le autoriser low_sec n'est pas bon, on peut valider l'appel si l'auteur est identifie
63
+        include_spip('inc/autoriser');
64
+        $autoriser_type = preg_replace(',\W+,', '', "_{$format}{$fond}");
65
+        if (
66
+            !$id_auteur
67
+            || empty($GLOBALS['visiteur_session']['id_auteur'])
68
+            || $GLOBALS['visiteur_session']['id_auteur'] != $id_auteur
69
+            || !autoriser('transmettre', $autoriser_type, $id_auteur)
70
+        ) {
71
+            action_api_transmettre_fail("auth QS $qs ??");
72
+        }
73
+    }
74
+
75
+    $contexte['id_auteur'] = $id_auteur;
76
+
77
+    $fond = "transmettre/$format/$fond";
78
+
79
+    if (!trouver_fond($fond)) {
80
+        $fond = "prive/$fond";
81
+    }
82
+
83
+    if (!trouver_fond($fond)) {
84
+        action_api_transmettre_fail("fond $fond ??");
85
+    }
86
+
87
+    $res = recuperer_fond($fond, $contexte, ['raw' => true]);
88
+    if (!empty($res['entetes'])) {
89
+        foreach ($res['entetes'] as $h => $v) {
90
+            header("$h: $v");
91
+        }
92
+    }
93
+
94
+    $res = ltrim((string) $res['texte']);
95
+    if (empty($res)) {
96
+        spip_log("$arg $qs resultat vide", 'transmettre' . _LOG_INFO_IMPORTANTE);
97
+    }
98
+
99
+    echo $res;
100
+    exit();
101 101
 }
102 102
 
103 103
 function action_api_transmettre_fail($arg): never {
104
-	include_spip('inc/minipres');
105
-	echo minipres(_T('info_acces_interdit'), $arg);
106
-	exit;
104
+    include_spip('inc/minipres');
105
+    echo minipres(_T('info_acces_interdit'), $arg);
106
+    exit;
107 107
 }
Please login to merge, or discard this patch.
ecrire/action/forcer_job.php 1 patch
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  */
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -25,15 +25,15 @@  discard block
 block discarded – undo
25 25
  * @return void
26 26
  */
27 27
 function action_forcer_job_dist() {
28
-	$securiser_action = charger_fonction('securiser_action', 'inc');
29
-	$id_job = $securiser_action();
28
+    $securiser_action = charger_fonction('securiser_action', 'inc');
29
+    $id_job = $securiser_action();
30 30
 
31
-	if (
32
-		($id_job = (int) $id_job)
33
-		&& autoriser('forcer', 'job', $id_job)
34
-	) {
35
-		include_spip('inc/queue');
36
-		include_spip('inc/genie');
37
-		queue_schedule([$id_job]);
38
-	}
31
+    if (
32
+        ($id_job = (int) $id_job)
33
+        && autoriser('forcer', 'job', $id_job)
34
+    ) {
35
+        include_spip('inc/queue');
36
+        include_spip('inc/genie');
37
+        queue_schedule([$id_job]);
38
+    }
39 39
 }
Please login to merge, or discard this patch.
ecrire/action/supprimer_lien.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  */
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 
@@ -34,14 +34,14 @@  discard block
 block discarded – undo
34 34
  * @return void
35 35
  */
36 36
 function action_supprimer_lien_dist($arg = null) {
37
-	if (is_null($arg)) {
38
-		$securiser_action = charger_fonction('securiser_action', 'inc');
39
-		$arg = $securiser_action();
40
-	}
37
+    if (is_null($arg)) {
38
+        $securiser_action = charger_fonction('securiser_action', 'inc');
39
+        $arg = $securiser_action();
40
+    }
41 41
 
42
-	$arg = explode('-', (string) $arg);
43
-	[$objet_source, $ids, $objet_lie, $idl] = $arg;
42
+    $arg = explode('-', (string) $arg);
43
+    [$objet_source, $ids, $objet_lie, $idl] = $arg;
44 44
 
45
-	include_spip('action/editer_liens');
46
-	objet_dissocier([$objet_source => $ids], [$objet_lie => $idl]);
45
+    include_spip('action/editer_liens');
46
+    objet_dissocier([$objet_source => $ids], [$objet_lie => $idl]);
47 47
 }
Please login to merge, or discard this patch.
ecrire/action/etre_webmestre.php 1 patch
Indentation   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  */
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/actions');
@@ -28,23 +28,23 @@  discard block
 block discarded – undo
28 28
  * @return void
29 29
  */
30 30
 function action_etre_webmestre_dist() {
31
-	$securiser_action = charger_fonction('securiser_action', 'inc');
32
-	$time = $securiser_action();
31
+    $securiser_action = charger_fonction('securiser_action', 'inc');
32
+    $time = $securiser_action();
33 33
 
34
-	if (
35
-		time() - $time < 15 * 60
36
-		&& $GLOBALS['visiteur_session']['statut'] == '0minirezo'
37
-		&& $GLOBALS['visiteur_session']['webmestre'] !== 'oui'
38
-	) {
39
-		$action = _T('info_admin_etre_webmestre');
40
-		$admin = charger_fonction('admin', 'inc');
41
-		// lance la verif par ftp et l'appel
42
-		// a base_etre_webmestre_dist quand c'est OK
43
-		if ($r = $admin('etre_webmestre', $action)) {
44
-			echo $r;
45
-			exit;
46
-		}
47
-	}
34
+    if (
35
+        time() - $time < 15 * 60
36
+        && $GLOBALS['visiteur_session']['statut'] == '0minirezo'
37
+        && $GLOBALS['visiteur_session']['webmestre'] !== 'oui'
38
+    ) {
39
+        $action = _T('info_admin_etre_webmestre');
40
+        $admin = charger_fonction('admin', 'inc');
41
+        // lance la verif par ftp et l'appel
42
+        // a base_etre_webmestre_dist quand c'est OK
43
+        if ($r = $admin('etre_webmestre', $action)) {
44
+            echo $r;
45
+            exit;
46
+        }
47
+    }
48 48
 }
49 49
 
50 50
 /**
@@ -53,8 +53,8 @@  discard block
 block discarded – undo
53 53
  * @return void
54 54
  */
55 55
 function base_etre_webmestre_dist() {
56
-	if ($GLOBALS['visiteur_session']['statut'] == '0minirezo' && $GLOBALS['visiteur_session']['webmestre'] !== 'oui') {
57
-		include_spip('action/editer_auteur');
58
-		auteur_instituer($GLOBALS['visiteur_session']['id_auteur'], ['webmestre' => 'oui'], true);
59
-	}
56
+    if ($GLOBALS['visiteur_session']['statut'] == '0minirezo' && $GLOBALS['visiteur_session']['webmestre'] !== 'oui') {
57
+        include_spip('action/editer_auteur');
58
+        auteur_instituer($GLOBALS['visiteur_session']['id_auteur'], ['webmestre' => 'oui'], true);
59
+    }
60 60
 }
Please login to merge, or discard this patch.
ecrire/action/ajouter_lien.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -33,14 +33,14 @@  discard block
 block discarded – undo
33 33
  * @return void
34 34
  */
35 35
 function action_ajouter_lien_dist($arg = null) {
36
-	if (is_null($arg)) {
37
-		$securiser_action = charger_fonction('securiser_action', 'inc');
38
-		$arg = $securiser_action();
39
-	}
36
+    if (is_null($arg)) {
37
+        $securiser_action = charger_fonction('securiser_action', 'inc');
38
+        $arg = $securiser_action();
39
+    }
40 40
 
41
-	$arg = explode('-', (string) $arg);
42
-	[$objet_source, $ids, $objet_lie, $idl] = $arg;
41
+    $arg = explode('-', (string) $arg);
42
+    [$objet_source, $ids, $objet_lie, $idl] = $arg;
43 43
 
44
-	include_spip('action/editer_liens');
45
-	objet_associer([$objet_source => $ids], [$objet_lie => $idl]);
44
+    include_spip('action/editer_liens');
45
+    objet_associer([$objet_source => $ids], [$objet_lie => $idl]);
46 46
 }
Please login to merge, or discard this patch.
ecrire/action/session.php 1 patch
Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -31,16 +31,16 @@  discard block
 block discarded – undo
31 31
  *   Envoyer en réponse : json contenant toutes les variables publiques de la session
32 32
  **/
33 33
 function action_session_dist() {
34
-	if (
35
-		($var = _request('var'))
36
-		&& preg_match(',^[a-z_0-9-]+$,i', (string) $var)
37
-		&& $_SERVER['REQUEST_METHOD'] == 'POST'
38
-	) {
39
-		include_spip('inc/session');
40
-		session_set('session_' . $var, $val = _request('val'));
41
-		#spip_log("autosave:$var:$val",'autosave');
42
-	}
34
+    if (
35
+        ($var = _request('var'))
36
+        && preg_match(',^[a-z_0-9-]+$,i', (string) $var)
37
+        && $_SERVER['REQUEST_METHOD'] == 'POST'
38
+    ) {
39
+        include_spip('inc/session');
40
+        session_set('session_' . $var, $val = _request('val'));
41
+        #spip_log("autosave:$var:$val",'autosave');
42
+    }
43 43
 
44
-	# TODO: mode lecture de session ; n'afficher que ce qu'il faut
45
-	#echo json_encode($GLOBALS['visiteur_session']);
44
+    # TODO: mode lecture de session ; n'afficher que ce qu'il faut
45
+    #echo json_encode($GLOBALS['visiteur_session']);
46 46
 }
Please login to merge, or discard this patch.
ecrire/action/redirect.php 1 patch
Indentation   +69 added lines, -69 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
 /**
@@ -35,53 +35,53 @@  discard block
 block discarded – undo
35 35
  *   ```
36 36
  **/
37 37
 function action_redirect_dist() {
38
-	$type = _request('type');
39
-	$id = (int) _request('id');
40
-	$page = false;
38
+    $type = _request('type');
39
+    $id = (int) _request('id');
40
+    $page = false;
41 41
 
42
-	// verifier le type ou page transmis
43
-	if (!preg_match('/^\w+$/', (string) $type)) {
44
-		$page = _request('page');
45
-		if (!preg_match('/^\w+$/', (string) $page)) {
46
-			return;
47
-		}
48
-	}
42
+    // verifier le type ou page transmis
43
+    if (!preg_match('/^\w+$/', (string) $type)) {
44
+        $page = _request('page');
45
+        if (!preg_match('/^\w+$/', (string) $page)) {
46
+            return;
47
+        }
48
+    }
49 49
 
50
-	$var_mode = _request('var_mode');
51
-	// forcer la mise a jour de l'url de cet objet !
52
-	if ($var_mode && !defined('_VAR_URLS')) {
53
-		define('_VAR_URLS', true);
54
-	}
50
+    $var_mode = _request('var_mode');
51
+    // forcer la mise a jour de l'url de cet objet !
52
+    if ($var_mode && !defined('_VAR_URLS')) {
53
+        define('_VAR_URLS', true);
54
+    }
55 55
 
56
-	$url = $page
57
-		? generer_url_public($page, '', true)
58
-		: calculer_url_redirect_entite($type, $id, $var_mode);
56
+    $url = $page
57
+        ? generer_url_public($page, '', true)
58
+        : calculer_url_redirect_entite($type, $id, $var_mode);
59 59
 
60
-	$status = '302';
61
-	if ($url) {
62
-		if ($var_mode) {
63
-			$url = parametre_url($url, 'var_mode', $var_mode, '&');
64
-		}
60
+    $status = '302';
61
+    if ($url) {
62
+        if ($var_mode) {
63
+            $url = parametre_url($url, 'var_mode', $var_mode, '&');
64
+        }
65 65
 
66
-		if (
67
-			$var_mode == 'preview'
68
-			&& defined('_PREVIEW_TOKEN')
69
-			&& _PREVIEW_TOKEN
70
-			&& autoriser('previsualiser')
71
-		) {
72
-			include_spip('inc/securiser_action');
73
-			$token = calculer_token_previsu($url);
74
-			$url = parametre_url($url, 'var_previewtoken', $token);
75
-		}
66
+        if (
67
+            $var_mode == 'preview'
68
+            && defined('_PREVIEW_TOKEN')
69
+            && _PREVIEW_TOKEN
70
+            && autoriser('previsualiser')
71
+        ) {
72
+            include_spip('inc/securiser_action');
73
+            $token = calculer_token_previsu($url);
74
+            $url = parametre_url($url, 'var_previewtoken', $token);
75
+        }
76 76
 
77
-		if (_request('status') && _request('status') == '301') {
78
-			$status = '301';
79
-		}
80
-	} else {
81
-		$url = generer_url_public('404', '', true);
82
-	}
77
+        if (_request('status') && _request('status') == '301') {
78
+            $status = '301';
79
+        }
80
+    } else {
81
+        $url = generer_url_public('404', '', true);
82
+    }
83 83
 
84
-	redirige_par_entete(str_replace('&amp;', '&', (string) $url), '', $status);
84
+    redirige_par_entete(str_replace('&amp;', '&', (string) $url), '', $status);
85 85
 }
86 86
 
87 87
 /**
@@ -96,35 +96,35 @@  discard block
 block discarded – undo
96 96
  * @return string|null
97 97
  */
98 98
 function calculer_url_redirect_entite($type, $id, $var_mode) {
99
-	$desc = null;
100
-	$publie = null;
101
-	$url = null;
102
-	// invalider le cache à chaque modif en bdd
103
-	$date = 0;
104
-	if (isset($GLOBALS['meta']['derniere_modif'])) {
105
-		$date = $GLOBALS['meta']['derniere_modif'];
106
-	}
107
-	$key = "url-$date-$type-$id";
99
+    $desc = null;
100
+    $publie = null;
101
+    $url = null;
102
+    // invalider le cache à chaque modif en bdd
103
+    $date = 0;
104
+    if (isset($GLOBALS['meta']['derniere_modif'])) {
105
+        $date = $GLOBALS['meta']['derniere_modif'];
106
+    }
107
+    $key = "url-$date-$type-$id";
108 108
 
109
-	// Obtenir l’url et si elle est publié du cache memoization
110
-	if (function_exists('cache_get') && ($desc = cache_get($key))) {
111
-		[$url, $publie] = $desc;
112
-	}
113
-	// Si on ne l’a pas trouvé, ou si var mode, on calcule l’url et son état publie
114
-	if (empty($desc) || $var_mode) {
115
-		$publie = objet_test_si_publie($type, $id);
116
-		$url = generer_objet_url_absolue($id, $type, '', '', true);
117
-		if (function_exists('cache_set')) {
118
-			cache_set($key, [$url, $publie], 3600);
119
-		}
120
-	}
109
+    // Obtenir l’url et si elle est publié du cache memoization
110
+    if (function_exists('cache_get') && ($desc = cache_get($key))) {
111
+        [$url, $publie] = $desc;
112
+    }
113
+    // Si on ne l’a pas trouvé, ou si var mode, on calcule l’url et son état publie
114
+    if (empty($desc) || $var_mode) {
115
+        $publie = objet_test_si_publie($type, $id);
116
+        $url = generer_objet_url_absolue($id, $type, '', '', true);
117
+        if (function_exists('cache_set')) {
118
+            cache_set($key, [$url, $publie], 3600);
119
+        }
120
+    }
121 121
 
122
-	// On valide l’url si elle est publiee ; sinon si preview on teste l’autorisation
123
-	if ($publie) {
124
-		return $url;
125
-	} elseif (defined('_VAR_PREVIEW') && _VAR_PREVIEW && autoriser('voir', $type, $id)) {
126
-		return $url;
127
-	}
122
+    // On valide l’url si elle est publiee ; sinon si preview on teste l’autorisation
123
+    if ($publie) {
124
+        return $url;
125
+    } elseif (defined('_VAR_PREVIEW') && _VAR_PREVIEW && autoriser('voir', $type, $id)) {
126
+        return $url;
127
+    }
128 128
 
129
-	return;
129
+    return;
130 130
 }
Please login to merge, or discard this patch.