[6] | 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 += 24*3600; // le jour suivant |
---|
| 37 | } |
---|
| 38 | |
---|
| 39 | // toujours retourner vide pour qu'il ne se passe rien |
---|
| 40 | return ""; |
---|
| 41 | } |
---|
| 42 | |
---|
| 43 | function Agenda_memo_evt_full($date_deb=0, $date_fin=0 , $titre='', $descriptif='', $lieu='', $url='', $cal='') |
---|
| 44 | { |
---|
| 45 | static $evenements = array(); |
---|
| 46 | if (!$date_deb) return $evenements; |
---|
| 47 | $url=str_replace("&","&",$url); |
---|
| 48 | |
---|
| 49 | $idatedeb = date_ical(reset(explode(" ",$date_deb))." 00:00:00"); |
---|
| 50 | $idatefin = date_ical(reset(explode(" ",$date_fin))." 00:00:00"); |
---|
| 51 | $cal = trim($cal); // func_get_args (filtre alterner) rajoute \n !!!! |
---|
| 52 | $startday1=explode(' ',$date_deb); |
---|
| 53 | $startday1=$startday1['0'].' 00:00:00'; |
---|
| 54 | $ts_startday1=strtotime($startday1); |
---|
| 55 | $ts_date_fin=strtotime($date_fin); |
---|
| 56 | $maxdays=365; |
---|
| 57 | while (($ts_startday1<$ts_date_fin)&&($maxdays-->0)) |
---|
| 58 | { |
---|
| 59 | $day=date('Y-m-d H:i:s',$ts_startday1); |
---|
| 60 | $evenements[$cal][(date_anneemoisjour($day))][] = array( |
---|
| 61 | 'CATEGORIES' => $cal, |
---|
| 62 | 'DTSTART' => $idatedeb, |
---|
| 63 | 'DTEND' => $idatefin, |
---|
| 64 | 'DESCRIPTION' => $descriptif, |
---|
| 65 | 'SUMMARY' => $titre, |
---|
| 66 | 'LOCATION' => $lieu, |
---|
| 67 | 'URL' => $url); |
---|
| 68 | $ts_startday1 += 24*3600; // le jour suivant |
---|
| 69 | } |
---|
| 70 | |
---|
| 71 | // toujours retourner vide pour qu'il ne se passe rien |
---|
| 72 | return ""; |
---|
| 73 | } |
---|
| 74 | |
---|
| 75 | function Agenda_affiche_full($i) |
---|
| 76 | { |
---|
| 77 | $args = func_get_args(); |
---|
| 78 | $nb = array_shift($args); // nombre d'evenements (on pourrait l'afficher) |
---|
| 79 | $sinon = array_shift($args); |
---|
| 80 | if (!$nb) return $sinon; |
---|
| 81 | $type = array_shift($args); |
---|
| 82 | $agenda = Agenda_memo_full(0); |
---|
| 83 | $evt_avec = array(); |
---|
| 84 | foreach (($args ? $args : array_keys($agenda)) as $k) { |
---|
| 85 | if (isset($agenda[$k])&&is_array($agenda[$k])) |
---|
| 86 | foreach($agenda[$k] as $d => $v) { |
---|
| 87 | $evt_avec[$d] = isset($evt_avec[$d]) ? (array_merge($evt_avec[$d], $v)) : $v; |
---|
| 88 | } |
---|
| 89 | } |
---|
| 90 | |
---|
| 91 | $evenements = Agenda_memo_evt_full(0); |
---|
| 92 | $evt_sans = array(); |
---|
| 93 | foreach (($args ? $args : array_keys($evenements)) as $k) { |
---|
| 94 | if (isset($evenements[$k])&&is_array($evenements[$k])) |
---|
| 95 | foreach($evenements[$k] as $d => $v) { |
---|
| 96 | $evt_sans[$d] = isset($evt_sans[$d]) ? (array_merge($evt_sans[$d], $v)) : $v; |
---|
| 97 | } |
---|
| 98 | } |
---|
| 99 | |
---|
| 100 | |
---|
| 101 | if ($type != 'periode') |
---|
| 102 | $evt = array($evt_sans, $evt_avec); |
---|
| 103 | else |
---|
| 104 | { |
---|
| 105 | $d = array_keys($evt_avec); |
---|
| 106 | $mindate = min($d); |
---|
| 107 | $min = substr($mindate,6,2); |
---|
| 108 | $max = $min + ((strtotime(max($d)) - strtotime($mindate)) / (3600 * 24)); |
---|
| 109 | if ($max < 31) $max = 0; |
---|
| 110 | $evt = array($evt_sans, $evt_avec, $min, $max); |
---|
| 111 | $type = 'mois'; |
---|
| 112 | } |
---|
| 113 | |
---|
| 114 | include_spip('inc/agenda'); |
---|
| 115 | $texte=http_calendrier_init('', $type, '', '', self(), $evt); |
---|
| 116 | |
---|
| 117 | return $texte; |
---|
| 118 | } |
---|
| 119 | |
---|
| 120 | function Agenda_affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui'){ |
---|
| 121 | static $trans_tbl=NULL; |
---|
| 122 | if ($trans_tbl==NULL){ |
---|
| 123 | $trans_tbl = get_html_translation_table (HTML_ENTITIES); |
---|
| 124 | $trans_tbl = array_flip ($trans_tbl); |
---|
| 125 | } |
---|
| 126 | |
---|
| 127 | $date_debut = strtotime($date_debut); |
---|
| 128 | $date_fin = strtotime($date_fin); |
---|
| 129 | $s = ""; |
---|
| 130 | if (($d=date("Y-m-d",$date_debut))==date("Y-m-d",$date_fin)) |
---|
| 131 | { // meme jour |
---|
| 132 | $s = ucfirst(nom_jour($d))." ".affdate_jourcourt($d); |
---|
| 133 | if ($horaire=='oui'){ |
---|
| 134 | $s .= " ".($hd=date("H:i",$date_debut)); |
---|
| 135 | if ($hd!=($hf=date("H:i",$date_fin))) |
---|
| 136 | $s .= "-$hf"; |
---|
| 137 | } |
---|
| 138 | } |
---|
| 139 | else if ((date("Y-m",$date_debut))==date("Y-m",$date_fin)) |
---|
| 140 | { // meme annee et mois, jours differents |
---|
| 141 | $d=date("Y-m-d",$date_debut); |
---|
| 142 | if ($horaire=='oui'){ |
---|
| 143 | $s = _T('agenda:evenement_date_du') . " " . affdate_jourcourt($d); |
---|
| 144 | $s .= " ".($hd=date("H:i",$date_debut)); |
---|
| 145 | $s .= " " . _T('agenda:evenement_date_au').date("d H:i ",$date_fin); |
---|
| 146 | } |
---|
| 147 | else { |
---|
| 148 | $s = _T('agenda:evenement_date_du') . " " . jour($d); |
---|
| 149 | $s .= " " . _T('agenda:evenement_date_au').affdate_jourcourt(date("Y-m-d",$date_fin)); |
---|
| 150 | } |
---|
| 151 | } |
---|
| 152 | else if ((date("Y",$date_debut))==date("Y",$date_fin)) |
---|
| 153 | { // meme annee, mois et jours differents |
---|
| 154 | $d=date("Y-m-d",$date_debut); |
---|
| 155 | $s = _T('agenda:evenement_date_du') . " " . affdate_jourcourt($d); |
---|
| 156 | if ($horaire=='oui') |
---|
| 157 | $s .= " ".date("H:i",$date_debut); |
---|
| 158 | $d = date("Y-m-d",$date_fin); |
---|
| 159 | $s .= " "._T('agenda:evenement_date_au').affdate_jourcourt($d); |
---|
| 160 | if ($horaire=='oui') |
---|
| 161 | $s .= " ".date("H:i",$date_fin); |
---|
| 162 | } |
---|
| 163 | else |
---|
| 164 | { // tout different |
---|
| 165 | $s = _T('agenda:evenement_date_du') . " " . affdate($d); |
---|
| 166 | if ($horaire=='oui') |
---|
| 167 | $s .= " ".date("(H:i)",$date_debut); |
---|
| 168 | $d = date("Y-m-d",$date_fin); |
---|
| 169 | $s .= " "._T('agenda:evenement_date_au').affdate($d); |
---|
| 170 | if ($horaire=='oui') |
---|
| 171 | $s .= " ".date("(H:i)",$date_fin); |
---|
| 172 | } |
---|
| 173 | return unicode2charset(charset2unicode(strtr($s,$trans_tbl),'')); |
---|
| 174 | } |
---|
| 175 | |
---|
| 176 | function Agenda_dateplus($date,$secondes,$format){ |
---|
| 177 | $date = strtotime($date)+eval("return $secondes;"); // permet de passer une expression |
---|
| 178 | return date($format,$date); |
---|
| 179 | } |
---|
| 180 | ?> |
---|