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

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

Suppression de la globale des couleurs typo qui doublonnait avec la config par défaut.

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