Subversion Repositories Applications.framework

Compare Revisions

No changes between revisions

Ignore whitespace Rev 235 → Rev 236

/trunk/exemple/modeles/ListeAdmin.php
File deleted
\ No newline at end of file
/trunk/exemple/admin_administrateur.php
File deleted
\ No newline at end of file
/trunk/exemple/configurations/config.ini
File deleted
/trunk/exemple/configurations/config_papyrus.ini
File deleted
\ No newline at end of file
/trunk/exemple/framework.defaut.php
File deleted
\ No newline at end of file
/trunk/exemple/index.php
File deleted
\ No newline at end of file
/trunk/exemple/squelettes/modif_admin.tpl.html
File deleted
\ No newline at end of file
/trunk/exemple/squelettes/liste_admin.tpl.html
File deleted
/trunk/exemple/squelettes/ajout_admin.tpl.html
File deleted
\ No newline at end of file
/trunk/exemple/squelettes/ident_admin.tpl.html
File deleted
\ No newline at end of file
/trunk/exemple/controleurs/AdminAdministrateur.php
File deleted
\ No newline at end of file
/trunk/exemple/interfaces/configurations/config.ini
New file
0,0 → 1,9
; Info sur l'application
info.nom = Gestion des administrateurs de Papyrus
info.abr = AA
;Encodage de l'application
appli_encodage = "UTF8"
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone
url_base = ""
; Mettre à true si l'application nécessite de s'identifier.
identification = true
/trunk/exemple/interfaces/configurations/config_papyrus.ini
New file
0,0 → 1,6
;Encodage de l'application
appli_encodage = "UTF8"
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone
url_base = "php:$GLOBALS['_GEN_commun']['url']->getUrl()"
; Mettre à true si l'application nécessite de s'identifier.
identification = "php:$GLOBALS['_GEN_commun']['pear_auth']->getAuth()"
/trunk/exemple/interfaces/framework.defaut.php
New file
0,0 → 1,6
<?php
// Inclusion du Framework
// Renomer ce fichier en "framework.php"
// Indiquyer ci-dessous le chemin absolu vers le fichier Framework.php de la version souhaitée du Framework
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'framework'.DIRECTORY_SEPARATOR.'Framework.php';
?>
/trunk/exemple/interfaces/index.php
New file
0,0 → 1,103
<?php
/** Inclusion du fichier principal de l'application (administrations des administrateurs)*/
require_once 'admin_administrateur.php';
$contenu_navigation = afficherContenuNavigation();
$contenu_tete = afficherContenuTete();
$contenu_corps = afficherContenuCorps();
$titre = "";
$contenu_pied = afficherContenuPied();
$contenu_menu = afficherContenuMenu();
$erreurs = GestionnaireException::getExceptions();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head xml:lang="fr" lang="fr">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-style-type" content="text/css" />
<meta http-equiv="Content-script-type" content="text/javascript" />
<meta http-equiv="Content-language" content="fr" />
 
<title><?php echo $titre; ?></title>
 
<meta name="revisit-after" content="15 days" />
<meta name="robots" content="index,follow" />
<meta name="author" content="Tela Botanica" />
 
