Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

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
}
Redmine Appliance - Powered by TurnKey Linux