source: spip-zone/_plugins_/_test_/spip-listes/spip-listes_1_9_3/inc/spiplistes_pipeline_affiche_milieu.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:eol-style set to LF
  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 8.9 KB
Line 
1<?php
2// Original From SPIP-Listes-V :: Id: spiplistes_pipeline_affiche_milieu.php paladin@quesaco.org
3
4// $LastChangedRevision: 24647 $
5// $LastChangedBy: paladin@quesaco.org $
6// $LastChangedDate: 2008-11-26 06:03:42 +0000 (Wed, 26 Nov 2008) $
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10include_spip('inc/spiplistes_api_globales');
11include_spip('inc/spiplistes_api');
12include_spip('inc/layer');
13
14// pipeline (plugin.xml)
15function spiplistes_affiche_milieu ($flux) {
16        switch($flux['args']['exec']) {
17                case 'auteurs_edit':
18                case 'auteur_infos':
19                        $flux['data'] .= spiplistes_auteur_abonnement();
20                        break;
21                default:
22                        break;
23        }
24        return ($flux);
25}
26
27// bloc appele' en pipeline par spiplistes_affiche_milieu()
28function spiplistes_auteur_abonnement () {
29
30        $id_auteur = intval(_request('id_auteur'));
31        if($id_auteur > 0) {
32                if($row = sql_fetsel("email,statut", "spip_auteurs", "id_auteur=".sql_quote($id_auteur)." LIMIT 1")) {
33                        if(strlen($auteur_email = $row['email']) > 3) {
34                                return(spiplistes_auteur_abonnement_details($id_auteur, $row['statut'], $auteur_email));
35                        }
36                        else {
37                                return( ""
38                                        . debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_listes-24.png", true, "", _T('spiplistes:abonnements_aux_courriers'))
39                                        . "<p class='verdana2'>"
40                                        . _T('spiplistes:Adresse_email_obligatoire')
41                                        . "</p>"
42                                        . fin_cadre_relief(true)
43                                        );
44                        }
45                }
46        }
47        return('');
48}
49
50function spiplistes_auteur_abonnement_details ($id_auteur, $auteur_statut, $email) {
51       
52        include_spip("inc/spiplistes_api");
53        include_spip("inc/spiplistes_api_presentation");
54
55        global $connect_statut
56                , $connect_toutes_rubriques
57                , $connect_id_auteur
58                ;
59
60       
61        $result = "";
62
63        $flag_editable = (
64                (($connect_statut == '0minirezo') && $connect_toutes_rubriques)
65                || ($connect_id_auteur == $id_auteur)
66                );
67
68        if($flag_editable) {
69               
70                // recupere la liste des abonnements disponibles
71                $sql_where = spiplistes_listes_sql_where_or(_SPIPLISTES_LISTES_STATUTS_PERIODIQUES)
72                        . " OR statut=".sql_quote(_SPIPLISTES_PUBLIC_LIST);
73                       
74                // les auteurs ont droit aux listes privees (internes)
75                if(($auteur_statut == '1comite') || ($auteur_statut == '0minirezo')) {
76                        $sql_where .= " OR statut=".sql_quote(_SPIPLISTES_PRIVATE_LIST);
77                }
78
79                $sql_result = sql_select(
80                        array('id_liste','titre','texte','date','statut')
81                        , "spip_listes"
82                        , $sql_where
83                        , ''
84                        , array("titre ASC")
85                        );
86
87                $nb_listes_dispo = sql_count($sql_result);
88//spiplistes_log(gettype($nb_listes_dispo).":".$nb_listes_dispo);
89
90                // si liste disponible, affiche formulaire
91                if($sql_result && $nb_listes_dispo) {
92                       
93                        // recupere la liste des listes
94                        $listes = array();
95                        while($row = sql_fetch($sql_result)) {
96                                $texte = propre($row['texte']);
97                                if(strlen($legend = textebrut($texte)) > 40) {
98                                        $texte = couper($texte, 40);
99                                }
100                                $texte = strip_tags($texte, '<strong>');
101                                $listes[] = array(
102                                        'id_liste' => intval($row['id_liste'])
103                                        , 'titre' => $row['titre']
104                                        , 'texte' => $texte
105                                        , 'date' => $row['date']
106                                        , 'statut' => $row['statut']
107                                        , 'legend' => $legend
108                                );
109                        } // end while
110                       
111                        // si retour de formulaire, ajoute/retire les abonnements
112                        if(_request('btn_abonnements_valider')) {
113                                $abos_set = _request('abos_set');
114                                $abo_ajoute = array();
115                                // liste des abonnements de id_auteur
116                                $auteur_abos_current_list = spiplistes_abonnements_listes_auteur($id_auteur);
117                                // ajoute/retire les abonnements desires
118                                if(count($abos_set)) {
119                                        // Abonnements ?
120                                        foreach($abos_set as $value) {
121                                                if(!in_array($value, $auteur_abos_current_list)) {
122                                                        $abo_ajoute[] = $value;
123                                                }
124                                        }
125                                        if(count($abo_ajoute)) {
126                                                spiplistes_abonnements_ajouter($id_auteur, $abo_ajoute);
127                                        }
128                                        // Desabonnements ?
129                                        foreach($auteur_abos_current_list as $value) {
130                                                if(!in_array($value, $abos_set)) {
131                                                        spiplistes_abonnements_auteur_desabonner($id_auteur, $value);
132                                                }
133                                        }
134                                }
135                                // desabonne de tout
136                                else {
137                                        if(spiplistes_abonnements_auteur_desabonner($id_auteur, "toutes") === false) {
138                                                $result .= spiplistes_boite_alerte(_T('spiplistes:Erreur_sur_la_base'), true);
139                                        }
140                                }
141                        } // end if
142                       
143                        // si retour de formulaire, modifie le format de reception
144                        if($abo_format = _request('abo_format')) {
145                                spiplistes_format_abo_modifier($id_auteur, $abo_format);
146                        }
147                       
148                        // recupere le format d'abonnement de id_auteur
149                        $abo_format = spiplistes_format_abo_demande($id_auteur);               
150               
151                        // recupere la liste ou auteur est abonne
152                        $auteur_abos_current_list = spiplistes_abonnements_listes_auteur($id_auteur);
153                       
154                        $bloc_visible = _request('btn_abonnements_valider');
155                       
156                        $debut_block = ($bloc_visible ? "spiplistes_debut_block_visible" : "spiplistes_debut_block_invisible");
157                       
158                        $result .= ""
159                                . "<!-- formulaire abonnement spiplistes -->\n" 
160                                . "<a name='abonnement'></a>\n"
161                                . debut_cadre_enfonce(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_listes-24.png"
162                                        , true, '', _T('spiplistes:listes_de_diffusion_'))
163                                . spiplistes_bouton_block_depliable(
164                                        _T('spiplistes:abonnements_aux_courriers')
165                                        , $bloc_visible
166                                        , "abos_block")
167                                . "<div class='verdana2'>"
168                                ;
169                        if($n = count($auteur_abos_current_list)) {
170                                $result .= $n."/"
171                                        . spiplistes_nb_listes_str_get ($nb_listes_dispo)
172                                        . ". "
173                                        . _T('spiplistes:format_de_reception')." : "
174                                                .       (
175                                                        (in_array($abo_format, array('html', 'texte')))
176                                                        ? _T('spiplistes:'.$abo_format)
177                                                        : "&lt;"._T('spiplistes:aucun')."&gt;"
178                                                        )
179                                        ;
180                        } else {
181                                $result .= _T('spiplistes:Sans_abonnement');
182                        }
183                        $result .= ""
184                                . "</div>\n"
185                                . $debut_block("abos_block")
186                                . "<form action='".generer_url_ecrire("auteur_infos", "id_auteur=$id_auteur")."' method='post' style='margin-bottom:0;' name='abos_formulaire'>\n"
187                                . debut_cadre_formulaire("", true)
188                                . "\n<p class='verdana2' style='margin-top:0;margin-bottom:0;'>"
189                                .       (
190                                                ($abo_format!='html' && $abo_format!='texte')
191                                                ? _T('spiplistes:Alert_abonnement_sans_format')
192                                                : _T('spiplistes:vous_etes_abonne_aux_listes_selectionnees_').":"
193                                        )
194                                . "</p>\n"
195                                //
196                                . "<!-- liste des abonnements -->\n"
197                                . "<ul class='liste-listes'>\n"
198                                ;
199                        foreach($listes as $key=>$value) {
200                                $id_liste = $value['id_liste'];
201                                $auteur_est_abonne = in_array($id_liste, $auteur_abos_current_list);
202                                $checked = $auteur_est_abonne ? "checked='checked'" : "";
203                                $label = $auteur_est_abonne ? "Arreter_abonnement_a" : "Abonner_a";
204                                $label = _T("spiplistes:".$label)." ".$value['titre'];
205                                $prochain_envoi = 
206                                        ($value['date'] > 0)
207                                        ? _T('spiplistes:Prochain_envoi_').": <span style='font-weight:bold;'>".affdate_heure($value['date'])."</span>"
208                                        : _T('spiplistes:envoi_non_programme')
209                                        ;
210                                $result .= ""
211                                        . "<li>\n"
212                                        . "<label>\n"
213                                        . "<input name='abos_set[]' type='checkbox' value='$id_liste' title=\"$label\" $checked />\n"
214                                        . spiplistes_bullet_titre_liste('puce', $value['statut'], '', true)
215                                        . "<span title=\"".$value['legend']."\">\n"
216                                        . "<span class='titre'>".typo($value['titre'])."</span> \n"
217                                        . "<span class='description'>".typo($value['texte'])." </span>\n"
218                                        . "<span class='periodicite'>($prochain_envoi)</span>\n"
219                                        . "</span>\n"
220                                        . "</label></li>\n"
221                                        ;
222                        }
223                        $result .= ""
224                                . "</ul>\n"
225                                . "<!-- fin liste des abonnements -->\n"
226                                . fin_cadre_formulaire(true)
227                                //
228                                // selection du format de reception
229                                . debut_cadre_formulaire("margin-top:1ex", true)
230                                . ((empty($abo_format) || ($abo_format=="non")) 
231                                        ? "<p>"._T('spiplistes:Format_obligatoire_pour_diffusion')."</p>" : "" )
232                                . _T('spiplistes:format_de_reception')
233                                . "<ul class='liste-format'>\n"
234                                ;
235                        $checked = ($abo_format=="html" ? "checked='checked'" : "");
236                        $result .= ""
237                                . "<li style='width:50%;float:left;'>\n"
238                                . " <input type='radio' name='abo_format' value='html' id='format_rcpt_html' title='"._T('spiplistes:html')."' $checked />"
239                                . " <label for='format_rcpt_html'>"._T('spiplistes:version_html')."</label></li>\n"
240                                ;
241                        $checked = ($abo_format=="texte" ? "checked='checked'" : "");
242                        $result .= ""
243                                . "<li>\n"
244                                . " <input type='radio' name='abo_format' value='texte' id='format_rcpt_texte' title='"._T('spiplistes:texte')."' $checked />"
245                                . " <label for='format_rcpt_texte'>"._T('spiplistes:version_texte')."</label></li>\n"
246                                . "</ul>\n"
247                                . fin_cadre_formulaire(true)
248                                ;
249                        if(spiplistes_format_valide($abo_format) && ($abo_format!="non")) {
250                                $result .= ""
251                                        . debut_cadre_formulaire("margin-top:1ex", true)
252                                        . "<ul class='liste-format-desabo'>\n"
253                                        . "<li>\n"
254                                        . spiplistes_form_input_radio('abo_format', 'non', _T('spiplistes:Suspendre_abonnements')
255                                                , false, true, false)
256                                        . "</ul>\n"
257                                        . fin_cadre_formulaire(true)
258                                        ;
259                        }
260                        $result .= ""
261                                //
262                                . "<div style='text-align:right;margin-top:1ex;'><input type='submit' name='btn_abonnements_valider' "
263                                        . " value='"._T('spiplistes:Valider_abonnement')."' class='fondo' /></div>\n"
264                                . "</form>\n"
265                                . fin_block()
266                                . fin_cadre_enfonce(true)
267                                ;
268                }
269        }
270       
271        return($result);
272}
273
274?>
Note: See TracBrowser for help on using the repository browser.