This repository has been archived by the owner on Jul 22, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 62
/
Copy pathcalendrier.php
120 lines (102 loc) · 4.39 KB
/
calendrier.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
include_once INCLUDE_PATH . 'session.php';
/**
* @return bool
*/
function canSessionVoirEvenementEnTransit(array $donneesUtilisateur)
{
return (isset($donneesUtilisateur['is_resp']) && 'Y' === $donneesUtilisateur['is_resp'])
|| (isset($donneesUtilisateur['is_rh']) && 'Y' === $donneesUtilisateur['is_rh'])
|| (isset($donneesUtilisateur['is_admin']) && 'Y' === $donneesUtilisateur['is_admin']);
}
function getUrlMois(\DateTimeInterface $date, $idGroupe)
{
$urlCalendrier = ROOT_PATH . 'calendrier';
$queryBase = [
'groupe' => $idGroupe,
];
return $urlCalendrier . '?' . http_build_query($queryBase + ['mois' => $date->format('Y-m')]);
}
function getClassesJour(\App\Libraries\Calendrier\Evenements $evenements, $nom, $jour, \DateTimeInterface $moisDemande)
{
return implode(' ', $evenements->getEvenementsDate($nom, $jour));
}
function getTitleJour(\App\Libraries\Calendrier\Evenements $evenements, $nom, $jour)
{
$title = implode('<br>* ', $evenements->getTitleDate($nom, $jour));
if (!empty($title)) {
return '* ' . $title;
}
return '';
}
$sql = \includes\SQL::singleton();
$config = new \App\Libraries\Configuration($sql);
$isICalActive = $config->isIcalActive();
$injectableCreator = new \App\Libraries\InjectableCreator($sql, $config);
$calendar = new \CalendR\Calendar();
$jourDemande = null;
$moisDemande = null;
if (!empty($_GET['jour']) && false !== strtotime($_GET['jour'])) {
$jourDemande = new \DateTimeImmutable($_GET['jour']);
} elseif (!empty($_GET['mois']) && false !== strtotime($_GET['mois'] . '-01')) {
$moisDemande = new \DateTimeImmutable($_GET['mois'] . '-01');
} else {
$moisDemande = new \DateTimeImmutable(date('Y-m') . '-01');
}
$evenements = new \App\Libraries\Calendrier\Evenements($injectableCreator);
$groupesAVoir = $groupesVisiblesUtilisateur = \App\ProtoControllers\Utilisateur::getListeGroupesVisibles($_SESSION['userlogin']);
$idGroupe = NIL_INT;
if (!empty($_GET['groupe']) && NIL_INT != $_GET['groupe']) {
$idGroupe = (int) $_GET['groupe'];
$groupesAVoir = array_intersect([$idGroupe], $groupesAVoir);
}
// Récupération des responsables pour les afficher avant les membres des groupes concernés.
$responsablesATrouver = \App\ProtoControllers\Groupe\Responsable::getListResponsableByGroupeIds($groupesAVoir);
$utilisateursATrouver = \App\ProtoControllers\Groupe\Utilisateur::getListUtilisateurByGroupeIds($groupesAVoir);
// Merge obligatoire pour que les responsables soient
// pris en compte lors du "fetchEvenements" et affichés par le fichier "Jour.php".
$utilisateursATrouver = array_merge($responsablesATrouver, $utilisateursATrouver);
$tousEmployes = \App\ProtoControllers\Utilisateur::getDonneesTousUtilisateurs($config);
$employes = array_filter($tousEmployes, function ($employe) use ($utilisateursATrouver) {
return 'Y' == $employe['u_is_active'] && in_array($employe['u_login'], $utilisateursATrouver);
});
$employesATrouver = [];
foreach ($employes as $employe) {
$employesATrouver[$employe['u_login']] = [
'nom' => \App\ProtoControllers\Utilisateur::getNomComplet($employe['u_prenom'], $employe['u_nom'], true),
'isResponsable' => \App\ProtoControllers\Utilisateur::isResponsable($employe['u_login']),
];
}
$responsablesPremier = function (array $a, array $b) {
if ($a['isResponsable'] && !$b['isResponsable']) {
return -1;
} elseif (!$a['isResponsable'] && $b['isResponsable']) {
return 1;
}
return strcmp($a['nom'], $b['nom']);
};
uasort($employesATrouver, $responsablesPremier);
// Cette variable est utilisée par le fichier "Mois.php" pour ajouter
// une séparation visuelle entre les responsables et les autres utilisateurs.
$indexSeparator = count($responsablesATrouver);
header_menu('', 'Libertempo : '._('calendrier_titre'));
if ($jourDemande instanceof \DateTimeInterface) {
$evenements->fetchEvenements(
$jourDemande,
$jourDemande->modify('+1 day'),
$utilisateursATrouver,
canSessionVoirEvenementEnTransit($_SESSION),
$config->isHeuresAutorise()
);
require_once VIEW_PATH . 'Calendrier/Jour.php';
} else {
$evenements->fetchEvenements(
$moisDemande,
$moisDemande->modify('+1 month'),
$utilisateursATrouver,
canSessionVoirEvenementEnTransit($_SESSION),
$config->isHeuresAutorise()
);
require_once VIEW_PATH . 'Calendrier/Mois.php';
}
bottom();