function isAffichable($abs, $date, $eleve) { $creneau_col = EdtCreneauPeer::retrieveAllEdtCreneauxOrderByTime(); $test_ouverture = false; foreach ($creneau_col as $creneau) { $datedebutabs = explode(" ", $abs->getDebutAbs()); $dt_date_debut_abs = new DateTime($datedebutabs[0]); $heure_debut = explode(":", $datedebutabs[1]); $dt_date_debut_abs->setTime($heure_debut[0], $heure_debut[1], $heure_debut[2]); $tab_heure = explode(":", $creneau->getHeuredebutDefiniePeriode()); $date->setTime($tab_heure[0], $tab_heure[1], $tab_heure[2]); //on verifie si le creneau est ouvert et s'il est posterieur au debut de l'absence if ($date->Format('U') > $dt_date_debut_abs->Format('U') && EdtHelper::isEtablissementOuvert($date)) { $test_ouverture = true; } } if ($test_ouverture && $abs->getManquementObligationPresence()) { return true; } else { return false; } }
/** * Renvoi le nombre de demi-journées ouvertes entre deux dates de debut ou de fin (ou premier et dernier jour de l'année scolaire si les dates ne sont pas spécifiées * * @param DateTime $date_debut * @param DateTime $date_fin * @return Int $nbre_demi_journees_etab_ouvert */ public static function getNbreDemiJourneesEtabOuvert($date_debut = Null, $date_fin = Null) { //clonage des da&tes de debut et de fin pour ne pas modifier les objets date directement if ($date_debut == Null) { $date_debut_clone = EdtHelper::getPremierJourAnneeScolaire(); } else { $date_debut_clone = clone $date_debut; } $date_debut_clone->setTime(0, 0, 0); if ($date_fin == Null) { $date_fin_clone = EdtHelper::getDernierJourAnneeScolaire(); } else { $date_fin_clone = clone $date_fin; } $date_fin_clone->setTime(23, 59, 59); // on va tester demi journée par demi journée si l'étab est ouvert $nbre_demi_journees_etab_ouvert = 0; while ($date_debut_clone->format('U') < $date_fin_clone->format('U')) { $date_clone = clone $date_debut_clone; if ($date_debut_clone->format('H:i') == "00:00") { $date_clone->setTime(9, 0, 0); //on met 9 heures au cas ou un étab commence à 8h30 par exemple } elseif ($date_debut_clone->format('H:i') == "12:00") { $date_clone->setTime(15, 0, 0); //on met 15 heures pour être dans la demi journée de l'après-midi } else { echo 'Il y a un problème sur les heures'; die; } if (EdtHelper::isEtablissementOuvert($date_clone)) { $nbre_demi_journees_etab_ouvert++; } $date_debut_clone->modify("+12 hours"); } return $nbre_demi_journees_etab_ouvert; }