1 | <?php |
---|
2 | |
---|
3 | /* Balise #CALENDRIER_MINI |
---|
4 | Auteur James (c) 2006 |
---|
5 | Plugin pour spip 1.9 |
---|
6 | Licence GNU/GPL |
---|
7 | */ |
---|
8 | |
---|
9 | include_spip('inc/vieilles_defs'); |
---|
10 | if (!defined('VAR_DATE')) define('VAR_DATE', 'archives'); |
---|
11 | |
---|
12 | function balise_DATE_ARCHIVES($p) { |
---|
13 | $p->code = "_request('".VAR_DATE."')"; |
---|
14 | |
---|
15 | #$p->interdire_scripts = true; |
---|
16 | return $p; |
---|
17 | } |
---|
18 | |
---|
19 | function critere_archives($idb, &$boucles, $crit) { |
---|
20 | $boucle = &$boucles[$idb]; |
---|
21 | $champ_date = "'" . $boucle->id_table ."." . |
---|
22 | $GLOBALS['table_date'][$boucle->type_requete] . "'"; |
---|
23 | $boucle->where[] = array( |
---|
24 | 'REGEXP', |
---|
25 | $champ_date, |
---|
26 | "spip_abstract_quote(('^' . interdire_scripts(entites_html(\$Pile[0]['".VAR_DATE."']))))" |
---|
27 | ); |
---|
28 | |
---|
29 | } |
---|
30 | |
---|
31 | function thead($lang){ |
---|
32 | $ret = ''; |
---|
33 | $debut = 2; |
---|
34 | if($lang == 'en') $debut = 1; |
---|
35 | for($i=0;$i<7;$i++) { |
---|
36 | $ret .= "\n\t\t\t\t".'<th scope="col"><abbr title="'._T('date_jour_'.$debut).'">' . |
---|
37 | _T('minical:date_jour_abbr_'.$debut) . '</abbr></th>'; |
---|
38 | $debut = $debut == 7 ? 1 : $debut+1; |
---|
39 | } |
---|
40 | return "\n\t\t".'<thead> |
---|
41 | <tr>' .$ret. ' |
---|
42 | </tr> |
---|
43 | </thead>'."\n"; |
---|
44 | } |
---|
45 | |
---|
46 | function agenda_minical($i) { |
---|
47 | $args = func_get_args(); |
---|
48 | $une_date = array_shift($args); // une date comme balise |
---|
49 | $sinon = array_shift($args); |
---|
50 | if (!$une_date) return $sinon; |
---|
51 | $type = 'minical'; |
---|
52 | $agenda = agenda_memo(0); |
---|
53 | $evt = array(); |
---|
54 | foreach (($args ? $args : array_keys($agenda)) as $k) { |
---|
55 | if (is_array($agenda[$k])) |
---|
56 | foreach($agenda[$k] as $d => $v) { |
---|
57 | $evt[$d] = $evt[$d] ? (array_merge($evt[$d], $v)) : $v; |
---|
58 | } |
---|
59 | } |
---|
60 | $la_date = mktime(0, 0, 0, mois($une_date), 1, annee($une_date)); |
---|
61 | include_spip('inc/agenda'); |
---|
62 | return http_calendrier_init($la_date, $type, '', '', '', array('', $evt)); |
---|
63 | } |
---|
64 | |
---|
65 | function http_calendrier_minical($annee, $mois, $jour, $echelle, $partie_cal, $script, $ancre, $evt) { |
---|
66 | list($sansduree, $evenements, $premier_jour, $dernier_jour) = $evt; |
---|
67 | if ($sansduree) |
---|
68 | foreach($sansduree as $d => $r) { |
---|
69 | $evenements[$d] = !$evenements[$d] ? $r : |
---|
70 | array_merge($evenements[$d], $r); |
---|
71 | } |
---|
72 | if (!$premier_jour) $premier_jour = '01'; |
---|
73 | if (!$dernier_jour) { |
---|
74 | $dernier_jour = 31; |
---|
75 | while (!(checkdate($mois,$dernier_jour,$annee))) $dernier_jour--; |
---|
76 | } |
---|
77 | // affichage du debut de semaine hors periode |
---|
78 | $lang = _request('lang')?_request('lang'):$GLOBALS['spip_lang']; |
---|
79 | $ligne = ''; |
---|
80 | $debut = date("w",mktime(1,1,1,$mois,$premier_jour,$annee)); |
---|
81 | $jour_semaine_lang=1; |
---|
82 | if($lang=='en') { |
---|
83 | $debut=$debut+1; |
---|
84 | if($debut==7) $debut=0; |
---|
85 | $jour_semaine_lang=0; |
---|
86 | } |
---|
87 | for ($i=$debut ? $debut : 7;$i>1;$i--) { |
---|
88 | $ligne .= "\n\t<td> </td>"; |
---|
89 | } |
---|
90 | $total = ''; |
---|
91 | for ($j=$premier_jour; $j<=$dernier_jour; $j++) { |
---|
92 | $nom = mktime(1,1,1,$mois,$j,$annee); |
---|
93 | $jour = date("d",$nom); |
---|
94 | $jour_semaine = date("w",$nom); |
---|
95 | $mois_en_cours = date("m",$nom); |
---|
96 | $annee_en_cours = date("Y",$nom); |
---|
97 | $amj = date("Y",$nom) . $mois_en_cours . $jour; |
---|
98 | if ($jour_semaine==$jour_semaine_lang AND $ligne != '') { |
---|
99 | $total .= "\n<tr>$ligne\n</tr>"; |
---|
100 | $ligne = ''; |
---|
101 | } |
---|
102 | $evts = $evenements[$amj]; |
---|
103 | if ($evts) { |
---|
104 | $evts = "<a href=\"".$evts[0]['URL']."\">".$evts[0]['SUMMARY']."</a>"; |
---|
105 | } |
---|
106 | else { |
---|
107 | $evts = intval($jour); |
---|
108 | } |
---|
109 | $ligne .= "\n\t<td".($amj == date("Ymd")?' class="today"':'').">" . $evts . "\n\t</td>"; |
---|
110 | } |
---|
111 | |
---|
112 | // affichage de la fin de semaine hors periode |
---|
113 | if ($lang=='en') { |
---|
114 | for($j=($jour_semaine != 6) ? $jour_semaine + 1 : 7; $j<7; $j++) { |
---|
115 | $ligne .= "\n\t<td> </td>"; |
---|
116 | } |
---|
117 | } else { |
---|
118 | for($j=$jour_semaine ? $jour_semaine : 7; $j<7; $j++) { |
---|
119 | $ligne .= "\n\t<td> </td>"; |
---|
120 | } |
---|
121 | } |
---|
122 | |
---|
123 | return $total . ($ligne ? "\n<tr>$ligne\n</tr>" : ''); |
---|
124 | } |
---|
125 | |
---|
126 | ?> |
---|