Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

root / controllers / admin_controller.php @ 232b0a2c

Historique | Voir | Annoter | Télécharger (7,57 ko)

1
<?php
2

    
3
include_once("_classes/MyException.php");
4
include_once("_classes/Theme.php");
5
include_once("_classes/Mur.php");
6
include_once("_classes/Brique.php");
7

    
8
//getVar();
9

    
10
$mur = getMur($_GET['id']);
11

    
12
if (($_SESSION['role']!="admin") && ($_SESSION['mur'] != $mur->getId())) {
13
  afficheAccesInterdit();
14
}  else {
15
  if ($_POST['validation']==1) {
16
    /*
17
      TRAITEMENT DES VALIDATIONS
18
     */
19

    
20
    // S'il faut supprimer le mur, les autres changements sont inutiles
21
    if ($_POST['password'] !="") {
22
      // Est-ce le bon mot de passe admin .
23
      if (hashPassword($_POST['password']) == $mur->getMdpAdmin()) {
24
        //debug('on peut supprimer');
25
        // Suppression de toutes les briques et les fichiers associés
26
        $briques = getBriques($mur->getId());
27
        foreach ($briques as $brique) {
28
          //supprimeBrique($brique['id_brique']);
29
          debug("avant appel fonction");
30
          debug($brique);
31
          debug("<hr />");
32
          supprimeBrique($brique);
33
        }
34
        // Suppression du dossier
35
        $dossier =  __DIR__."/../"."MURS/".$_GET['id'];
36
        //debug($dossier);
37
        try {
38
          if(!rmdir($dossier)) {
39
            throw new  MyException("Erreur dans la suppression du dossier : ".$dossier);
40
          }
41
        } catch (MyException $e) {
42
          $e->errorMessage();
43
        }
44

    
45
        deleteMur($mur->getId());
46

    
47
        // Retour à l'acceuil
48
        $_SESSION['role'] = "user";
49
        $_SESSION['mur'] = "";
50
        $url = "Location:index.php?page=home";
51
        header($url);
52
      }
53
      else {
54
        afficheErreurMotDePasseAdmin();
55
      }
56
    }
57
    else {
58
      /*
59
          AUTRES CHANGEMENTS
60
       */
61

    
62
      // On traite les changements sur la structure du mur.
63
      // Pour cela on construit dynamiquement une requete UPDATE
64
      $requete = array();
65
      if ($_POST['nom'] !="") {
66
        //debug("changement de titre");
67
        $table = array();
68
        $table['colonne'] = 'nom';
69
        $table['valeur'] = str_secure($_POST['nom']);
70
        array_push($requete,$table);
71
        $table['colonne'] = 'slug';
72
        $table['valeur'] = create_slug($_POST['nom']);
73
        array_push($requete, $table);
74
      }
75
      if($_POST['descriptif'] != "") {
76
        //debug("changement de descriptif");
77
        $table = array();
78
        $table['colonne'] = 'descriptif';
79
        $table['valeur'] = str_secure($_POST['descriptif']);
80
        array_push($requete, $table);
81
      }
82
      if($_POST['changeTheme']=="1") {
83
        //debug("changement de thème");
84
        $table = array();
85
        $table['colonne'] = 'id_theme';
86
        $table['valeur'] = $_POST['theme'];
87
        array_push($requete, $table);
88
      }
89

    
90
      if($_POST['melAdmin'] != "") {
91
        //debug("changement de mel admin");
92
        $table = array();
93
        $table['colonne'] = 'mel_admin';
94
        $table['valeur'] = $_POST['melAdmin'];
95
        array_push($requete, $table);
96
      }
97
      if (sizeof($requete)>0) {
98
        updateMur(requeteDynamique($requete), $mur->getId());
99
      }
100

    
101
      // On traite les briques à valider s'il y en a
102
      if ($_POST['aValider'] !="") {
103
        //debug("validation de briques");
104
        $tValide = explode("-",$_POST['aValider']);
105
        foreach ($tValide as $brique) {
106
          validerBrique($brique);
107
        }
108
      }
109

    
110
      // On traite les briques à supprimer s'il y en a
111
      if ($_POST['aSupprimer'] !="") {
112
        //debug("suppression de briques");
113
        $tSupp = explode("-",$_POST['aSupprimer']);
114
        // Pour chaque brique à supprimer :
115
        foreach ($tSupp as $br) {
116
          if ($br !="") {
117
            supprimeBrique($br);
118
          }
119
        }
120
      }
121

    
122
      // On retoure au mur
123
      $url = "Location:index.php?page=mur&id=".$mur->getId();
124
      header($url);
125

    
126
    }
127
  } else {
128

    
129
    $t = getThemes();
130
    $themes= prepareThemes($t, $mur->getTheme());
131

    
132
    $b = getBriques($mur->getId());
133
    $briques = prepareBriques($b);
134

    
135
    afficheInterfaceAdmin($mur, $themes, $briques);
136

    
137
  }
138
}
139

    
140
/**
141
 * Construit la partie SET d'une requete UPDATE en fonction de paramètres
142
 * SET [colN = valN]... en fonction du nombre de col et de val
143
 * @param  [Array] $t [tabeau de nomDeColonne => valeurDeLaColonne]
144
 * @return [String]    [partie SET de la requete]
145
 */
