Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

root / controllers / mur_controller.php @ 232b0a2c

Historique | Voir | Annoter | Télécharger (3,96 ko)

1
<?php
2
include_once("_classes/MyException.php");
3
include_once("_classes/Mur.php");
4
include_once("_classes/Theme.php");
5
include_once("_classes/Brique.php");
6
include_once("_classes/Affiche.php");
7

    
8
//getVar();
9

    
10
/*
11
    Vérifier que le mur existe
12
*/
13

    
14
$id = getIsMurExiste($_GET["id"]);
15

    
16
if (empty($id)) {
17
  afficheMurInexistant();
18
} else {
19
  $mur = getMur($_GET["id"]);
20
  /*
21
      Vérifier les différents droits d'accès au mur
22
  */
23
  if ($_SESSION["role"]=="admin") {
24
    //debug("role = admin");
25
    if ($_SESSION['mur'] == $mur->getId()) {
26
      prepareMur($mur);
27
    } else {
28
      afficheAccesInterdit();
29
    }
30
  } else {
31
    //debug("Role = user");
32
    if (isMurPublic($mur)) {
33
      //debug("mur public");
34
      $_SESSION["mur"] = $mur->getId();
35
      prepareMur($mur);
36
    } else {
37
      //debug("mur privé");
38
      if (!isset($_POST["mdp_acces"])) {
39
        //debug("pas de mot de passe sasi");
40
        afficheAuthentification("");
41
      } else {
42
        //debug("vérifier le mot de passe");
43
        if (isPasswordIdentique($mur->getMdpAdmin(), $_POST["mdp_acces"])) {
44
          debug("Accès au mur privé autorisé");
45
          $_SESSION["mur"]   = $mur->getId();
46
          $_SESSION["ident"] = $mur->getId();
47
          prepareMur($mur);
48
        } else {
49
          AfficheAuthentification("Erreur de mot de passe, accès au mur privé impossible");
50
        }
51
      }
52
    }
53
  }
54
}
55

    
56
/**
57
 * Prépare les informations nécessaires à l'affichage d'un mur
58
 * @param  [String] $mur [id du mur]
59
 */
60
function prepareMur($mur) {
61
  // On recherche le nombre de briques à valider
62
  $aValider = getNbBriquesAValider($mur->getId())[0];
63
  $theme = getNomTheme($mur->getTheme());
64
  // On recherche les briques à afficher (ie, celles qui sont validées)
65
  $briques = getBriques($mur->getId());
66
  // et on les transforme en affiche
67
  $affiches = brique2Affiche($briques);
68

    
69
  // On vérifie s'il n'y a pas de tentative de connexion ADMIN
70
  if(isset($_POST['password']) && ($_POST['password']!="")) {
71
    //debug("tentative de connexion");
72
    //if (hash("md5",$_POST['password'])== $infoMur['mdp_admin']) {
73
    if (isPasswordIdentique($mur->getMdpAdmin(),$_POST["password"])) {
74
      $login['message'] = "";
75
      $login['role'] = "admin";
76
      $_SESSION['role'] = "admin";
77
      $_SESSION['mur'] = $mur->getId();
78
    }
79
    else {
80
      $login['message'] = "Le mot de passe saisi est erroné. ";
81
      $login['role'] = "user";
82
      $_SESSION['role'] = "user";
83
      $_SESSION['mur'] = "";
84
    }
85
  } else {
86
    $login['message']="";
87
    $login['role'] = $_SESSION['role'];
88
    //$login['role'] = "user";
89
  }
90
  // Mise à jour de la date de denrier accès au mur (à la date du jour)
91
  verifierDateAcces($mur);
92

    
93
  // et enfin on peut afficher le mur...
94
  afficheMur($mur,$theme,$affiches,$aValider,$login);
95
}
96

    
97
/**
98
 * Compare la date de dernie accès au mur avec la date du jour et si besoin
99
 * met à jour la date de dernier accès (date du jour)
100
 * @param  [Objet] $mur [Instance de Mur]
101
 */
102
function verifierDateAcces($mur) {
103
  $dateDernierAcces = $mur->getDateAcces();
104
  $dateJour = date("Y-m-d");
105
  //debug($dateDernierAcces);
106
  //debug($dateJour);
107
  if ($dateJour != $dateDernierAcces['date_acces']) {
108
    majDateAcces($mur->getId());
109
  }
110
}
111

    
112
/**
113
 * Transformer un objet BRIQUE en objet AFFICHE pour un affichage simplifié
114
 * @param  [Array] $briques [Tableau Associatif de Briques]
115
 * @return [Array]          [Tableau d'objets Affiche]
116
 */
117
function brique2Affiche($briques) {
118
  $affiches = array();
119
  foreach ($briques as $b) {
120
    $affiche = new Affiche($b);
121
    array_push($affiches,$affiche);
122
  }
123
  return $affiches;
124
}
125

    
126
/**
127
 * Compare 2 mots de passe chiffrés
128
 * @param  [String]  $p1 [mot de passe #1 chiffré (issu du mur)]
129
 * @param  [String]  $p2 [mot de passe #2 non chiffré (issu du formulaire)]
130
 * @return boolean     [Vrai si les 2 mots de passe sont identiques]
131
 */
132
function isPasswordIdentique($p1, $p2) {
133
  return $p1 == hashPassword($p2);
134
}
135

    
136
// Renvoi TRUE si le mur est public
137
function isMurPublic($mur) {
138
  return $mur->getMdpAcces()=="";
139
}
Redmine Appliance - Powered by TurnKey Linux