source: spip-zone/_plugins_/calendrier_mini/spip-1.9/minical_fonctions.php @ 43548

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

Eviter l'inclusion a chaque hit d'un fichier options pour une constante que l'on peut definir dans le fichier fonctions ou elle sert en cas de calcul du squelette

File size: 3.8 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
9include_spip('inc/vieilles_defs');
10if (!defined('VAR_DATE')) define('VAR_DATE', 'archives');
11
12function balise_DATE_ARCHIVES($p) {
13        $p->code = "_request('".VAR_DATE."')";
14
15        #$p->interdire_scripts = true;
16        return $p;
17}
18
19function 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
31function 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
46function 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
65function 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>&nbsp;</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>&nbsp;</td>";
116                }
117        } else {
118                for($j=$jour_semaine ? $jour_semaine : 7; $j<7; $j++) {
119                        $ligne .= "\n\t<td>&nbsp;</td>";
120                }
121        }
122
123     return $total . ($ligne ? "\n<tr>$ligne\n</tr>" : '');
124}
125
126?>
Note: See TracBrowser for help on using the repository browser.