root / controllers / mur_controller.php @ ab86c298
Historique | Voir | Annoter | Télécharger (6,39 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 |
<<<<<<< HEAD
|
35 |
|
36 |
|
37 |
======= |
38 |
>>>>>>> 1d38c428028f230e235f28a6b092e44097e71b5d
|
39 |
/*
|
40 |
Vérifier que le mur existe
|
41 |
*/
|
42 |
|
43 |
$id = getIsMurExiste($_GET["id"]); |
44 |
|
45 |
if (empty($id)) { |
46 |
afficheMurInexistant(); |
47 |
} else {
|
48 |
$mur = getMur($_GET["id"]); |
49 |
|
50 |
|
51 |
// Si on a au préalable inséré une brique et que tout s'est bien passé,
|
52 |
// on le précise à l'utilisateur
|
53 |
$msg=""; |
54 |
if($_GET['ok']=="1") { |
55 |
if ($_SESSION['role']=="user") { |
56 |
$msg = "La brique a été ajoutée au mur"; |
57 |
if ($mur->getMelAdmin()!="") { |
58 |
$msg.=" l'administrateur a été averti"; |
59 |
} else {
|
60 |
$msg.=" elle doit maintenant être validée par l'administrateur du mur"; |
61 |
} |
62 |
} |
63 |
} |
64 |
|
65 |
|
66 |
/*
|
67 |
Vérifier les différents droits d'accès au mur
|
68 |
*/
|
69 |
if ($_SESSION["role"]=="admin") { |
70 |
//debug("role = admin");
|
71 |
if ($_SESSION['mur'] == $mur->getId()) { |
72 |
prepareMur($mur);
|
73 |
} else {
|
74 |
afficheAccesInterdit(); |
75 |
} |
76 |
} else {
|
77 |
|
78 |
//debug("Role = user");
|
79 |
if (isMurPublic($mur)) { |
80 |
//debug("mur public");
|
81 |
$_SESSION["mur"] = $mur->getId(); |
82 |
prepareMur($mur);
|
83 |
} else {
|
84 |
|
85 |
// On vérifie qu'il n'y a pas de tentative réussie de connexion admin
|
86 |
if (isset($_POST["password"])) { |
87 |
//debug("Tentative de connexion admin");
|
88 |
if (isPasswordIdentique($mur->getMdpAdmin(), $_POST["password"])) { |
89 |
//debug("connexion admin réussie");
|
90 |
$_SESSION["role"] = "admin"; |
91 |
$_SESSION["mur"] = $mur->getId(); |
92 |
prepareMur($mur);
|
93 |
} |
94 |
} else {
|
95 |
|
96 |
//debug("mur privé");
|
97 |
if (!isset($_POST["mdp_acces"])) { |
98 |
//debug("pas de mot de passe saisi");
|
99 |
<<<<<<< HEAD
|
100 |
afficheAuthentification($msg);
|
101 |
======= |
102 |
afficheAuthentification("");
|
103 |
>>>>>>> 1d38c428028f230e235f28a6b092e44097e71b5d
|
104 |
} else {
|
105 |
//debug("vérifier le mot de passe");
|
106 |
if (isPasswordIdentique($mur->getMdpAcces(), $_POST["mdp_acces"])) { |
107 |
//debug("Accès au mur privé autorisé");
|
108 |
$_SESSION["mur"] = $mur->getId(); |
109 |
$_SESSION["ident"] = $mur->getId(); |
110 |
prepareMur($mur);
|
111 |
} else {
|
112 |
AfficheAuthentification("Erreur de mot de passe, accès au mur privé impossible"); |
113 |
} |
114 |
} |
115 |
} |
116 |
} |
117 |
} |
118 |
} |
119 |
|
120 |
/**
|
121 |
* Prépare les informations nécessaires à l'affichage d'un mur
|
122 |
* @param [String] $mur [id du mur]
|
123 |
*/
|
124 |
function prepareMur($mur) { |
125 |
// On recherche le nombre de briques à valider
|
126 |
$aValider = getNbBriquesAValider($mur->getId())[0]; |
127 |
$theme = getNomTheme($mur->getTheme()); |
128 |
// On recherche les briques à afficher (ie, celles qui sont validées)
|
129 |
$briques = getBriques($mur->getId()); |
130 |
// et on les transforme en affiche
|
131 |
$affiches = brique2Affiche($briques); |
132 |
|
133 |
// On vérifie s'il n'y a pas de tentative de connexion ADMIN
|
134 |
if(isset($_POST['password']) && ($_POST['password']!="")) { |
135 |
//debug("tentative de connexion");
|
136 |
//if (hash("md5",$_POST['password'])== $infoMur['mdp_admin']) {
|
137 |
if (isPasswordIdentique($mur->getMdpAdmin(),$_POST["password"])) { |
138 |
$login['message'] = ""; |
139 |
$login['role'] = "admin"; |
140 |
$_SESSION['role'] = "admin"; |
141 |
$_SESSION['mur'] = $mur->getId(); |
142 |
} |
143 |
else {
|
144 |
$login['message'] = "Le mot de passe saisi est erroné. "; |
145 |
$login['role'] = "user"; |
146 |
$_SESSION['role'] = "user"; |
147 |
$_SESSION['mur'] = ""; |
148 |
} |
149 |
} else {
|
150 |
$login['message']=""; |
151 |
$login['role'] = $_SESSION['role']; |
152 |
//$login['role'] = "user";
|
153 |
} |
154 |
// Mise à jour de la date de denrier accès au mur (à la date du jour)
|
155 |
verifierDateAcces($mur);
|
156 |
|
157 |
$msg=""; |
158 |
if($_GET['ok']=="1") { |
159 |
if ($_SESSION['role']=="user") { |
160 |
$msg = "La brique a été ajoutée au mur"; |
161 |
if ($mur->getMelAdmin()!="") { |
162 |
$msg.=" l'administrateur a été averti"; |
163 |
} else {
|
164 |
$msg.=" elle doit maintenant être validée par l'administrateur du mur"; |
165 |
} |
166 |
} |
167 |
} |
168 |
|
169 |
|
170 |
// et enfin on peut afficher le mur...
|
171 |
afficheMur($mur,$theme,$affiches,$aValider,$login,$msg); |
172 |
} |
173 |
|
174 |
/**
|
175 |
* Compare la date de dernie accès au mur avec la date du jour et si besoin
|
176 |
* met à jour la date de dernier accès (date du jour)
|
177 |
* @param [Objet] $mur [Instance de Mur]
|
178 |
*/
|
179 |
function verifierDateAcces($mur) { |
180 |
$dateDernierAcces = $mur->getDateAcces(); |
181 |
$dateJour = date("Y-m-d"); |
182 |
//debug($dateDernierAcces);
|
183 |
//debug($dateJour);
|
184 |
if ($dateJour != $dateDernierAcces['date_acces']) { |
185 |
majDateAcces($mur->getId());
|
186 |
} |
187 |
} |
188 |
|
189 |
/**
|
190 |
* Transformer un objet BRIQUE en objet AFFICHE pour un affichage simplifié
|
191 |
* @param [Array] $briques [Tableau Associatif de Briques]
|
192 |
* @return [Array] [Tableau d'objets Affiche]
|
193 |
*/
|
194 |
function brique2Affiche($briques) { |
195 |
$affiches = array(); |
196 |
foreach ($briques as $b) { |
197 |
$affiche = new Affiche($b); |
198 |
array_push($affiches,$affiche); |
199 |
} |
200 |
return $affiches; |
201 |
} |
202 |
|
203 |
/**
|
204 |
* Compare 2 mots de passe chiffrés
|
205 |
* @param [String] $p1 [mot de passe #1 chiffré (issu du mur)]
|
206 |
* @param [String] $p2 [mot de passe #2 non chiffré (issu du formulaire)]
|
207 |
* @return boolean [Vrai si les 2 mots de passe sont identiques]
|
208 |
*/
|
209 |
function isPasswordIdentique($p1, $p2) { |
210 |
return $p1 == hashPassword($p2); |
211 |
} |
212 |
|
213 |
// Renvoi TRUE si le mur est public
|
214 |
function isMurPublic($mur) { |
215 |
return $mur->getMdpAcces()==""; |
216 |
} |