source: spip-zone/_plugins_/_test_/spip-listes/spip-listes_1_9_3/exec/spiplistes_liste_gerer.php @ 24647

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

optimisation, concerne principalement le texte affiché en espace privé

  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 39.1 KB
Line 
1<?php
2
3// exec/spiplistes_liste_gerer.php
4// _SPIPLISTES_EXEC_LISTE_GERER
5
6/******************************************************************************************/
7/* SPIP-Listes est un systeme de gestion de listes d'abonnes et d'envoi d'information     */
8/* par email pour SPIP. http://bloog.net/spip-listes                                      */
9/* Copyright (C) 2004 Vincent CARON  v.caron<at>laposte.net                               */
10/*                                                                                        */
11/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
12/* de la Licence Publique Generale GNU publiee par la Free Software Foundation            */
13/* (version 2).                                                                           */
14/*                                                                                        */
15/* Ce programme est distribue car potentiellement utile, mais SANS AUCUNE GARANTIE,       */
16/* ni explicite ni implicite, y compris les garanties de commercialisation ou             */
17/* d'adaptation dans un but specifique. Reportez-vous a la Licence Publique Generale GNU  */
18/* pour plus de details.                                                                  */
19/*                                                                                        */
20/* Vous devez avoir recu une copie de la Licence Publique Generale GNU                    */
21/* en meme temps que ce programme ; si ce n'est pas le cas, ecrivez a la                  */
22/* Free Software Foundation,                                                              */
23/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, Etats-Unis.                   */
24/******************************************************************************************/
25// $LastChangedRevision: 24647 $
26// $LastChangedBy: paladin@quesaco.org $
27// $LastChangedDate: 2008-11-26 06:03:42 +0000 (Wed, 26 Nov 2008) $
28
29
30if (!defined("_ECRIRE_INC_VERSION")) return;
31
32include_spip('inc/spiplistes_api_globales');
33
34        // Precision sur la table spip_listes:
35        // 'date': date d'envoi souhaitee
36        // 'maj': date d'envoi du courrier mis a jour par cron.
37        // 'description': (pas utilise au 20071006)
38        // 'texte': description affichee dans formulaire abonnement
39       
40function exec_spiplistes_liste_gerer () {
41
42        include_spip('inc/autoriser');
43        include_spip('inc/mots');
44        include_spip('inc/lang');
45        include_spip('inc/editer_auteurs');
46        include_spip('base/spiplistes_tables');
47        include_spip('inc/spiplistes_api');
48        include_spip('inc/spiplistes_api_presentation');
49        include_spip('inc/spiplistes_dater_envoi');
50        include_spip('inc/spiplistes_naviguer_paniers');
51        include_spip('inc/spiplistes_listes_selectionner_auteur');
52       
53        global $meta
54                , $connect_statut
55                , $connect_toutes_rubriques
56                , $connect_id_auteur
57                , $spip_lang_left
58                , $spip_lang_right
59                , $couleur_claire
60                ;
61
62        // initialise les variables postees par le formulaire
63        foreach(array(
64                'new'   // nouvelle liste si 'oui'
65                , 'id_liste'// si modif dans l'editeur
66                , 'btn_liste_edit', 'titre', 'texte', 'pied_page' // renvoyes par l'editeur
67                , 'btn_modifier_diffusion', 'changer_lang', 'statut' // local
68                , 'btn_modifier_replyto', 'email_envoi' // local
69                , 'btn_modifier_courrier_auto', 'message_auto' // local
70                        , 'auto_chrono', 'auto_weekly', 'auto_mois'
71                        , 'titre_message', 'patron', 'periode', 'envoyer_maintenant'
72                        , 'jour', 'mois', 'annee', 'heure', 'minute'
73                , 'btn_patron_pied', 'btn_grand_patron' // boites gauches
74                , 'btn_valider_forcer_abos', 'forcer_abo', 'forcer_format_abo', 'forcer_format_reception'
75                , 'btn_supprimer_liste' //local
76                ) as $key) {
77                $$key = _request($key);
78        }
79        foreach(array('id_liste', 'periode') as $key) {
80                $$key = intval($$key);
81        }
82        foreach(array('titre', 'texte', 'pied_page') as $key) {
83                $$key = trim(corriger_caracteres($$key));
84        }
85        $lang = $changer_lang;
86
87        $cherche_auteur = _request('cherche_auteur');
88        $debut = _request('debut');
89
90
91        $envoyer_maintenant = ($envoyer_maintenant == 'oui');
92       
93        $boite_pour_confirmer_envoi_maintenant = 
94                $grosse_boite_moderateurs = 
95                $message_erreur =
96                $page_result = "";
97
98        if(!$id_liste) {
99        //////////////////////////////////////////////////////
100        // Creer une liste
101        ////
102                // admin lambda peut creer une liste
103                $flag_editable = ($connect_statut == "0minirezo");
104               
105                if ($btn_liste_edit && ($new=='oui')) {
106                       
107                        if ($titre == '') {
108                                $titre = _T('spiplistes:liste_sans_titre');
109                        }
110                       
111                        $pied_page = spiplistes_pied_de_page_liste(0, $GLOBALS['spip_lang']);
112                       
113                        $id_liste = spiplistes_listes_liste_creer(_SPIPLISTES_PRIVATE_LIST, $GLOBALS['spip_lang']
114                                , $titre, $texte, $pied_page);
115                } 
116                spiplistes_log("LISTE ID #$id_liste added by ID_AUTEUR #$connect_id_auteur");
117        }
118        else if($id_liste > 0) {
119        //////////////////////////////////////////////////////
120        // Modifier une liste
121        ////
122                // les admins toutes rubriques et le moderateur seuls peuvent modifier la liste
123                $flag_editable = autoriser('moderer', 'liste', $id_liste);
124
125                if($flag_editable) {
126               
127                        // Recupere les donnees de la liste courante pour optimiser l'update
128                        $sql_select = "statut,titre,date,lang";
129                        $sql_result = sql_select($sql_select, "spip_listes", "id_liste=".sql_quote($id_liste), "", "", "1");
130                        if($row = sql_fetch($sql_result)) {
131                                foreach(explode(",", $sql_select) as $key) {
132                                        $current_liste[$key] = $row[$key];
133                                }
134                        }
135                       
136                        ///////////////////////////////////
137                        // Les modifications (sql_upadteq)
138                        // A noter, ne pas preparer les valeurs par sql_quote()
139                        //  sql_upadteq() s'en occupe
140                       
141                        $sql_champs = array();
142
143                        // Retour de l'editeur ?
144                        if($btn_liste_edit) {
145                                $titre = corriger_caracteres($titre);
146                                $texte = corriger_caracteres($texte);
147                                if(empty($titre)) {
148                                        $titre = filtrer_entites(_T('spiplistes:Nouvelle_liste_de_diffusion'));
149                                }
150                                $sql_champs['titre'] = $titre;
151                                $sql_champs['texte'] = $texte;
152                        }
153                       
154                        // Modifier le grand patron ?
155                        if($btn_grand_patron && $patron) {
156                                $sql_champs['patron'] = $patron;
157                        }
158                       
159                        // Modifier patron de pied ?
160                        if($btn_patron_pied && $patron) {
161                                $pied_page = spiplistes_pied_page_html_get($patron);
162                                $sql_champs['pied_page'] = $pied_page;
163                        }
164                       
165                        // Modifier diffusion ?
166                        if($btn_modifier_diffusion) {
167                                // Modifier le statut ?
168                                if(in_array($statut, explode(";", _SPIPLISTES_LISTES_STATUTS_TOUS)) 
169                                        && ($statut!=$current_liste['statut'])
170                                ) {
171                                        $sql_champs['statut'] = $statut;
172                                        // si la liste passe en privee, retire les invites
173                                        if($statut == _SPIPLISTES_PRIVATE_LIST) {
174                                                $auteur_statut = '6forum';
175                                                spiplistes_abonnements_auteurs_supprimer($auteur_statut);
176                                                spiplistes_log("AUTEURS ($auteur_statut) REMOVED FROM LISTE #$id_liste ($statut) BY ID_AUTEUR #$connect_id_auteur");
177                                        }
178                                }
179                                // Modifier la langue ?
180                                if(!empty($lang) && ($lang!=$current_liste['lang'])) {
181                                        $sql_champs['lang'] = $lang;
182                                }
183                        }
184                       
185                        // Modifier l'adresse email de reponse ?
186                        if($btn_modifier_replyto && email_valide($email_envoi) && ($email_envoi!=$current_liste['email_envoi'])) {
187                                $sql_champs['email_envoi'] = $email_envoi;
188                        }
189
190                        ////////////////////////////////////
191                        // Modifier message_auto ?
192                        if($btn_modifier_courrier_auto) {
193                       
194                                $envoyer_quand = spiplistes_formate_date_form($annee, $mois, $jour, $heure, $minute);
195                       
196                                if(time() > strtotime($envoyer_quand)) {
197                                // envoi dans le passe est considere comme envoyer maintenant
198                                        $envoyer_maintenant = true;
199                                        $date_depuis = $envoyer_quand;
200                                        $envoyer_quand = false;
201                                }
202                               
203                                if($envoyer_maintenant && ($message_auto != 'non')) {
204                                        $boite_pour_confirmer_envoi_maintenant = ""
205                                                . debut_cadre_couleur('', true)
206                                                // formulaire de confirmation envoi
207                                                . spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTES_LISTE), true)
208                                                . "<p style='text-align:center;font-weight:bold;' class='verdana2'>"
209                                                . _T('spiplistes:boite_confirmez_envoi_liste')  . "</p>"
210                                                . "<input type='hidden' name='id_liste' value='$id_liste' />"
211                                                . spiplistes_form_bouton_valider('btn_confirmer_envoi_maintenant')
212                                                . spiplistes_form_fin(true)
213                                                . fin_cadre_couleur(true)
214                                                ;
215                                        $date_prevue = normaliser_date(time());
216                                }
217
218                                if($message_auto == 'oui') {
219                               
220                                        $sql_champs['message_auto'] = 'oui';
221                                        $sql_champs['titre_message'] = $titre_message;
222                                        $sql_champs['date'] = (!$envoyer_maintenant) ? $envoyer_quand : '';
223                                       
224                                        switch($auto_chrono) {
225                                                case 'auto_jour':
226                                                        $sql_champs['statut'] = _SPIPLISTES_DAILY_LIST;
227                                                        // force au minimum 1 jour
228                                                        $sql_champs['periode'] = (($periode > 0) ? $periode : 1);
229                                                        break;
230                                                case 'auto_hebdo':
231                                                        if($auto_weekly == 'oui') {
232                                                                // debut de semaine ?
233                                                                $sql_champs['statut'] = _SPIPLISTES_WEEKLY_LIST;
234                                                                // corrige la date pour le lundi de la semaine
235                                                                $time = strtotime($envoyer_quand);
236                                                                $time = mktime(0,0,0,date("m", $time),date("d", $time)-date("w", $time)+1,date("Y", $time));
237                                                        $envoyer_quand = date("Y-m-d H:i:s", $time);
238                                                                $sql_champs['date'] = $envoyer_quand;
239                                                        } else {
240                                                                $sql_champs['statut'] = _SPIPLISTES_HEBDO_LIST;
241                                                        }
242                                                        $sql_champs['periode'] = 0;
243                                                        break;
244                                                case 'auto_mensuel':
245                                                        if($auto_mois == 'oui') {
246                                                                // debut du mois ?
247                                                                $sql_champs['statut'] = _SPIPLISTES_MONTHLY_LIST;
248                                                                // corrige la date, 1' du mois
249                                                                $envoyer_quand = substr($envoyer_quand, 0, 8)."01 00:00:00";
250                                                                $sql_champs['date'] = $envoyer_quand;
251                                                        } else {
252                                                                $sql_champs['statut'] = _SPIPLISTES_MENSUEL_LIST;
253                                                        }
254                                                        $sql_champs['periode'] = 0;
255                                                        break;
256                                                case 'auto_an':
257                                                        $sql_champs['statut'] = _SPIPLISTES_YEARLY_LIST;
258                                                        $sql_champs['periode'] = 0;
259                                                        break;
260                                        }
261                                }
262                                else if($message_auto == 'non') {
263                                        $sql_champs['message_auto'] = 'non';
264                                        $sql_champs['date'] = '';
265                                        $sql_champs['periode'] = 0;
266                                }
267                        } // end if($btn_modifier_courrier_auto)
268                       
269                        // Enregistre les modifs pour cette liste
270                        if(count($sql_champs)) {
271                                sql_updateq("spip_listes", $sql_champs, "id_liste=".sql_quote($id_liste)." LIMIT 1");
272                        }
273                       
274                        // Forcer les abonnements
275                        if($btn_valider_forcer_abos && $forcer_abo && in_array($forcer_abo, array('tous', 'auteurs', '6forum', 'aucun'))) {
276                               
277                                $forcer_format_reception = 
278                                        (($forcer_format_abo == 'oui') && in_array($forcer_format_reception, explode(';', _SPIPLISTES_FORMATS_ALLOWED)))
279                                        ? $forcer_format_reception
280                                        : false
281                                        ;
282                                include_spip("inc/spiplistes_listes_forcer_abonnement");
283                                if(spiplistes_listes_forcer_abonnement ($id_liste, $forcer_abo, $forcer_format_reception) ===  false) {
284                                        $message_erreur .= spiplistes_boite_alerte(_T('spiplistes:Forcer_abonnement_erreur'), true);
285                                }
286                        }
287                       
288                } // end if($flag_editable)
289        }
290
291        //////////////////////////////////////////////////////
292        // Recharge les donnees la liste
293
294        $sql_select_array = array('id_liste', 'titre', 'texte'
295                        , 'titre_message', 'pied_page', 'date', 'statut', 'maj'
296                        , 'email_envoi', 'message_auto', 'periode', 'patron', 'lang');
297
298        if($row = spiplistes_listes_liste_fetsel($id_liste, $sql_select_array)) {
299                foreach($sql_select_array as $key) {
300                        // initialise les variables du resultat SQL
301                        $$key = $row[$key];
302                }
303        }
304
305        // les supers-admins et le moderateur seuls peuvent modifier la liste
306        $flag_editable = autoriser('moderer', 'liste', $id_liste);
307
308        $titre_message = ($titre_message=='') ? $titre._T('spiplistes:_de_').$meta['nom_site'] : $titre_message;
309
310        $nb_abonnes = spiplistes_listes_nb_abonnes_compter($id_liste);
311
312        // preparation des boutons
313        if($flag_editable) {
314                // Propose de modifier la liste
315                $gros_bouton_modifier = 
316                        icone (
317                                _T('spiplistes:Modifier_cette_liste') // legende bouton
318                                , generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_EDIT,'id_liste='.$id_liste) // lien
319                                , _DIR_PLUGIN_SPIPLISTES_IMG_PACK."reply-to-all-24.gif" // image du fond
320                                , "edit.gif" // image de la fonction. Ici, le crayon
321                                , '' // alignement
322                                , false // pas echo, demande retour
323                                )
324                        ;
325                // Propose de supprimer la liste
326                $gros_bouton_supprimer = 
327                        icone (
328                                        _T('spiplistes:Supprimer_cette_liste')
329                                        , generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER, "btn_supprimer_liste=$id_liste&id_liste=$id_liste")
330                                        , _DIR_PLUGIN_SPIPLISTES_IMG_PACK.'poubelle_msg.gif'
331                                        , ""
332                                        , "right"
333                                        , false
334                                        )
335                        ;
336                       
337                // la grosse boite des abonnes
338                $tri = _request('tri') ? _request('tri') : 'nom';
339                $boite_liste_abonnes = spiplistes_listes_boite_abonnements(
340                        $id_liste, $statut, $tri, $debut, _SPIPLISTES_EXEC_LISTE_GERER
341                        );
342                $titre_boite = _T('spiplistes:abos_cette_liste');
343                $nb = spiplistes_listes_nb_abonnes_compter($id_liste);
344                $legend = _T('spiplistes:nbre_abonnes').$nb;
345                $legend = "<small id='legend-abos1'>".spiplistes_nb_abonnes_liste_str_get($id_liste)."</small>";
346                $grosse_boite_abonnements = ""
347                        . "<!-- boite abonnes/elligibles -->\n"
348                        . debut_cadre_enfonce("auteur-24.gif", true, "", $titre_boite)
349                        . spiplistes_bouton_block_depliable($legend
350                                , false, md5('abonnes_liste'))
351                        . (spiplistes_spip_est_inferieur_193() ? $legend : "")
352                        . spiplistes_debut_block_invisible(md5('abonnes_liste'))
353                        . debut_cadre_relief('', true)
354                        . $boite_liste_abonnes
355                        . fin_cadre_relief(true)
356                        . fin_block()
357                        . fin_cadre_enfonce(true)
358                        . "<!-- fin boite abonnes/elligibles -->\n"
359                        ;
360
361                // la grosse boite des moderateurs
362                $boite_liste_moderateurs = spiplistes_listes_boite_moderateurs(
363                        $id_liste, _SPIPLISTES_EXEC_LISTE_GERER, 'mods-conteneur'
364                        );
365                $titre_boite = _T('spiplistes:mods_cette_liste');
366                $nb = spiplistes_mod_listes_compter($id_liste);
367                $legend = _T('spiplistes:nbre_mods').$nb;
368                $legend = "<small>".spiplistes_nb_moderateurs_liste_str_get($nb)."</small>";
369                $grosse_boite_moderateurs = ""
370                        . "<!-- boite moderateurs -->\n"
371                        . debut_cadre_enfonce("redacteurs-24.gif", true, "", $titre_boite)
372                        . spiplistes_bouton_block_depliable($legend
373                                , false, md5('mods_liste'))
374                        . (spiplistes_spip_est_inferieur_193() ? $legend : "")
375                        . spiplistes_debut_block_invisible(md5('mods_liste'))
376                        . debut_cadre_relief('', true)
377                        . "<div id='mods-conteneur'>\n"
378                        . $boite_liste_moderateurs
379                        . "</div>\n"
380                        . fin_cadre_relief(true)
381                        . fin_block()
382                        . fin_cadre_enfonce(true)
383                        . "<!-- fin boite moderateurs -->\n"
384                        ;
385
386        }
387        else {
388                $gros_bouton_modifier = $gros_bouton_supprimer = $grosse_boite_abonnements = "";
389        }
390
391////////////////////////////////////
392// PAGE CONTENU
393////////////////////////////////////
394
395        // bloc jQuery pour interactivite du formulaire
396        $page_result .= "
397<script type='text/javascript'>
398//<![CDATA[
399        jQuery(document).ready(function() {
400                var alerter_modif_statut = false;
401                $('#change_statut').change(function() {
402                        switch($(this).val()) {
403                                case '"._SPIPLISTES_PRIVATE_LIST."':
404                                        if(!alerter_modif_statut) {
405                                                alert('".spiplistes_texte_html_2_iso(_T('spiplistes:Attention_action_retire_invites'), $GLOBALS['meta']['charset'], true)."');
406                                                alerter_modif_statut=true;
407                                        }
408                                        $('#img_statut').attr('src','".spiplistes_items_get_item("puce", _SPIPLISTES_PRIVATE_LIST)."');
409                                        break;
410                                case '"._SPIPLISTES_PUBLIC_LIST."':
411                                        $('#img_statut').attr('src','".spiplistes_items_get_item("puce", _SPIPLISTES_PUBLIC_LIST)."');
412                                        break;
413                                case '"._SPIPLISTES_TRASH_LIST."':
414                                        $('#img_statut').attr('src','".spiplistes_items_get_item("puce", _SPIPLISTES_TRASH_LIST)."');
415                                        break;
416                        }
417                });
418                // interactivite bloc planification
419                $('#auto_oui').change(function(){
420                        $('#auto_oui_detail').toggle();
421                });
422                $('#auto_non').change(function(){
423                        $('#auto_oui_detail').toggle();
424                });
425                $('input[@name=auto_chrono]').change(function(){
426                        $('#auto_weekly').attr('checked',false);
427                        $('#auto_mois').attr('checked',false);
428                });
429                $('input[@name=periode]').focus(function(){
430                        $('#auto_weekly').attr('checked',false);
431                        $('#auto_mois').attr('checked',false);
432                        $('input[@name=auto_chrono][@value=auto_jour]').attr('checked','checked');
433                });
434                $('#auto_weekly').change(function(){
435                        $('input[@name=periode]').val('0');
436                        $('#auto_mois').attr('checked',false);
437                        $('input[@name=auto_chrono][@value=auto_hebdo]').attr('checked','checked');
438                });
439                $('#auto_mois').change(function(){
440                        $('input[@name=periode]').val('0');
441                        $('#auto_weekly').attr('checked',false);
442                        $('input[@name=auto_chrono][@value=auto_mensuel]').attr('checked','checked');
443                });
444                /*
445                * forcer le format de reception ?
446                */
447                $('input[@name=forcer_abo]').click( function() {
448                        if($(this).val() == 'aucun') {
449                                $('#forcer_format').hide();
450                        }
451                        else {
452                                $('#forcer_format').show();
453                        }
454                });
455                $('input[@name=forcer_format_reception]').click( function() {
456                        $('#forcer_format_abo').attr('checked','checked');
457                });
458                // sparadra !
459                // fait disparaitre la legende si deplie'
460                var sparadra;
461                $('#triangle1').click( function() {
462                        if(!sparadra) {
463                                $('#legend-abos1').html('');
464                                sparadra = true;
465                        }
466                        else {
467                                $('#legend-abos1').html($('#legend-abos1-propre').html());
468                                sparadra = false;
469                        }
470                });
471        });
472//]]>
473</script>
474                "
475                ;
476        // fin bloc jQuery
477               
478        $titre_page = _T('spiplistes:gestion_dune_liste');
479        // Permet entre autres d'ajouter les classes a la page : <body class='$rubrique $sous_rubrique'>
480        $rubrique = _SPIPLISTES_PREFIX;
481        $sous_rubrique = "liste_gerer";
482
483        $commencer_page = charger_fonction('commencer_page', 'inc');
484        echo($commencer_page(_T('spiplistes:spip_listes') . " - " . $titre_page, $rubrique, $sous_rubrique));
485
486        // la gestion des listes de courriers est reservee aux admins
487        if($connect_statut != "0minirezo") {
488                die (spiplistes_terminer_page_non_autorisee() . fin_page());
489        }
490
491        $page_result .= ""
492                . "<br /><br />\n"
493                . spiplistes_gros_titre($titre_page, '', true)
494                . spiplistes_onglets(_SPIPLISTES_RUBRIQUE, $sous_rubrique)
495                . debut_gauche($rubrique, true)
496                . spiplistes_boite_info_id(_T('spiplistes:liste_numero'), $id_liste, true)
497                . spiplistes_naviguer_paniers_listes(_T('spiplistes:aller_aux_listes_'), true)
498                . spiplistes_boite_patron($flag_editable, $id_liste, _SPIPLISTES_EXEC_LISTE_GERER, 'btn_grand_patron'
499                        , _SPIPLISTES_PATRONS_DIR, _T('spiplistes:Patron_grand_')
500                        , ($patron ? $patron : "")
501                        , $patron, true)
502                . spiplistes_boite_patron($flag_editable, $id_liste, _SPIPLISTES_EXEC_LISTE_GERER, 'btn_patron_pied'
503                        , _SPIPLISTES_PATRONS_PIED_DIR, _T('spiplistes:Patron_de_pied_')
504                        , (($ii = strlen($pied_page)) ? _T('taille_octets',array('taille'=>$ii)) : "")
505                        , ($ii==0), true)
506                . creer_colonne_droite($rubrique, true)
507                . spiplistes_boite_raccourcis(true)
508                . spiplistes_boite_autocron()
509                . spiplistes_boite_info_spiplistes(true)
510                . debut_droite($rubrique, true)
511                . $message_erreur
512                ;
513
514        changer_typo('','liste'.$id_liste);
515
516        // message alerte et demande de confirmation si supprimer liste
517        if(($btn_supprimer_liste > 0) && ($btn_supprimer_liste == $id_liste)) {
518                $page_result .= ""
519                        . spiplistes_boite_alerte (_T('spiplistes:Attention_suppression_liste')."<br />"._T('spiplistes:Confirmez_requete'), true)
520                        . "<form name='form_suppr_liste' id='form_suppr_liste' method='post' action='".generer_url_ecrire(_SPIPLISTES_EXEC_LISTES_LISTE, "")."'>\n"
521                        . "<div class='verdana2' style='text-align:right;'>\n"
522                        . "<input type='hidden' name='id_liste' value='$id_liste' />\n"
523                . "<label>"._T('spiplistes:Confirmer_la_suppression_de_la_liste')."# $id_liste : \n"
524                . "<input class='fondo' type='submit' name='btn_supprimer_liste_confirme' value='"._T('bouton_valider')."' /></label>\n"
525                        . "</div>\n"
526                        . "</form>\n"
527                        . "<br />\n"
528                ;
529        }
530
531        $page_result .= ""
532                . debut_cadre_relief("", true)
533                . "\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>\n"
534                . "<tr><td valign='top'>\n"
535                . spiplistes_gros_titre(spiplistes_bullet_titre_liste('puce', $statut, '', true)." ".$titre, '', true)
536                . "</td>"
537                . "<td rowspan='2'>"
538                // le gros bouton modifier si besoin
539                . $gros_bouton_modifier
540                . "</td></tr>\n"
541                . "<tr><td width='100%'>\n"
542                . "<div align='$spip_lang_left' style='padding: 5px; border: 1px dashed #aaa; ' class='verdana1 spip_small'>\n"
543                . propre($texte."~")
544                . "</div>\n"
545                . "</td>\n"
546                . "</tr></table>\n"
547                ;
548
549       
550        //////////////////////////////////////////////////////
551        // Modifier le statut de la liste
552        $email_defaut = entites_html($meta['email_webmaster']);
553        $email_envoi = (email_valide($email_envoi)) ? $email_envoi : $email_defaut ;
554
555        $page_result .= ""
556                //. debut_cadre_relief("racine-site-24.gif", true)
557                . debut_cadre_relief("racine-site-24.gif", true, '', _T('spiplistes:Diffusion').spiplistes_plugin_aide(_SPIPLISTES_EXEC_AIDE, "diffusion"))
558                //
559                ////////////////////////////
560                // Formulaire diffusion
561                .       (
562                        ($flag_editable)
563                        ? ""
564                                . spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste"), true)
565                                . "<input type='hidden' name='exec' value='listes' />\n"
566                                . "<input type='hidden' name='id_liste' value='$id_liste' />\n"
567                        : ""
568                        )
569                . "<span class='verdana2'>". _T('spiplistes:Cette_liste_est')." : "
570                .       spiplistes_bullet_titre_liste('puce', $statut, 'img_statut', true)."</span>\n"
571                .       (
572                        ($flag_editable)
573                        ? ""
574                                . "<select class='verdana2 fondl' name='statut' size='1' id='change_statut'>\n"
575                                . "<option" . mySel(_SPIPLISTES_PRIVATE_LIST, $statut) ." style='background-color: white'>"._T('spiplistes:statut_interne')."</option>\n"
576                                . "<option" . mySel(_SPIPLISTES_PUBLIC_LIST, $statut) . " style='background-color: #B4E8C5'>"._T('spiplistes:statut_publique')."</option>\n"
577                                . "<option" . mySel(_SPIPLISTES_TRASH_LIST, $statut) . " style='background:url("._DIR_IMG_PACK."rayures-sup.gif)'>"._T('texte_statut_poubelle')."</option>\n"
578                                . "</select>\n"
579                        : "<span class='verdana2' style='font-weight:bold;'>".spiplistes_items_get_item("alt", $statut)."</span>\n"
580                        )
581                . "<div style='margin:10px 0px;'>\n"
582                .       (
583                        ($flag_editable)
584                        ? ""
585                                . "<label class='verdana2' for='changer_lang'>"._T('info_multi_herit')." : </label>\n"
586                                . "<select name='changer_lang'  class='fondl' id='changer_lang'>\n"
587                                . liste_options_langues('changer_lang', $lang , _T('spiplistes:langue'),'', '')
588                                . "</select>\n"
589                        : ""
590                                . "<span class='verdana2'>". _T('info_multi_herit')." : "
591                                . "<span class='verdana2' style='font-weight:bold;'>".traduire_nom_langue($lang)."</span>\n"
592                        )
593                . "</div>\n"
594                .       (
595                                ($flag_editable)
596                                ? spiplistes_form_bouton_valider('btn_modifier_diffusion')
597                                        . spiplistes_form_fin(true)
598                                : ""
599                        )
600                . fin_cadre_relief(true)
601                ;
602               
603                ////////////////////////////
604                // Formulaire adresse email pour le reply-to
605        $page_result .= ""
606                . debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."reply_to-24.png", true, '', _T('spiplistes:adresse_de_reponse').spiplistes_plugin_aide(_SPIPLISTES_EXEC_AIDE, "replyto"))
607                . spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste"), true)
608                . "<p class='verdana2'>\n"
609                . _T('spiplistes:adresse_mail_retour').":<br />\n"
610                .       (
611                        ($flag_editable)
612                        ?       ""
613                                . ""._T('spiplistes:adresse')."</p>\n"
614                                . "<div style='text-align:center'>\n"
615                                . "<input type='text' name='email_envoi' value=\"".$email_envoi."\" size='40' class='fondl' /></div>\n"
616                                . spiplistes_form_bouton_valider('btn_modifier_replyto')
617                        : "</p><p style='font-weight:bold;text-align:center;'>$email_envoi</p>\n"
618                        )
619                . spiplistes_form_fin(true)
620                . fin_cadre_relief(true)
621                ;
622               
623                ////////////////////////////
624                // Formulaire planifier un courrier automatique
625        $page_result .= ""
626                . "<a name='form-programmer' id='form-programmer'></a>\n"
627                . debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."stock_timer.png", true, '', _T('spiplistes:messages_auto')
628                        . spiplistes_plugin_aide(_SPIPLISTES_EXEC_AIDE, "temporiser"))
629                ;
630        if(empty($patron)) {
631                $page_result .= spiplistes_boite_alerte(_T('spiplistes:patron_manquant_message'), true);
632        }
633        $page_result .= ""
634                . $boite_pour_confirmer_envoi_maintenant
635                . spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste")."#form-programmer", true)
636                . "<table border='0' cellspacing='1' cellpadding='3' width='100%'>\n"
637                . "<tr><td align='$spip_lang_left' class='verdana2'>\n"
638                ;
639        if ($message_auto != "oui") {
640                $page_result .= "<div class='verdana2'>"._T('spiplistes:pas_denvoi_auto_programme')."</div>\n";
641        }
642        else {
643                $page_result .= ""
644                        // petite ligne d'info si envoi programme
645                        . "<p class='verdana2'>"._T('spiplistes:sujet_courrier_auto')."<br />\n"
646                        . "<span class='spip_large'> ".$titre_message."</span></p>\n"
647                        . "<p class='verdana2'>"
648                        . spiplistes_items_get_item('alt', $statut)
649                        .       (       
650                                        ($statut == _SPIPLISTES_MONTHLY_LIST)
651                                        ?       "<strong>" . _T('spiplistes:Liste_diffusee_le_premier_de_chaque_mois') . "</strong><br />"
652                                        :       ""
653                                )
654                        .       (
655                                        ($periode > 0)
656                                        ? _T('spiplistes:Periodicite_:')._T('spiplistes:Tous_les')."  <strong>".$periode."</strong>  " 
657                                                . spiplistes_singulier_pluriel_str_get($periode, _T('spiplistes:jour'), _T('spiplistes:jours'), false)
658                                        : ""
659                                )
660                        .       (
661                                        (!in_array($statut, explode(";", _SPIPLISTES_LISTES_STATUTS_PERIODIQUES)))
662                                        ? " <strong>"._T('spiplistes:Pas_de_periodicite')."</strong><br />"
663                                                ._T('spiplistes:Ce_courrier_ne_sera_envoye_qu_une_fois')
664                                        : ""
665                                )
666                        .       "<br />"
667                        .       (
668                                (intval($maj))
669                                ? _T('spiplistes:Dernier_envoi_le_:') . " <strong>" . affdate_heure($maj) . "</strong>"
670                                        .       (
671                                                ($last =  round((time() - strtotime($maj)) / _SPIPLISTES_TIME_1_DAY))
672                                                        ? " (".spiplistes_singulier_pluriel_str_get($last, _T('spiplistes:jour'), _T('spiplistes:jours')).")"
673                                                        : ""
674                                        ). "<br />"
675                                : ""
676                                )
677                        .       (
678                                ($date_prevue || (intval($date) && (time() < strtotime($date))))
679                                ? _T('spiplistes:prochain_envoi_prevu')." : <strong>" . affdate_heure($date_prevue ? $date_prevue : $date) . "</strong>"
680                                        .       (
681                                                (!$date_prevue && ($next = round((strtotime($date) - time()) / _SPIPLISTES_TIME_1_DAY)))
682                                                        ? " (".spiplistes_singulier_pluriel_str_get($next, _T('spiplistes:jour'), _T('spiplistes:jours')).")"
683                                                        : ""
684                                                )
685                                : ""
686                                )
687                        . "</p>\n"
688                        ;
689                if($btn_modifier_courrier_auto) {
690                        $page_result .= ""
691                                . "<p class='verdana2'>"._T('spiplistes:date_act')."<br />"
692                                . _T('spiplistes:env_esquel')." <em>".$patron."</em>"
693                                . "</p>\n"
694                                ;
695                }
696        }
697        $date_debut_envoi = (!empty($date_prevue) ? $date_prevue : (($date && intval($date)) ? $date : normaliser_date(time())));
698
699        $page_result .= ""
700                . "</td>\n"
701                . "</tr>\n"
702                ;
703        if($flag_editable) {
704                $page_result .= ""
705                        . "<tr><td align='$spip_lang_left' class='verdana2'>"
706                        . "<input type='radio' name='message_auto' value='oui' id='auto_oui' "
707                                . (empty($patron) ? " disabled='disabled' " : "")
708                                . ($auto_checked = ($message_auto=='oui' ? "checked='checked'" : ""))
709                                . " />"
710                        . "<label for='auto_oui' ".($auto_checked ? "style='font-weight:bold;'" : "").">"
711                                . _T('spiplistes:prog_env')."</label>\n"
712                        . "<div id='auto_oui_detail' "
713                                .((empty($patron) || !$auto_checked) ? "style='display:none;'" : "")
714                                .">"
715                        . "<ul style='list-style-type:none;'>\n"
716                        . "<li>"._T('spiplistes:message_sujet')
717                        . ': <input type="text" name="titre_message" value="'.$titre_message.'" size="50" class="fondl" /> </li>'."\n"
718                        ;
719                        //
720                        // chrono jour
721                        $ii = ($periode > 0) ? $periode : 1;
722                $page_result .= ""
723                        . "<li style='margin-top:0.5em'>"
724                                . spiplistes_form_input_radio ('auto_chrono', 'auto_jour'
725                                        , ''
726                                        , ($statut == _SPIPLISTES_DAILY_LIST)
727                                        , true, false
728                                        )
729                                . _T('spiplistes:Tous_les')
730                                . " <input type='text' name='periode' value='".$ii."' size='4' maxlength='4' class='fondl' /> "
731                                . _T('info_jours')
732                                . "</li>\n"
733                        // chrono hebdo
734                        . "<li>"
735                                . spiplistes_form_input_radio ('auto_chrono', 'auto_hebdo'
736                                        , _T('spiplistes:Toutes_les_semaines')
737                                        , (($statut == _SPIPLISTES_HEBDO_LIST) || ($statut == _SPIPLISTES_WEEKLY_LIST))
738                                        , true, false)
739                                . spiplistes_form_input_checkbox('auto_weekly', 'oui'
740                                        , _T('spiplistes:en_debut_de_semaine'), ($statut == _SPIPLISTES_WEEKLY_LIST), true, false)
741                                . "</li>\n"
742                        // chrono mois
743                        . "<li>"
744                                . spiplistes_form_input_radio ('auto_chrono', 'auto_mensuel'
745                                        , _T('spiplistes:Tous_les_mois')
746                                        , (($statut == _SPIPLISTES_MENSUEL_LIST) || ($statut == _SPIPLISTES_MONTHLY_LIST))
747                                        , true, false)
748                                . spiplistes_form_input_checkbox('auto_mois', 'oui'
749                                        , _T('spiplistes:en_debut_de_mois'), ($statut == _SPIPLISTES_MONTHLY_LIST), true, false)
750                                . "</li>\n"
751                        // chrono annee
752                        . "<li>"
753                                . spiplistes_form_input_radio ('auto_chrono', 'auto_an'
754                                        , _T('spiplistes:Tous_les_ans')
755                                        , ($statut == _SPIPLISTES_YEARLY_LIST)
756                                        , true, false)
757                                . "</li>\n"
758                        . "<li style='margin-top:0.5em'>"._T('spiplistes:A_partir_de')." : <br />\n"
759                        //
760                        . spiplistes_dater_envoi(
761                                'liste', $id_liste, $statut
762                                , $flag_editable
763                                , _T('spiplistes:date_expedition_')
764                                , $date_debut_envoi, 'btn_changer_date'
765                                , false
766                                )
767                        . "</li>\n"
768                        .       (
769                                (!$envoyer_maintenant)
770                                ? " <li>"
771                                        . spiplistes_form_input_checkbox('envoyer_maintenant', 'oui'
772                                                , _T('spiplistes:env_maint'), false, true)
773                                        . "</li>\n"
774                                : ""
775                                )
776                        . "</ul></div>\n"
777                        ;
778                $checked = ($message_auto=='non') ? "checked='checked'" : "";
779                $class = $checked ? "class='bold'" : "";
780                $disabled = (empty($patron) ? " disabled='disabled' " : "");
781                $page_result .= ""
782                        . "<br /><input type='radio' name='message_auto' value='non' id='auto_non' $disabled $checked />"
783                        . "<span $class >"
784                        . " <label for='auto_non'>"._T('spiplistes:prog_env_non')."</label> "
785                        . "</span>\n"
786                        . "</td></tr>\n"
787                        ;
788
789                $page_result .= ""
790                        . "<tr><td style='text-align:$spip_lang_right;'>"
791                        .       (
792                                ($id_liste)
793                                ? "<input type='hidden' name='id_liste' value='$id_liste' />"
794                                : ""
795                                )
796                        .       (
797                                ($new)
798                                ? "<input type='hidden' name='new' value='$new' />"
799                                : ""
800                                )
801                        // bouton de validation
802                        . (!empty($patron) 
803                                ? spiplistes_form_bouton_valider('btn_modifier_courrier_auto', _T('bouton_valider'), true)
804                                : "")
805                        . "</td></tr>"
806                        ;
807        }
808        $page_result .= ""
809                . "</table>\n"
810                . spiplistes_form_fin(true)
811                . fin_cadre_relief(true)
812                ;
813                // fin formulaire planifier
814               
815        $page_result .= ""
816                . fin_cadre_relief(true)
817                . $grosse_boite_abonnements
818                . $grosse_boite_moderateurs
819                ;
820       
821        // le super-admin peut abonner en masse
822        if($connect_toutes_rubriques) {
823                $page_result .= ""
824                        . "\n<!-- forcer abo -->\n"
825                        . debut_cadre_enfonce(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."abonner-24.png", true, '', _T('spiplistes:forcer_les_abonnement_liste').spiplistes_plugin_aide("forcerliste"))."\n"
826                        . "<p class='verdana2'>\n"
827                        . _T('spiplistes:forcer_abonnement_desc')
828                        . "</p>\n"
829                        . "<p class='verdana2' style='margin-bottom:1em'><em>"
830                        . _T('spiplistes:forcer_abonnement_aide', array('lien_retour' => generer_url_ecrire(_SPIPLISTES_EXEC_ABONNES_LISTE)))
831                        . "</em></p>\n"
832                        . "<form action='".generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste#auteurs")."' id='form_forcer_abo' name='form_forcer_abo' method='post'>\n"
833                        . debut_cadre_relief("", true)."\n"
834                        //
835                        //////////////////////////
836                        // propose de forcer les membres sauf invites si la liste est privee
837                        .       (
838                                        ($statut==_SPIPLISTES_PRIVATE_LIST)
839                                        ? "<div class='verdana2'><input type='radio' name='forcer_abo' value='auteurs' id='forcer_abo_tous' />\n"
840                                                . "<label for='forcer_abo_tous'>"._T('spiplistes:Abonner_tous_les_inscrits_prives')."</label>"
841                                                . "</div>\n"
842                                                . spiplistes_boutons_forcer_format('forcer_format', _T('spiplistes:forcer_abonnements_nouveaux'))
843                                        : ""
844                                )
845                        //
846                        // propose de forcer les invites si la liste est publique ou periodique
847                        .       (
848                                        (($statut!=_SPIPLISTES_PRIVATE_LIST) && ($statut!=_SPIPLISTES_TRASH_LIST))
849                                        ? "<div class='verdana2'><input type='radio' name='forcer_abo' value='6forum' id='forcer_abo_6forum' />\n"
850                                                . "<label for='forcer_abo_6forum'>"._T('spiplistes:Abonner_tous_les_invites_public')."</label></div>\n"
851                                                . spiplistes_boutons_forcer_format('forcer_format', _T('spiplistes:forcer_abonnements_nouveaux'))
852                                        : ""
853                                )
854                        . (
855                                ($nb_abonnes)
856                                ? "<hr />\n"
857                                        . "<div class='verdana2'><input type='radio' name='forcer_abo' value='aucun' id='forcer_desabo' />\n"
858                                        . "<label for='forcer_desabo'>"._T('spiplistes:Forcer_desabonner_tous_les_inscrits')."</label></div>\n"
859                                : ""
860                                )
861                        . fin_cadre_relief(true)."\n"
862                        . "<div style='text-align:right;'><input type='submit' name='btn_valider_forcer_abos' value='"._T('bouton_valider')."' class='fondo' /></div>\n"
863                        . "</form>\n"
864                        . fin_cadre_enfonce (true)."\n"
865                ;
866        }
867        //
868        $page_result .= ""
869                . $gros_bouton_supprimer
870                ;
871       
872        echo($page_result);
873
874        echo spiplistes_html_signature(_SPIPLISTES_PREFIX), fin_gauche(), fin_page();
875
876} // end exec_spiplistes_liste_gerer()
877
878
879/*
880        donne contenu pied_page au format html (CP-20071014)
881        lien_patron: nom du tampon (fichier, sans extension)
882*/
883function spiplistes_pied_page_html_get ($pied_patron, $lang = "") {
884        if(empty($lang)) $lang = $GLOBALS['spip_lang'];
885        $contexte_patron = array('lang'=>$lang);
886        include_spip('public/assembler');
887        $result = recuperer_fond(_SPIPLISTES_PATRONS_PIED_DIR.$pied_patron, $contexte_patron);
888        return($result);
889} // end spiplistes_pied_page_html_get()
890
891/*
892 * Boite de confirmation pour forcer le format de reception
893 * @return
894 * @param $id_bloc Object
895 * @param $message Object[optional]
896 */
897function spiplistes_boutons_forcer_format ($id_bloc, $message = '') {
898        if(!empty($message)) {
899                $message = "<div>$message</div>\n";
900        }
901        return(
902                "<div id='$id_bloc' class='verdana2' style='margin-left:2ex; display:none'>"
903                . $message
904                . "<label>"
905                . "<input type='checkbox' name='forcer_format_abo' id='forcer_format_abo' value='oui' />"
906                . _T('spiplistes:forcer_les_abonnements_au_format_')
907                . "</label>\n"
908                . "<label>"
909                . "<input type='radio' name='forcer_format_reception' value='html' checked='checked' />" . _T('spiplistes:html')
910                . "</label>\n"
911                . "<label>"
912                . "<input type='radio' name='forcer_format_reception' value='texte' />" . _T('spiplistes:texte')
913                . "</label>\n"
914                . "</div>\n"
915        );
916}
917
918/*
919 * mmmm.. (CP-20081115) semble bien lourd pour juste une boite d'alerte.
920 *
921 * @return une chaine traduite de HTML en ISO
922 * @param $string Object
923 * @param $charset Object
924 * @param $unspace Object[optional]
925 */
926function spiplistes_texte_html_2_iso($string, $charset, $unspace = false) {
927        $charset = strtoupper($charset);
928        // html_entity_decode a qq soucis avec UTF-8
929        if($charset=="UTF-8" && (phpversion()<5)) {
930                $string = spiplistes_html_entity_decode_utf8($string);
931        }
932        else {
933                $string = html_entity_decode($string, ENT_QUOTES, $charset);
934        }
935        if($unspace) {
936                // renvoie sans \r ou \n pour les boites d'alerte javascript
937                $string = preg_replace("/([[:space:]])+/", " ", $string);
938        }
939        return ($string);
940}
941
942// http://fr.php.net/html_entity_decode
943        // thank to: laurynas dot butkus at gmail dot com
944function spiplistes_html_entity_decode_utf8($string)
945{
946         static $trans_tbl;
947       
948         // replace numeric entities
949         $string = preg_replace('~&#x([0-9a-f]+);~ei', 'spiplistes_code2utf(hexdec("\\1"))', $string);
950         $string = preg_replace('~&#([0-9]+);~e', 'spiplistes_code2utf(\\1)', $string);
951
952         // replace literal entities
953         if (!isset($trans_tbl))
954         {
955                  $trans_tbl = array();
956                 
957                  foreach (get_html_translation_table(HTML_ENTITIES) as $val=>$key)
958                                $trans_tbl[$key] = utf8_encode($val);
959         }
960       
961         return strtr($string, $trans_tbl);
962} // spiplistes_html_entity_decode_utf8()
963
964// Returns the utf string corresponding to the unicode value (from php.net, courtesy - romans@void.lv)
965// thank to: akniep at rayo dot info
966function spiplistes_code2utf($number)  {
967        static $windows_illegals_chars;
968        if($windows_illegals_chars === null) {
969                $windows_illegals_chars = array(
970                        128 => 8364
971            , 129 => 160 // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
972            , 130 => 8218
973            , 131 => 402
974            , 132 => 8222
975            , 133 => 8230
976            , 134 => 8224
977            , 135 => 8225
978            , 136 => 710
979            , 137 => 8240
980            , 138 => 352
981            , 139 => 8249
982            , 140 => 338
983            , 141 => 160 // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
984            , 142 => 381
985            , 143 => 160 // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
986            , 144 => 160 // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
987            , 145 => 8216
988            , 146 => 8217
989            , 147 => 8220
990            , 148 => 8221
991            , 149 => 8226
992            , 150 => 8211
993            , 151 => 8212
994            , 152 => 732
995            , 153 => 8482
996            , 154 => 353
997            , 155 => 8250
998            , 156 => 339
999            , 157 => 160 // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
1000            , 158 => 382
1001            , 159 => 376
1002                );
1003        }
1004       
1005    if ($number < 0)
1006        return FALSE;
1007    if ($number < 128)
1008        return chr($number);
1009    // Removing / Replacing Windows Illegals Characters
1010    if ($number < 160) {
1011        $number = $windows_illegals_chars[$number];
1012    }
1013   
1014    if ($number < 2048)
1015        return chr(($number >> 6) + 192) . chr(($number & 63) + 128);
1016    if ($number < 65536)
1017        return chr(($number >> 12) + 224) . chr((($number >> 6) & 63) + 128) . chr(($number & 63) + 128);
1018    if ($number < 2097152)
1019        return chr(($number >> 18) + 240) . chr((($number >> 12) & 63) + 128) . chr((($number >> 6) & 63) + 128) . chr(($number & 63) + 128);
1020   
1021    return(false);
1022} //spiplistes_code2utf()
1023
1024// !(PHP 4 >= 4.3.0, PHP 5)
1025if(!function_exists("html_entity_decode")) {
1026        function html_entity_decode ($string, $quote_style = "", $charset = "")
1027        {
1028                // Remplace les entites numeriques
1029                $string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
1030                $string = preg_replace('~&#([0-9]+);~e', 'chr("\\1")', $string);
1031                // Remplace les entites
1032                $trans_tbl = get_html_translation_table (HTML_ENTITIES);
1033                $trans_tbl = array_flip ($trans_tbl);
1034                return strtr ($string, $trans_tbl);
1035        }
1036}
1037
1038
1039/******************************************************************************************/
1040/* SPIP-Listes est un systeme de gestion de listes d'abonnes et d'envoi d'information     */
1041/* par email pour SPIP. http://bloog.net/spip-listes                                      */
1042/* Copyright (C) 2004 Vincent CARON  v.caron<at>laposte.net                               */
1043/*                                                                                        */
1044/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
1045/* de la Licence Publique Generale GNU publiee par la Free Software Foundation            */
1046/* (version 2).                                                                           */
1047/*                                                                                        */
1048/* Ce programme est distribue car potentiellement utile, mais SANS AUCUNE GARANTIE,       */
1049/* ni explicite ni implicite, y compris les garanties de commercialisation ou             */
1050/* d'adaptation dans un but specifique. Reportez-vous a la Licence Publique Generale GNU  */
1051/* pour plus de details.                                                                  */
1052/*                                                                                        */
1053/* Vous devez avoir recu une copie de la Licence Publique Generale GNU                    */
1054/* en meme temps que ce programme ; si ce n'est pas le cas, ecrivez a la                  */
1055/* Free Software Foundation,                                                              */
1056/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, Etats-Unis.                   */
1057/******************************************************************************************/
1058
1059?>
Note: See TracBrowser for help on using the repository browser.