source: spip-zone/_squelettes_/sarkaspip/branches/v_33/inc/sarkaspip_filtres.php @ 82903

Last change on this file since 82903 was 82903, checked in by eric@…, 7 years ago

Nouvelle version 3.4.0 :

  • création d'un schéma de données pour la configuration
  • sécurité de certains fichiers php

Cette version reste compatible avec la branche 3.3, le processus de migration permettra de récupérer la configuration existante.

File size: 17.9 KB
Line 
1<?php
2/**
3 * Squelette SarkaSPIP v3
4 * (c) 2005-2012 Licence GPL 3
5 */
6
7if (!defined("_ECRIRE_INC_VERSION")) return;
8
9
10// =======================================================================================================================================
11// Filtre : typo_couleur
12// =======================================================================================================================================
13// Auteur : Smellup, inspire du filtre original de A. Pierard
14// Fonction : permettant de modifier la couleur du texte ou de l'introduction d'un article
15// Utilisation :                 
16//      - pour le redacteur : [rouge]xxxxxx[/rouge]
17//      - pour le webmaster : [(#TEXTE|typo_couleur)]
18// Néanmoins, par défaut ce filtre est appelé dans le pipeline post_propre
19// =======================================================================================================================================
20//
21function filtre_typo_couleur_dist($texte) {
22
23        global $couleurs_texte;
24        include_spip('inc/config');
25
26        // Variables personnalisables par l'utilisateur
27        // --> Activation (oui) ou desactivation (non) de la fonction
28        $typo_couleur_active = (lire_config('sarkaspip_typo/coloration_active', 'non') == 'oui');
29        // --> Nuances personnalisables par l'utilisateur
30        $couleurs_utilisees = lire_config('sarkaspip_typo/couleurs');
31
32        $recherche = array();
33        $remplace = array();
34        foreach ($couleurs_texte as $_id_couleur => $_defaut_couleur) {
35                $recherche[$_id_couleur] = "/(\[${_id_couleur}\])(.*?)(\[\/${_id_couleur}\])/";
36                if ($typo_couleur_active)
37                        $remplace[$_id_couleur] =
38                                "<span style=\"color:" .
39                                sinon($couleurs_utilisees[$_id_couleur], $_defaut_couleur) .
40                                ";\">\\2</span>";
41        }
42        if (!$remplace)
43                $remplace = "\\2";
44
45        $texte = preg_replace($recherche, $remplace, $texte);
46
47        return $texte;
48}
49
50// =======================================================================================================================================
51// Filtre : premier_jour_annee
52// =======================================================================================================================================
53// Auteur: Smellup
54// Fonction : Retourne la date du premier jour de l'annee passe en argument
55// =======================================================================================================================================
56//
57function premier_jour_annee($annee) {
58        if (!$annee) return;
59       
60        $jour = date("Y-m-d H:i:s", mktime(0,0,0,1,1,$annee));
61        return $jour;
62}
63// FIN du Filtre : premier_jour_annee
64
65// =======================================================================================================================================
66// Filtre : dernier_jour_annee
67// =======================================================================================================================================
68// Auteur: Smellup
69// Fonction : Retourne la date du dernier jour de l'annee passe en argument
70// =======================================================================================================================================
71//
72function dernier_jour_annee($annee) {
73        if (!$annee) return;
74       
75        $jour = date("Y-m-d H:i:s", mktime(23,59,59,12,31,$annee));
76        return $jour;
77}
78// FIN du Filtre : dernier_jour_annee
79
80// =======================================================================================================================================
81// Filtre : debut_journee
82// =======================================================================================================================================
83// Auteur: Smellup
84// Fonction : Retourne la date-heure de debut de la journee passee en argument
85// =======================================================================================================================================
86//
87function debut_journee($date) {
88        if (!$date) return;
89       
90        $jour = date('d', strtotime($date));
91        $mois = date('m', strtotime($date));
92        $annee = date('Y', strtotime($date));
93        $jour = date("Y-m-d H:i:s", mktime(0,0,0,$mois,$jour,$annee));
94        return $jour;
95}
96// FIN du Filtre : debut_journee
97
98// =======================================================================================================================================
99// Filtre : fin_mois_precedent
100// =======================================================================================================================================
101// Auteur: Smellup
102// Fonction : Calcul la date au format demande correspondant au dernier jour du mois precedent celui du timestamp en argument
103// =======================================================================================================================================
104//
105function fin_mois_precedent($timestamp, $format) {
106        if (!$timestamp) return;
107
108        $date = mktime(0, 0, 0, date('m', $timestamp), 0, date('Y', $timestamp));
109        return date($format, $date);
110}
111// FIN du Filtre : premier_jour_mois
112
113// =======================================================================================================================================
114// Filtre : fin_journee
115// =======================================================================================================================================
116// Auteur: Smellup
117// Fonction : Retourne la date-heure de fin de la journee passee en argument
118// =======================================================================================================================================
119//
120function fin_journee($date) {
121        if (!$date) return;
122       
123        $jour = date('d', strtotime($date));
124        $mois = date('m', strtotime($date));
125        $annee = date('Y', strtotime($date));
126        $jour = date("Y-m-d H:i:s", mktime(23,59,59,$mois,$jour,$annee));
127        return $jour;
128}
129// FIN du Filtre : fin_journee
130
131// =======================================================================================================================================
132// Filtre : libelle_statut
133// =======================================================================================================================================
134// Auteur: Smellup
135// Fonction : Retourne le libelle multilangue du statut d'un auteur
136// =======================================================================================================================================
137//
138function libelle_statut($statut) {
139        return _T('sarkaspip:statut_'.$statut);
140}
141// FIN du Filtre : libelle_statut
142
143// =======================================================================================================================================
144// Filtre : afaire_liste_par_jalon
145// =======================================================================================================================================
146// Auteur: Smellup
147// Fonction : Retourne les blocs d'affichage des tickets par jalon dans la page afaire
148// =======================================================================================================================================
149//
150function afaire_liste_par_jalon($jalons) {
151        $page = NULL;
152        if (($jalons) && defined('_SARKASPIP_AFAIRE_JALONS_AFFICHES')) {
153                $liste = explode(":", $jalons);
154                $i =0;
155                foreach($liste as $_jalon) {
156                        $i += 1;
157                        $page .= recuperer_fond('noisettes/afaire/inc_afaire_jalon', 
158                                array('jalon' => $_jalon, 'ancre' => 'ancre_jalon_'.strval($i)));
159                }
160        }
161        return $page;
162}
163// FIN du Filtre : afaire_liste_par_jalon
164
165// =======================================================================================================================================
166// Filtre : afaire_tdm_par_jalon
167// =======================================================================================================================================
168// Auteur: Smellup
169// Fonction : Retourne les blocs d'affichage des tickets par jalon dans la page afaire
170// =======================================================================================================================================
171//
172function afaire_tdm_par_jalon($jalons) {
173        $page = NULL;
174        if (($jalons) && defined('_SARKASPIP_AFAIRE_JALONS_AFFICHES')) {
175                $liste = explode(":", $jalons);
176                $i =0;
177                foreach($liste as $_jalon) {
178                        $i += 1;
179                        $nb = afaire_compteur_jalon($_jalon);
180                        $nb_str = ($nb == 0) ? _T('sarkaspip:0_ticket') : (($nb == 1) ? strval($nb).' '._T('sarkaspip:1_ticket') : strval($nb).' '._T('sarkaspip:n_tickets'));
181                        $page .= '<li><a href="#ancre_jalon_'.strval($i).'" title="'._T('sarkaspip:afaire_aller_jalon').'">'
182                                ._T('sarkaspip:afaire_colonne_jalon').'&nbsp;&#171;&nbsp;'.$_jalon.'&nbsp;&#187;, '.$nb_str
183                                .'</a></li>';
184                }
185        }
186        $nb = afaire_compteur_jalon();
187        if ($nb > 0) {
188                $nb_str = ($nb == 1) ? strval($nb).' '._T('sarkaspip:1_ticket') : strval($nb).' '._T('sarkaspip:n_tickets');
189                $page .= '<li><a href="#ancre_jalon_non_planifie" title="'._T('sarkaspip:afaire_aller_jalon').'">&#171;&nbsp;'
190                        ._T('sarkaspip:afaire_non_planifies').'&nbsp;&#187;, '.$nb_str
191                        .'</a></li>';
192        }
193        return $page;
194}
195// FIN du Filtre : afaire_tdm_par_jalon
196
197// =======================================================================================================================================
198// Filtre : afaire_compteur_jalon
199// =======================================================================================================================================
200// Auteur: Smellup
201// Fonction : Retourne le nombre de tickets pour le jalon ou pour le jalon et le statut choisis
202// =======================================================================================================================================
203//
204function afaire_compteur_jalon($jalon='', $statut='') {
205        $valeur = 0;
206        // Nombre total de tickets pour le jalon
207        $select = array('t1.id_ticket');
208        $from = array('spip_tickets AS t1');
209        $where = array('t1.jalon='.sql_quote($jalon));
210        if ($statut)
211                $where = array_merge($where, array('t1.statut='.sql_quote($statut)));
212        $result = sql_select($select, $from, $where);
213        $valeur = sql_count($result);
214        return $valeur;
215}
216// FIN du Filtre : afaire_compteur_jalon
217
218// =======================================================================================================================================
219// Filtre : afaire_avancement_jalon
220// =======================================================================================================================================
221// Auteur: Smellup
222// Fonction : Retourne le pourcetage de tickets termines sur le nombre de tickets total du jalon
223// =======================================================================================================================================
224//
225function afaire_avancement_jalon($jalon='') {
226        $valeur = 0;
227        // Nombre total de tickets pour le jalon
228        $select = array('t1.id_ticket');
229        $from = array('spip_tickets AS t1');
230        $where = array('t1.jalon='.sql_quote($jalon));
231        $result = sql_select($select, $from, $where);
232        $n1 = sql_count($result);
233        // Nombre de tickets termines pour le jalon
234        if ($n1 != 0) {
235                $where = array_merge($where, array(sql_in('t1.statut', array('resolu','ferme'))));
236                $result = sql_select($select, $from, $where);
237                $n2 = sql_count($result);
238                $valeur = floor($n2*100/$n1);
239        }
240        return $valeur;
241}
242// FIN du Filtre : afaire_avancement_jalon
243
244// =======================================================================================================================================
245// Filtre : afaire_ticket_existe
246// =======================================================================================================================================
247// Auteur: Smellup
248// Fonction : Retourne l'info qu'au moins un ticket a ete cree
249// =======================================================================================================================================
250//
251function afaire_ticket_existe($bidon) {
252        $existe = false;
253        // Test si la table existe
254        $table = sql_showtable('spip_tickets', true);
255        if ($table) {
256                // Nombre total de tickets
257                $from = array('spip_tickets AS t1');
258                $where = array();
259                $result = sql_countsel($from, $where);
260                // Nombre de tickets termines pour le jalon
261                if ($result >= 1)
262                        $existe = true;
263        }
264        return $existe;
265}
266// FIN du Filtre : afaire_ticket_existe
267
268// =======================================================================================================================================
269// Filtre : statut_forum
270// =======================================================================================================================================
271// Auteur: Smellup
272// Fonction : Retourne le statut d'un forum cad non autorise, ouvert, ferme
273// =======================================================================================================================================
274//
275function statut_forum($id_article) {
276
277        $id = intval($id_article);
278        $statut = 'non_autorise';
279
280        // Forum active ou pas ?
281        $accepter = 'non';
282        $select = array('t1.accepter_forum');
283        $from = array('spip_articles AS t1');
284        $where = array('t1.id_article='.sql_quote($id));
285        $result = sql_select($select, $from, $where);
286        if ($row = sql_fetch($result)) 
287                $accepter = $row['accepter_forum'];
288
289        // Nombre messages de forum de l'article
290        $from = array('spip_forum AS t1');
291        $where = array('t1.id_objet='.sql_quote($id), 't1.objet='.sql_quote('article'));
292        $nb = sql_countsel($from, $where);
293        // Nombre de tickets termines pour le jalon
294        if ($nb >= 1)
295                $statut = ($accepter == 'non') ? 'ferme' : 'ouvert';
296        else
297                if ($accepter != 'non') $statut = 'ouvert';
298        return $statut;
299}
300// FIN du Filtre : statut_forum
301
302// =======================================================================================================================================
303// Filtre : sauvegarder_fonds
304// =======================================================================================================================================
305// Auteur: Smellup
306// Fonction : Cree les sauvegardes d'une liste de fonds suivant un format et dans un repertoire donne
307// =======================================================================================================================================
308//
309function sauvegarder_fonds($fonds, $ou, $mode='maintenance') {
310        include_spip('inc/config');
311
312        $ok = true;
313        $dir = $ou;
314        foreach ($fonds as $_fond) {
315                if ($mode == 'maintenance') {
316                        $dir = sous_repertoire($ou, $_fond);
317                        $nom = $_fond . "_" . date("Ymd_Hi") . ".txt";
318                }
319                else {
320                        $nom = $_fond . ".txt";
321                }
322                $f = $dir . $nom;
323                $ok = ecrire_fichier($f, serialize(lire_config($_fond)));
324        }
325
326        return $ok;
327}
328// FIN du Filtre : sauvegarder_fonds
329
330// =======================================================================================================================================
331// Filtre : restaurer_fonds
332// =======================================================================================================================================
333// Auteur: Smellup
334// Fonction : Restaure les sauvegardes d'une liste de fonds suivant un format et dans un repertoire donne
335// =======================================================================================================================================
336//
337function restaurer_fonds($fichiers) {
338        include_spip('inc/config');
339
340        $ok = true;
341        foreach ($fichiers as $_fichier) {
342                lire_fichier($_fichier,$tableau);
343                $fond = basename($_fichier, '.txt');
344                $ok = ecrire_config($fond, $tableau);
345        }
346
347        return $ok;
348}
349// FIN du Filtre : restaurer_fonds
350
351// =======================================================================================================================================
352// Filtre : nettoyer_titre_sujet
353// =======================================================================================================================================
354// Auteur: Smellup
355// Fonction : Restaure le titre exact du sujet en supprimant le préfixe éventuel
356// =======================================================================================================================================
357//
358function nettoyer_titre_sujet($titre, $resolu='') {
359        $titre_nettoye = trim(preg_replace(',^\[(annonce|epingle)\](&nbsp;)*,UimsS', '', $titre));
360        $titre_nettoye = trim(preg_replace(',_(verrouille|resolu)_,UimsS', '', $titre_nettoye));
361        if ($resolu) $titre_nettoye = _T('sarkaspip:titre_sujet_resolu', array('titre' => $titre_nettoye)); 
362        return $titre_nettoye;
363}
364// FIN du Filtre : nettoyer_titre_sujet
365
366function afficher_meta($env) {
367        $env = str_replace(array('&quot;', '&#039;'), array('"', '\''), $env);
368        if (is_array($env_tab = @unserialize($env))) {
369                $env = $env_tab;
370        }
371        if (!is_array($env)) {
372                return '';
373        }
374        $style = " style='border:1px solid #ddd;'";
375        $res = "<table style='border-collapse:collapse;'>\n";
376        foreach ($env as $nom => $val) {
377                if (is_array($val) || is_array(@unserialize($val))) {
378                        $val = afficher_meta($val);
379                }
380                else {
381                        $val = entites_html($val);
382                }
383                $res .= "<tr>\n<td$style><strong>". entites_html($nom).
384                                "&nbsp;:&nbsp;</strong></td><td$style>" .$val. "</td>\n</tr>\n";
385        }
386        $res .= "</table>";
387        return $res;
388}
389
390
391function inscription_possible() {
392        global $visiteur_session;
393
394        // fournir le mode de la config ou tester si l'argument du formulaire est un mode accepte par celle-ci
395        include_spip('inc/filtres');
396        $mode = tester_config(0, '');
397
398        // pas de formulaire si le mode est interdit
399        if (!$mode)
400                return false;
401
402        // pas de formulaire si on a déjà une session avec un statut égal ou meilleur au mode
403        if(isset($visiteur_session['statut']) && ($visiteur_session['statut'] <= $mode))
404                return false;
405
406        return true;
407}
408
409
410function abonnement_possible($plugin) {
411        $retour = false;
412
413        $informer = chercher_filtre('info_plugin');
414        $plugin_actif = ($informer($plugin, 'est_actif') == 1);
415
416        if ($plugin_actif) {
417                if (strtolower($plugin) == 'mailsubscribers') {
418                        $retour = true;
419                }
420        }
421
422        return $retour;
423}
424
425
426// =======================================================================================================================================
427// Filtres : module AGENDA
428// =======================================================================================================================================
429// Auteur: Smellup
430// Fonction : regroupe les filtres permettant les affichages de l'agenda
431// =======================================================================================================================================
432//
433include_spip('inc/sarkaspip_filtres_agenda');
434
435
436?>
Note: See TracBrowser for help on using the repository browser.