Completed
Push — master ( a2bcf3...4c74fa )
by cam
05:07
created

info_.php ➔ balise_INFO__dist()   B

Complexity

Conditions 6
Paths 5

Size

Total Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
nc 5
nop 1
dl 0
loc 28
rs 8.8497
c 0
b 0
f 0
1
<?php
2
3
/***************************************************************************\
4
 *  SPIP, Système de publication pour l'internet                           *
5
 *                                                                         *
6
 *  Copyright © avec tendresse depuis 2001                                 *
7
 *  Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James  *
8
 *                                                                         *
9
 *  Ce programme est un logiciel libre distribué sous licence GNU/GPL.     *
10
 *  Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne.   *
11
\***************************************************************************/
12
13
/**
14
 * Fonctions génériques pour les balises `#INFO_XXXX`
15
 *
16
 * @package SPIP\Core\Compilateur\Balises
17
 **/
18
19
if (!defined('_ECRIRE_INC_VERSION')) {
20
	return;
21
}
22
23
/**
24
 * Compile la balise dynamique `#INFO_xx` qui génère n'importe quelle
25
 * information pour un objet
26
 *
27
 * Signature : `#INFO_n{objet,id_objet}` où n est une colonne sur la table
28
 * SQL de l'objet.
29
 *
30
 * @balise
31
 * @link https://www.spip.net/5544
32
 * @uses generer_info_entite()
33
 * @example
34
 *     ```
35
 *     #INFO_TITRE{article, #ENV{id_article}}
36
 *     ```
37
 * @param Champ $p
38
 *     Pile au niveau de la balise
39
 * @return Champ
40
 *     Pile complétée par le code à générer
41
 */
42
function balise_INFO__dist($p) {
43
	$info = $p->nom_champ;
44
	$type_objet = interprete_argument_balise(1, $p);
45
	$id_objet = interprete_argument_balise(2, $p);
46
	if ($info === 'INFO_' or !$type_objet or !$id_objet) {
47
		$msg = _T('zbug_balise_sans_argument', array('balise' => ' INFO_'));
48
		erreur_squelette($msg, $p);
49
		$p->interdire_scripts = true;
50
51
		return $p;
52
	} else {
53
54
		// Récupérer tous les params à la suite de objet et id_objet
55
		$_params = '[';
56
		$nb_params = count($p->param[0]); // 1ère valeur vide donc 1 en plus
57
		for ($i = 3; $i < $nb_params; $i++) {
58
			$_params .= interprete_argument_balise($i, $p) . ',';
59
		}
60
		$_params .= ']';
61
62
		$info_sql = strtolower(substr($info, 5));
63
		$code = "generer_info_entite($id_objet, $type_objet, '$info_sql', " . ($p->etoile ? _q($p->etoile) : "''") . ", $_params)";
64
		$p->code = champ_sql($info, $p, $code);
65
		$p->interdire_scripts = true;
66
67
		return $p;
68
	}
69
}
70