<style type="text/css" media="screen">
/*--------------------------------------------------------------------------------------------------------------*/
/* Tableau du chronométrage du programme */
#pied_texte #chrono {
text-align: center;
margin:0 auto;}
#chrono table {
display:block;
border:3px solid #6495ed;
border-collapse:collapse;}
#chrono thead, tfoot {
background-color:#D0E3FA;
border:1px solid #6495ed;}
#chrono tbody {
background-color:#FFFFFF;
border:1px solid #6495ed;}
#chrono th {
font-family:monospace;
border:1px dotted #6495ed;
padding:5px;
background-color:#EFF6FF;
width:25%;}
#chrono td {
font-family:sans-serif;
font-size:80%;
border:1px solid #6495ed;
padding:5px;
text-align:center;}
#chrono caption {
font-family:sans-serif;
text-align: center;
width:90%;
margin:auto;}
.debogage{
color:black;
border:3px solid #6495ed;}
.debogage_fichier, .debogage_ligne{
font-size:10px;
color:#A9A9A9;}
</style>
<link rel="shortcut icon" type="image/x-icon" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/favicon.ico" />
<link rel="icon" type="image/png" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/tela_botanica.png" />
</head>
<body xml:lang="fr" lang="fr">
<div id="reducteur">
<div id="logo_tela">
<a href="/" title="Retour à l'accueil du site">
<img src="http://www.tela-botanica.org/sites/accueil/generique/images/graphisme/logo_tela_fond_blanc.png" alt="le logo de Tela Botanica"/>
</a>
</div>
 
<div id="droite">
<div id="onglets">
<?php echo $contenu_navigation; ?>
</div>
<div id="contenu">
<div id="entete">
<?php echo $contenu_tete; ?>
</div>
<div id="texte">
<?php echo $contenu_corps; ?>
</div>
<div id="pied_texte">
<?php
echo $contenu_pied;
?>
</div>
</div>
</div>
<div>
<?php echo $erreurs; ?>
</div>
<div id="pied">
<p> &copy;<a href="http://www.tela-botanica.org/" accesskey="1">Tela Botanica</a> / 2000-2004 - Le réseau des Botanistes Francophones</p>
</div>
</div>
</body>
</html>
/trunk/exemple/interfaces/squelettes/ajout_admin.tpl.html
New file
0,0 → 1,50
<h2>Ajout d'un administrateur</h2>
<form id="modif_admin" method="post" action="<? $url->setVariableRequete('m','ajout_admin_va');
echo $url; ?>">
<?php if (isset($erreurs)): ?>
<?php foreach ($erreurs as $cle => $erreur): ?>
<p class="symbole_obligatoire"> <?=$cle ?> : <?=$erreur ?> </p>
<?php endforeach; ?>
<?php endif; ?>
<fieldset>
<ul>
<li>
<label for="admin_nom">Nom :</label>
<input type="text" id="admin_nom" name="admin_nom" maxlength="80" tabindex="1" value="<?=$admin['ga_nom'];?>" />
</li>
<li>
<label for="admin_prenom">Prénom :</label>
<input type="text" id="admin_prenom" name="admin_prenom" maxlength="80" tabindex="2" value="<?=$admin['ga_prenom'];?>" />
</li>
<li>
<label for="admin_mail">Mail :</label>
<input type="text" id="admin_mail" name="admin_mail" maxlength="120" tabindex="3" value="<?=$admin['ga_mail'];?>" />
<?php if (isset($erreurs['mail'])): ?>
<span class="symbole_obligatoire"> <?=$erreurs['mail'] ?> </span>
<?php endif; ?>
</li>
<li>
<label for="admin_lang">Langue : </label>
<select id="admin_lang" name="admin_lang" tabindex="4">
<option value="fr-FR" <?=($admin['ga_ce_i18n'] == "fr-FR") ? 'selected="selected"' : '';?>>Français</option>
<option value="en-EN" <?=($admin['ga_ce_i18n'] == "en-EN") ? 'selected="selected"' : '';?>>Anglais</option>
</select>
</li>
<li>
<label for="password">Mot de passe :</label>
<input type="password" id="admin_pass" name="admin_pass" maxlength="80" tabindex="5" value="" />
</li>
<li>
<label for="password_confirm">Confirmez le mot de passe :</label>
<input type="password" id="admin_pass_confirm" name="admin_pass_confirm" maxlength="80" tabindex="6" value="" />
<?php if (isset($erreurs['pass'])): ?>
<span class="symbole_obligatoire"> <?=$erreurs['pass'] ?> </span>
<?php endif; ?>
</li>
</ul>
</fieldset>
<p>
<input type="submit" id="valider_ajout_admin" name="valider_ajout_admin" tabindex="7" value="Ajouter" />
<a href="<? $url->setVariableRequete('m','liste_admin'); echo $url; ?>">Annuler</a>
</p>
</form>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/trunk/exemple/interfaces/squelettes/ident_admin.tpl.html
New file
0,0 → 1,11
<p class="zone_alert">Identifiez-vous</p>
<form id="form_connexion" style="clear: both;" class="form_identification" action="<?=$base_url ?>" method="post">
<fieldset>
<legend>Identifiez vous</legend>
<label for="username">Courriel :</label>
<input type="text" id="username" name="username" maxlength="80" tabindex="1" value="courriel" />
<label for="password">Mot de passe : </label>
<input type="password" id="password" name="password" maxlength="80" tabindex="2" value="mot de passe" />
<input type="submit" id="connexion" name="connexion" tabindex="3" value="ok" />
</fieldset>
</form>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/trunk/exemple/interfaces/squelettes/modif_admin.tpl.html
New file
0,0 → 1,44
<h2>Modification d'un administrateur</h2>
<form id="modif_admin" action="<? $url_form = clone($base_url);
$url_form->setVariablesRequete(array('m'=>'modif_admin','id_admin'=>$admin['ga_id_administrateur']));
echo $url_form; ?>" method="post">
<fieldset>
<ul>
<li>
<label for="admin_nom">Nom :</label>
<input type="text" id="admin_nom" name="admin_nom" maxlength="80" tabindex="1" value="<?=$admin['ga_nom'];?>" />
</li>
<li>
<label for="admin_prenom">Prénom :</label>
<input type="text" id="admin_prenom" name="admin_prenom" maxlength="80" tabindex="2" value="<?=$admin['ga_prenom'];?>" />
</li>
<li>
<label for="admin_mail">Mail :</label>
<input type="text" id="admin_mail" name="admin_mail" maxlength="120" tabindex="3" value="<?=$admin['ga_mail'];?>" />
<?php if (isset($erreurs['mail'])): ?>
<span class="symbole_obligatoire"> <?=$erreurs['mail'] ?> </span>
<?php endif; ?>
</li>
<li>
<label for="admin_lang">Langue :</label>
<select id="admin_lang" name="admin_lang" tabindex="4">
<option value="fr-FR" <?=($admin['ga_ce_i18n'] == "fr-FR") ? 'selected="selected"' : '';?> >Français</option>
<option value="en-EN" <?=($admin['ga_ce_i18n'] == "en-EN") ? 'selected="selected"' : '';?>>Anglais</option>
</select>
</li>
<li>
<label for="password">Mot de passe :</label>
<input type="password" id="admin_pass" name="admin_pass" maxlength="80" tabindex="5" value="" />
</li>
<li>
<label for="password_confirm">Confirmez le mot de passe :</label>
<input type="password" id="admin_pass_confirm" name="admin_pass_confirm" maxlength="80" tabindex="6" value="" />
<?php if (isset($erreurs['pass'])): ?>
<span class="symbole_obligatoire"> <?=$erreurs['pass'];?> </span>
<?php endif; ?>
</li>
</ul>
</fieldset>
<input type="submit" id="valider_modif_admin" name="valider_modif_admin" tabindex="7" value="Modifier" />
<a href="<? $url_annul = clone($base_url); $url_annul->setVariableRequete('m','liste_admin'); echo $url_annul; ?>">Annuler</a>
</form>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/trunk/exemple/interfaces/squelettes/liste_admin.tpl.html
New file
0,0 → 1,33
<h2>Liste des administrateurs</h2>
<?php if (isset($admin)) : ?>
<table class="liste_admin">
<thead>
<tr>
<th>Identifiant d'admin</th>
<th>Nom</th>
<th>Prénom</th>
<th>Langue</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($admin as $element) : ?>
<tr>
<td><?=$element['ga_id_administrateur'] ?></td>
<td><?=$element['ga_nom'] ?></td>
<td><?=$element['ga_prenom'] ?></td>
<td><?=$element['ga_ce_i18n'] ?></td>
<td><a href="<?php $url->setVariablesRequete(array('m' => 'modif_admin', 'id_admin' => $element['ga_id_administrateur']));
echo $url; ?>">Modifier</a></td>
<td><a href="<?php $url->setVariableRequete('m','supp_admin');
echo $url; ?>">Supprimer</a></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php if (isset($erreurs['supp'])): ?>
<p><span class="symbole_obligatoire"> <?=$erreurs['supp'];?> </span></p>
<?php endif; ?>
<?php endif; ?>
<p><a href="<?php $url->setVariableRequete('m','ajout_admin') ; echo $url ;?>"> Ajouter un administrateur </a></p>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/trunk/exemple/interfaces/controleurs/AdminAdministrateur.php
New file
0,0 → 1,193
<?php
// declare(encoding='UTF-8');
/**
* classe Controleur, pour l'application d'administration des administrateurs
*
* PHP Version 5
*
* @package Framework
* @category Class
* @author aurelien <aurelien@tela-botanica.org>
* @copyright 2009 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $$Id$$
* @link /doc/framework/
*
*/
class AdminAdministrateur extends Controleur {
 
/**
* Fonction d'affichage par défaut, elle appelle la liste des administrateurs
*/
public function index() {
$this->charger_admin();
}
 
/**
* Charge la liste des administrateurs et l'envoie à la vue
* @param array un tableau contenant les erreurs à afficher s'il y en a
* @return string la vue correspondante
*/
public function chargerAdmin($erreurs = array()) {
$this->chargerModele('ListeAdmin');
$data['url'] = new Url(Config::get('url_base'));
$data['erreurs'] = $erreurs;
$data['admin'] = $this->ListeAdmin->chargerAdmin();
$html = $this->getVue('liste_admin', $data);
 
return $html;
}
 
/**
* Charge les détails d'un administrateur demandé et l'envoi à la
* vue qui permet de les modifier
* @id string l'id de l'administrateur à modifier
* @return string la vue correspondante
*/
public function modifAdmin($id) {
$this->chargerModele('ListeAdmin');
$data['admin'] = $this->ListeAdmin->loadDetailsAdmin($id);
$html = $this->getVue('modif_admin',$data);
 
return $html;
}
 
/**
* Fonction appelée lors de la validation du formulaire de modification
* des détails d'un administrateurs. Elle modifie les détails dans la base
* de données. S'il y a une erreur et rappelle la formulaire et notifie l'erreur,
* sinon elle charge la liste des administrateurs
* @param string l'identifiant de l'administrateur
* @param string le nom
* @param string le prénom
* @param string le mail
* @param string le mot de passe
* @param string la confirmation du mot de passe
* @return string la vue correspondante
*/
public function modifAdminVa($id, $nom, $prenom, $mail, $lang, $pass, $pass_conf) {
$this->chargerModele('ListeAdmin') ;
$res = $this->ListeAdmin->modifDetailsAdmin($id, $nom, $prenom, $mail, $lang, $pass, $pass_conf);
 
if (count($res) == 0) {
return $this->chargerAdmin();
} else {
$admin['ga_id_administrateur'] = $id;
$admin['ga_nom'] = $nom;
$admin['ga_prenom'] = $prenom;
$admin['ga_mail'] = $mail;
$admin['ga_ce_i18n'] = $lang;
$data['admin'] = $admin;
$data['erreurs'] = $res;
$html = $this->getVue('modif_admin', $data);
return $html;
}
}
 
/**
* Supprime un administrateur dans la base de données,
* renvoie la liste des administrateurs, en affichant des erreurs
* s'il y en a.
* @return string la vue contenant la liste des administrateurs
*
*/
public function supprAdmin($id) {
$this->chargerModele('ListeAdmin');
$res = $this->ListeAdmin->suppAdmin($id);
if ($res == '') {
return $this->chargerAdmin();
} else {
$erreurs['supp'] = $res;
return $this->chargerAdmin($erreurs);
}
}
 
/**
* Appelle la vue contenant le formulaire d'ajout d'un administrateur
* @return string la vue contenant le formulaire d'ajout
*/
function ajoutAdmin() {
$admin['ga_id_administrateur'] = '';
$admin['ga_nom'] = '';
$admin['ga_prenom'] = '';
$admin['ga_mail'] = '';
$admin['ga_ce_i18n'] = '';
$data['admin'] = $admin;
$data['url'] = new Url(Config::get('url_base'));
$html = $this->getVue('ajout_admin', $data);
 
return $html;
}
 
/**
* Fonction appelée lors de la validation du formulaire d'ajout d'un administrateur.
* Elle ajoute celui-ci les dans la base de données
* S'il y a une erreur et rappelle la formulaire et notifie l'erreur,
* sinon elle charge la liste des administrateurs
* @param string le nom
* @param string le prénom
* @param string le mail
* @param string le mot de passe
* @param string la confirmation du mot de passe
* @return string la vue correspondante
*/
public function ajoutAdminVa($nom, $prenom, $mail, $lang, $pass, $pass_conf) {
if (empty($nom) || empty($prenom) || empty($mail) || empty($pass) || empty($pass_conf)) {
$data['url'] = new Url(Config::get('url_base'));
$data['erreurs'] = array('champs' => 'Tous les champs sont obligatoires');
$admin['ga_nom'] = $nom;
$admin['ga_prenom'] = $prenom;
$admin['ga_mail'] = $mail;
$admin['ga_ce_i18n'] = $lang;
$data['admin'] = $admin;
$html = $this->getVue('ajout_admin', $data);
 
return $html;
} else {
$this->chargerModele('ListeAdmin');
$res = $this->ListeAdmin->ajoutAdmin($nom, $prenom, $mail, $lang, $pass, $pass_conf);
if (count($res) == 0) {
return $this->chargerAdmin();
} else {
$admin['ga_nom'] = $nom;
$admin['ga_prenom'] = $prenom;
$admin['ga_mail'] = $mail;
$admin['ga_ce_i18n'] = $lang;
$data['url'] = new Url(Config::get('url_base'));
$data['admin'] = $admin;
$data['erreurs'] = $res;
$html = $this->getVue('ajout_admin', $data);
return $html;
}
}
}
 
/** Apelle le formulaire d'identification (dans le cas où l'utilisateur n'est pas identifié)
* @return string la vue permettant de s'identifier
*/
public function demanderIdent() {
$html = $this->getVue('ident_admin', null);
return $html;
}
 
/**
* Renvoie la tête de page de l'application
* @return string la tete de page de l'application
*/
public function adminTete() {
$tete = '<h1>Gestion des administrateurs de Papyrus</h1>';
return $tete;
}
 
/**
* Renvoie le pied de page de l'application
* @return string le pied de page de l'application
*/
public function adminPied() {
$pied = '';
return $pied;
}
}
?>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/trunk/exemple/interfaces/framework.php
New file
0,0 → 1,6
<?php
// Inclusion du Framework
// Renomer ce fichier en "framework.php"
// Indiquyer ci-dessous le chemin absolu vers le fichier Framework.php de la version souhaitée du Framework
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'framework'.DIRECTORY_SEPARATOR.'Framework.php';
?>
/trunk/exemple/interfaces/logs
New file
Property changes:
Added: svn:ignore
+bdd
+erreurs
+vues
/trunk/exemple/interfaces/modeles/ListeAdmin.php
New file
0,0 → 1,254
<?php
// declare(encoding='UTF-8');
/**
* Modèle d'accès à la base de données des administrateurs
* de papyrus
*
* PHP Version 5
*
* @package Framework
* @category Class
* @author aurelien <aurelien@tela-botanica.org>
* @copyright 2009 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $$Id$$
* @link /doc/framework/
*
*/
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->requeteTous($requete);
$admin = array();
if ($resultat !== false) {
foreach ($resultat 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';
}
}
 
$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();
Debug::printr('pppppppppp');
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) {
// 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)) {
$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;
}
}
}
?>
Property changes:
Added: svn:keywords
+Id Author Date Revision HeadURL
\ No newline at end of property
/trunk/exemple/interfaces/admin_administrateur.php
New file
0,0 → 1,115
<?php
// declare(encoding='UTF-8');
/**
* Ceci est un exemple d'application qui permet d'illustrer le fonctionnement du framework, il montre comment
* une application peut être dans papyrus, ou bien utilisée en stand alone.
*
* PHP version 5
*
* @category PHP
* @package Framework
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @copyright Tela-Botanica 2009
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $$Id$$
* @link /doc/framework/
*/
 
