54 lines
1.9 KiB
PHP
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;
|
|
}
|
|
|
|
} |