array('start' => $start, 'end' => $end, 'quoi'=>$quoi), 'data' => $evt, ) ); // format json include_spip('inc/json'); echo json_encode($evt); } /** * Convertir une date au format ical renvoyee par quete_calendrier_interval * dans le format attendu par fullcalendar : yyyy-mm-dd H:i:s * @param $dateical * @return string */ function convert_dateical($dateical){ $d = explode('T',$dateical); $amj = reset($d); $s = substr($amj,0,4).'-'.substr($amj,4,2).'-'.substr($amj,6,2); if (count($d)>1){ $his = end($d); $s .= ' '.substr($his,0,2).":".substr($his,2,2).":".substr($his,4,2); } return $s; } /** * Convertir une sortie événement de quète calendrier_interval * dans le format attendu par fullcalendar * * @param array $messages * Les événements / messages au format de la quete calendrier_interval * @param array $evt * Les événements au format fullcalendar déjà présents * @return array * Les événements au format fullcalendar **/ function convert_fullcalendar_quete_calendrier_interval($messages, $evt = array()) { if (!$messages) return $evt; // la retransformer au format attendu par fullcalendar // facile : chaque evt n'est mentionne qu'une fois, a une date foreach($messages as $amj=>$l){ $date = substr($amj,0,4).'-'.substr($amj,4,2).'-'.substr($amj,6,2); foreach($l as $e){ $evt[] = array( 'id' => 0, 'title' => $e['SUMMARY'], 'allDay' => true, 'start' => $date, 'end' => $date, 'url' => str_replace('&','&',$e['URL']), 'className' => "calendrier-event ".$e['CATEGORIES'], 'description' => $e['DESCRIPTION'], ); } } return $evt; } /** * Convertir une sortie événement de quete calendrier_interval_rv * dans le format attendu par fullcalendar * * @param array $messages * Les événements / messages au format issu de la quete calendrier_interval_rv * @param array $evt * Les événements au format fullcalendar déjà présents * @return array * Les événements au format fullcalendar **/ function convert_fullcalendar_quete_calendrier_interval_rv($messages, $evt = array()) { if (!$messages) return $evt; // ici il faut faire attention : un evt apparait N fois // mais on a son id $seen = array(); // toutes les messages déjà inscrits qu'on ne remet pas foreach ($evt as $e) { $seen[$e['url']] = true; } foreach($messages as $amj=>$l){ foreach($l as $id=>$e){ $url = str_replace('&','&',$e['URL']); if (!isset($seen[$url])) { $evt[] = array( 'id' => $id, 'title' => $e['SUMMARY'], 'allDay' => false, 'start' => convert_dateical($e['DTSTART']), //Ymd\THis 'end' => convert_dateical($e['DTEND']), // Ymd\THis 'url' => $url, 'className' => "calendrier-event ".$e['CATEGORIES'], 'description' => $e['DESCRIPTION'], ); $seen[$url] = true; } } } return $evt; }