[10] | 1 | <?php |
---|
| 2 | /** |
---|
| 3 | * Fichier de filtres communs au plugin Agenda et PIM_agenda |
---|
| 4 | * |
---|
| 5 | */ |
---|
| 6 | |
---|
| 7 | function Agenda_memo_full($date_deb=0, $date_fin=0 , $titre='', $descriptif='', $lieu='', $url='', $cal='') |
---|
| 8 | { |
---|
| 9 | static $agenda = array(); |
---|
| 10 | if (!$date_deb) { |
---|
| 11 | $res = $agenda; |
---|
| 12 | $agenda=array(); |
---|
| 13 | return $res; |
---|
| 14 | } |
---|
| 15 | $url=str_replace("&","&",$url); |
---|
| 16 | |
---|
| 17 | $idatedeb = date_ical($date_deb); |
---|
| 18 | $idatefin = date_ical($date_fin); |
---|
| 19 | $cal = trim($cal); // func_get_args (filtre alterner) rajoute \n !!!! |
---|
| 20 | $startday1=explode(' ',$date_deb); |
---|
| 21 | $startday1=$startday1['0'].' 00:00:00'; |
---|
| 22 | $ts_startday1=strtotime($startday1); |
---|
| 23 | $ts_date_fin=strtotime($date_fin); |
---|
| 24 | $maxdays=365; |
---|
| 25 | while (($ts_startday1<$ts_date_fin)&&($maxdays-->0)) |
---|
| 26 | { |
---|
| 27 | $day=date('Y-m-d H:i:s',$ts_startday1); |
---|
| 28 | $agenda[$cal][(date_anneemoisjour($day))][] = array( |
---|
| 29 | 'CATEGORIES' => $cal, |
---|
| 30 | 'DTSTART' => $idatedeb, |
---|
| 31 | 'DTEND' => $idatefin, |
---|
| 32 | 'DESCRIPTION' => $descriptif, |
---|
| 33 | 'SUMMARY' => $titre, |
---|
| 34 | 'LOCATION' => $lieu, |
---|
| 35 | 'URL' => $url); |
---|
| 36 | $ts_startday1 += 26*3600; // le jour suivant : +26 h pour gerer les changements d'heure |
---|
| 37 | $ts_startday1 = mktime(0, 0, 0, date("m",$ts_startday1), |
---|
| 38 | date("d",$ts_startday1), date("Y",$ts_startday1)); // et remise a zero de l'heure |
---|
| 39 | } |
---|
| 40 | |
---|
| 41 | // toujours retourner vide pour qu'il ne se passe rien |
---|
| 42 | return ""; |
---|
| 43 | } |
---|
| 44 | |
---|
| 45 | function Agenda_memo_evt_full($date_deb=0, $date_fin=0 , $titre='', $descriptif='', $lieu='', $url='', $cal='') |
---|
| 46 | { |
---|
| 47 | static $evenements = array(); |
---|
| 48 | if (!$date_deb) return $evenements; |
---|
| 49 | $url=str_replace("&","&",$url); |
---|
| 50 | |
---|
| 51 | $idatedeb = date_ical(reset(explode(" ",$date_deb))." 00:00:00"); |
---|
| 52 | $idatefin = date_ical(reset(explode(" ",$date_fin))." 00:00:00"); |
---|
| 53 | $cal = trim($cal); // func_get_args (filtre alterner) rajoute \n !!!! |
---|
| 54 | $startday1=explode(' ',$date_deb); |
---|
| 55 | $startday1=$startday1['0'].' 00:00:00'; |
---|
| 56 | $ts_startday1=strtotime($startday1); |
---|
| 57 | $ts_date_fin=strtotime($date_fin); |
---|
| 58 | $maxdays=365; |
---|
| 59 | while (($ts_startday1<$ts_date_fin)&&($maxdays-->0)) |
---|
| 60 | { |
---|
| 61 | $day=date('Y-m-d H:i:s',$ts_startday1); |
---|
| 62 | $evenements[$cal][(date_anneemoisjour($day))][] = array( |
---|
| 63 | 'CATEGORIES' => $cal, |
---|
| 64 | 'DTSTART' => $idatedeb, |
---|
| 65 | 'DTEND' => $idatefin, |
---|
| 66 | 'DESCRIPTION' => $descriptif, |
---|
| 67 | 'SUMMARY' => $titre, |
---|
| 68 | 'LOCATION' => $lieu, |
---|
| 69 | 'URL' => $url); |
---|
| 70 | $ts_startday1 += 26*3600; // le jour suivant : +26 h pour gerer les changements d'heure |
---|
| 71 | $ts_startday1 = mktime(0, 0, 0, date("m",$ts_startday1), |
---|
| 72 | date("d",$ts_startday1), date("Y",$ts_startday1)); // et remise a zero de l'heure |
---|
| 73 | } |
---|
| 74 | |
---|
| 75 | // toujours retourner vide pour qu'il ne se passe rien |
---|
| 76 | return ""; |
---|
| 77 | } |
---|
| 78 | |
---|
| 79 | function Agenda_affiche_full($i) |
---|
| 80 | { |
---|
| 81 | $args = func_get_args(); |
---|
| 82 | $nb = array_shift($args); // nombre d'evenements (on pourrait l'afficher) |
---|
| 83 | $sinon = array_shift($args); |
---|
| 84 | if (!$nb) return $sinon; |
---|
| 85 | $type = array_shift($args); |
---|
| 86 | $agenda = Agenda_memo_full(0); |
---|
| 87 | $evt_avec = array(); |
---|
| 88 | foreach (($args ? $args : array_keys($agenda)) as $k) { |
---|
| 89 | if (isset($agenda[$k])&&is_array($agenda[$k])) |
---|
| 90 | foreach($agenda[$k] as $d => $v) { |
---|
| 91 | $evt_avec[$d] = isset($evt_avec[$d]) ? (array_merge($evt_avec[$d], $v)) : $v; |
---|
| 92 | } |
---|
| 93 | } |
---|
| 94 | |
---|
| 95 | $evenements = Agenda_memo_evt_full(0); |
---|
| 96 | $evt_sans = array(); |
---|
| 97 | foreach (($args ? $args : array_keys($evenements)) as $k) { |
---|
| 98 | if (isset($evenements[$k])&&is_array($evenements[$k])) |
---|
| 99 | foreach($evenements[$k] as $d => $v) { |
---|
| 100 | $evt_sans[$d] = isset($evt_sans[$d]) ? (array_merge($evt_sans[$d], $v)) : $v; |
---|
| 101 | } |
---|
| 102 | } |
---|
| 103 | |
---|
| 104 | |
---|
| 105 | if ($type != 'periode') |
---|
| 106 | $evt = array($evt_sans, $evt_avec); |
---|
| 107 | else |
---|
| 108 | { |
---|
| 109 | $d = array_keys($evt_avec); |
---|
| 110 | $mindate = min($d); |
---|
| 111 | $min = substr($mindate,6,2); |
---|
| 112 | $max = $min + ((strtotime(max($d)) - strtotime($mindate)) / (3600 * 24)); |
---|
| 113 | if ($max < 31) $max = 0; |
---|
| 114 | $evt = array($evt_sans, $evt_avec, $min, $max); |
---|
| 115 | $type = 'mois'; |
---|
| 116 | } |
---|
| 117 | |
---|
| 118 | include_spip('inc/agenda'); |
---|
| 119 | $texte=http_calendrier_init('', $type, '', '', self(), $evt); |
---|
| 120 | |
---|
| 121 | return $texte; |
---|
| 122 | } |
---|
| 123 | |
---|
| 124 | function Agenda_affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui'){ |
---|
| 125 | static $trans_tbl=NULL; |
---|
| 126 | if ($trans_tbl==NULL){ |
---|
| 127 | $trans_tbl = get_html_translation_table (HTML_ENTITIES); |
---|
| 128 | $trans_tbl = array_flip ($trans_tbl); |
---|
| 129 | } |
---|
| 130 | |
---|
| 131 | $date_debut = strtotime($date_debut); |
---|
| 132 | $date_fin = strtotime($date_fin); |
---|
| 133 | $s = ""; |
---|
| 134 | if (($d=date("Y-m-d",$date_debut))==date("Y-m-d",$date_fin)) |
---|
| 135 | { // meme jour |
---|
| 136 | $s = ucfirst(nom_jour($d))." ".affdate_jourcourt($d); |
---|
| 137 | if ($horaire=='oui'){ |
---|
| 138 | $s .= " ".($hd=date("H:i",$date_debut)); |
---|
| 139 | if ($hd!=($hf=date("H:i",$date_fin))) |
---|
| 140 | $s .= "-$hf"; |
---|
| 141 | } |
---|
| 142 | } |
---|
| 143 | else if ((date("Y-m",$date_debut))==date("Y-m",$date_fin)) |
---|
| 144 | { // meme annee et mois, jours differents |
---|
| 145 | $d=date("Y-m-d",$date_debut); |
---|
| 146 | if ($horaire=='oui'){ |
---|
| 147 | $s = _T('agenda:evenement_date_du') . " " . affdate_jourcourt($d); |
---|
| 148 | $s .= " ".($hd=date("H:i",$date_debut)); |
---|
| 149 | $s .= " " . _T('agenda:evenement_date_au').date("d H:i ",$date_fin); |
---|
| 150 | } |
---|
| 151 | else { |
---|
| 152 | $s = _T('agenda:evenement_date_du') . " " . jour($d); |
---|
| 153 | $s .= " " . _T('agenda:evenement_date_au').affdate_jourcourt(date("Y-m-d",$date_fin)); |
---|
| 154 | } |
---|
| 155 | } |
---|
| 156 | else if ((date("Y",$date_debut))==date("Y",$date_fin)) |
---|
| 157 | { // meme annee, mois et jours differents |
---|
| 158 | $d=date("Y-m-d",$date_debut); |
---|
| 159 | $s = _T('agenda:evenement_date_du') . " " . affdate_jourcourt($d); |
---|
| 160 | if ($horaire=='oui') |
---|
| 161 | $s .= " ".date("H:i",$date_debut); |
---|
| 162 | $d = date("Y-m-d",$date_fin); |
---|
| 163 | $s .= " "._T('agenda:evenement_date_au').affdate_jourcourt($d); |
---|
| 164 | if ($horaire=='oui') |
---|
| 165 | $s .= " ".date("H:i",$date_fin); |
---|
| 166 | } |
---|
| 167 | else |
---|
| 168 | { // tout different |
---|
| 169 | $s = _T('agenda:evenement_date_du') . " " . affdate($d); |
---|
| 170 | if ($horaire=='oui') |
---|
| 171 | $s .= " ".date("(H:i)",$date_debut); |
---|
| 172 | $d = date("Y-m-d",$date_fin); |
---|
| 173 | $s .= " "._T('agenda:evenement_date_au').affdate($d); |
---|
| 174 | if ($horaire=='oui') |
---|
| 175 | $s .= " ".date("(H:i)",$date_fin); |
---|
| 176 | } |
---|
| 177 | return unicode2charset(charset2unicode(strtr($s,$trans_tbl),'')); |
---|
| 178 | } |
---|
| 179 | |
---|
| 180 | function Agenda_dateplus($date,$secondes,$format){ |
---|
| 181 | $date = strtotime($date)+eval("return $secondes;"); // permet de passer une expression |
---|
| 182 | return date($format,$date); |
---|
| 183 | } |
---|
| 184 | |
---|
| 185 | // decale les mois de la date. |
---|
| 186 | // cette fonction peut raboter le jour si le nouveau mois ne les contient pas |
---|
| 187 | // exemple 31/01/2007 + 1 mois => 28/02/2007 |
---|
| 188 | function Agenda_moisdecal($date,$decalage,$format){ |
---|
| 189 | include_spip('inc/filtres'); |
---|
| 190 | $date_array = recup_date($date); |
---|
| 191 | if ($date_array) list($annee, $mois, $jour) = $date_array; |
---|
| 192 | if (!$jour) $jour=1; |
---|
| 193 | if (!$mois) $mois=1; |
---|
| 194 | $mois2 = $mois + $decalage; |
---|
| 195 | $date2 = mktime(1, 1, 1, $mois2, $jour, $annee); |
---|
| 196 | // mois normalement attendu |
---|
| 197 | $mois3 = date('m', mktime(1, 1, 1, $mois2, 1, $annee)); |
---|
| 198 | // et si le mois de la nouvelle date a moins de jours... |
---|
| 199 | $mois2 = date('m', $date2); |
---|
| 200 | if ($mois2 - $mois3) $date2 = mktime(1, 1, 1, $mois2, 0, $annee); |
---|
| 201 | return date($format, $date2); |
---|
| 202 | } |
---|
| 203 | |
---|
| 204 | ?> |
---|