source: spip-zone/_plugins_/spip-listes/spip-listes_1_9_3/inc/spiplistes_api_presentation.php @ 48256

Last change on this file since 48256 was 48256, checked in by paladin@…, 9 years ago

optimisation

  • Property svn:eol-style set to LF
  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 38.8 KB
Line 
1<?php
2/**
3 * Fonctions d'affichage et de presentation dans l'espace prive
4 *
5 * @package spiplistes
6 */
7 // $LastChangedRevision: 48256 $
8 // $LastChangedBy: paladin@quesaco.org $
9 // $LastChangedDate: 2011-05-29 09:42:07 +0000 (Sun, 29 May 2011) $
10
11/******************************************************************************************/
12/* SPIP-Listes est un systeme de gestion de listes d'abonnes et d'envoi d'information     */
13/* par email pour SPIP. http://bloog.net/spip-listes                                      */
14/* Copyright (C) 2004 Vincent CARON  v.caron<at>laposte.net                               */
15/*                                                                                        */
16/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
17/* de la Licence Publique Generale GNU publiee par la Free Software Foundation            */
18/* (version 2).                                                                           */
19/*                                                                                        */
20/* Ce programme est distribue car potentiellement utile, mais SANS AUCUNE GARANTIE,       */
21/* ni explicite ni implicite, y compris les garanties de commercialisation ou             */
22/* d'adaptation dans un but specifique. Reportez-vous a la Licence Publique Generale GNU  */
23/* pour plus de details.                                                                  */
24/*                                                                                        */
25/* Vous devez avoir recu une copie de la Licence Publique Generale GNU                    */
26/* en meme temps que ce programme ; si ce n'est pas le cas, ecrivez a la                  */
27/* Free Software Foundation,                                                              */
28/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, Etats-Unis.                   */
29/******************************************************************************************/
30
31
32include_spip('inc/presentation');
33include_spip('inc/spiplistes_api_journal');
34
35/**
36 * Retourne la puce qui va bien
37 * @return string|null
38 */
39function spiplistes_bullet_titre_liste ($type, $statut, $id=false, $return=false) {
40        $result = $img = $taille = "";
41        switch($type) {
42                case 'puce':
43                        $taille = "width='9' height='9'";
44                        break;
45        }
46        $img = spiplistes_items_get_item($type, $statut);
47        $alt = spiplistes_items_get_item('alt', $statut);
48        if($img) {
49                $result = "<img src='$img' alt='".$alt."' ".(!empty($id) ? "id='$id'" : "")." $taille border='0' />\n";
50        }
51        if($return) return($result);
52        else echo($result);
53}
54
55/**
56 * Renvoie un element de definition courriers/listes
57 * (icone, puce, alternate text, etc.)
58 * voir spiplistes_mes_options, tableau $spiplistes_items
59 * @global array $spiplistes_items
60 * @return string|null
61 */
62function spiplistes_items_get_item($item, $statut) {
63        global $spiplistes_items;
64
65        if(isset($spiplistes_items[$statut]) 
66                && isset($spiplistes_items[$statut][$item])
67        ) {
68                return ($spiplistes_items[$statut][$item]);
69        }
70        else {
71                return($spiplistes_items['default'][$item]);
72        }
73}
74
75/**
76 * @return string
77 */
78function spiplistes_gros_titre ($titre, $ze_logo='', $return = false) {
79        if(!spiplistes_spip_est_inferieur_193()) {
80                $ze_logo = ""; // semble ne plus etre utilise dans exec/
81        }
82        $aff = ($return === false);
83        $r = gros_titre($titre, $ze_logo, $aff);
84        if($return) return($r);
85}
86
87/**
88 * @version CP:20080322
89 * @param string $statut
90 * @return string
91 */
92function spiplistes_get_icone_auteur ($statut) {
93        switch($statut) {
94                case "0minirezo":
95                        $logo = "redacteurs-admin-24.gif"; // jolie cravate
96                        break;
97                case "5poubelle":
98                        $logo = "redacteurs-poubelle-24.gif";
99                        break;
100                default:
101                        $logo = "redacteurs-24.gif";
102                        break;
103        }
104        return($logo);
105}
106
107/**
108 * Bouton Valider pour les formulaires en /exec/
109 * @version CP-20080323
110 * @param string $name
111 * @param string $value
112 * @param bool $reset
113 * @global string $spip_lang_right
114 * @staticvar string $submit_value Titre du bouton
115 * @staticvar string $reset_value Titre lien reset
116 * @return string
117 */
118function spiplistes_form_bouton_valider ($name, $value = "", $reset = false) {
119        global $spip_lang_right;
120        static $submit_value, $reset_value;
121        if(!$submit_value) { 
122                $submit_value = _T('bouton_valider');
123        }
124        if(!$reset_value) { 
125                $reset_value = _T('spiplistes:retablir');
126        }
127        $value = (!empty($value) ? $value : $submit_value);
128        $reset = 
129                $reset
130                ? "<input type='reset' name='reset_".$name."' value=\"".$reset_value."\" class='fondo' />\n"
131                : ""
132                ;
133        $result = ""
134                . "<div class='verdana2' style='margin-top:1ex;text-align:$spip_lang_right;'>\n"
135                . $reset
136                . "<input type='submit' id='$name' name='$name' value='".$value."' class='fondo' />\n"
137                . "</div>\n"
138                ;
139        return($result);
140}
141
142/**
143 * Debut de formulaire HTML
144 * @version CP-20080323
145 * @param string $action
146 * @param bool $return Retourne value si FALSE, sinon echo ()
147 * @param string $post
148 * @return string|null
149 */
150function spiplistes_form_debut ($action = '#', $return = false, $method = 'post') {
151        $result = "<form action='".$action."' method='$method'>\n";
152        if($return) return($result);
153        else echo($result);
154}
155
156/**
157 * Fin de formulaire HTML
158 * @version CP-20080323
159 * @param bool $return Retourne value si FALSE, sinon echo ()
160 * @return string|null
161 */
162function spiplistes_form_fin ($return = false) {
163        $result = "</form>\n";
164        if($return) return($result);
165        else echo($result);
166}
167
168/**
169 * Debut de fieldset de formulaire HTML
170 * @version CP-20080323
171 * @param string $legend
172 * @param bool $return Retourne value si FALSE, sinon echo ()
173 * @return string|null
174 */
175function spiplistes_form_fieldset_debut ($legend = "", $return = false) {
176        if(!empty($legend)) {
177                $legend = "<legend style='padding:0 1ex;'>".$legend."</legend>\n";
178        }
179        $result = "<fieldset class='verdana2'>".$legend;
180        if($return) return($result);
181        else echo($result);
182}
183
184/**
185 * Fin de fieldset de formulaire HTML
186 * @version CP-20080323
187 * @param bool $return Retourne value si FALSE, sinon echo ()
188 * @return string|null
189 */
190function spiplistes_form_fieldset_fin ($return = false) {
191        $result = "</fieldset>\n";
192        if($return) return($result);
193        else echo($result);
194}
195
196/**
197 * @version CP-20080323
198 * @param string $description
199 * @param bool $return Retourne value si FALSE, sinon echo ()
200 * @return string|null
201 */
202function spiplistes_form_description ($description, $return = false) {
203        $result = spiplistes_form_message($description, $return);
204        if($return) return($result);
205}
206
207/**
208 * @version CP-20080323
209 * @param string $description
210 * @param bool $return Retourne value si FALSE, sinon echo ()
211 * @return string|null
212 */
213function spiplistes_form_description_alert ($description, $return = false) {
214        $result = spiplistes_form_message($description, $return, "message-alerte");
215        if($return) return($result);
216}
217
218/**
219 * @version CP-20080323
220 * @param string $message
221 * @param bool $return Retourne value si FALSE, sinon echo ()
222 * @param string $class
223 * @return string|null
224 */
225function spiplistes_form_message ($message, $return = false, $class = '') {
226        $result = "";
227        if(!empty($message)) {
228                $result = "<p class='verdana2 $class'>".$message."</p>\n";
229        }
230        if($return) return($result);
231        else echo($result);
232}
233
234/**
235 * Retourne un element HTML
236 *
237 * @param string $name
238 * @param string $value
239 * @param string $label
240 * @param bool $checked si case a cocher cochee
241 * @param bool $return Imprimer si TRUE (utilise echo())
242 * @param bool $div Envelopper le resultat si TRUE
243 * @version CP-20080502
244 * @return string|null
245*/
246function spiplistes_form_input_item ($type, $name, $value, $label, $checked, $return = false, $div = true, $id = false) {
247        $result = ""
248                . "<label class='verdana2'>"
249                . "<input type='$type' id='".($id ? $id : $name)."' name='$name' value='$value' ".($checked ? "checked='checked'" : "")."/>"
250                . $label
251                . "</label>\n"
252                ;
253        if($div) {
254                $result = "<div>\n".$result."</div>\n";
255        }
256        if($return) return($result);
257        else echo($result);
258}
259
260/**
261 * Retourne un element HTML case a cocher
262 *
263 * {@link spiplistes_form_input_item()}
264 * @param string $name
265 * @param string $value
266 * @param string $label
267 * @param bool $checked case a cocher cochee
268 * @param bool $return Imprimer si TRUE (utilise echo())
269 * @param bool $div Envelopper le resultat si TRUE
270 * @version CP-20080323
271 * @return string|null
272*/
273function spiplistes_form_input_checkbox ($name, $value, $label, $checked, $return = false, $div = true) {
274        $result = spiplistes_form_input_item('checkbox', $name, $value, $label, $checked, $return, $div);
275        if($return) return($result);
276}
277
278/**
279 * @version CP-20080502
280 * @param string $name
281 * @param string $value
282 * @param string $label
283 * @param bool $checked
284 * @param bool $return Retourne value si FALSE, sinon echo ()
285 * @param bool $div
286 * @return string|null
287 */
288function spiplistes_form_input_radio ($name, $value, $label, $checked, $return = false, $div = true) {
289        static $id;
290        $id++;
291        $result = spiplistes_form_input_item('radio', $name, $value, $label, $checked, $return, $div, $name."_".$id);
292        if($return) return($result);
293}
294
295/**
296 * @version CP-20070923
297 * @param string $titre
298 * @param bool $raccourcis
299 * @param bool $return Retourne value si FALSE, sinon echo ()
300 * @return string|null
301 */
302function spiplistes_debut_raccourcis ($titre = '', $raccourcis = true, $return = false) {
303 
304  $result = ''
305                . ($raccourcis ? creer_colonne_droite('', true) : '')
306                . debut_cadre_enfonce('', true)
307                . "<span class='verdana2' style='font-size:80%;text-transform: uppercase;font-weight:bold;'>$titre</span>"
308                . "<br />"
309                ;
310        if($return) return($result);
311        else echo($result);
312}
313
314
315// From SPIP-Listes-V: CP:20070923
316function spiplistes_fin_raccourcis ($return = false) {
317        $result = ""
318                . fin_cadre_enfonce(true)
319                ;
320        if($return) return($result);
321        else echo($result);
322}
323
324/**
325 * @version SPIP-Listes-V: CP:20070923
326 */
327function spiplistes_boite_raccourcis ($return = false) {
328       
329        $connect_id_auteur = intval($GLOBALS['connect_id_auteur']);
330        $connect_statut = intval($GLOBALS['connect_statut']);
331       
332        $flag_webmestre = autoriser('webmestre','','',$connect_id_auteur);
333        $flag_administrateur = ($connect_statut == "0minirezo");
334       
335        $id_liste = intval(_request('id_liste'));
336        $flag_moderateur =
337                ($id_liste > 0)
338                ? autoriser('moderer', 'liste', $id_liste, $connect_id_auteur)
339                : FALSE
340                ;
341       
342        $result = ""
343                . (($flag_webmestre) ? spiplistes_raccourci_journal_jquery() : "")
344                // Les raccourcis
345                . spiplistes_debut_raccourcis(_T('titre_cadre_raccourcis'), true, true)
346        ;
347        $result .= ""
348                . "<ul class='verdana2' style='list-style: none;padding:1ex;margin:0;'>\n"
349                . "<li>"
350                . icone_horizontale(
351                        _T('spiplistes:nouveau_courrier')
352                        , generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_EDIT,'new=oui&type=nl')
353                        , _DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_brouillon-24.png"
354                        ,"creer.gif"
355                        ,false
356                        )
357                . "</li>\n"
358                . "<li>"
359                . icone_horizontale(
360                        _T('spiplistes:nouvelle_liste_de_diffusion')
361                        , generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_EDIT,'new=oui')
362                        , _DIR_PLUGIN_SPIPLISTES_IMG_PACK."reply-to-all-24.gif"
363                        ,"creer.gif"
364                        ,false
365                        )
366                . "</li>\n"
367                ;
368               
369        if($flag_webmestre
370           || $flag_administrateur ) {
371                $result .= ""
372                        . "<li>"
373                        . icone_horizontale(
374                                _T('spiplistes:import_export')
375                                , generer_url_ecrire(_SPIPLISTES_EXEC_IMPORT_EXPORT)
376                                , _DIR_PLUGIN_SPIPLISTES_IMG_PACK."listes_inout.png"
377                                ,""
378                                ,false
379                                )
380                        . "</li>\n"
381                        ;
382        }
383        if(autoriser('webmestre','','',$connect_id_auteur)) {
384                $result .= ""
385                        . "<li>"
386                        . icone_horizontale(
387                                _T('titre_admin_tech')
388                                , generer_url_ecrire(_SPIPLISTES_EXEC_MAINTENANCE)
389                                , "administration-24.gif"
390                                ,""
391                                ,false
392                                )
393                        . "</li>\n"
394                        // lecture du journal (log)
395                        . spiplistes_raccourci_journal(false)
396                        //
397                        ;
398        }
399        $result .= ""
400                . "<!-- aide en ligne -->\n"
401                . "<li>"
402                . icone_horizontale(
403                        _T('spiplistes:aide_en_ligne')
404                        , generer_url_ecrire(_SPIPLISTES_EXEC_AIDE)
405                        , _DIR_PLUGIN_SPIPLISTES_IMG_PACK."aide-24.png"
406                        , ""
407                        , false
408                        , " onclick=\"javascript:window.open(this.href,'spip_aide', 'scrollbars=yes, resizable=yes, width=740, height=580'); return false;\" "
409                        )
410                . "</li>\n"
411                ;
412        $result .= ""
413                . "</ul>\n"
414                . spiplistes_fin_raccourcis(true)
415                ;
416       
417        if($return) return($result);
418        else echo($result);
419}
420
421function spiplistes_boite_info_spiplistes($return=false) {
422        $result = ""
423                // colonne gauche boite info
424                . "<br />"
425                . debut_boite_info(true)
426                . _T('spiplistes:_aide')
427                . fin_boite_info(true)
428                ;
429        if($return) return($result);
430        else echo($result);
431}
432
433//CP-20080508
434function spiplistes_bouton_block_depliable ($titre = "", $deplie = true, $nom_block = "", $icone = "") {
435        if(empty($titre)) {
436                $titre = _T("info_sans_titre");
437        }
438        include_spip('inc/layer');
439        if(spiplistes_spip_est_inferieur_193()) {
440                $f = ($deplie ? "bouton_block_visible" : "bouton_block_invisible");
441                $result = $f($nom_block, $icone);
442        } else {
443                $result = bouton_block_depliable($titre, $deplie, $nom_block);
444        }
445        return($result);
446}
447
448// construit la boite de selection patrons (CP-20071012)
449function spiplistes_boite_selection_patrons ($patron="", $return=false
450                                                , $chemin="patrons/", $select_nom="patron"
451                                                , $size_select=10, $width='34ex') {
452        global $couleur_claire;
453        $result = "";
454        // va chercher la liste des patrons
455        $liste_patrons = spiplistes_liste_des_patrons ($chemin);
456        // boite de selection du patron
457        $result  .= "<select style='width:$width;'  name='". $select_nom . "' class='verdana1' size='" . $size_select . "'>\n";
458        // par defaut, selectionne le premier
459        $selected = (empty($title_selected) ? "selected='selected'" : ""); 
460        foreach($liste_patrons as $titre_option) {
461                $selected =
462                        ($titre_option == $patron)
463                        ? " selected='selected' style='background:$couleur_claire;' "
464                        : ""
465                        ;
466                $result .= "<option $selected value='" . $titre_option . "'>" . $titre_option . "</option>\n";
467                if (!empty($selected)) {
468                        $selected = "";
469                }
470        }
471        $result  .= "</select>\n";
472
473        if($return) return($result);
474        else echo($result);
475}
476
477// boite information avec juste titre et id
478// A placer dans cadre gauche (ex.: exec/spiplistes_listes)
479// si $id_objet (par exemple: 'id_auteur') va chercher le logo de l'objet
480function spiplistes_boite_info_id ($titre, $id, $return = true, $id_objet = false) {
481        global $spip_display;
482        $result = "";
483        if($id) {
484                $logo = "";
485                if($id_objet && ($spip_display != 4)) {
486                        include_spip("inc/iconifier");
487                        $chercher_logo = charger_fonction('chercher_logo', 'inc');
488                        if ($logo = $chercher_logo($id, $id_objet, 'on')) {
489                                list($img, $clic) = decrire_logo($id_objet,'on',$id, 170, 170, $logo, $texteon, $script);
490                                $logo = "<div style='text-align: center;margin:1em 0;'>$img</div>";
491                        }
492                        else {
493                                $logo = "";
494                        }
495                }
496                $result = 
497                        debut_boite_info(true)
498                        . "\n<div style='font-weight: bold; text-align: center; text-transform: uppercase;' class='verdana1 spip_xx-small'>"
499                        .  $titre
500                        . "<br /><span class='spip_xx-large'>"
501                        . $id
502                        . "</span></div>"
503                        . $logo
504                        . fin_boite_info(true)
505                        . "<br />"
506                ;
507        }
508        if($return) return($result);
509        else echo($result);
510}
511
512// renvoie liste des patrons en excluant les sous-versions (texte, lang) (CP-20071012)
513function spiplistes_liste_des_patrons ($chemin) {
514        $liste_patrons = find_all_in_path($chemin, "[.]html$");
515        $result = array();
516        foreach($liste_patrons as $key => $value) {
517                if (
518                        !preg_match("=\.[a-z][a-z]\.html$=", $value)
519                        && !preg_match("=_texte\.html$=", $value)
520                        && !preg_match("=_texte\.[a-z][a-z]\.html$=", $value)
521                        ) {
522                        $result[] = basename($value, ".html");
523                }
524        }
525        sort($result);
526        return($result);
527}
528
529// complete les dates chiffres (jour, heure, etc.)
530// de retour du formulaire pour les dates et renvoie une date formatee correcte
531function spiplistes_formate_date_form($annee, $mois, $jour, $heure, $minute) {
532        if(!empty($jour) && !empty($mois) && !empty($annee) && (intval($heure) >= 0) && (intval($minute) >= 0)) {
533                foreach(array('mois', 'jour', 'heure', 'minute') as $k) {
534                        if($$k < 10) {
535                                $$k = str_pad($$k, 2, "0", STR_PAD_LEFT);
536                        }
537                }
538                return($annee."-".$mois."-".$jour." ".$heure.":".$minute.":00");
539        }
540        return(false);
541}
542
543// Petit formulaire dans la boite autocron (CP-20071018)
544function spiplistes_boite_autocron_form($titre, $option, $value) {
545        $connect_id_auteur = intval($GLOBALS['connect_id_auteur']);
546       
547        $result = "";
548        // n'apparait que si super_admin et pas sur la page de config (doublon de form)
549        if(autoriser('webmestre','','',$connect_id_auteur)) {
550                if(_request('exec')!=_SPIPLISTES_EXEC_CONFIGURE) {
551                        $result = ""
552                                . "<!-- bouton annulation option -->\n"
553                                . "<form id='id_form_$option' method='post' action='".generer_url_ecrire(_SPIPLISTES_EXEC_COURRIERS_LISTE)."'"
554                                        . " style='margin:0.5em 0;text-align:center;'>\n"
555                                . "<input type='hidden' name='$option' id='id_$option' value='$value' />\n"
556                                . "<label for='id_$option' style='display:none;'>$titre option</label>\n"
557                                . "<input type='submit' name='Submit' value='$titre' id='Submit' class='fondo' />\n"
558                                . "</form>\n"
559                                ;
560                }
561                else {
562                        $result = ""
563                                . "<p class='verdana2'>"._T('spiplistes:utilisez_formulaire_ci_contre')."</p>\n"
564                                ;
565                }
566        }
567        return($result);
568}
569
570// Petite boite info pour l'autocron (CP-20071018)
571function spiplistes_boite_autocron_info ($icone = "", $return = false, $titre_boite = '', $bouton = "", $texte = "", $nom_option = "", $icone_alerte = false) {
572        $result = ""
573                . "<div class='spip-alert'>\n"
574                . debut_cadre_couleur_foncee($icone, true, '', $titre_boite)
575                . ($icone_alerte ? "<div style='text-align:center;'><img alt='' src='$icone_alerte' /></div>" : "")
576                . ($texte ? "<p class='verdana2' style='margin:0;'>$texte</p>\n" : "")
577                . ($bouton ? spiplistes_boite_autocron_form($bouton, $nom_option, 'non') : "")
578                . fin_cadre_couleur(true)
579                . "</div>\n"
580                ;
581        if($return) return($result);
582        else echo($result);
583}
584
585/*
586 * boite info sur les simulation et les envois en cours
587 * @return la boite autocron, chaine html
588 */
589function spiplistes_boite_autocron () { 
590
591        //nombre de processus d'envoi simultanes
592        if (!defined('_SPIP_LISTE_SEND_THREADS')) {
593                define('_SPIP_LISTE_SEND_THREADS', 1);
594        }
595       
596        $connect_id_auteur = intval($GLOBALS['connect_id_auteur']);
597       
598        // initialise les options
599        foreach(array(
600                'opt_suspendre_trieuse'
601                , 'opt_suspendre_meleuse'
602                , 'opt_simuler_envoi'
603                ) as $key) {
604                $$key = spiplistes_pref_lire($key);
605        }
606
607        $result = "";
608       
609        // Informe sur l'etat de la trieuse
610        if($opt_suspendre_trieuse == 'oui') {
611                if(_request('opt_suspendre_trieuse')=='non') {
612                        if(autoriser('webmestre','','',$connect_id_auteur)) {
613                                spiplistes_ecrire_key_in_serialized_meta ('opt_suspendre_trieuse', $opt_suspendre_trieuse = 'non', _SPIPLISTES_META_PREFERENCES);
614                                spiplistes_ecrire_metas();
615                                $result .= "<p class='verdana2' style='margin-bottom:1em;'>"._T('spiplistes:trieuse_reactivee')."</p>\n";
616                        }
617                }
618                else {
619                        $result .= spiplistes_boite_autocron_info(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."stock_timer.gif", true
620                                , _T('spiplistes:trieuse_suspendue'), _T('bouton_annuler')
621                                , _T('spiplistes:trieuse_suspendue_info'), 'opt_suspendre_trieuse', _DIR_IMG_PACK."warning-24.gif"
622                                );
623                }
624        }
625       
626        // Informe sur l'etat de la meleuse
627        if($opt_suspendre_meleuse == 'oui') {
628                if(_request('opt_suspendre_meleuse')=='non') {
629                        if(autoriser('webmestre','','',$connect_id_auteur)) {
630                                spiplistes_ecrire_key_in_serialized_meta ('opt_suspendre_meleuse', $opt_suspendre_meleuse = 'non', _SPIPLISTES_META_PREFERENCES);
631                                spiplistes_ecrire_metas();
632                                $result .= "<p class='verdana2' style='margin-bottom:1em;'>"._T('spiplistes:meleuse_reactivee')."</p>\n";
633                        }
634                }
635                else {
636                        $result .= spiplistes_boite_autocron_info(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_envoyer-24.png", true
637                                , _T('spiplistes:meleuse_suspendue'), _T('bouton_annuler')
638                                , _T('spiplistes:meleuse_suspendue_info'), 'opt_suspendre_meleuse', _DIR_IMG_PACK."warning-24.gif"
639                                );
640                }
641        }
642       
643        // Informe si mode simulation en cours
644        if($opt_simuler_envoi == 'oui') {
645                if(_request('opt_simuler_envoi')=='non') {
646                        if(autoriser('webmestre','','',$connect_id_auteur)) {
647                                spiplistes_ecrire_key_in_serialized_meta ('opt_simuler_envoi', $opt_simuler_envoi = 'non', _SPIPLISTES_META_PREFERENCES);
648                                spiplistes_ecrire_metas();
649                                $result .= "<p class='verdana2' style='margin-bottom:1em;'>"._T('spiplistes:simulation_desactive')."</p>\n";
650                        }
651                }
652                else {
653                        $result .= spiplistes_boite_autocron_info(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_envoyer-24.png", true
654                                , _T('spiplistes:mode_simulation'), _T('bouton_annuler')
655                                , _T('spiplistes:mode_simulation_info'), 'opt_simuler_envoi', _DIR_IMG_PACK."warning-24.gif"
656                                );
657                }
658        }
659       
660        include_spip('genie/spiplistes_cron');
661        $time = time();
662        $time = cron_spiplistes_cron($time);
663
664        if($time > 0) { 
665                // le CRON n'a rien a faire. Pas de boite autocron
666                return($result);
667        }
668
669        $nb_etiquettes = spiplistes_courriers_en_queue_compter("etat=".sql_quote(''));
670        $nb_total_abonnes = spiplistes_courriers_total_abonnes();
671
672        if(($nb_etiquettes > 0) && ($nb_total_abonnes > 0)) {
673                $result .= ""
674                        . "<br />"
675                        . debut_boite_info(true)
676                        . "<div style='font-weight:bold;text-align:center'>"._T('spiplistes:envoi_en_cours')."</div>"
677                        . "<div style='padding : 10px;text-align:center'><img alt='' src='"._DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_distribution-48.gif' /></div>"
678                        . "<div id='meleuse'>"
679                        .       (
680                                        ($nb_total_abonnes)
681                                        ?       ""
682                                                . "<p align='center' id='envoi_statut'>"._T('spiplistes:envoi_en_cours')." "
683                                                . "<strong id='envois_restants'>$nb_etiquettes</strong>/<span id='envois_total'>$nb_total_abonnes</span> "
684                                                . "(<span id='envois_restant_pourcent'>"
685                                                . round($nb_etiquettes / $nb_total_abonnes * 100)."</span>%)</p>"
686                                        :       ""
687                                )
688                        // message si simulation d'envoi       
689                        .       (
690                                        ($opt_simuler_envoi == 'oui') 
691                                        ? "<div style='color:white;background-color:red;text-align:center;line-height:1.4em;'>"._T('spiplistes:mode_simulation')."</div>\n" 
692                                : ""
693                                )
694                        ;
695               
696                $href = generer_action_auteur('spiplistes_envoi_lot','envoyer');
697
698                for ($i = 0; $i < _SPIP_LISTE_SEND_THREADS; $i++) {
699                        $result .= "<span id='proc$i' class='processus' name='$href'></span>";
700                }
701                $result .= ""
702                        . "<a href='".generer_url_ecrire(_SPIPLISTES_EXEC_COURRIERS_LISTE)."' id='redirect_after'></a>"
703                        . "</div>"
704                        . "<script><!--
705                var target = $('#envois_restants');
706                var total = $('#envois_total').html();
707                var target_pc = $('#envois_restant_pourcent');
708                function redirect_fin(){
709                        redirect = $('#redirect_after');
710                        if (redirect.length>0){
711                                href = redirect.attr('href');
712                                setTimeout('document.location.href = \"'+href+'\"',0);
713                        }
714                }
715                jQuery.fn.runProcessus = function(url) {
716                        var proc = this;
717                        var href = url;
718                        $(target).load(url,function(data){
719                                restant = $(target).html();
720                                pourcent = Math.round(restant/total*100);
721                                $(target_pc).html(pourcent);
722                                if (Math.round(restant)>0)
723                                        $(proc).runProcessus(href);
724                                else
725                                        redirect_fin();
726                        });
727                }
728                $('span.processus').each(function(){
729                        var href = $(this).attr('name');
730                        $(this).html(ajax_image_searching).runProcessus(href);
731                        //run_processus($(this).attr('id'));
732                });
733                //-->
734                </script>"
735                        . "<p class='verdana2'>"._T('spiplistes:texte_boite_en_cours')."</p>" 
736                        . fin_boite_info(true)
737                        ;
738        }
739        return($result);
740}
741
742// adapte de abomailman ()
743// MaZiaR - NetAktiv
744// tech@netaktiv.com
745
746
747// CP-20080528
748// Renvoie l'arborescence des rubriques
749function spiplistes_arbo_rubriques ($id_rubrique = 0, $ran = 0) {
750       
751        // une seule rqt pour recuperer toutes les rubriques
752        $sql_result = sql_select("id_rubrique,id_parent,titre", "spip_rubriques");
753        $rubriques_array = array();
754        // empile les rubriques
755        while($row = sql_fetch($sql_result)) {
756                $rubriques_array[] = array(
757                        'id_rubrique' => intval($row['id_rubrique'])
758                        , 'id_parent' => intval($row['id_parent'])
759                        , 'titre' => supprimer_numero(typo($row['titre']))
760                );
761        }
762        // renvoie la liste sous forme de option de select (html)
763        return(
764                "<!-- liste des rubriques -->\n"
765                . spiplistes_arbo_rubriques_sub($rubriques_array)
766        );
767}
768
769// sous-fonction de spiplistes_arbo_rubriques()
770// recursive
771function spiplistes_arbo_rubriques_sub ($rubriques_array, $id_parent = 0, $ran = 0) {
772        $result = "";
773        $marge =
774                ($ran)
775                ? "&nbsp;&nbsp;&nbsp;|".str_repeat("--", $ran)
776                : "&bull;"
777                ;
778        foreach($rubriques_array as $rubrique) {
779                if($rubrique['id_parent'] == $id_parent) {
780                        $result .= ""
781                                . "<option value='" . $rubrique['id_rubrique'] . "'>" . $marge . "&nbsp;" . $rubrique['titre'] . "</option>\n"
782                                . spiplistes_arbo_rubriques_sub($rubriques_array, $rubrique['id_rubrique'], $ran + 1)
783                                ;
784                }
785        }
786        return($result);
787}
788
789// Nombre d'abonnes a une liste, chaine html
790function spiplistes_nb_abonnes_liste_str_get ($id_liste, $nb_abos = false, $html = false, $texte = false) {
791        if($nb_abos === false) {
792                list($nb_abos, $html, $texte) = spiplistes_listes_nb_abonnes_compter($id_liste, true);
793        } 
794        $absents = $nb_abos - ($html + $texte);
795        $result =
796                ($nb_abos)
797                ?       ""
798                        . spiplistes_singulier_pluriel_str_get($nb_abos, _T('spiplistes:nb_abonnes_sing'), _T('spiplistes:nb_abonnes_plur')) 
799                        .       (
800                                $absents 
801                                ? _T('spiplistes:_dont_n_sans_format_reception', array('n' => $absents))
802                                : ""
803                                )
804                : _T('spiplistes:sans_abonne')
805                ;
806        return ($result);
807}
808
809/**
810 * Nombre de destinataires d'une liste, chaine html
811 * @version CP-20081126
812 * @param int $nb
813 * @return string
814 */
815function spiplistes_nb_destinataire_str_get ($nb) {
816        $result = ($nb > 0)
817                        ? spiplistes_singulier_pluriel_str_get(
818                                $nb
819                                , _T('spiplistes:nb_destinataire_sing')
820                                , _T('spiplistes:nb_destinataire_plur')
821                                )
822                        : _T('spiplistes:aucun_destinataire')
823                        ;
824        return($result);
825}
826
827/**
828 * Nombre de listes, chaine html
829 * @version CP-20081126
830 * @param $nb Object
831 * @return string
832 */
833function spiplistes_nb_listes_str_get ($nb) {
834        if(!$nb) return ("");
835        $result = 
836                ($nb == 1)
837                ? _T('spiplistes:1_liste', array('n' => $nb))
838                : _T('spiplistes:n_listes', array('n' => $nb))
839                ;
840        return($result);
841}
842
843/**
844 * Nombre de moderateurs d'une liste, chaine html
845 * @version CP-20080610
846 * @param int|bool $nb
847 * @return string
848 */
849function spiplistes_nb_moderateurs_liste_str_get ($nb) {
850        $result = ""
851                . "("
852                .       (
853                        ($nb)
854                        ? spiplistes_singulier_pluriel_str_get(
855                                $nb
856                                , _T('spiplistes:nb_moderateur_sing'), _T('spiplistes:nb_moderateur_plur')) 
857                        : _T('spiplistes:sans_moderateur')
858                        )
859                . ")"
860                ;
861        return ($result);
862}
863
864/**
865 * @version CP-20080510
866 * @param string $titre
867 * @return string
868 */
869function spiplistes_titre_boite_info ($titre = "") {
870        global $spip_display, $spip_lang_left;
871        $result =
872                (!empty($titre))
873                ?
874                        "<h3 style='padding-$spip_lang_left:3px;text-align:$spip_lang_left;border-bottom:1px solid #444;margin:0;' class='verdana2'>"
875                        . $titre
876                        . "</h3>\n"
877                : ""
878                ;
879        return($result);
880}
881
882/**
883 * termine page si la donnee n'existe pas dans la base
884 * @param bool $return
885 * @return string
886 */
887function spiplistes_terminer_page_donnee_manquante ($return = true) {
888        spiplistes_terminer_page_message (_T('spiplistes:pas_de_donnees'), $return);
889}
890
891/**
892 * termine la page (en affichant message ou retour)
893 * @param string $message
894 * @return string
895 */
896function spiplistes_terminer_page_message ($message) {
897        $result = '<p>'.$message.'</p>'.PHP_EOL;
898        if($return) return($result);
899        else echo($result);
900}
901
902/**
903 * termine la page (a employer qd droits insuffisants)
904 * @param bool $return
905 * @return string
906 */
907function spiplistes_terminer_page_non_autorisee ($return = true) {
908        spiplistes_terminer_page_message (_T('avis_non_acces_page'), $return);
909}
910
911/**
912 * @param string $id
913 * @return string
914 */
915function spiplistes_debut_block_visible ($id="") {
916        if(!function_exists('debut_block_visible')) {
917                include_spip('inc/layer');
918                return(debut_block_depliable(true,$id));
919        }
920        return(debut_block_visible($id));
921}
922
923/**
924 * @param string $id
925 * @return string
926 */
927function spiplistes_debut_block_invisible ($id="") {
928        if(!function_exists('debut_block_invisible')) {
929                include_spip('inc/layer');
930                return debut_block_depliable(false,$id);
931        }
932        return(debut_block_invisible($id));
933}
934
935/**
936 * Renvoie tableau de listes valides avec nb abonnes
937 * du style :
938 *   array(
939 *     array(
940 *       $id_liste
941 *       , $titre  // titre de la liste
942 *       , $nb_abos
943 *     )
944 *   , ...
945 *   )
946 * @version CP-20080430
947 * @return array|null
948 */
949function spiplistes_listes_lister_abos () {
950        $sql_select = array('l.id_liste', 'l.titre', 'COUNT(a.id_auteur) AS nb_abos');
951        $sql_from = "spip_listes as l LEFT JOIN spip_auteurs_listes AS a ON l.id_liste=a.id_liste";
952        $sql_where = "l.statut=".implode(" OR l.statut=", array_map("sql_quote", explode(";", _SPIPLISTES_LISTES_STATUTS_OK)));
953        $sql_group = 'l.id_liste';
954        if($sql_result = sql_select($sql_select, $sql_from, $sql_where, $sql_group)) {
955                $result = array();
956                while($row = sql_fetch($sql_result)) {
957                        $result[] = $row;
958                }
959                return($result);
960        }
961        return(NULL);
962}
963
964/**
965 * CP-20081112
966 * deux fonctions issues de fmp3
967 * - fmp3_envelopper_script()
968 * - fmp3_compacter_script()
969 *
970 * enveloppe un script javascript pour insertion dans le code de la page
971 */
972function spiplistes_envelopper_script ($source, $format) {
973        $source = trim($source);
974        if(!empty($source)) {
975                switch($format) {
976                        case 'css':
977                                $source = "\n<style type='text/css'>\n<!--\n" 
978                                        . $source
979                                        . "\n-->\n</style>";
980                                break;
981                        case 'js':
982                                $source = "\n<script type='text/javascript'>\n//<![CDATA[\n" 
983                                        . $source
984                                        . "\n//]]>\n</script>";
985                                break;
986                        default:
987                                $source = "\n\n<!-- erreur envelopper: format inconnu [$format] -->\n\n";
988                }
989        }
990        return($source);
991} // end spiplistes_envelopper_script()
992
993/**
994 * Complement des deux 'compacte'. supprimer les espaces en trop.
995 *
996 * @return string
997 */ 
998function spiplistes_compacter_script ($source, $format) {
999        $source = trim($source);
1000        if(!empty($source)) {
1001                $source = compacte($source, $format);
1002                $source = preg_replace(",/\*.*\*/,Ums","",$source); // pas de commentaires
1003                $source = preg_replace('=[[:space:]]+=', ' ', $source); // reduire les espaces
1004        }
1005        return($source);
1006} // end spiplistes_compacter_script()
1007
1008/**
1009 * Donne les infos systemes du plugin.
1010 *
1011 * @return string
1012 */ 
1013function spiplistes_plugin_get_infos($plug) {
1014        if(version_compare($GLOBALS['spip_version_code'],'15375','>=')) {
1015                $get_infos = charger_fonction('get_infos','plugins');
1016                $infos = $get_infos($plug);
1017        }
1018        else {
1019                $infos = plugin_get_infos($plug);
1020        }
1021        return($infos);
1022}
1023
1024/**
1025 * Petite signature du plugin
1026 *
1027 * Signature affichee en bas de formulaire en espace prive.
1028 * @param $prefix string prefix du plugin
1029 * @param $html bool si true, renvoyer le resultat au format html
1030 * @param $verifier_svn si true
1031 * @return string petite signature de plugin (version plugin, version base, version jquery)
1032 */
1033function spiplistes_html_signature ($prefix, $html = true, $verifier_svn = false) {
1034       
1035        $info = spiplistes_plugin_get_infos(spiplistes_get_meta_dir($prefix));
1036        $nom = typo($info['nom']);
1037        $version = typo($info['version']);
1038        //$base_version = typo($info['version_base']); // cache ?
1039        $base_version = spiplistes_current_version_base_get($prefix);
1040        $svnrevision = spiplistes_current_svnrevision_get($prefix, $verifier_svn);
1041        $revision = "";
1042       
1043        if($html) {
1044                $version = (($version) ? " <span style='color:gray;'>".$version : "")
1045                        . (($svnrevision) ? "-".$svnrevision : "")
1046                        . "</span>"
1047                        ;
1048                $base_version = (($base_version) ? " <span style='color:#66c;'>&lt;".$base_version."&gt;</span>" : "");
1049        }
1050        $result = ''
1051                . $nom
1052                . ' ' . $version
1053                . ' ' . $base_version
1054                ;
1055        if($html) {
1056                $result = "<p class='verdana1 spip_xx-small' style='font-weight:bold;'>$result\n"
1057                . "<script type='text/javascript'>\n"
1058                . "//<![CDATA[\n"
1059                . "document.write(' <span style=\'color:green\'>jQuery ' + jQuery.fn.jquery + '</span>')"
1060                . "//]]>\n"
1061                . "</script>\n"
1062                . "<noscript>\n"
1063                . "<span style='color:red'>" . _T('spiplistes:jquery_inactif') . "</span>"
1064                . "</noscript>\n"
1065                . "</p>\n";
1066        }
1067        return($result);
1068} // end spiplistes_html_signature()
1069
1070/**
1071 * Le numero de revision svn
1072 * @param $prefix prefix du plugin
1073 * @param $s si true, va chercher le numero dans le repertoire du plugin
1074 * @return string
1075 */
1076function spiplistes_current_svnrevision_get ($prefix, $verifier_svn) {
1077        static $svn_revision = false;
1078        if(!empty($prefix)) {
1079                // lire directement dans plugin.xml (eviter le cache ?)
1080                $dir_plugin = _DIR_PLUGINS.spiplistes_get_meta_dir($prefix);
1081                // cherche si sur version svn
1082                if(!$result = version_svn_courante($dir_plugin)) {
1083                        // mefiance: il faut que svn/entries soit a jour (svn update sur le poste de travail/serveur !)
1084                        // si pas de svn/entries, lire l'attribut dans plugin.xml
1085                        $file = $dir_plugin."/"._FILE_PLUGIN_CONFIG;
1086                        $result = spiplistes_svn_revision_read($file);
1087                }
1088                if($verifier_svn && !$svn_revision) {
1089                        // verifier les fichiers inclus (gourmand et peut-etre trompeur si fichier fantome ?)
1090                        // ne verifier que sur deux niveaux (PLUGIN_ROOT et ses repertoires directs, pas en dessous)
1091                        define("_PGL_SVN_LIRE_EXTENSIONS", "css|html|js|php|xml");
1092                        $script_files = array();
1093                        if(is_dir($dir_plugin) && ($dh = opendir($dir_plugin))) {
1094                                while (($file = readdir($dh)) !== false) {
1095                                        if($file[0] == ".") continue;
1096                                        if(is_dir($dir_plugin_sub = $dir_plugin."/".$file) && ($dh_s = opendir($dir_plugin_sub))) {
1097                                                while (($file = readdir($dh_s)) !== false) {
1098                                                        if($file[0] == ".") continue;
1099                                                        if(preg_match('=\.('._PGL_SVN_LIRE_EXTENSIONS.')$=i', $file)) {
1100                                                                $script_files[] = $dir_plugin_sub."/".$file;
1101                                                        }
1102                                                }
1103                                                closedir($dh_s);
1104                                        }
1105                                        else if(preg_match('=\.('._PGL_SVN_LIRE_EXTENSIONS.')$=i', $file)) {
1106                                                $script_files[] = $dir_plugin."/".$file;
1107                                        }
1108                                }
1109                                closedir($dh);
1110                        }
1111                        foreach($script_files as $file) {
1112                                if(!$ii = spiplistes_svn_revision_read ($file)) {       continue; }
1113                                $result = max($ii, $result);
1114                        }
1115                }
1116                if(!empty($result) && (intval($result) > 0)) return($result);
1117        }
1118        return(false);
1119} // end spiplistes_current_svnrevision_get()
1120
1121/**
1122 * lire le fichier, en esperant trouver le mot cle svn dans les $buf_size premiers caracteres
1123 * @return le numero de revision svn
1124 * @param $filename
1125 * @param $buf_size
1126 */
1127function spiplistes_svn_revision_read ($filename, $buf_size = 2048) {
1128        if($fh = fopen($filename, "rb")) {
1129                $buf = fread($fh, $buf_size);
1130                fclose($fh);
1131                if($buf = strstr($buf, "$"."LastChanged"."Revision:")) {
1132                        $revision = preg_replace('=^\$LastChanged'.'Revision: ([0-9]+) \$.*$=s', '${1}', $buf, 1);
1133                        if(strval(intval($revision)) == $revision) { 
1134                                return($revision);
1135                        }
1136                }
1137        }
1138        return (false);
1139} // end spiplistes_svn_revision_read()
1140
1141/**
1142 * @return Renvoie ou affiche une boite d'alerte
1143 */
1144function spiplistes_boite_alerte ($message, $return = false) {
1145        $result = ""
1146                . debut_boite_alerte()
1147                .  http_img_pack("warning.gif", _T('info_avertissement'), 
1148                                 "style='width:48px;height:48px;float:right;margin:5px;'")
1149                . "<span class='message-alerte'>$message</span>\n"
1150                . fin_boite_alerte()
1151                . "\n<br />"
1152                ;
1153        if($return) return($result);
1154        else echo($result);
1155}
1156
1157 /**
1158  * Un petit bloc info sur le plugin
1159  * @param $prefix Object
1160  * @return string
1161  */
1162function spiplistes_boite_meta_info ($prefix) {
1163        include_spip('inc/meta');
1164        $result = false;
1165        if(!empty($prefix)) {
1166                $meta_info = spiplistes_get_meta_infos($prefix); // dir et version
1167                $info = spiplistes_plugin_get_infos($meta_info['dir']);
1168                $icon = 
1169                        (isset($info['icon']))
1170                        ? "<div "
1171                                . " style='width:64px;height:64px;"
1172                                        . "margin:0 auto 1em;"
1173                                        . "background: url(". _DIR_PLUGINS.$meta_info['dir']."/".trim($info['icon']).") no-repeat center center;overflow: hidden;'"
1174                                . " title='Logotype plugin $prefix'>"
1175                                . "</div>\n"
1176                        : ""
1177                        ;
1178                if(isset($info['etat']) && $info['etat']) {
1179                        if($info['etat'] == 'stable') {
1180                        // en version stable, ne sort plus les infos de debug
1181                                foreach(array('description','lien','auteur') as $key) {
1182                                        if(isset($info[$key]) && !isset($meta_info[$key])) {
1183                                                $meta_info[$key] = $info[$key];
1184                                        }
1185                                }
1186                                $result .= spiplistes_boite_meta_info_liste($meta_info, true) // nom, etat, dir, version, description, lien, auteur
1187                                        ;
1188                        }
1189                        else {
1190                        // un peu plus d'info en mode test et dev
1191                                $result .= 
1192                                        spiplistes_boite_meta_info_liste($meta_info, true) // nom, etat, dir, version
1193                                        . spiplistes_boite_meta_info_liste($info, ($info['etat']=='dev'))  // et tout ce qu'on a en magasin
1194                                        ;
1195                }
1196                }
1197                if(!empty($result)) {
1198                        $result = ""
1199                                . debut_cadre_relief('plugin-24.gif', true, '', _T($prefix.':'.$prefix))
1200                                . $icon
1201                                . $result
1202                                . fin_cadre_relief(true)
1203                                ;
1204                }
1205        }
1206        return($result);
1207} // spiplistes_boite_meta_info()
1208
1209/**
1210 * Petite boite info pour la page de configuration du plugin
1211 *
1212 * Apparait sur la gauche de la page. Affiche infos de configuration.
1213 * @param $array Object
1214 * @param $recursive Object[optional]
1215 * @global string $spip_lang_left
1216 * @return string
1217 */
1218function spiplistes_boite_meta_info_liste($array, $recursive = false) {
1219        global $spip_lang_left;
1220        $result = '';
1221        if(is_array($array)) {
1222               
1223                $eviter = array(
1224                        'version' // inutile. deja affiche' en bas de page
1225                        , 'version_base' // idem
1226                        , 'nom' // deja en titre de boite
1227                        , 'filemtime', 'icon', 'prefix' // sans interet
1228                       
1229                );
1230               
1231                foreach($array as $key => $value) { 
1232                        if(!in_array($key, $eviter)) {
1233                                $sub_result = '';
1234                                if(is_array($value)) {
1235                                        if($recursive) {
1236                                                $sub_result = spiplistes_boite_meta_info_liste($value);
1237                                        }
1238                                }
1239                                else {
1240                                        $sub_result = propre($value);
1241                                }
1242                                if(!empty($sub_result)) {
1243                                        $result .= "<li><span style='font-weight:bold;'>$key</span> : $sub_result</li>\n";
1244                                }
1245                        }
1246                }
1247                if(!empty($result)) {
1248                        $result = "<ul style='margin:0;padding:0 1ex;list-style: none;text-align: $spip_lang_left;' class='verdana2 meta-info-liste'>$result</ul>";
1249                }
1250        }
1251        return($result);
1252}
1253
1254/**
1255 * Petit bouton aide a placer a droite du titre de bloc
1256 * @param $fichier_exec_aide Object
1257 * @param $aide Object[optional]
1258 * @param $return Object[optional]
1259 * @return string|null
1260 */
1261function spiplistes_plugin_aide ($fichier_exec_aide, $aide='', $return=true) {
1262        include_spip('inc/minipres');
1263        include_spip('inc/aider');
1264        global $spip_lang
1265                , $spip_lang_rtl
1266                , $spip_display
1267                ;
1268        if (!$aide || $spip_display == 4) return;
1269       
1270        $t = _T('titre_image_aide');
1271        $result = ""
1272        . "\n&nbsp;&nbsp;<a class='aide'\nhref='"
1273        . generer_url_ecrire($fichier_exec_aide, "var_lang=$spip_lang")
1274        . (
1275                (!empty($aide)) 
1276                ? "#$aide" 
1277                : ""
1278                )
1279        . "'"
1280        . " onclick=\"javascript:window.open(this.href,'spip_aide', 'scrollbars=yes, resizable=yes, width=740, height=580'); return false;\">\n"
1281        . http_img_pack(
1282                "aide".aide_lang_dir($spip_lang,$spip_lang_rtl).".gif"
1283                , _T('info_image_aide')
1284                , " title=\"$t\" class='aide'"
1285                )
1286        . "</a>"
1287        ;
1288       
1289        if($return) return($result);
1290        else echo($result);
1291} // spiplistes_plugin_aide()
1292
1293/**
1294 * @param string $date 
1295 * @return string date, chaine html
1296 */
1297function spiplistes_affdate ($date) {
1298        $result = "";
1299        if($date) {
1300                $proch = round((strtotime($date) - time()) / _SPIPLISTES_TIME_1_DAY);
1301                $result =
1302                        (
1303                        ($proch > 1)
1304                        ? affdate_jourcourt($date)
1305                        : "<strong>"._T($proch ? 'date_demain' : 'date_aujourdhui')."</strong>"
1306                        )
1307                        . "<br />".heures_minutes($date)
1308                        ;
1309        }
1310        return($result);
1311}
1312
1313/**
1314 * icone()
1315 * @todo icone() devient quoi en SPIP 3 ?
1316 *  A corriger/adapter.
1317 */
1318function spiplistes_icone ($texte, $lien, $fond, $fonction='', $align='', $echo=false)
1319{
1320        $result = '';
1321       
1322        if (spiplistes_spip_est_inferieur_193())
1323        {
1324                include_spip('inc/presentation');
1325                $result = icone (
1326                        $texte
1327                        , $lien
1328                        , $fond
1329                        , $fonction
1330                        , $align
1331                        , $echo
1332                );
1333        }
1334        return ($result);
1335}
Note: See TracBrowser for help on using the repository browser.