root / controllers / mur_controller.php @ acd7c547
Historique | Voir | Annoter | Télécharger (6,22 ko)
1 |
<?php
|
---|---|
2 |
/************************************************************************************
|
3 |
*
|
4 |
* Projet AbulEdu Mur de Classe - Licence: GNU/Affero GPL v3 ou +
|
5 |
*
|
6 |
* (c) 2020 Frédéric Adamczak <fred@fadamczak.fr>
|
7 |
*
|
8 |
* This file is part of AbulEdu Mur de Classe.
|
9 |
*
|
10 |
* AbulEdu Mur de Classe is free software: you can redistribute it and/or modify
|
11 |
* it under the terms of the GNU Affero General Public License as published by
|
12 |
* the Free Software Foundation, either version 3 of the License, or
|
13 |
* (at your option) any later version.
|
14 |
*
|
15 |
* AbulEdu Mur de Classe is distributed in the hope that it will be useful,
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18 |
* GNU Affero General Public License for more details.
|
19 |
*
|
20 |
* You should have received a copy of the GNU General Public License
|
21 |
* along with ClicAlbum. If not, see <https://www.gnu.org/licenses/>.
|
22 |
*
|
23 |
************************************************************************************/
|
24 |
|
25 |
include_once("_classes/MyException.php"); |
26 |
include_once("_classes/Mur.php"); |
27 |
include_once("_classes/Theme.php"); |
28 |
include_once("_classes/Brique.php"); |
29 |
include_once("_classes/Affiche.php"); |
30 |
|
31 |
//getVar();
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
/*
|
38 |
Vérifier que le mur existe
|
39 |
*/
|
40 |
|
41 |
$id = getIsMurExiste($_GET["id"]); |
42 |
|
43 |
if (empty($id)) { |
44 |
afficheMurInexistant(); |
45 |
} else {
|
46 |
$mur = getMur($_GET["id"]); |
47 |
|
48 |
|
49 |
// Si on a au préalable inséré une brique et que tout s'est bien passé,
|
50 |
// on le précise à l'utilisateur
|
51 |
$msg=""; |
52 |
if($_GET['ok']=="1") { |
53 |
if ($_SESSION['role']=="user") { |
54 |
$msg = "La brique a été ajoutée au mur"; |
55 |
if ($mur->getMelAdmin()!="") { |
56 |
$msg.=" l'administrateur a été averti"; |
57 |
} else {
|
58 |
$msg.=" elle doit maintenant être validée par l'administrateur du mur"; |
59 |
} |
60 |
} |
61 |
} |
62 |
|
63 |
|
64 |
/*
|
65 |
Vérifier les différents droits d'accès au mur
|
66 |
*/
|
67 |
if ($_SESSION["role"]=="admin") { |
68 |
//debug("role = admin");
|
69 |
if ($_SESSION['mur'] == $mur->getId()) { |
70 |
prepareMur($mur);
|
71 |
} else {
|
72 |
afficheAccesInterdit(); |
73 |
} |
74 |
} else {
|
75 |
|
76 |
//debug("Role = user");
|
77 |
if (isMurPublic($mur)) { |
78 |
//debug("mur public");
|
79 |
$_SESSION["mur"] = $mur->getId(); |
80 |
prepareMur($mur);
|
81 |
} else {
|
82 |
|
83 |
// On vérifie qu'il n'y a pas de tentative réussie de connexion admin
|
84 |
if (isset($_POST["password"])) { |
85 |
//debug("Tentative de connexion admin");
|
86 |
if (isPasswordIdentique($mur->getMdpAdmin(), $_POST["password"])) { |
87 |
//debug("connexion admin réussie");
|
88 |
$_SESSION["role"] = "admin"; |
89 |
$_SESSION["mur"] = $mur->getId(); |
90 |
prepareMur($mur);
|
91 |
} |
92 |
} else {
|
93 |
|
94 |
//debug("mur privé");
|
95 |
if (!isset($_POST["mdp_acces"])) { |
96 |
//debug("pas de mot de passe saisi");
|
97 |
|
98 |
afficheAuthentification($msg);
|
99 |
|
100 |
} else {
|
101 |
//debug("vérifier le mot de passe");
|
102 |
if (isPasswordIdentique($mur->getMdpAcces(), $_POST["mdp_acces"])) { |
103 |
//debug("Accès au mur privé autorisé");
|
104 |
$_SESSION["mur"] = $mur->getId(); |
105 |
$_SESSION["ident"] = $mur->getId(); |
106 |
prepareMur($mur);
|
107 |
} else {
|
108 |
AfficheAuthentification("Erreur de mot de passe, accès au mur privé impossible"); |
109 |
} |
110 |
} |
111 |
} |
112 |
} |
113 |
} |
114 |
} |
115 |
|
116 |
/**
|
117 |
* Prépare les informations nécessaires à l'affichage d'un mur
|
118 |
* @param [String] $mur [id du mur]
|
119 |
*/
|
120 |
function prepareMur($mur) { |
121 |
// On recherche le nombre de briques à valider
|
122 |
$aValider = getNbBriquesAValider($mur->getId())[0]; |
123 |
$theme = getNomTheme($mur->getTheme()); |
124 |
// On recherche les briques à afficher (ie, celles qui sont validées)
|
125 |
$briques = getBriques($mur->getId()); |
126 |
// et on les transforme en affiche
|
127 |
$affiches = brique2Affiche($briques); |
128 |
|
129 |
// On vérifie s'il n'y a pas de tentative de connexion ADMIN
|
130 |
if(isset($_POST['password']) && ($_POST['password']!="")) { |
131 |
//debug("tentative de connexion");
|
132 |
//if (hash("md5",$_POST['password'])== $infoMur['mdp_admin']) {
|
133 |
if (isPasswordIdentique($mur->getMdpAdmin(),$_POST["password"])) { |
134 |
$login['message'] = ""; |
135 |
$login['role'] = "admin"; |
136 |
$_SESSION['role'] = "admin"; |
137 |
$_SESSION['mur'] = $mur->getId(); |
138 |
} |
139 |
else {
|
140 |
$login['message'] = "Le mot de passe saisi est erroné. "; |
141 |
$login['role'] = "user"; |
142 |
$_SESSION['role'] = "user"; |
143 |
$_SESSION['mur'] = ""; |
144 |
} |
145 |
} else {
|
146 |
$login['message']=""; |
147 |
$login['role'] = $_SESSION['role']; |
148 |
//$login['role'] = "user";
|
149 |
} |
150 |
// Mise à jour de la date de denrier accès au mur (à la date du jour)
|
151 |
verifierDateAcces($mur);
|
152 |
|
153 |
$msg=""; |
154 |
if($_GET['ok']=="1") { |
155 |
if ($_SESSION['role']=="user") { |
156 |
$msg = "La brique a été ajoutée au mur"; |
157 |
if ($mur->getMelAdmin()!="") { |
158 |
$msg.=" l'administrateur a été averti"; |
159 |
} else {
|
160 |
$msg.=" elle doit maintenant être validée par l'administrateur du mur"; |
161 |
} |
162 |
} |
163 |
} |
164 |
|
165 |
|
166 |
// et enfin on peut afficher le mur...
|
167 |
afficheMur($mur,$theme,$affiches,$aValider,$login,$msg); |
168 |
} |
169 |
|
170 |
/**
|
171 |
* Compare la date de dernie accès au mur avec la date du jour et si besoin
|
172 |
* met à jour la date de dernier accès (date du jour)
|
173 |
* @param [Objet] $mur [Instance de Mur]
|
174 |
*/
|
175 |
function verifierDateAcces($mur) { |
176 |
$dateDernierAcces = $mur->getDateAcces(); |
177 |
$dateJour = date("Y-m-d"); |
178 |
//debug($dateDernierAcces);
|
179 |
//debug($dateJour);
|
180 |
if ($dateJour != $dateDernierAcces['date_acces']) { |
181 |
majDateAcces($mur->getId());
|
182 |
} |
183 |
} |
184 |
|
185 |
/**
|
186 |
* Transformer un objet BRIQUE en objet AFFICHE pour un affichage simplifié
|
187 |
* @param [Array] $briques [Tableau Associatif de Briques]
|
188 |
* @return [Array] [Tableau d'objets Affiche]
|
189 |
*/
|
190 |
function brique2Affiche($briques) { |
191 |
$affiches = array(); |
192 |
foreach ($briques as $b) { |
193 |
$affiche = new Affiche($b); |
194 |
array_push($affiches,$affiche); |
195 |
} |
196 |
return $affiches; |
197 |
} |
198 |
|
199 |
/**
|
200 |
* Compare 2 mots de passe chiffrés
|
201 |
* @param [String] $p1 [mot de passe #1 chiffré (issu du mur)]
|
202 |
* @param [String] $p2 [mot de passe #2 non chiffré (issu du formulaire)]
|
203 |
* @return boolean [Vrai si les 2 mots de passe sont identiques]
|
204 |
*/
|
205 |
function isPasswordIdentique($p1, $p2) { |
206 |
return $p1 == hashPassword($p2); |
207 |
} |
208 |
|
209 |
// Renvoi TRUE si le mur est public
|
210 |
function isMurPublic($mur) { |
211 |
return $mur->getMdpAcces()==""; |
212 |
} |