1,244 → 1,244 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Modèle d'accès à la base de données des administrateurs |
* Modèle d'accès à la base de données des administrateurs |
* de papyrus |
*/ |
class listeAdmin extends Modele { |
|
private $config = array(); |
|
/** |
* Charge la liste complète des administrateurs |
* return array un tableau contenant des objets d'informations sur les administrateurs |
* @return array un tableau d'objets contenant la liste des administrateurs |
*/ |
class listeAdmin extends Modele { |
|
private $config = array(); |
|
/** |
* Charge la liste complète des administrateurs |
* return array un tableau contenant des objets d'informations sur les administrateurs |
* @return array un tableau d'objets contenant la liste des administrateurs |
*/ |
public function chargerAdmin() { |
$requete = 'SELECT * '. |
'FROM gen_annuaire '. |
'ORDER BY ga_id_administrateur'; |
$resultat = $this->requete($requete); |
$admin = array(); |
foreach ($resultat->fetchAll() as $ligne) { |
if ($ligne['ga_id_administrateur'] != 0) { |
$admin[] = $ligne; |
} |
} |
return $admin; |
} |
|
/** |
* Charge les informations liées à un administrateur |
* grâce à son id |
* @param int l'identifiant de l'administrateur. |
* @return object un object contenant les informations de l'administrateur demandé |
*/ |
public function loadDetailsAdmin($id) { |
$requete = 'SELECT * '. |
'FROM gen_annuaire '. |
"WHERE ga_id_administrateur = '$id' "; |
$resultat = $this->requete($requete); |
|
$admin = array(); |
foreach ($resultat->fetchAll() as $ligne) { |
$admin = $ligne; |
} |
return $admin; |
} |
|
|
/** |
* Modifie les informations liées à un administrateur dans la base de données |
* Si le mot de passe n'est pas renseigné, il n'est pas changé |
* @param int identifiant de l'admiistrateur |
* @param string nom |
* @param string prenom |
* @param string le mail |
* @param string le code de langue |
* @param string le mot de passe (optionnel) |
* @param string la confirmation du mot de passe (optionnel) |
* @return array un tableau contenant les erreurs s'il y en a, vide sinon |
*/ |
function modifDetailsAdmin($id, $nom, $prenom, $mail, $lang, $pass = '', $pass_conf = '') { |
$res = array(); |
$nb_admin = 0; |
|
if (!$this->validerMail($mail)) { |
$res['mail'] = 'Adresse mail invalide'; |
} |
|
$query_verif_mail = 'SELECT COUNT(*) AS nb_admin '. |
'FROM gen_annuaire '. |
"WHERE ga_mail = '{$this->proteger($mail)}'". |
" AND ga_id_administrateur != $id "; |
if ($res_nb = $this->requete($query_verif_mail)) { |
$ligne = $res_nb->fetch(); |
$nb_admin = $ligne['nb_admin'] ; |
} else { |
$res['bdd'] = 'Erreur dans la base de données' ; |
return $res; |
} |
|
if($nb_admin != 0) { |
$res['mail'] = 'Cet email est déjà utilisé par un autre utilisateur' ; |
} |
|
$query = 'UPDATE gen_annuaire SET ga_ce_i18n='.$this->proteger($lang).', ga_nom='.$this->proteger($nom).',ga_prenom='. |
$this->proteger($prenom).',ga_mail='.$this->proteger($mail) ; |
|
// si on a entré quelque chose dans les deux champs de mot de passe |
if($pass != '' || $pass_conf != '') { |
// on vérifie si les deux concordent |
if($pass == $pass_conf) { |
// si oui, on les modifie |
$query .= ',ga_mot_de_passe='.$this->proteger(md5($pass)) ; |
} else { |
// si non, on notifiera l'utilisateur |
$res['pass'] = 'mot de passe invalide' ; |
} |
} |
$requete = 'SELECT * '. |
'FROM gen_annuaire '. |
'ORDER BY ga_id_administrateur'; |
$resultat = $this->requete($requete); |
$admin = array(); |
foreach ($resultat->fetchAll() as $ligne) { |
if ($ligne['ga_id_administrateur'] != 0) { |
$admin[] = $ligne; |
} |
} |
return $admin; |
} |
|
$query .= ' WHERE ga_id_administrateur='.$id ; |
|
if(count($res) != 0) { |
return $res ; |
} |
|
if($req_maj = $this->requete($query)) { |
|
} else { |
$res['bdd'] = 'Erreur de la requête dans la base de données' ; |
} |
|
return $res; |
} |
|
/** |
* Supprime un administrateur ayant un id donné |
* @param int l'identifiant de l'administrateur |
* @return array un tableau contenant les erreurs s'il y en a, vide sinon |
*/ |
function suppAdmin($id) { |
|
$nb_admin = 0 ; |
$res = '' ; |
|
$query_verif = 'SELECT COUNT(*) AS nb_admin FROM gen_annuaire' ; |
if($res_nb = $this->requete($query_verif)) { |
$ligne = $res_nb->fetch(); |
$nb_admin = $ligne['nb_admin'] ; |
} else { |
$res = 'Erreur dans la base de donn�es' ; |
return $res ; |
} |
|
if($nb_admin == 2) { |
$res = 'Impossible de supprimer le dernier administrateur' ; |
return $res ; |
} |
|
$query = 'DELETE FROM gen_annuaire WHERE ga_id_administrateur='.$id ; |
|
if($res_supp = $this->requete($query)) { |
return $res ; |
} else { |
$res = 'Erreur dans la base de données' ; |
return $res ; |
} |
} |
|
/** |
* Ajoute un administrateur dans la base de données |
* @param string nom |
* @param string prenom |
* @param string le mail |
* @param string le code de langue |
* @param string le mot de passe |
* @param string la confirmation du mot de passe |
* @return array un tableau contenant les erreurs s'il y en a, vide sinon |
*/ |
function ajoutAdmin($nom,$prenom,$mail,$lang,$pass,$pass_conf) { |
|
$nouvel_id = 0 ; |
$nb_admin = 0 ; |
$res = array() ; |
|
if(!$this->validerMail($mail)) { |
$res['mail'] = 'adresse mail invalide' ; |
} |
|
$query_verif_mail = 'SELECT COUNT(*) AS nb_admin FROM gen_annuaire WHERE ga_mail = '.$this->proteger($mail) ; |
if($res_nb = $this->requete($query_verif_mail)) { |
$ligne = $res_nb->fetch() ; |
$nb_admin = $ligne['nb_admin'] ; |
} else { |
$res['bdd'] = 'Erreur dans la base de données' ; |
return $res ; |
} |
|
if($nb_admin != 0) { |
$res['mail'] = 'Cet email est déjà utilisé par un autre utilisateur' ; |
} |
|
if($pass != '' || $pass_conf != '') { |
// on vérifie si les deux concordent |
if($pass == $pass_conf) { |
|
} else { |
// si non, on notifiera l'utilisateur |
$res['pass'] = 'mot de passe invalide' ; |
} |
} |
|
$query = 'SELECT MAX(ga_id_administrateur) as nouvel_id FROM gen_annuaire' ; |
|
if($res_requete_id = $this->requete($query)) { |
|
$ligne = $res_requete_id->fetch() ; |
$nouvel_id = $ligne['nouvel_id'] + 1 ; |
} else { |
return $res ; |
} |
|
$query = 'INSERT INTO gen_annuaire VALUES ('.$nouvel_id.','.$this->proteger($lang).','. |
$this->proteger($nom).','.$this->proteger($prenom).','.$this->proteger(md5($pass)).','. |
$this->proteger($mail).')' ; |
|
if(count($res) != 0) { |
return $res ; |
} |
|
if($res_ajout = $this->requete($query)) { |
|
} else { |
$res['bdd'] = 'Erreur de la requête dans la base de données' ; |
} |
|
return $res ; |
} |
|
/** |
* Fonction qui prend une chaine en paramètre et renvoie vrai |
* si elle constitue un email syntaxiquement valide, faux sinon. |
* @param string le mail à valider |
* @return bool true si le mail est valide, false sinon |
*/ |
function validerMail($mail) { |
$atom = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]'; // Caractères autorisés avant l'arobase |
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // Caractères autorisés après l'arobase (nom de domaine) |
|
$regex = '/^'.$atom.'+'. // Une ou plusieurs fois les caractères autorisés avant l'arobase |
'(\.'.$atom.'+)*'. // Suivis par zéro point ou plus, séparés par des caractères autorisés avant l'arobase |
'@'.// Suivis d'un arobase |
'('.$domain .'{1,63}\.)+'.// Suivis par 1 à 63 caractères autorisés pour le nom de domaine, séparés par des points |
$domain.'{2,63}$/i';// Suivi de 2 à 63 caractères autorisés pour le nom de domaine |
|
// Test de l'adresse e-mail |
if (preg_match($regex, $mail)) { |
return true; |
} else { |
return false; |
} |
} |
/** |
* Charge les informations liées à un administrateur |
* grâce à son id |
* @param int l'identifiant de l'administrateur. |
* @return object un object contenant les informations de l'administrateur demandé |
*/ |
public function loadDetailsAdmin($id) { |
$requete = 'SELECT * '. |
'FROM gen_annuaire '. |
"WHERE ga_id_administrateur = '$id' "; |
$resultat = $this->requete($requete); |
|
$admin = array(); |
foreach ($resultat->fetchAll() as $ligne) { |
$admin = $ligne; |
} |
return $admin; |
} |
|
|
/** |
* Modifie les informations liées à un administrateur dans la base de données |
* Si le mot de passe n'est pas renseigné, il n'est pas changé |
* @param int identifiant de l'admiistrateur |
* @param string nom |
* @param string prenom |
* @param string le mail |
* @param string le code de langue |
* @param string le mot de passe (optionnel) |
* @param string la confirmation du mot de passe (optionnel) |
* @return array un tableau contenant les erreurs s'il y en a, vide sinon |
*/ |
function modifDetailsAdmin($id, $nom, $prenom, $mail, $lang, $pass = '', $pass_conf = '') { |
$res = array(); |
$nb_admin = 0; |
|
if (!$this->validerMail($mail)) { |
$res['mail'] = 'Adresse mail invalide'; |
} |
|
$query_verif_mail = 'SELECT COUNT(*) AS nb_admin '. |
'FROM gen_annuaire '. |
"WHERE ga_mail = '{$this->proteger($mail)}'". |
" AND ga_id_administrateur != $id "; |
if ($res_nb = $this->requete($query_verif_mail)) { |
$ligne = $res_nb->fetch(); |
$nb_admin = $ligne['nb_admin'] ; |
} else { |
$res['bdd'] = 'Erreur dans la base de données' ; |
return $res; |
} |
|
if($nb_admin != 0) { |
$res['mail'] = 'Cet email est déjà utilisé par un autre utilisateur' ; |
} |
|
$query = 'UPDATE gen_annuaire SET ga_ce_i18n='.$this->proteger($lang).', ga_nom='.$this->proteger($nom).',ga_prenom='. |
$this->proteger($prenom).',ga_mail='.$this->proteger($mail) ; |
|
// si on a entré quelque chose dans les deux champs de mot de passe |
if($pass != '' || $pass_conf != '') { |
// on vérifie si les deux concordent |
if($pass == $pass_conf) { |
// si oui, on les modifie |
$query .= ',ga_mot_de_passe='.$this->proteger(md5($pass)) ; |
} else { |
// si non, on notifiera l'utilisateur |
$res['pass'] = 'mot de passe invalide' ; |
} |
} |
|
$query .= ' WHERE ga_id_administrateur='.$id ; |
|
if(count($res) != 0) { |
return $res ; |
} |
|
if($req_maj = $this->requete($query)) { |
|
} else { |
$res['bdd'] = 'Erreur de la requête dans la base de données' ; |
} |
|
return $res; |
} |
|
/** |
* Supprime un administrateur ayant un id donné |
* @param int l'identifiant de l'administrateur |
* @return array un tableau contenant les erreurs s'il y en a, vide sinon |
*/ |
function suppAdmin($id) { |
|
$nb_admin = 0 ; |
$res = '' ; |
|
$query_verif = 'SELECT COUNT(*) AS nb_admin FROM gen_annuaire' ; |
if($res_nb = $this->requete($query_verif)) { |
$ligne = $res_nb->fetch(); |
$nb_admin = $ligne['nb_admin'] ; |
} else { |
$res = 'Erreur dans la base de donn�es' ; |
return $res ; |
} |
|
if($nb_admin == 2) { |
$res = 'Impossible de supprimer le dernier administrateur' ; |
return $res ; |
} |
|
$query = 'DELETE FROM gen_annuaire WHERE ga_id_administrateur='.$id ; |
|
if($res_supp = $this->requete($query)) { |
return $res ; |
} else { |
$res = 'Erreur dans la base de données' ; |
return $res ; |
} |
} |
|
/** |
* Ajoute un administrateur dans la base de données |
* @param string nom |
* @param string prenom |
* @param string le mail |
* @param string le code de langue |
* @param string le mot de passe |
* @param string la confirmation du mot de passe |
* @return array un tableau contenant les erreurs s'il y en a, vide sinon |
*/ |
function ajoutAdmin($nom,$prenom,$mail,$lang,$pass,$pass_conf) { |
|
$nouvel_id = 0 ; |
$nb_admin = 0 ; |
$res = array() ; |
|
if(!$this->validerMail($mail)) { |
$res['mail'] = 'adresse mail invalide' ; |
} |
|
$query_verif_mail = 'SELECT COUNT(*) AS nb_admin FROM gen_annuaire WHERE ga_mail = '.$this->proteger($mail) ; |
if($res_nb = $this->requete($query_verif_mail)) { |
$ligne = $res_nb->fetch() ; |
$nb_admin = $ligne['nb_admin'] ; |
} else { |
$res['bdd'] = 'Erreur dans la base de données' ; |
return $res ; |
} |
|
if($nb_admin != 0) { |
$res['mail'] = 'Cet email est déjà utilisé par un autre utilisateur' ; |
} |
|
if($pass != '' || $pass_conf != '') { |
// on vérifie si les deux concordent |
if($pass == $pass_conf) { |
|
} else { |
// si non, on notifiera l'utilisateur |
$res['pass'] = 'mot de passe invalide' ; |
} |
} |
|
$query = 'SELECT MAX(ga_id_administrateur) as nouvel_id FROM gen_annuaire' ; |
|
if($res_requete_id = $this->requete($query)) { |
|
$ligne = $res_requete_id->fetch() ; |
$nouvel_id = $ligne['nouvel_id'] + 1 ; |
} else { |
return $res ; |
} |
|
$query = 'INSERT INTO gen_annuaire VALUES ('.$nouvel_id.','.$this->proteger($lang).','. |
$this->proteger($nom).','.$this->proteger($prenom).','.$this->proteger(md5($pass)).','. |
$this->proteger($mail).')' ; |
|
if(count($res) != 0) { |
return $res ; |
} |
|
if($res_ajout = $this->requete($query)) { |
|
} else { |
$res['bdd'] = 'Erreur de la requête dans la base de données' ; |
} |
|
return $res ; |
} |
|
/** |
* Fonction qui prend une chaine en paramètre et renvoie vrai |
* si elle constitue un email syntaxiquement valide, faux sinon. |
* @param string le mail à valider |
* @return bool true si le mail est valide, false sinon |
*/ |
function validerMail($mail) { |
$atom = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]'; // Caractères autorisés avant l'arobase |
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // Caractères autorisés après l'arobase (nom de domaine) |
|
$regex = '/^'.$atom.'+'. // Une ou plusieurs fois les caractères autorisés avant l'arobase |
'(\.'.$atom.'+)*'. // Suivis par zéro point ou plus, séparés par des caractères autorisés avant l'arobase |
'@'.// Suivis d'un arobase |
'('.$domain .'{1,63}\.)+'.// Suivis par 1 à 63 caractères autorisés pour le nom de domaine, séparés par des points |
$domain.'{2,63}$/i';// Suivi de 2 à 63 caractères autorisés pour le nom de domaine |
|
// Test de l'adresse e-mail |
if (preg_match($regex, $mail)) { |
return true; |
} else { |
return false; |
} |
} |
} |
?> |