ACM/classe/Classe/gestionJourFerier.php
2025-03-26 10:57:42 +01:00

54 lines
1.9 KiB
PHP

<?php
namespace Module\ACM\Classe\Classe;
use DateTime;
use Module\ACM\Classe\GestionBD\gestionVariableDate;
class gestionJourFerier {
private array $listeJourFerier;
public function __construct() {
$listeJour = gestionVariableDate::getACMFeries();
foreach ($listeJour as $jour) {
if ($jour['regle'] == "fixe"){
$this->listeJourFerier[$jour['nom']] = ["date"=> new DateTime((new DateTime())->format("Y")."-".$jour['mois']."-".$jour['jour']), "actif" => $jour['actif']];
}elseif ($jour['regle'] == "paque"){
$paque =$this->paque(intval((new DateTime())->format("Y")));
$date = $paque->modify("+".$jour['jour']." day");
$this->listeJourFerier[$jour['nom']] = ["date"=> $date, "actif" => $jour['actif']];
}
}
}
public function getListeJourFerier() {
$liste = [];
foreach ($this->listeJourFerier as $key=>$jour) $liste[$key] = $jour["date"];
return $liste;
}
public function getListeJourFerierActif() {
$liste = [];
foreach ($this->listeJourFerier as $key=>$jour)
if ($jour['actif'] == 'actif') $liste[$key] = $jour["date"];
return $liste;
}
private function paque(int $year): \DateTime {
$k = intdiv($year, 100);
$m = 15 + intdiv((3 * $k + 3), 4) - intdiv((8 * $k + 13), 25);
$s = 2 - intdiv((3 * $k + 3), 4);
$a = $year % 19;
$d = (19 * $a + $m) % 30;
$r = intdiv(($d + intdiv($a, 11)), 29);
$og = 21 + $d - $r ;
$sz = 7 - ($year + intdiv($year, 4) + $s) % 7;
$oe = 7 - ($og - $sz) % 7;
$os = $og + $oe;
$result = new \DateTime(sprintf('%04s-03-01', $year));
$result->add(
\DateInterval::createFromDateString(
sprintf('%s days', $os-1)
)
);
return $result;
}
}