source: spip-zone/_plugins_/spip-bonux-3/public/spip_bonux_balises.php @ 52871

Last change on this file since 52871 was 52871, checked in by kent1@…, 10 years ago

if (!defined("_ECRIRE_INC_VERSION")) return; sur tout fichier PHP pour sécurité future principalement

File size: 3.6 KB
Line 
1<?php
2/**
3 * Plugin Spip-Bonux
4 * Le plugin qui lave plus SPIP que SPIP
5 * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
6 * Licence GPL
7 *
8 */
9
10if (!defined('_ECRIRE_INC_VERSION')) return;
11
12/**
13 * Empile un element dans un tableau declare par #SET{tableau,#ARRAY}
14 * #SET_PUSH{tableau,valeur}
15 *
16 * @param object $p : objet balise
17 * @return ""
18**/
19function balise_SET_PUSH_dist($p){
20        $_nom = interprete_argument_balise(1,$p);
21        $_valeur = interprete_argument_balise(2,$p);
22
23        if ($_nom AND $_valeur)
24                // si le tableau n'existe pas encore, on le cree
25                // on ajoute la valeur ensuite (sans passer par array_push)
26                $p->code = "vide((\$cle=$_nom)
27                        . (is_array(\$Pile['vars'][\$cle])?'':\$Pile['vars'][\$cle]=array())
28                        . (\$Pile['vars'][\$cle][]=$_valeur))";
29        else
30                $p->code = "''";
31
32        $p->interdire_scripts = false; // la balise ne renvoie rien
33        return $p;
34}
35
36/**
37 * Si 3 arguments : Cree un tableau nom_tableau de t1 + t2
38 * #SET_MERGE{nom_tableau,t1,t2}
39 * #SET_MERGE{nom_tableau,#GET{tableau},#ARRAY{cle,valeur}}
40 *
41 * Si 2 arguments : Merge t1 dans nom_tableau
42 * #SET_MERGE{nom_tableau,t1}
43 * #SET_MERGE{nom_tableau,#GET{tableau}}
44 *
45 * @param object $p : objet balise
46 * @return ""
47**/
48function balise_SET_MERGE_dist($p){
49        $_nom = interprete_argument_balise(1,$p);
50        $_t1 = interprete_argument_balise(2,$p);
51        $_t2 = interprete_argument_balise(3,$p);
52
53        if ($_nom AND $_t1 AND !$_t2)
54                // 2 arguments : merge de $_nom et $_t1 dans $_nom
55                // si le tableau n'existe pas encore, on le cree
56                $p->code = "vide((\$cle=$_nom)
57                        . (is_array(\$Pile['vars'][\$cle])?'':\$Pile['vars'][\$cle]=array())
58                        . (is_array(\$new=$_t1)?'':\$new=array(\$new))
59                        . (\$Pile['vars'][\$cle] = array_merge(\$Pile['vars'][\$cle],\$new)))";
60        elseif ($_nom AND $_t1 AND $_t2)
61                // 3 arguments : merge de $_t1 et $_t2 dans $_nom
62                // si le tableau n'existe pas encore, on le cree
63                $p->code = "vide((\$cle=$_nom)
64                        . (is_array(\$Pile['vars'][\$cle])?'':\$Pile['vars'][\$cle]=array())
65                        . (is_array(\$new1=$_t1)?'':\$new1=array(\$new1))
66                        . (is_array(\$new2=$_t2)?'':\$new2=array(\$new2))
67                        . (\$Pile['vars'][\$cle] = array_merge(\$new1,\$new2)))";
68        else
69                $p->code = "''";
70
71        $p->interdire_scripts = false; // la balise ne renvoie rien
72        return $p;
73}
74
75/**
76 * Balise #COMPTEUR associee au critere compteur
77 *
78 * @param unknown_type $p
79 * @return unknown
80 */
81function balise_COMPTEUR_dist($p) {
82        calculer_balise_criteres('compteur', $p);
83        if ($p->code=="''")
84                calculer_balise_criteres('compteur', $p, "compteur_left");
85        return $p;
86}
87
88/** Balise #SOMME associee au critere somme */
89function balise_SOMME_dist($p) {
90        return calculer_balise_criteres('somme', $p);
91}
92
93/** Balise #COMPTE associee au critere compte */
94function balise_COMPTE_dist($p) {
95        return calculer_balise_criteres('compte', $p);
96}
97
98/** Balise #MOYENNE associee au critere moyenne */
99function balise_MOYENNE_dist($p) {
100        return calculer_balise_criteres('moyenne', $p);
101}
102
103/** Balise #MINIMUM associee au critere moyenne */
104function balise_MINIMUM_dist($p) {
105        return calculer_balise_criteres('minimum', $p);
106}
107
108/** Balise #MAXIMUM associee au critere moyenne */
109function balise_MAXIMUM_dist($p) {
110        return calculer_balise_criteres('maximum', $p);
111}
112
113/** Balise #STATS associee au critere stats
114 * #STATS{id_article,moyenne}
115 */
116function balise_STATS_dist($p) {
117        if (isset($p->param[0][2][0])
118        AND $nom = ($p->param[0][2][0]->texte)) {
119                return calculer_balise_criteres($nom, $p, 'stats');
120        }
121        return $p;
122}
123
124function calculer_balise_criteres($nom, $p, $motif="") {
125        $p->code = "''";
126        $motif = $motif ? $motif : $nom;
127        if (isset($p->param[0][1][0])
128        AND $champ = ($p->param[0][1][0]->texte)) {
129                return rindex_pile($p, $nom."_$champ", $motif);
130        }
131  return $p;
132}
133
134?>
Note: See TracBrowser for help on using the repository browser.