Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

root / controllers / nouveau_controller.php @ 8b755ec6

Historique | Voir | Annoter | Télécharger (4,29 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
  // Définir le role "admin" en variable de session
71
  $_SESSION['role']="admin";
72
  $_SESSION['mur'] = $idNouveauMur;
73
  // Redirger vers le mur créé
74
  $url = "Location:index.php?page=mur&id=".$idNouveauMur;
75
  header($url);
76

    
77

    
78
} else {
79
  // On affiche le formulaire de création de mur
80
  afficheNouveauMur($mur, $themes);
81
}
82

    
83
/**
84
 * Termine la préparation du mur et procède à son insertion dans la BDD
85
 * @param  [Objet] $mur [Mur à insérer]
86
 * @return [String]     [Id dans la BDD du nouveau mur]
87
 */
88
function ajouteNouveauMur($mur) {
89
  // On ajoute le mur dans la BDD
90
  $mur->setNom(str_secure($mur->getNom()));
91
  $mur->setSlug(create_slug($mur->getNom()));
92
  $mur->setDescriptif(str_secure($mur->getDescriptif()));
93
  $idBddMur = insereMur($mur);
94

    
95
  // Création du dossier idMur dans le dossier MUR
96
  $dest = __DIR__ . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "MURS/".$idBddMur;
97
  try {
98
    if (!mkdir($dest)) {
99
      throw new  MyException("Erreur dans la création du dossier MURS/".$idBddMur);
100
    }
101
  } catch (MyException $e) {
102
    $e->errorMessage();
103
  }
104

    
105

    
106
  // Éventuellement (si malAdmin existe) On informe l'admin de la création du mur
107
  if ($mur->getMelAdmin()!="") {
108
    $mel = new Mailer($mur->getMelAdmin());
109
    $adresseMur = PATH_REQUIRE."index.php?page=mur&id=".$idBddMur;
110
    try {
111
      if(!$mel->informeNouveauMur($adresseMur)) {
112
        throw new  MyException("Erreur dans l'envoi du mel d'information de création du mur");
113
      }
114
    } catch (MyException $e) {
115
      $e->errorMessage();
116
    }
117
  }
118

    
119
  // Renvoi de l'id du mur dans la base pour constitution url du nouveau mur
120
  return $idBddMur;
121
}
122

    
123
/**
124
 * Vérifie si un mur existe déjà dans la BDD
125
 * @param  [String]  $nom [Nom du mur]
126
 * @return boolean      [Vrai si le mur existe]
127
 */
128
function isMurExiste($nom) {
129
  return !empty(nomMurExiste(str_secure($nom)));
130
}
131

    
132
?>
Redmine Appliance - Powered by TurnKey Linux