-
Notifications
You must be signed in to change notification settings - Fork 0
/
plnCalendrierMois.class.php
61 lines (51 loc) · 1.84 KB
/
plnCalendrierMois.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
if (!defined('PLX_ROOT')) exit;
class plnCalendrierMois
{
protected $Tableau; # Tableau d'objets plnCalendrierJour trié en ordre chronologique croissant
protected $Year; # L'année à laquelle le mois appartient
protected $Month; # Le numéro du mois
protected $SemaineEtNumero; # Tableau de tableaux d'objets plnCalendrierJour triés par semaine puis numéro d'apparition dans la semaine
// La date est fournie sous la forme "o-m" (YYYY-MM)
public function __construct($Date)
{
$this->Tableau = array();
$this->SemaineEtNumero = array();
$this->Year = substr($Date,0,4);
$this->Month = substr($Date,5,2);
$CurrentDay = 1;
while(checkdate($this->Month,$CurrentDay,$this->Year))
{
$this->addJour($Date."-".sprintf("%02d",$CurrentDay));
$CurrentDay++;
}
}
protected function addJour($Date)
{
$Jour = new plnCalendrierJour($Date);
if($Jour->Semaine == "53") // La semaine 53 correspond en fait à la semaine 1 de l'année suivante
$Jour->Semaine = "01";
$this->Tableau[] = $Jour;
if(!isset($this->SemaineEtNumero[$Jour->Semaine]))
$this->SemaineEtNumero[$Jour->Semaine] = array();
$this->SemaineEtNumero[$Jour->Semaine][$Jour->NumeroDansSemaine] = $Jour;
}
// A partir du numéro de semaine (par exemple 44) et du numéro du jour (par exemple 2 pour mardi) on récupère le jour correspondant
public function getDayFromWeekAndNumber($Semaine,$Numero)
{
$Semaine = sprintf("%02d",$Semaine);
if(isset($this->SemaineEtNumero[$Semaine][$Numero]))
return $this->SemaineEtNumero[$Semaine][$Numero];
return false;
}
// On récupère un array contenant toutes les semaines du mois
public function getWeeks()
{
return array_keys($this->SemaineEtNumero);
}
// On récupère un array contenant toutes les jours du mois
public function getDays()
{
return $this->Tableau;
}
}