source: trunk/spip/esqueleto-redcta/plugins/agenda/1_9_2/inc/voir_agenda.php @ 30

Last change on this file since 30 was 30, checked in by sebas, 17 years ago

nueva importacion del codigo del esqueleto de redcta con los plugins

File size: 7.9 KB
Line 
1<?php
2
3
4if (!defined("_ECRIRE_INC_VERSION")) return;
5
6include_spip('inc/texte');
7include_spip('inc/presentation');
8include_spip('inc/agenda_filtres');
9include_spip('inc/agenda_gestion');
10
11function inc_voir_agenda($flag_editable){
12        global $visu_evenements;
13        $type = _request('type');
14        $partie_cal = _request('partie_cal');
15        if (!$type) $type='semaine';
16        $id_evenement = intval(_request('id_evenement'));
17        $ajouter_id_article = intval(_request('ajouter_id_article'));
18        global $annee,$mois,$jour;
19        $annee = intval(_request('annee'));
20        $mois = intval(_request('mois'));
21        $jour = intval(_request('jour'));
22
23        $visu_evenements=array();
24
25        if ((!$annee)||(!$mois)||(!$jour)){
26                if (!$id_evenement){ // pas d'id_evenement--> date du jour
27                        $stamp=time();
28                }
29                else { // date de l'evenement
30                        $res = spip_query("SELECT date_debut FROM spip_evenements WHERE id_evenement="._q($id_evenement));
31                        if ($row = spip_fetch_array($res))
32                                $stamp=strtotime($row['date_debut']);
33                        else 
34                                $stamp=time();
35                }
36                $annee=date('Y',$stamp);
37                $mois=date('m',$stamp);
38                $jour=date('d',$stamp);
39        }
40
41
42        $urlbase=self();
43        $urlbase=parametre_url($urlbase,'edit','');
44        $urlbase=parametre_url($urlbase,'del','');
45        $urlbase=parametre_url($urlbase,'ndate','');
46        $urlbase=parametre_url($urlbase,'id_evenement','');
47        $urlbase=parametre_url($urlbase,'neweven','1');
48       
49        //$urlbase=str_replace("&amp;","&",$urlbase);
50
51        // creation des boites creneaux horaires pour ajout rapide
52        list($ts_start,$ts_fin) = date_debut_fin($annee,$mois,$jour,$type);
53        if ($flag_editable)
54                ajoute_creneaux_horaires($urlbase,$ts_start,$ts_fin,$type,$partie_cal,$echelle);
55
56
57        $categorie_concerne=array('plage'=>'calendrier-plage','evenement'=>'calendrier-evenement');
58        $categorie_info=array('plage'=>'calendrier-plage-info','evenement'=>'calendrier-evenement-info');
59
60        $datestart=date('Y-m-d H:i:s',$ts_start-24*60*60);
61        $datefin=date('Y-m-d H:i:s',$ts_fin+24*60*60);
62
63        // tous les evenements
64        $res = spip_query("SELECT *
65                                                        FROM spip_evenements AS evenements
66                                                 WHERE ((evenements.date_debut>='$datestart' AND evenements.date_debut<='$datefin')
67                                                                OR (evenements.date_fin>='$datestart' AND evenements.date_fin<='$datefin')
68                                                                OR (evenements.date_debut<'$datestart' AND evenements.date_fin>'$datefin'))
69                                                 ORDER BY evenements.date_debut;");
70        $urlbase=parametre_url($urlbase,'neweven','');
71        $urlbase=parametre_url($urlbase,'annee',$annee);
72        $urlbase=parametre_url($urlbase,'mois',$mois);
73        $urlbase=parametre_url($urlbase,'jour',$jour);
74        while ($row = spip_fetch_array($res)){
75                $is_evt=($row['horaire']!='oui')
76                                                ||($row['date_debut']<$datestart && $row['date_fin']>$datefin);
77                $concerne=(!$ajouter_id_article) || ($ajouter_id_article==$row['id_article']);
78
79                $url=parametre_url($urlbase,'id_evenement',$row['id_evenement']);
80                $url=parametre_url($url,'ajouter_id_article',$row['id_article']);
81                $args = explode('?',parametre_url($url,'exec',''));
82                // $url sous forme d'array pour appeler ajax_action_auteur
83                $url = array('action'=>'voir_evenement','id'=>"0-voir",'script'=>'calendrier','args'=>end($args));
84               
85                $titre = typo($row['titre']);
86                $descriptif = typo($row['descriptif']);
87                $lieu = typo($row['lieu']);
88                $texte=wordwrap(entites_html($row['titre'],ENT_QUOTES),15,"<br />\n");
89                if (($type!='mois')&&(!$is_evt))
90                        $texte.="<hr />" . wordwrap(entites_html($row['descriptif'],ENT_QUOTES),15, "<br />\n");
91                if (strlen($texte)==0) $texte=_L("(sans objet)");
92
93                if ($concerne)  $categorie = $categorie_concerne;
94                else                                            $categorie = $categorie_info;
95                if ($is_evt)            $categorie = $categorie['evenement'];
96                else                                            $categorie = $categorie['plage'];
97                if ($id_evenement==$row['id_evenement'])
98                        $categorie.='-selection';
99
100                if (!$is_evt)
101                        Agenda_memo_full($row['date_debut'], $row['date_fin'], $titre, $descriptif, $lieu, $url, $categorie);
102                else{
103                        //if ($type!='mois')
104                        //      Agenda_memo_evt_full($row['date_debut'], $row['date_debut'], Agenda_rendu_boite($titre,$descriptif,$lieu), "", "", $url, $categorie);
105                        //else
106                                Agenda_memo_evt_full($row['date_debut'], $row['date_fin'], $titre, $descriptif, $lieu, $url, $categorie);
107                }
108                $visu_evenements[$row['id_evenement']]=1;
109        }
110
111        $s = "<span class='agenda-calendrier'>\n";
112        // attention : bug car $type est modifie apres cet appel !
113        $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');
114        $s .= "</span>";
115
116        return $s;
117}
118
119function date_debut_fin($annee,$mois,$jour,$type){
120        if ($type=='jour'){
121                $ts_start=strtotime("$annee-$mois-01 00:00:00");
122                $ts_start+=($jour-1)*24*60*60;
123                $ts_fin=$ts_start+24*60*60;
124        } else
125        if ($type=="semaine"){
126                $ts_start=strtotime("$annee-$mois-01 01:00:00");
127                $ts_start+=($jour-1)*24*60*60;
128                while (date('w',$ts_start)!=1) $ts_start-=24*60*60;
129                $ts_fin=$ts_start+7*24*60*60+60*60;
130                $ts_start-=2*60*60;
131        } else
132        if ($type=='mois'){
133                $ts_start=strtotime("$annee-$mois-01 00:00:00");
134                if ($mois<'12')
135                        $ts_fin=strtotime("$annee-".($mois+1)."-01 00:00:00");
136                else
137                        $ts_fin=strtotime(($annee+1)."-$mois-01 00:00:00");
138        }
139        return array($ts_start,$ts_fin);       
140}
141function ajoute_creneaux_horaires($urlbase,$ts_start,$ts_fin,$type,$partie_cal,$echelle){
142        // creneaux pour ajout uniquement si ajouter_id_article present
143        if (($type!='mois')&&($partie_cal!='sansheure')&&($partie_cal!=NULL))
144        {
145                if ($echelle<=120)
146                        $freq_creneaux=30*60;
147                else
148                        $freq_creneaux=60*60;
149       
150                $today=date('Y-m-d');
151                $heuremin='08';$heuremax='20';
152                if ($partie_cal=='matin'){
153                        $heuremin='04';$heuremax='15';
154                }
155                if ($partie_cal=='soir'){
156                        $heuremin='12';$heuremax='23';
157                }
158                for ($j=$ts_start;$j<=$ts_fin;$j+=$freq_creneaux){
159                        $heure=date('H',$j);
160                        if (($heure>=$heuremin)&&($heure<=$heuremax)){
161                                $url=parametre_url($urlbase,'ndate',urlencode(date('Y-m-d H:i',$j)));
162                                $args = explode('?',parametre_url($url,'exec',''));
163                                // $url sous forme d'array pour appeler ajax_action_auteur
164                                $url = array('action'=>'voir_evenement','id'=>"0-editer",'script'=>'calendrier','args'=>end($args),'fct_ajax'=>'wc_init');
165                                $creneau=date('Y-m-d H:i:s',$j);
166                                if (date('Y-m-d',$j)==$today)
167                                        Agenda_memo_full($creneau,$creneau,preg_replace(",\s+,","&nbsp;",date('H:i',$j)." "._T('agenda:ajouter_un_evenement')), " ", "", $url,'calendrier-creneau-today');
168                                else if (date('w',$j)==0)
169                                        Agenda_memo_full($creneau,$creneau,preg_replace(",\s+,","&nbsp;",date('H:i',$j)." "._T('agenda:ajouter_un_evenement')), " ", "",$url,'calendrier-creneau-sunday');
170                                else
171                                        Agenda_memo_full($creneau,$creneau,preg_replace(",\s+,","&nbsp;",date('H:i',$j)." "._T('agenda:ajouter_un_evenement')), " ", "",$url,'calendrier-creneau');
172                        }
173                }
174        }
175}
176
177function http_calendrier_ics_message($annee, $mois, $jour, $large)
178{
179        return "";
180}
181
182function http_calendrier_aide_mess()
183{
184        return "";
185}
186
187function http_calendrier_semainesh($annee, $mois, $jour, $echelle, $partie_cal, $script, $ancre, $evt)
188{
189        global $spip_ecran;
190        if (!isset($spip_ecran)) $spip_ecran = 'large';
191
192        $init = date("w",mktime(1,1,1,$mois,$jour,$annee));
193        $init = $jour+1-($init ? $init : 7);
194        $sd = '';
195
196        if (is_array($evt))
197          {
198                  list($sansduree, $evenements, $premier_jour, $dernier_jour) = $evt;
199                  if ($sansduree)
200                    foreach($sansduree as $d => $r) 
201                      $evenements[$d] = !$evenements[$d] ? $r : array_merge($evenements[$d], $r);
202            $finurl = "&amp;echelle=$echelle&amp;partie_cal=$partie_cal$ancre";
203            $evt =
204              http_calendrier_semaine_noms($annee, $mois, $init, $script, $finurl) .
205              http_calendrier_mois_sept($annee, $mois, $init, $init+ 6, $evenements, $script);
206          } else $evt = "<tr><td>$evt</td></tr>";
207
208        return 
209          "\n<table class='calendrier-table-$spip_ecran' cellspacing='0' cellpadding='0'>" .
210          http_calendrier_semaine_navigation($annee, $mois, $init, $echelle, $partie_cal, $script, $ancre) .
211          $evt .
212          "</table>" .
213          (_DIR_RESTREINT ? "" : http_calendrier_aide_mess());
214}
215?>
Note: See TracBrowser for help on using the repository browser.