/** Fonction qui remplis un tableau de cours. * Utilise icalendar. */ public function getCours() { /* Parse l'ics*/ $nb = 0; $tab = array(); $ical = new SG_iCalReader($this->ICS); $query = new SG_iCal_Query(); $evts = $ical->getEvents(); $data = array(); if (!is_array($evts)) { echo "ERREUR, d'initialisation des evenements."; echo '<br>$evts= ' . $evts; } foreach ($evts as $id => $ev) { $jsEvt = array("id" => $id + 1, "title" => $ev->getProperty('summary'), "start" => $ev->getStart(), "end" => $ev->getEnd(), "allDay" => $ev->isWholeDay(), "location" => $ev->getProperty('location'), "description" => $ev->getProperty('description')); if (isset($ev->recurrence)) { $count = 0; $start = $ev->getStart(); $freq = $ev->getFrequency(); if ($freq->firstOccurrence() == $start) { $data[] = $jsEvt; } while (($next = $freq->nextOccurrence($start)) > 0) { if (!$next or $count >= 1000) { break; } $count++; $start = $next; $jsEvt["start"] = $start; $jsEvt["end"] = $start + $ev->getDuration(); $data[] = $jsEvt; } } else { $data[] = $jsEvt; } $String2 = htmlentities($jsEvt["description"], ENT_QUOTES, "UTF-8"); $String = nl2br($String2); $sum = htmlentities($jsEvt["title"], ENT_QUOTES, "UTF-8"); $sum2 = nl2br($sum); $Matiere = between('Matière : ', '<br />', $String); $prof = between('Personnel : ', '<br />', $String); $promo = between('Groupe : ', 'Groupe ', $String); $tmp = between('Groupe :', 'Salle ', $String); $sous_groupe = rtrim(trim(stripslashes(after('-', $tmp)))); if ($sous_groupe == "") { $sous_groupe = "0"; } $tabGroupe = array(); $promo = trim($promo); $tmp_groupe = between('Groupe :', 'Salle', $String2); //--> 'INFO 2 Groupe 2\, INFO 2 Groupe 3' // echo $tmp.'<br/>'; $tmp_tab = explode(",", $tmp_groupe); foreach ($tmp_tab as $g) { if (strpos($g, 'TP') !== FALSE) { $tmp = between("TP ", "-", $String2); } else { $tmp = after($promo . ' Groupe ', $g); $tmp = trim(stripslashes($tmp)); // Enlève antislash et les espaces if ($tmp == "") { $tmp = "0"; } } array_push($tabGroupe, $tmp); } $type = before(' -', $sum2); $salle = between('Salle : ', '<br />', $String); $date_debut = $jsEvt['start']; $date_fin = $jsEvt['end']; $date = new DateTime('@' . $date_debut); /* Instancie les BEANs*/ $cours = new Cours(); $cours->setDateDebut($date_debut); $cours->setMatiere($Matiere); $cours->setDateFin($date_fin); $cours->setType($type); $cours->setProf($prof); $cours->setSalle($salle); foreach ($tabGroupe as $g) { $Groupe = new Groupe(); $Groupe->setSousGroupe($sous_groupe[0]); $Groupe->setNumero($g); $Groupe->setPromo($promo); $cours->setGroupe($Groupe); } $cours->setId(); $tab[$nb++] = $cours; sort($tab); // Noé array_push($this->tab_cours, $cours); } }