146
function requeteDynamique($t) {
147
  $data = "";
148
  foreach($t as $elt) {
149
    $data.=$elt['colonne']."='".$elt['valeur']."'";
150
    array_pop($t);
151
    if (sizeof($t)!=0) {
152
      $data.=", ";
153
    }
154
  }
155
  return $data;
156
}
157

    
158

    
159
/**
160
 * Supprime les éventuels fichiers associés à une brique
161
 * @param  [String] $br [id de la brique]
162
 */
163
function supprimeBrique($brique) {
164
  // 1- Voir s'il y a un fichier
165
  if($brique["fichier"] != "") {
166
    // 1(suite) - Supprimer le fichier le cas écheant
167
    $fichier =  __DIR__."/../"."MURS/".$_GET['id']."/".$brique["fichier"];
168
    //debug($fichier);die();
169
    if (file_exists($fichier)) {
170
      //debug("suppression de : ".$fichier);
171
      //unlink($fichier);
172
      try {
173
        if (unlink($fichier)) {
174
          throw new  MyException("Erreur dans la suppression physique du fichier");
175
        }
176
      } catch (MyException $e) {
177
        $e->errorMessage();
178
      }
179
    }
180
  }
181
  // 2- Supprimer la brique dans la base
182
  deleteBrique($br);
183
}
184

    
185
/**
186
 * Mets en forme les données d'une brique en vue de son affichage
187
 * @param  [Array] $b [Tableau assoc. de briques brutes (issues de la BDD)]
188
 * @return [Array]    [Tableau assoc. de briques prêtes à être affichées]
189
 */
190
function prepareBriques($b) {
191
  $briques = array();
192
  foreach ($b as $elt) {
193
    $brique = array();
194
    $contenu = "<input type='checkbox' class='coche' id='sup_".$elt['id_brique']."' />";
195
    $brique['supp'] = $contenu;
196

    
197
    $titre = $elt['titre'];
198
    $brique['titre'] = $titre;
199

    
200
    $date= $elt['date_ajout'];
201
    $brique['date'] = $date;
202

    
203
    $brique['desc'] = $elt['descriptif'];
204

    
205
    if ($elt['isValide'] =="0") {
206
      $contenu = "<input type='checkbox'class='coche' id='val_".$elt['id_brique']."' />";
207
    }
208
    else {
209
      $contenu = "";
210
    }
211
    $brique['valide'] = $contenu;
212

    
213
    $url = setUrlBrique($elt, $elt['fa_icone']);
214
    $brique['url'] = $url;
215

    
216
    array_push($briques,$brique);
217
  }
218
  return $briques;
219
}
220

    
221
/**
222
 * Prépare les données de tous les thèmes pour affichage dans select / option
223
 * @param  [Array] $t [Tableau contenant les instances de tous les thèmes]
224
 * @param  [String] $i [id du thème du mur actuel]
225
 * @return [Array]    [Tableau dynamique de thèmes ('nom_them'=>'id_theme']
226
 */
227
function prepareThemes($t, $i) {
228
  $themes = array();
229
  foreach ($t as $elt) {
230
    $theme = array();
231
    $theme['nom'] = $elt->getNom();
232
    $theme['id'] = $elt->getId();
233
    ($elt->getId()==$i) ? $theme['sel'] = "selected" : $theme['sel']="";
234
    array_push($themes,$theme);
235
  }
236
  return $themes;
237
}
238

    
239

    
240
/**
241
 * Mets en forme l'url d'une brique
242
 * @param [Array] $e     [adresse d'un fichier | d'une URL | d'une iframe]
243
 * @param [String] $icone [icone associée à la catégorie]
244
 * @return [String]     [url mise en forme <a href='Adresse' target='_blank'>ICONE</a>]
245
 */
246
function setUrlBrique($e, $icone) {
247
  $url = "";
248
  if($e['fichier']!="") {
249
    $url = "<a href='".PATH."MURS/".$_GET['id']."/".$e['fichier']."' target='_blank'>$icone</a>";
250
  }
251
  if($e['url'] !="") {
252
    $url = "<a href=".$e['url']." target='_blank'>$icone</a>";
253
  }
254
  if($e['iframe']!="") {
255
    // recherche de 'src=' dans le texte de l'iframe
256
    $pos = stripos($e['iframe'],"src=");
257
    // extraction du texte de l'iframe depuis ce qui suit src=
258
    $subSrc = substr($e['iframe'],$pos+5);
259
    // recherche du guillemet de fermeture de src = '.....'
260
    $pos = strpos($subSrc,"'");
261
    $lien = substr($subSrc,0,$pos);
262
    $url = "<a href='$lien' target='_blank'>$icone</a>";
263
  }
264
  return $url;
265
}
Redmine Appliance - Powered by TurnKey Linux