source: spip-zone/_plugins_/_stable_/agenda/1_9_1/exec/agenda_evenements.php @ 5784

Last change on this file since 5784 was 5784, checked in by cedric@…, 15 years ago

ne pas supprimer les multi quand il sont presents (ereur : attribut_html utilise au lieu de entites_html)
traduction nl et anglaise
(Michel Possoz)

File size: 17.3 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5include_spip('inc/texte');
6include_spip('inc/presentation');
7include_spip('inc/agenda_filtres');
8include_spip('inc/agenda_gestion');
9
10function date_debut_fin($annee,$mois,$jour,$type){
11        if ($type=='jour'){
12                $ts_start=strtotime("$annee-$mois-01 00:00:00");
13                $ts_start+=($jour-1)*24*60*60;
14                $ts_fin=$ts_start+24*60*60;
15        } else
16        if ($type=="semaine"){
17                $ts_start=strtotime("$annee-$mois-01 01:00:00");
18                $ts_start+=($jour-1)*24*60*60;
19                while (date('w',$ts_start)!=1) $ts_start-=24*60*60;
20                $ts_fin=$ts_start+7*24*60*60+60*60;
21                $ts_start-=2*60*60;
22        } else
23        if ($type=='mois'){
24                $ts_start=strtotime("$annee-$mois-01 00:00:00");
25                if ($mois<'12')
26                        $ts_fin=strtotime("$annee-".($mois+1)."-01 00:00:00");
27                else
28                        $ts_fin=strtotime(($annee+1)."-$mois-01 00:00:00");
29        }
30        return array($ts_start,$ts_fin);       
31}
32function ajoute_creneaux_horaires($urlbase,$ts_start,$ts_fin,$type,$partie_cal,$echelle){
33        if ($echelle<=120)
34                $freq_creneaux=30*60;
35        else
36                $freq_creneaux=60*60;
37
38        $today=date('Y-m-d');
39        // creneaux pour ajout uniquement si ajouter_id_article present
40        if (($type!='mois')&&($partie_cal!='sansheure'))
41        {
42                $heuremin='08';$heuremax='20';
43                if ($partie_cal=='matin'){
44                        $heuremin='04';$heuremax='15';
45                }
46                if ($partie_cal=='soir'){
47                        $heuremin='12';$heuremax='23';
48                }
49                for ($j=$ts_start;$j<=$ts_fin;$j+=$freq_creneaux){
50                        $heure=date('H',$j);
51                        if (($heure>=$heuremin)&&($heure<=$heuremax)){
52                                $url=parametre_url($urlbase,'ndate',urlencode(date('Y-m-d H:i',$j)));
53                                $creneau=date('Y-m-d H:i:s',$j);
54                                if (date('Y-m-d',$j)==$today)
55                                        Agenda_memo_full($creneau,$creneau,preg_replace(",\s+,","&nbsp;",date('H:i',$j)." "._T('agenda:ajouter_un_evenement')), " ", "", $url,'calendrier-creneau-today');
56                                else if (date('w',$j)==0)
57                                        Agenda_memo_full($creneau,$creneau,preg_replace(",\s+,","&nbsp;",date('H:i',$j)." "._T('agenda:ajouter_un_evenement')), " ", "",$url,'calendrier-creneau-sunday');
58                                else
59                                        Agenda_memo_full($creneau,$creneau,preg_replace(",\s+,","&nbsp;",date('H:i',$j)." "._T('agenda:ajouter_un_evenement')), " ", "",$url,'calendrier-creneau');
60                        }
61                }
62        }
63       
64}
65
66function affiche_evenements_agenda($flag_editable){
67        global $visu_evenements;
68        $type = _request('type');
69        $partie_cal = _request('partie_cal');
70        if (!$type) $type='semaine';
71        $id_evenement = intval(_request('id_evenement'));
72        $ajouter_id_article = intval(_request('ajouter_id_article'));
73        global $annee,$mois,$jour;
74        $annee = intval(_request('annee'));
75        $mois = intval(_request('mois'));
76        $jour = intval(_request('jour'));
77
78        if ($flag_editable)
79                Agenda_action_formulaire_article($ajouter_id_article);
80
81        $visu_evenements=array();
82
83        if ((!$annee)||(!$mois)||(!$jour)){
84                if (!$id_evenement){ // pas d'id_evenement--> date du jour
85                        $stamp=time();
86                }
87                else { // date de l'evenement
88                        $res = spip_query("SELECT date_debut FROM spip_evenements WHERE id_evenement=".spip_abstract_quote($id_evenement));
89                        if ($row = spip_fetch_array($res))
90                                $stamp=strtotime($row['date_debut']);
91                        else 
92                                $stamp=time();
93                }
94                $annee=date('Y',$stamp);
95                $mois=date('m',$stamp);
96                $jour=date('d',$stamp);
97        }
98
99
100        $urlbase=self();
101        $urlbase=parametre_url($urlbase,'edit','');
102        $urlbase=parametre_url($urlbase,'del','');
103        $urlbase=parametre_url($urlbase,'ndate','');
104        $urlbase=parametre_url($urlbase,'id_evenement','');
105        $urlbase=parametre_url($urlbase,'neweven','1');
106       
107        //$urlbase=str_replace("&amp;","&",$urlbase);
108
109        // creation des boites creneaux horaires pour ajout rapide
110        list($ts_start,$ts_fin) = date_debut_fin($annee,$mois,$jour,$type);
111        if ($flag_editable)
112                ajoute_creneaux_horaires($urlbase,$ts_start,$ts_fin,$type,$partie_cal,$echelle);
113
114
115        $categorie_concerne=array('plage'=>'calendrier-plage','evenement'=>'calendrier-evenement');
116        $categorie_info=array('plage'=>'calendrier-plage-info','evenement'=>'calendrier-evenement-info');
117
118        $datestart=date('Y-m-d H:i:s',$ts_start-24*60*60);
119        $datefin=date('Y-m-d H:i:s',$ts_fin+24*60*60);
120
121        // tous les evenements
122        $res = spip_query("SELECT *
123                                                        FROM spip_evenements AS evenements
124                                                 WHERE ((evenements.date_debut>='$datestart' AND evenements.date_debut<='$datefin')
125                                                                OR (evenements.date_fin>='$datestart' AND evenements.date_fin<='$datefin')
126                                                                OR (evenements.date_debut<'$datestart' AND evenements.date_fin>'$datefin'))
127                                                 ORDER BY evenements.date_debut;");
128        $urlbase=parametre_url($urlbase,'neweven','');
129        $urlbase=parametre_url($urlbase,'annee',$annee);
130        $urlbase=parametre_url($urlbase,'mois',$mois);
131        $urlbase=parametre_url($urlbase,'jour',$jour);
132        while ($row = spip_fetch_array($res)){
133                $is_evt=($row['horaire']!='oui')
134                                                ||($row['date_debut']<$datestart && $row['date_fin']>$datefin);
135                $concerne=(!$ajouter_id_article) || ($ajouter_id_article==$row['id_article']);
136
137                $url=parametre_url($urlbase,'id_evenement',$row['id_evenement']);
138                $url=parametre_url($url,'ajouter_id_article',$row['id_article']);
139               
140                $titre = typo($row['titre']);
141                $descriptif = typo($row['descriptif']);
142                $lieu = typo($row['lieu']);
143                $texte=wordwrap(entites_html($row['titre'],ENT_QUOTES),15,"<br />\n");
144                if (($type!='mois')&&(!$is_evt))
145                        $texte.="<hr />" . wordwrap(entites_html($row['descriptif'],ENT_QUOTES),15, "<br />\n");
146                if (strlen($texte)==0) $texte=_L("(sans objet)");
147
148                if ($concerne)  $categorie = $categorie_concerne;
149                else                                            $categorie = $categorie_info;
150                if ($is_evt)            $categorie = $categorie['evenement'];
151                else                                            $categorie = $categorie['plage'];
152                if ($id_evenement==$row['id_evenement'])
153                        $categorie.='-selection';
154
155                if (!$is_evt)
156                        Agenda_memo_full($row['date_debut'], $row['date_fin'], $titre, $descriptif, $lieu, $url, $categorie);
157                else{
158                        //if ($type!='mois')
159                        //      Agenda_memo_evt_full($row['date_debut'], $row['date_debut'], Agenda_rendu_boite($titre,$descriptif,$lieu), "", "", $url, $categorie);
160                        //else
161                                Agenda_memo_evt_full($row['date_debut'], $row['date_fin'], $titre, $descriptif, $lieu, $url, $categorie);
162                }
163                $visu_evenements[$row['id_evenement']]=1;
164        }
165
166        $s = "<span class='agenda-calendrier'>\n";
167        // attention : bug car $type est modifie apres cet appel !
168        $s .= Agenda_affiche_full(1,'', $type, 'calendrier-creneau','calendrier-creneau-today','calendrier-creneau-sunday','calendrier-plage','calendrier-evenement','calendrier-plage-info','calendrier-evenement-info','calendrier-plage-selection','calendrier-evenement-selection');
169        $s .= "</span>";
170
171        return $s;
172}
173
174
175function visu_evenement_agenda($id_evenement,$flag_editable){
176        $out = "";
177        $ndate = _request('ndate');
178        $del = _request('del');
179
180        if ($id_evenement!=NULL){
181                $res = spip_query("SELECT evenements.* FROM spip_evenements AS evenements WHERE evenements.id_evenement=".spip_abstract_quote($id_evenement));
182                if ($row = spip_fetch_array($res)){
183                        if (!isset($neweven)){
184                                $fid_evenement=$row['id_evenement'];
185                                $ftitre=attribut_html(typo($row['titre']));
186                                $flieu=attribut_html(typo($row['lieu']));
187
188                                $fhoraire=attribut_html($row['horaire']);
189                                $fdescriptif=attribut_html(typo($row['descriptif']));
190                                $fstdatedeb=strtotime($row['date_debut']);
191                                $fstdatefin=strtotime($row['date_fin']);
192                                $fid_evenement_source=$row['id_evenement_source'];
193                        }
194                }
195                $out .= "<div class='agenda-visu-evenement'>";
196                $res2 = spip_query("SELECT articles.* FROM spip_articles AS articles LEFT JOIN spip_evenements AS J ON J.id_article=articles.id_article WHERE J.id_evenement=".spip_abstract_quote($id_evenement));
197                if ($row2 = spip_fetch_array($res2)){
198                        $out .= "<div class='article-evenement'>";
199                        $out .= "<a href='".generer_url_ecrire('articles',"id_article=".$row2['id_article'])."'>";
200                        $out .= http_img_pack("article-24.gif", "", "width='24' height='24' border='0'");
201                        $out .= entites_html(typo($row2['titre']))."</a>";
202                        $out .= "</div>\n";
203                }
204               
205                $out .= "<div class='agenda-visu-evenement-bouton-fermer'>";
206                $url=self();
207                $url=parametre_url($url,'edit','');
208                $url=parametre_url($url,'neweven','');
209                $url=parametre_url($url,'del','');
210                $url=parametre_url($url,'id_evenement','');
211
212                $out .= "<a href='$url'><img src='"._DIR_PLUGIN_AGENDA_EVENEMENTS."/img_pack/croix.png' width='12' height='12' style='border:none;'></a>";
213                $out .= "</div>\n";
214
215                $fobjet = entites_html($fobjet,ENT_QUOTES);
216                $flieu = entites_html($flieu,ENT_QUOTES);
217                $fdescription = entites_html($fdescription,ENT_QUOTES);
218
219                $out .= "<div class='titre-titre'>";
220                $out .= _T('agenda:evenement_titre');
221                $out .= "</div><div class='titre-visu'>$ftitre &nbsp;</div>\n";
222
223                $out .= "<div class='lieu-titre'>";
224                $out .= _T('agenda:evenement_lieu');
225                $out .= "</div><div class='lieu-visu'>$flieu &nbsp;</div>\n";
226                $out .= "<div class='horaire-titre'>&nbsp;</div>";
227
228                $out .= "<div class='date-titre'>";
229                $out .= _T('agenda:evenement_date'); 
230                $out .= "</div>";
231                $out .= "<div class='date-visu'>";
232                $out .= _T('agenda:evenement_date_du'); 
233                $out .= " ".affdate_jourcourt(date("Y-m-d H:i",$fstdatedeb))." ";
234
235
236
237                if ($fhoraire=='oui')
238// M. Possoz Change: Date
239//                      $out .= " &agrave; ".date("H:i",$fstdatedeb)." ";
240                        $out .= _T('agenda:evenement_date_a_immediat'); 
241                        $out .= " ".date("H:i",$fstdatedeb);
242
243                $out .= " <br/>\n";
244
245// M. Possoz Change: Date au
246//              $out .= "Au ".affdate_jourcourt(date("Y-m-d H:i",$fstdatefin));
247                $out .= _T('agenda:evenement_date_au'); 
248                $out .= " ".affdate_jourcourt(date("Y-m-d H:i",$fstdatefin))." ";
249
250                if ($fhoraire=='oui')
251// M. Possoz Change: Date
252//                      $out .= " &agrave; ".date("H:i",$fstdatefin)." ";
253                        $out .= _T('agenda:evenement_date_a_immediat'); 
254                        $out .= " ".date("H:i",$fstdatefin);
255
256                $out .= " <br/>\n";
257                $out .= "</div>\n";
258
259// M. Possoz Change: Date
260//              $out .= "<div class='descriptif-titre'>Description</div><div class='descriptif-visu'>$fdescriptif &nbsp;</div>\n";
261                $out .= "<div class='descriptif-titre'>";
262                $out .= _T('agenda:evenement_descriptif'); 
263                $out .= "</div><div class='descriptif-visu'>$fdescriptif &nbsp;</div>\n";
264
265                $out .=  "<div class='agenda_mots_cles'>";
266                $res = spip_query("SELECT * FROM spip_groupes_mots WHERE evenements='oui' ORDER BY titre");
267                $sep = "";
268                while ($row = spip_fetch_array($res,SPIP_ASSOC)){
269                        $id_groupe = $row['id_groupe'];
270                        $row2 = spip_fetch_array(
271                                                spip_query("SELECT mots.titre FROM spip_mots_evenements AS mots_evenements
272                                                                LEFT JOIN spip_mots AS mots ON mots.id_mot=mots_evenements.id_mot
273                                                                WHERE mots.id_groupe=".spip_abstract_quote($id_groupe).
274                                                                " AND mots_evenements.id_evenement=".spip_abstract_quote($id_evenement)));
275                        if ($row2){
276                                $out .= $sep . supprimer_numero($row['titre'])."&nbsp;:&nbsp;".supprimer_numero($row2['titre']);
277                                $sep = "\n, ";
278                        }
279                }
280                $out .= "</div>\n";
281               
282
283                $url = parametre_url(self(),'annee','');
284                $url = parametre_url($url,'mois','');
285                $url = parametre_url($url,'jour','');
286
287                $out .= "<div class='repetitions-calendrier'>";
288                $id_source = $fid_evenement_source?$fid_evenement_source:$id_evenement;
289                $res2 = spip_query("SELECT * FROM spip_evenements WHERE id_evenement=".spip_abstract_quote($id_source)." OR id_evenement_source=".spip_abstract_quote($id_source)." ORDER BY date_debut");
290                if (spip_num_rows($res2)>1){
291                        $out .= _T('agenda:evenement_autres_occurences');
292                        while($row2 = spip_fetch_array($res2)){
293                                if ($row2['id_evenement']!=$fid_evenement){
294                                        $url = parametre_url(self(),'id_evenement',$row2['id_evenement']);
295                                        $out .= " <a href='$url'>" . affdate_jourcourt($row2['date_debut']) ."</a>";
296                                }
297                        }
298                }
299                $out .= "</div>";
300       
301                if ($fid_evenement_source!=0){
302                        $res2 = spip_query("SELECT evenements.* FROM spip_evenements AS evenements WHERE evenements.id_evenement=".spip_abstract_quote($fid_evenement_source));
303                        if ($row2 = spip_fetch_array($res2)){
304                                $url = parametre_url($url,'id_evenement',$row2['id_evenement']);
305                          $out .= "<div class='edition-bouton'>";
306                          $out .= _T('agenda:repetition_de')." <a href='";
307                          $out .= $url;
308                          $out .= "'>".($row2['titre']?typo($row2['titre']):_T('agenda:sans_titre'))."</a>";
309                          $out .= "</div>";
310                        }
311                }
312                else if ($flag_editable){
313                        $url=self();
314                        $url=parametre_url($url,'edit','');
315                        $url=parametre_url($url,'neweven','');
316                        $url=parametre_url($url,'del','');
317                        $url=parametre_url($url,'id_evenement','');
318                        if ($del==1)    { //---------------Suppression RDV ------------------------------
319                          $out .= "<form name='edition_rdv' action='$url' method='post'>";
320                          //$out .= "<input type='hidden' name='redirect' value='$url' />\n";
321                          $out .= "<input type='hidden' name='id_evenement' value='$fid_evenement' />\n";
322                          $out .= "<input type='hidden' name='suppr' value='1' />\n";
323                          $out .= "<div class='edition-bouton'>";
324                          $out .= "<input type='submit' name='submit' value='Annuler' />";
325                          $out .= "<input type='submit' name='submit' value='Confirmer la suppression' />";
326                          $out .= "</div></form>";
327                }
328                else {
329                                $url=parametre_url($url,'id_evenement',$id_evenement);
330                          $out .= "<form name='edition_rdv' action='$url' method='post'>";
331                          //$out .= "<input type='hidden' name='redirect' value='$url' />\n";
332                          $out .= "<input type='hidden' name='id_evenement' value='$fid_evenement' />\n";
333                          $out .= "<input type='hidden' name='edit' value='1' />\n";
334                          $out .= "<div class='edition-bouton'>";
335                                $out .= "<div style='text-align:$spip_lang_right'><input type='submit' name='modifier' value='"._T('bouton_modifier')."' class='fondo'></div>";
336                          $out .= "</div></form>";
337                }
338                }
339                $out .= "</div>\n";
340        }
341        return $out;
342}
343
344function exec_agenda_evenements_dist(){
345        // s'assurer que les tables sont crees
346        Agenda_install();
347        include_spip('inc/calendar');
348        // Reserver les widgets agenda
349        WCalendar_ajoute_lies(_T('agenda:evenement_date_debut'),'_evenement_debut',_T('agenda:evenement_date_fin'),'_evenement_fin');
350        WCalendar_ajoute_statique(_T('agenda:evenement_repetitions'),'_repetitions');
351
352        $ajouter_id_article = intval(_request('ajouter_id_article'));
353        $flag_editable = article_editable($ajouter_id_article);
354
355        global $visu_evenements;
356        $type = _request('type');
357        if (!$type) $type='semaine';
358        $id_evenement = intval(_request('id_evenement'));
359        $edit = _request('edit');
360        $neweven = _request('neweven');
361
362        $annee = intval(_request('annee'));
363        $mois = intval(_request('mois'));
364        $jour = intval(_request('jour'));
365        $date = date("Y-m-d", time());
366        if ($annee&&$mois&&$jour)
367                $date = date("Y-m-d", strtotime("$annee-$mois-$jour"));
368
369
370               
371        if ($type == 'semaine') {
372       
373                //$GLOBALS['afficher_bandeau_calendrier_semaine'] = true;
374                $titre = _T('titre_page_calendrier',
375                        array('nom_mois' => nom_mois($date), 'annee' => annee($date)));
376        }
377  elseif ($type == 'jour') {
378                $titre = nom_jour($date)." ". affdate_jourcourt($date);
379  }
380        else {
381                $titre = _T('titre_page_calendrier',
382                    array('nom_mois' => nom_mois($date), 'annee' => annee($date)));
383        }
384
385  debut_page($titre, "redacteurs", "calendrier","",$css);
386        barre_onglets("calendrier", "evenements");
387
388        $out = "<div>";
389        if ($ajouter_id_article){
390                $res2 = spip_query("SELECT * FROM spip_articles AS articles WHERE id_article=".spip_abstract_quote($ajouter_id_article));
391                if ($row2 = spip_fetch_array($res2)){
392                        $out .= "<div style=' width:750px; font-size: 18px; color: #9DBA00; font-weight: bold;text-align:left;'>";
393                        $out .= "<a href='".generer_url_ecrire('articles',"id_article=".$row2['id_article'])."'>";
394                        $out .= http_img_pack("article-24.gif", "", "width='24' height='24' border='0'");
395                        $out .= entites_html(typo($row2['titre']))."</a></div>";
396                }
397        }
398        echo $out ."&nbsp;</div>" ;
399
400        echo affiche_evenements_agenda($flag_editable);
401
402        if (($edit||$neweven)&&($flag_editable))        { //---------------Edition RDV ------------------------------
403                $ndate = _request('ndate');
404                echo Agenda_formulaire_edition_evenement($id_evenement,$neweven,$ndate);
405        }
406        else
407                if ((isset($id_evenement))&&(isset($visu_evenements[$id_evenement]))){ //---------------Visualisation RDV ------------------------------
408                        echo visu_evenement_agenda($id_evenement,$flag_editable);
409                }
410        fin_page();
411
412}
413
414function http_calendrier_ics_message($annee, $mois, $jour, $large)
415{
416        return "";
417}
418
419function http_calendrier_aide_mess()
420{
421        return "";
422}
423
424function http_calendrier_semainesh($annee, $mois, $jour, $echelle, $partie_cal, $script, $ancre, $evt)
425{
426        global $spip_ecran;
427        if (!isset($spip_ecran)) $spip_ecran = 'large';
428
429        $init = date("w",mktime(1,1,1,$mois,$jour,$annee));
430        $init = $jour+1-($init ? $init : 7);
431        $sd = '';
432
433        if (is_array($evt))
434          {
435                  list($sansduree, $evenements, $premier_jour, $dernier_jour) = $evt;
436                  if ($sansduree)
437                    foreach($sansduree as $d => $r) 
438                      $evenements[$d] = !$evenements[$d] ? $r : array_merge($evenements[$d], $r);
439            $finurl = "&amp;echelle=$echelle&amp;partie_cal=$partie_cal$ancre";
440            $evt =
441              http_calendrier_semaine_noms($annee, $mois, $init, $script, $finurl) .
442              http_calendrier_mois_sept($annee, $mois, $init, $init+ 6, $evenements, $script);
443          } else $evt = "<tr><td>$evt</td></tr>";
444
445        return 
446          "\n<table class='calendrier-table-$spip_ecran' cellspacing='0' cellpadding='0'>" .
447          http_calendrier_semaine_navigation($annee, $mois, $init, $echelle, $partie_cal, $script, $ancre) .
448          $evt .
449          "</table>" .
450          (_DIR_RESTREINT ? "" : http_calendrier_aide_mess());
451}
Note: See TracBrowser for help on using the repository browser.