Exemple #1
0
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;
    }
}
Exemple #2
0
 /**
  * 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;
 }