// Le fichier Framework.php du Framework de Tela Botanica doit être appelé avant tout autre chose dans l'application.
// Sinon, rien ne sera chargé.
// L'emplacement du Framework peut varier en fonction de l'environnement (test, prod...). Afin de faciliter la configuration
// de l'emplacement du Framework, un fichier framework.defaut.php doit être renommé et configuré pour chaque installation de
// l'application.
// Chemin du fichier chargeant le framework requis
$framework = dirname(__FILE__).'/framework.php';
if (!file_exists($framework)) {
$e = "Veuillez paramêtrer l'emplacement et la version du Framework dans le fichier $framework";
trigger_error($e, E_USER_ERROR);
} else {
// Inclusion du Framework
require_once $framework;
// Ajout d'information concernant cette application
Framework::setCheminAppli(__FILE__);// Obligatoire
Framework::setInfoAppli(Config::get('info'));// Optionnel
// Lancement du débogage si nécessaire
if (Config::get('chronometrage')) {
Chronometre::chrono(basename(__FILE__).' - début');
}
/**
* Fonction d'affichage de Papyrus, pour le corps de page
*/
function afficherContenuCorps() {
// Si l'utilisateur est authentifié
if (Config::get('identification')) {
// on renvoie la vue principale de l'application
$methode = '';
if (isset($_GET['m'])) {
$methode = $_GET['m'];
Debug::printr($methode);
}
$controlleur = new AdminAdministrateur();
switch ($methode) {
case 'ajout_admin':
return $controlleur->ajoutAdmin();
break;
case 'ajout_admin_va':
$nom = $_POST['admin_nom'];
$prenom = $_POST['admin_prenom'];
$mail = $_POST['admin_mail'];
$lang = $_POST['admin_lang'];
$pass = $_POST['admin_pass'];
$pass_conf = $_POST['admin_pass_confirm'];
Debug::printr($_POST);
return $controlleur->ajoutAdminVa($nom, $prenom, $mail, $lang, $pass, $pass_conf);
break;
case 'modif_admin':
$id = $_GET['id_admin'];
return $controlleur->modifAdmin($id);
break;
case 'modif_admin_va':
$id = $_GET['id_admin'];
$nom = $_POST['admin_nom'];
$prenom = $_POST['admin_prenom'];
$mail = $_POST['admin_mail'];
$lang = $_POST['admin_lang'];
$pass = $_POST['admin_pass'];
$pass_conf = $_POST['admin_pass_confirm'];
return $controlleur->modifAdminVa($id, $nom, $prenom, $mail, $lang, $pass, $pass_conf);
break;
case 'suppr_admin':
$id = $_GET['id_admin'];
return $controlleur->supprAdmin($id);
break;
default:
return $controlleur->chargerAdmin();
break;
}
} else {
// sinon on lui demande de s'identifier
$controlleur = new AdminAdministrateur();
return $controlleur->demanderIdent();
}
}
function afficherContenuTete() {
$controlleur = new AdminAdministrateur();
return $controlleur->adminTete();
}
function afficherContenuPied() {
$controlleur = new AdminAdministrateur();
return $controlleur->adminPied();
}
function afficherContenuNavigation() {
return '';
}
function afficherContenuMenu() {
return '';
}
}
?>