source: spip-zone/_plugins_/calendrier_mini/dev/minical_fonctions.php @ 5349

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

plugin calendrier_mini versionné (et toujours en phase de test)

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