source: spip-zone/_squelettes_/sarkaspip/trunk/public/sarkaspip_balises.php @ 93146

Last change on this file since 93146 was 93146, checked in by marcimat@…, 5 years ago

Dans ce Squelette, le prefixe a pris un R final… sarkaspipr donc.

File size: 10.1 KB
Line 
1<?php
2/**
3 * Squelette SarkaSPIP v4
4 * (c) 2005-2012 Licence GPL 3
5 */
6
7if (!defined("_ECRIRE_INC_VERSION")) return;
8
9// =======================================================================================================================================
10// Balise : #VERSION_SQUELETTE
11// =======================================================================================================================================
12// Auteur: SarkASmeL
13// Fonction : affiche la version utilise du squelette variable globale $version_squelette
14// =======================================================================================================================================
15//
16function balise_VERSION_SQUELETTE($p) {
17        $p->code = 'calcul_version_squelette()';
18        $p->interdire_scripts = false;
19        return $p;
20}
21
22function calcul_version_squelette() {
23
24        $version = NULL;
25
26        $informer = chercher_filtre('info_plugin');
27        $version = $informer('sarkaspipr', 'version');
28
29        $revision = version_svn_courante(_DIR_PLUGIN_SARKASPIPR);
30        if ($revision > 0)
31                $version .= ' ['.strval($revision).']';
32        else if ($revision < 0)
33                $version .= ' SVN&nbsp;['.strval(abs($revision)).']';
34
35        return $version;
36}
37
38// =======================================================================================================================================
39// Balise : #VERSION_PHP
40// =======================================================================================================================================
41// Auteur: SarkASmeL
42// Fonction : affiche la version du PHP utilisee
43// =======================================================================================================================================
44//
45function balise_VERSION_PHP($p) {
46        $p->code = 'phpversion()';
47        $p->interdire_scripts = false;
48        return $p;
49}
50
51// =======================================================================================================================================
52// Balise : #VISITEURS_CONNECTES
53// =======================================================================================================================================
54// Auteur: SarkASmeL (base sur le plugin Nombre de visiteurs connectes)
55// Fonction : affiche le nombre de visiteurs en cours de connection sur le site
56// Parametre: aucun
57// =======================================================================================================================================
58//
59function balise_VISITEURS_CONNECTES($p) {
60
61        $p->code = 'calcul_visiteurs_connectes()';
62        $p->statut = 'php';
63        return $p;
64}
65
66function calcul_visiteurs_connectes() {
67        $nb = count(preg_files(_DIR_TMP.'visites/','.'));
68        return $nb;
69}
70
71// =======================================================================================================================================
72// Balise : #VISITES_SITE
73// =======================================================================================================================================
74// Auteur: SarkASmeL
75// Fonction : affiche le nombre de visites sur le site pour le jour courant, la veille ou depuis le debut
76// Parametre: aujourdhui, hier, depuis_debut (ou vide)
77// =======================================================================================================================================
78//
79function balise_VISITES_SITE($p) {
80
81        $jour = interprete_argument_balise(1,$p);
82        $jour = isset($jour) ? str_replace('\'', '"', $jour) : '"depuis_debut"';
83
84        $p->code = 'calcul_visites_site('.$jour.')';
85        $p->statut = 'php';
86        return $p;
87}
88
89function calcul_visites_site($j) {
90
91        $visites = 0;
92       
93        if ( $j == 'aujourdhui' ) {
94                $auj = date('Y-m-d',strtotime(date('Y-m-d')));
95                $select = array('visites');
96                $from = array('spip_visites');
97                $where = array("date=".sql_quote($auj));
98                $result = sql_select($select, $from, $where);
99                if ($row = sql_fetch($result)) {
100                        $visites = $row['visites'];
101                }
102        }
103        else if ( $j == 'hier' ) {
104                $hier = date('Y-m-d',strtotime(date('Y-m-d')) - 3600*24);
105                $select = array('visites');
106                $from = array('spip_visites');
107                $where = array("date=".sql_quote($hier));
108                $result = sql_select($select, $from, $where);
109                if ($row = sql_fetch($result)) {
110                        $visites = $row['visites'];
111                }
112        }
113        else {
114                $select = array('SUM(visites) AS total_absolu');
115                $from = array('spip_visites');
116                $result = sql_select($select, $from);
117                if ($row = sql_fetch($result)) {
118                        $visites = $row['total_absolu'];
119                        if ($visites == NULL) $visites=0;
120                }
121        }
122        return $visites;
123}
124
125// =======================================================================================================================================
126// Balise : #AUJOURDHUI
127// =======================================================================================================================================
128// Auteur: SarkASmeL
129// Fonction : retourne la date du jour independamment du contexte d'appel
130// =======================================================================================================================================
131//
132function balise_AUJOURDHUI($p) {
133
134        $p->code = 'date("Y-m-d H:i")';
135        $p->statut = 'php';
136        return $p;
137}
138
139// =======================================================================================================================================
140// Balise : #RACINE_SPECIALISEE et BRANCHE_SPECIALISEE
141// =======================================================================================================================================
142// Auteur: SarkASmeL
143// Fonction : retourne la valeur de l'ID de la rubrique demandee ou de toutes les rubriques specialisees sous forme de regex
144//            Pour creer une nouvelle rubrique specialisee il suffit de rajouter un mot dans le tableau des mots reserves ($mots_reserves)
145// =======================================================================================================================================
146//
147function balise_RACINE_SPECIALISEE($p) {
148
149        $mot_rubrique = interprete_argument_balise(1,$p);
150        $mot_rubrique = isset($mot_rubrique) ? str_replace('\'', '"', $mot_rubrique) : '""';
151        $critere = interprete_argument_balise(2,$p);
152        $critere = isset($critere) ? str_replace('\'', '"', $critere) : '"in"';
153        $mode = "secteur";
154
155        $p->code = 'calcul_rubrique_specialisee('.strtolower($mot_rubrique).','.$mode.','.$critere.')';
156        $p->interdire_scripts = false;
157        return $p;
158}
159
160function balise_BRANCHE_SPECIALISEE($p) {
161
162        $mot_rubrique = interprete_argument_balise(1,$p);
163        $mot_rubrique = isset($mot_rubrique) ? str_replace('\'', '"', $mot_rubrique) : '""';
164        $critere = interprete_argument_balise(2,$p);
165        $critere = isset($critere) ? str_replace('\'', '"', $critere) : '"in"';
166        $mode = "branche";
167
168        $p->code = 'calcul_rubrique_specialisee('.strtolower($mot_rubrique).','.$mode.','.$critere.')';
169        $p->interdire_scripts = false;
170        return $p;
171}
172
173function calcul_rubrique_specialisee($mot_rubrique, $mode, $critere) {
174
175        // On calcule la liste des mots reserves SarkaSPIP + definis par l'utilisateur
176        $mots_reserves = explode(':', _SARKASPIP_MOT_SECTEURS_SPECIALISES);
177    if (defined('_PERSO_MOT_SECTEURS_SPECIALISES'))
178        if (_PERSO_MOT_SECTEURS_SPECIALISES != '')
179                $mots_reserves = array_merge($mots_reserves, explode(':', _PERSO_MOT_SECTEURS_SPECIALISES));
180        $types_reserves = explode(':', _SARKASPIP_TYPE_SECTEURS_SPECIALISES);
181    if (defined('_PERSO_TYPE_SECTEURS_SPECIALISES'))
182        if (_PERSO_TYPE_SECTEURS_SPECIALISES != '')
183                $types_reserves = array_merge($types_reserves, explode(':', _PERSO_TYPE_SECTEURS_SPECIALISES));
184        $fonds_reserves = explode(':', _SARKASPIP_FOND_SECTEURS_SPECIALISES);
185    if (defined('_PERSO_FOND_SECTEURS_SPECIALISES'))
186        if (_PERSO_FOND_SECTEURS_SPECIALISES != '')
187                $fonds_reserves = array_merge($fonds_reserves, explode(':', _PERSO_FOND_SECTEURS_SPECIALISES));
188
189        // Determination de la liste des mots cles associes aux secteurs specialises demandes par la balise
190        $id = NULL;
191        $mots = explode(':', $mot_rubrique);
192        if ($critere == "not_in") {
193                $mots = array_diff($mots_reserves, $mots);
194                sort($mots);
195        }
196        if (!$mots[0]) $mots = $mots_reserves;
197        // Si on est en en mode secteur (ie. balise #RACINE_SPECIALISEE) et qu'on demande un seul secteur specialise
198        // on renvoie une valeur; sinon on renvoie toujours une regexp
199        $comparaison_valeur = (($mode == 'secteur') && ($mots[0] == $mot_rubrique)) ? true : false;
200        // Calcul de la balise
201        reset($mots_reserves);
202        while (list($cle, $valeur) = each($mots_reserves)) {
203                if ( in_array($valeur, $mots)) {
204                        if ($id != NULL) $id .= '|';
205                        $id .= strval(calcul_rubrique($valeur, $types_reserves[$cle], $fonds_reserves[$cle], $mode));
206                }
207        }
208        if (!$comparaison_valeur) $id = '^('.$id.')$';
209       
210        return $id;
211}
212
213function calcul_rubrique($mot, $type, $fond, $mode='rubrique') {
214
215        $id_rubrique = 0;
216        if (!$mot)
217                return $id_rubrique;
218
219        // On recupere le secteur de base soit via la methode du mot-cle, soit par la config
220        if ($type == 'motcle') {
221                $select = array('id_rubrique');
222                $from = array('spip_mots_rubriques AS t1', 'spip_mots AS t2', 'spip_groupes_mots AS t3');
223                $where = array('t3.titre='.sql_quote('squelette_habillage'),
224                                           't3.id_groupe=t2.id_groupe',
225                                           't2.titre='.sql_quote($mot),
226                                           't2.id_mot=t1.id_mot');
227                $result = sql_select($select, $from, $where);
228                if ($row = sql_fetch($result)) {
229                        $id_rubrique = $row['id_rubrique'];
230                }
231        }
232        else if ($type == 'config') {
233                include_spip('inc/config');
234                $valeur = lire_config($fond.'/rubrique_'.$mot);
235                if (($valeur != NULL) && ($valeur > 0)) $id_rubrique = $valeur;
236        }
237       
238        // Si on est en mode branche on retourne les rubriques de la branche, sinon uniquement le secteur recupere precedemment
239        if (( $id_rubrique != 0) && ($mode == 'branche')) {
240                $select = array('id_rubrique');
241                $from = array('spip_rubriques AS t1');
242                $where = array('t1.id_secteur='.sql_quote($id_rubrique));
243                $result = sql_select($select, $from, $where);
244                $secteur = $id_rubrique;
245                while ($row = sql_fetch($result)) {
246                        if ($row['id_rubrique'] != $secteur) $id_rubrique .= '|'.$row['id_rubrique'];
247                }
248        }
249       
250        return $id_rubrique;
251}
252
253?>
Note: See TracBrowser for help on using the repository browser.