Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 104 → Rev 105

/trunk/exemple/modeles/ListeAdmin.php
1,6 → 1,7
<?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 {
8,7 → 9,7
private $config = array();
/**
* Charge la liste complète des administrateurs
* 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
*/
27,10 → 28,10
}
/**
* Charge les informations liées à un administrateur
* grâce à son id
* 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é
* @return object un object contenant les informations de l'administrateur demandé
*/
public function loadDetailsAdmin($id) {
$requete = 'SELECT * '.
47,8 → 48,8
/**
* 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é
* 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
74,20 → 75,20
$ligne = $res_nb->fetch();
$nb_admin = $ligne['nb_admin'] ;
} else {
$res['bdd'] = 'Erreur dans la base de données' ;
$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' ;
$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
// 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
// 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)) ;
106,7 → 107,7
if($req_maj = $this->requete($query)) {
} else {
$res['bdd'] = 'Erreur de la requête dans la base de données' ;
$res['bdd'] = 'Erreur de la requête dans la base de données' ;
}
return $res;
113,7 → 114,7
}
/**
* Supprime un administrateur ayant un id donnée
* 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
*/
127,7 → 128,7
$ligne = $res_nb->fetch();
$nb_admin = $ligne['nb_admin'] ;
} else {
$res = 'Erreur dans la base de données' ;
$res = 'Erreur dans la base de donn�es' ;
return $res ;
}
141,13 → 142,13
if($res_supp = $this->requete($query)) {
return $res ;
} else {
$res = 'Erreur dans la base de données' ;
$res = 'Erreur dans la base de données' ;
return $res ;
}
}
/**
* Ajoute un administrateur dans la base de données
* Ajoute un administrateur dans la base de données
* @param string nom
* @param string prenom
* @param string le mail
171,16 → 172,16
$ligne = $res_nb->fetch() ;
$nb_admin = $ligne['nb_admin'] ;
} else {
$res['bdd'] = 'Erreur dans la base de données' ;
$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' ;
$res['mail'] = 'Cet email est déjà utilisé par un autre utilisateur' ;
}
if($pass != '' || $pass_conf != '') {
// on vérifie si les deux concordent
// on vérifie si les deux concordent
if($pass == $pass_conf) {
} else {
210,7 → 211,7
if($res_ajout = $this->requete($query)) {
} else {
$res['bdd'] = 'Erreur de la requête dans la base de données' ;
$res['bdd'] = 'Erreur de la requête dans la base de données' ;
}
return $res ;
217,20 → 218,20
}
/**
* Fonction qui prend une chaine en paramètre et renvoie vrai
* 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
* @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)
$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
$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
'('.$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)) {
/trunk/exemple/admin_administrateur.php
New file
0,0 → 1,92
<?php
// declare(encoding='UTF-8');
/**
* @category PHP
* @package Framework
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @copyright Tela-Botanica 2009
* @link /doc/framework/
* 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.
*/
 
// La fonction autolad doit être appelée avant tout autre chose dans l'application.
// Sinon, rien ne sera chargé.
require_once dirname(__FILE__).'/../framework/autoload.inc.php';
Application::setChemin(__FILE__);
Application::setInfo(Config::get('info'));
/**
* 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'];
}
$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'];
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:
$retour = $controlleur->chargerAdmin();
return $retour;
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 '';
}
 
?>
/trunk/exemple/configurations/config_papyrus.ini
1,4 → 1,4
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone
; 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.
; Mettre à true si l'application nécessite de s'identifier.
identification = "php:$GLOBALS['_GEN_commun']['pear_auth']->getAuth()"
/trunk/exemple/configurations/config.ini
1,8 → 1,7
; Info sur l'application
info.nom = Gestion des administrateurs de Papyrus
info.abr = AA
info.encodage = ISO-8859-15
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone
; 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.
; Mettre à true si l'application nécessite de s'identifier.
identification = true
/trunk/exemple/index.php
1,92 → 1,99
<?php
/**
* @category PHP
* @package Framework
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @copyright Tela-Botanica 2009
* @link /doc/framework/
* 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.
*/
 
// La fonction autolad doit être appelée avant tout autre chose dans l'application.
// Sinon, rien ne sera chargé.
require_once dirname(__FILE__).'/../framework/autoload.inc.php';
Application::setChemin(__FILE__);
Application::setInfo(Config::get('info'));
/**
* 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'];
}
$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'];
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:
$retour = $controlleur->chargerAdmin();
return $retour;
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();
}
 
if(!defined('PAP_VERSION')) {
echo afficherContenuTete();
echo afficherContenuCorps();
echo afficherContenuPied();
}
/*
* afficherContenuNavigation()
* afficherContenuMenu()
*/
?>
/** Inclusion du fichier principal de l'application (eflore)*/
require_once 'admin_administrateur.php';
$contenu_navigation = afficherContenuNavigation();
$contenu_tete = afficherContenuTete();
$contenu_corps = afficherContenuCorps();
$titre = "";
$contenu_pied = afficherContenuPied();
$contenu_menu = afficherContenuMenu();
?>
<!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/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/reseau/generique/images/graphisme/logo_jaune.gif" 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 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/controleurs/AdminAdministrateur.php
1,4 → 1,5
<?php
// declare(encoding='UTF-8');
/**
* Classe controleur pour l'application administration des administrateurs
*/
5,7 → 6,7
class AdminAdministrateur extends Controleur {
 
/**
* Fonction d'affichage par défaut, elle appelle la liste des administrateurs
* Fonction d'affichage par défaut, elle appelle la liste des administrateurs
*/
public function index() {
$this->charger_admin();
12,8 → 13,8
}
 
/**
* Charge la liste des administrateurs et l'envoie à la vue
* @param array un tableau contenant les erreurs à afficher s'il y en a
* 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()) {
26,9 → 27,9
}
 
/**
* Charge les détails d'un administrateur demandé et l'envoi à la
* 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
* @id string l'id de l'administrateur à modifier
* @return string la vue correspondante
*/
public function modifAdmin($id) {
40,13 → 41,13
}
 
/**
* 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,
* 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 prénom
* @param string le mail
* @param string le mot de passe
* @param string la confirmation du mot de passe
73,7 → 74,7
}
 
/**
* Supprime un administrateur dans la base de données,
* 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
107,12 → 108,12
}
 
/**
* 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
* 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 prénom
* @param string le mail
* @param string le mot de passe
* @param string la confirmation du mot de passe
149,7 → 150,7
}
}
 
/** Apelle le formulaire d'identification (dans le cas où l'utilisateur n'est pas identifié)
/** 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() {
158,7 → 159,7
}
 
/**
* Renvoie la tête de page de l'application
* Renvoie la t�te de page de l'application
* @return string la tete de page de l'application
*/
public function adminTete() {