source: spip-zone/_squelettes_/sarkaspip/dev/inc/sarkaspip_filtres.php @ 49030

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

Correction du filtre nettoyer_titre_sujet qui accepte une tage ferme n'iporte ou maintenant.

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