Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

root / controllers / nouveau_controller.php @ 91450eb1

Historique | Voir | Annoter | Télécharger (4,69 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/MurNouveau.php");
28
include_once("_classes/Theme.php");
29
include_once("_classes/Mailer.php");
30

    
31
//getVar();
32

    
33
// Récupération des thèmes
34
$themes = getAllThemes();
35
// Création d'un MurNouveau vide
36
$mur = new MurNouveau();
37

    
38
if (isset($_POST['nomMur'])) {
39
  /*
40
    Vérifications et insertion du mur ou renvoi vers le formulaire (si erreurs)
41
  */
42

    
43
  // Hydratation du mur
44
  $mur->setNom($_POST['nomMur']);
45
  $mur->setDescriptif($_POST['descriptifMur']);
46
  $mur->setMdpAdmin(hashPassword($_POST['adminPassword']));
47
  $mur->setMelAdmin($_POST['adminEmail']);
48
  if($_POST['accesPassword']=="") {
49
    $mur->setMdpAcces("");
50
  } else {
51
    $mur->setMdpAcces(hashPassword($_POST['accesPassword']));
52
  }
53
  $mur->setTheme($_POST['themeMur']);
54

    
55
  // On vérifie que le mur n'existe pas déjà dans la base
56
  if (isMurExiste($_POST["nomMur"])) {
57
    $mur->setErrNom( "<p class='alert alert-danger'>Il existe déjà un mur avec ce nom</p>");
58
    afficheNouveauMur($mur, $themes);
59
  }
60

    
61
  // On vérifie que l'adresse mel fournie est valide
62
  if( ($mur->getMelAdmin()!="") && (!filter_var($mur->getMelAdmin(),FILTER_VALIDATE_EMAIL)) ) {
63
    $mur->setErrMel("<p class='alert alert-danger'>L'adresse de messagerie n'est pas valide</p>");
64
    afficheNouveauMur($mur, $themes);
65
  }
66

    
67
  // On ajoute le mur = insertion dans BDD + création dossier
68
  $idNouveauMur = ajouteNouveauMur($mur);
69

    
70
  // création du dossier correspondant dans le dossier MURS
71
  $dossier = __DIR__ . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "MURS";
72
  $dossier.= DIRECTORY_SEPARATOR. $idNouveauMur;
73
  if (!file_exists($dossier)) {
74
    try {
75
      if(!mkdir($dossier)) {
76
        throw new  MyException("Erreur dans la création du dossier");
77
      }
78
    } catch (MyException $e) {
79
      $e->errorMessage();
80
    }
81
  }
82
  
83
  // Définir le role "admin" en variable de session
84
  $_SESSION['role']="admin";
85
  $_SESSION['mur'] = $idNouveauMur;
86
  // Redirger vers le mur créé
87
  $url = "Location:index.php?page=mur&id=".$idNouveauMur;
88
  header($url);
89

    
90

    
91
} else {
92
  // On affiche le formulaire de création de mur
93
  afficheNouveauMur($mur, $themes);
94
}
95

    
96
/**
97
 * Termine la préparation du mur et procède à son insertion dans la BDD
98
 * @param  [Objet] $mur [Mur à insérer]
99
 * @return [String]     [Id dans la BDD du nouveau mur]
100
 */
101
function ajouteNouveauMur($mur) {
102
  // On ajoute le mur dans la BDD
103
  $mur->setNom(str_secure($mur->getNom()));
104
  $mur->setSlug(create_slug($mur->getNom()));
105
  $mur->setDescriptif(str_secure($mur->getDescriptif()));
106
  $idBddMur = insereMur($mur);
107

    
108
  // Création du dossier idMur dans le dossier MUR
109
  $dest = __DIR__ . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "MURS/".$idBddMur;
110
  try {
111
    if (!mkdir($dest)) {
112
      throw new  MyException("Erreur dans la création du dossier MURS/".$idBddMur);
113
    }
114
  } catch (MyException $e) {
115
    $e->errorMessage();
116
  }
117

    
118

    
119
  // Éventuellement (si malAdmin existe) On informe l'admin de la création du mur
120
  if ($mur->getMelAdmin()!="") {
121
    $mel = new Mailer($mur->getMelAdmin());
122
    $adresseMur = PATH_REQUIRE."index.php?page=mur&id=".$idBddMur;
123
    try {
124
      if(!$mel->informeNouveauMur($adresseMur)) {
125
        throw new  MyException("Erreur dans l'envoi du mel d'information de création du mur");
126
      }
127
    } catch (MyException $e) {
128
      $e->errorMessage();
129
    }
130
  }
131

    
132
  // Renvoi de l'id du mur dans la base pour constitution url du nouveau mur
133
  return $idBddMur;
134
}
135

    
136
/**
137
 * Vérifie si un mur existe déjà dans la BDD
138
 * @param  [String]  $nom [Nom du mur]
139
 * @return boolean      [Vrai si le mur existe]
140
 */
141
function isMurExiste($nom) {
142
  return !empty(nomMurExiste(str_secure($nom)));
143
}
144

    
145
?>
Redmine Appliance - Powered by TurnKey Linux