X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins-dist%2Forganiseur%2Faction%2Fquete_calendrier_prive.php;fp=www%2Fplugins-dist%2Forganiseur%2Faction%2Fquete_calendrier_prive.php;h=4e1921f4e6d2589d4115ad3826b9c0fdabe98dd5;hb=a33c2ba9d919664b3bb0f565f8e9a8b9d8530cdb;hp=0000000000000000000000000000000000000000;hpb=8945248b3d948385798d9aa355c70e7089aca2b3;p=lhc%2Fweb%2Fclavette_www.git diff --git a/www/plugins-dist/organiseur/action/quete_calendrier_prive.php b/www/plugins-dist/organiseur/action/quete_calendrier_prive.php new file mode 100644 index 0000000..4e1921f --- /dev/null +++ b/www/plugins-dist/organiseur/action/quete_calendrier_prive.php @@ -0,0 +1,161 @@ + 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; +}