Subversion Repositories Applications.framework

Compare Revisions

No changes between revisions

Ignore whitespace Rev 291 → Rev 303

/tags/v0.3-aleaume/exemple/scripts/configurations/config.ini
New file
0,0 → 1,19
; Encodage : UTF-8
; +------------------------------------------------------------------------------------------------------+
; Info sur l'application
info.nom = Scripts de tests
; Abréviation de l'application
info.abr = SCRIPTS
; Version du Framework nécessaire au fonctionnement de cette application
info.framework.version = 0.3
; Encodage de l'application
encodage_appli = "UTF-8"
; Chemin de l'application (pour l'utiliser dans ce fichier)
chemin_scripts = "php:Framework::getCheminAppli()"
 
; +------------------------------------------------------------------------------------------------------+
; Débogage
; Indique si oui ou non on veut afficher le débogage.
debogage = true
; Indique si oui ou non on veut lancer le chronométrage
chronometrage = false
/tags/v0.3-aleaume/exemple/scripts/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 désirée du Framework
require_once '../../framework/Framework.php';
?>
/tags/v0.3-aleaume/exemple/scripts/cli.php
New file
0,0 → 1,37
<?php
// Encodage : UTF-8
// +-------------------------------------------------------------------------------------------------------------------+
/**
* Initialise le chargement et l'exécution des scripts
*
* Lancer ce fichier en ligne de commande avec :
* <code>/opt/lampp/bin/php cli.php mon_script -a test</code>
*
//Auteur original :
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright Tela-Botanica 1999-2008
* @licence GPL v3 & CeCILL v2
* @version $Id$
*/
// +-------------------------------------------------------------------------------------------------------------------+
 
// Le fichier Framework.php du Framework de Tela Botanica doit être appelée avant tout autre chose dans l'application.
// Sinon, rien ne sera chargé.
// Chemin du fichier chargeant le framework requis
$framework = dirname(__FILE__).DIRECTORY_SEPARATOR.'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'));
 
// Initialisation et lancement du script appelé en ligne de commande
Cli::executer();
}
?>
/tags/v0.3-aleaume/exemple/scripts/modules/mon_script/config.ini
New file
0,0 → 1,0
param1 = "config OK";
/tags/v0.3-aleaume/exemple/scripts/modules/mon_script/MonScript.php
New file
0,0 → 1,66
<?php
// declare(encoding='UTF-8');
/**
* Exemple de script utilisable avec le TBFramework.
* Pour le lancer, taper en ligne de commande, en vous plaçant dans le dossier /framework/exemple/scripts/ :
* <code>/opt/lampp/bin/php cli.php mon_script -a test</code>
*
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class MonScript extends Script {
protected $parametres_autorises = array(
'-y' => array(false, 'exemple de valeur par défaut', 'Un parametre supplémentaire de test'));
public function executer() {
// Récupération de paramêtres
 
// Lancement de l'action demandée
$cmd = $this->getParametre('a');
switch ($cmd) {
case 'test' :
$this->executerTest();
break;
default :
$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
}
}
 
private function executerTest() {
print('Config: '.Config::get('param1')."\n");
$this->traiterErreur("Un msg d'%s", array('erreur'));
$this->traiterErreur("Un msg d'erreur sans paramètre");
$this->traiterAvertissement("Un msg d'%s", array('avertissement'));
$this->traiterAvertissement("Un msg d'avertissement sans paramètre");
$this->traiterInfo("Un msg d'%s", array('info'));
$this->traiterInfo("Un msg d'info sans paramètre");
echo $this->formaterMsg("Un msg %s", array('formaté'));
echo $this->formaterMsg("Le parametre y : %s", array($this->getParametre('y')));
// Test de l'affichage de l'avancement dans une boucle en partant de 1
$ma_liste = array();
for ($i = 0; $i < 1000; $i++) {
$ma_liste[] = $i;
for ($j = 0; $j < 100; $j++) {
$ma_liste[] = "$i-$j";
// 1 seule boucle peut être affichée
}
$this->afficherAvancement("Afficher de l'avancement de la boucle for", 1);
}
echo "\n";
// Test de l'affichage de l'avancement dans une boucle en partant par défaut de 0
foreach ($ma_liste as $cle => $valeur) {
$this->afficherAvancement("Afficher de l'avancement de la boucle foreach");
}
echo "\n";
print("test réussi!\n");
}
}
?>
/tags/v0.3-aleaume/exemple/scripts
New file
Property changes:
Added: svn:ignore
+framework.php
/tags/v0.3-aleaume/exemple/openid/index.php
New file
0,0 → 1,54
<?php
//Inclusion du framework
require '../../framework/Framework.php';
 
// Ajout d'information concernant cette application
Framework::setCheminAppli(__FILE__);// Obligatoire
Framework::setInfoAppli(Config::get('info'));// Optionnel
$status = "";
if (isset($_POST['openid_action']) &&
$_POST['openid_action'] == "login" &&
!empty($_POST['openid_identifier'])) {
 
$consumer = new OpenIdClient();
if (!$consumer->login($_POST['openid_identifier'])) {
$status = "OpenID login failed.";
}
} else if (isset($_GET['openid_mode'])) {
if ($_GET['openid_mode'] == "id_res") {
$consumer = new OpenIdClient();
if ($consumer->verify($_GET, $id)) {
$status = "VALID " . htmlspecialchars($id);
} else {
$status = "INVALID " . htmlspecialchars($id);
}
} else if ($_GET['openid_mode'] == "cancel") {
$status = "CANCELLED";
}
}
?>
 
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Client Open Id de Tela Botanica - Identification</title>
<meta name="DC.title" content="Client Open Id de Tela Botanica - Identification" />
<meta name="description" content="Client de l'application Open Id de Tela Botanica, Identification unique" />
<meta name="keywords" content="OpenId, identification automatique, Tela Botanica" />
<meta name="author" content="Grégoire Duché" />
</head>
<body>
<h1>Identification par OpenId</h1>
<?php echo "$status<br>" ?>
<p>Veuillez saisir les informations de connexion ci-dessous : </p>
<!-- TODO : ajouter action="" -->
<form name="identication" method="post">
<input type="text" name="openid_identifier">
<input type="submit" name="openid_action" value="login">
</form>
</body>
</html>
/tags/v0.3-aleaume/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 '';
}
}
?>
/tags/v0.3-aleaume/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
encodage_appli = "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
/tags/v0.3-aleaume/exemple/interfaces/configurations/config_papyrus.ini
New file
0,0 → 1,6
;Encodage de l'application
encodage_appli = "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()"
/tags/v0.3-aleaume/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';
?>
/tags/v0.3-aleaume/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>
/tags/v0.3-aleaume/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
/tags/v0.3-aleaume/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
/tags/v0.3-aleaume/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
/tags/v0.3-aleaume/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
/tags/v0.3-aleaume/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
/tags/v0.3-aleaume/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';
?>
/tags/v0.3-aleaume/exemple/interfaces/logs
New file
Property changes:
Added: svn:ignore
+bdd
+erreurs
+vues
/tags/v0.3-aleaume/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
/tags/v0.3-aleaume/exemple/services/index.php
New file
0,0 → 1,43
<?php
// Encodage : UTF-8
// Permet d'afficher le temps d'execution du service
$temps_debut = (isset($_GET['chrono']) && $_GET['chrono'] == 1) ? microtime(true) : '';
// +-------------------------------------------------------------------------------------------------------------------+
/**
* Serveur
*
* Description : initialise le chargement et l'exécution des services web.
*
//Auteur original :
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Tela-Botanica 1999-2008
* @licence GPL v3 & CeCILL v2
* @version $Id$
*/
// +-------------------------------------------------------------------------------------------------------------------+
 
// Le fichier autoload.inc.php du Framework de Tela Botanica doit être appelée avant tout autre chose dans l'application.
// Sinon, rien ne sera chargé.
// Chemin du fichier chargeant le framework requis
$framework = dirname(__FILE__).DIRECTORY_SEPARATOR.'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'));
// Initialisation et lancement du serveur
$Serveur = new RestServeur();
$Serveur->executer();
// Affiche le temps d'execution du service
if (isset($_GET['chrono']) && $_GET['chrono'] == 1) {
$temps_fin = microtime(true);
echo 'Temps d\'execution : '.round($temps_fin - $temps_debut, 4);
}
}
?>
/tags/v0.3-aleaume/exemple/services/modules/0.1/MonService.php
New file
0,0 → 1,8
<?php
class MonService extends RestService {
public function consulter($ressources, $parametres) {
echo "ok";
}
}
?>
/tags/v0.3-aleaume/exemple/services/modules/0.1/ServiceCacheFichier.php
New file
0,0 → 1,99
<?php
class ServiceCacheFichier extends RestService {
public function consulter($ressources, $parametres) {
// Redéfinition ici mais peut être configuré depuis le fichier config.ini
$options = array(
'stockage_mode' => Cache::STOCKAGE_MODE_FICHIER,
'stockage_chemin' => Fichier::getDossierTmp(),
'controle_ecriture' => false,
'mise_en_cache' => true,
'cache_id_prefixe' => null,
'serialisation_auto' => false,
'nettoyage_auto' => 10,
'duree_de_vie' => 3600,
);
// Redéfinition ici mais peut être configuré depuis le fichier config.ini
$options_stockage = array(
'fichier_verrou' => false,
'controle_lecture' => false,
'controle_lecture_type' => 'crc32',
'dossier_niveau' => 2,
'dossier_umask' => 0707,
'fichier_prefixe' => 'tbf',
'fichier_umask' => 0606,
'metadonnees_max_taille' => 100
);
$cache = new Cache($options, $options_stockage);
$id = 'monCache'; // id de cache de "ce que l'on veut cacher"
$id01 = $id.'01';
$id02 = $id.'02';
$id03 = $id.'03';
if (!($donnees = $cache->charger($id01))) {
$donnees = 'Mise en cache à : '.strftime('%A %d %B %Y à %H:%M:%S', time()).'<br/>';
for ($i = 0; $i < 100000; $i++) {
$donnees .= $i;
}
$cache->sauver($donnees, $id01);
$cache->sauver($donnees, $id02, array('tagTest01'));
$cache->sauver($donnees, $id03, array('tagTest01','tagTest02', 'tagTest03'));
}
// Affichage des données
echo $donnees.'<br/>';
// Affichage des ids du cache
echo 'Ids des enregistrements en cache : <pre>'.print_r($cache->getIds(), true).'</pre>';
// Affichage des ids du cache
echo 'Tags des enregistrements en cache : <pre>'.print_r($cache->getTags(), true).'</pre>';
// Affichage des ids du cache pour un tag donnée
$tag01 = 'tagTest01';
$tag02 = 'tagTest02';
$tag03 = 'tagTest03';
echo "Ids avec les tag '$tag02, $tag03' : ".'<pre>'.print_r($cache->getIdsAvecLesTags(array($tag02, $tag03)), true).'</pre>';
echo "Ids possédant le tag '$tag01' : ".'<pre>'.print_r($cache->getIdsAvecUnTag(array($tag01)), true).'</pre>';
echo "Ids sans les tag '$tag01, $tag02' : ".'<pre>'.print_r($cache->getIdsSansLesTags(array($tag01, $tag02)), true).'</pre>';
// Test du test de l'existence du cache
$id_test = $id01;
echo ($cache->tester($id_test) ? "OK : le cache '$id_test' existe" : "KO : le cache '$id_test' devrait exister").'<br/>';
// Affichage du pourcentage de remplissage
echo 'Pourcentage de remplissage : '.$cache->getPourcentageRemplissage().'%<br/>';
// Affichage des métadonnées
$meta03 = $cache->getMetadonnees($id03);
echo "Métadonnées du cache '$id03' : <pre>".print_r($meta03, true).'</pre>';
$meta01 = $cache->getMetadonnees($id_test);
echo "Métadonnées du cache '$id_test' : <pre>".print_r($meta01, true).'</pre>';
// Nettoyage & suppression
echo "Temps avant suppression du cache : ".(time() - $meta01['expiration']).'s<br/>';
if ((time() - $meta01['expiration']) >= -30) {
// Suppressions
$cache->supprimer($id_test);
echo (!$cache->tester($id_test) ? "OK : le cache '$id_test' a bien été supprimé" : "KO : le cache '$id_test' n'a pas été supprimé").'<br/>';
// Nettoyage
$cache->nettoyer(Cache::NETTOYAGE_MODE_AVEC_LES_TAGS, array($tag02, $tag03));
echo (!$cache->tester($id03) ? "OK : le cache '$id03' a bien été supprimé" : "KO : le cache '$id03' n'a pas été supprimé").'<br/>';
$cache->nettoyer(Cache::NETTOYAGE_MODE_SANS_LES_TAGS, array($tag01));
echo ($cache->tester($id02) ? "OK : le cache '$id02' n'a pas été supprimé" : "KO : le cache '$id02' a été supprimé").'<br/>';
$cache->nettoyer(Cache::NETTOYAGE_MODE_EXPIRATION);
echo ($cache->tester($id02) ? "OK : le cache '$id02' n'a pas été supprimé" : "KO : le cache '$id02' a été supprimé").'<br/>';
$cache->nettoyer(Cache::NETTOYAGE_MODE_TOUS);
echo (!$cache->tester($id01) ? "OK : le cache '$id02' a été supprimé" : "KO : le cache '$id02' n'a pas été supprimé").'<br/>';
} else if ((time() - $meta01['expiration']) < -60) {
// Test ajout d'une durée de vie supplémentaire
$meta01 = $cache->getMetadonnees($id_test);
echo "Durée de vie du cache '$id_test' : ".$meta01['expiration'].'<br/>';
$cache->ajouterSupplementDureeDeVie($id_test, -3540);
$meta02 = $cache->getMetadonnees($id_test);
echo "Durée de vie du cache '$id_test' après ajout supplément de -3540s : ".$meta02['expiration'].
' - diff. : '.($meta02['expiration'] - $meta01['expiration']).'<br/>';
}
}
}
?>
/tags/v0.3-aleaume/exemple/services/modules/0.1/ServiceCacheSimple.php
New file
0,0 → 1,28
<?php
class ServiceCacheSimple extends RestService {
public function consulter($ressources, $parametres) {
// Redéfinition ici mais peut être configuré depuis le fichier config.ini
$options = array(
'mise_en_cache' => true,
'stockage_mode' => Cache::STOCKAGE_MODE_SIMPLE,
//'stockage_chemin' => 'indiquer le chemin du dossier où mettre le cache par défaut utilise Fichier::getDossierTmp()',
'duree_de_vie' => 10
);
// Le cache Simple utilise le design pattern fabrique pour être généré.
$cache = Cache::fabriquer(Cache::STOCKAGE_MODE_SIMPLE, $options);
$id = 'monCache1'; // id de cache de "ce que l'on veut cacher"
if (!($donnees = $cache->charger($id))) {
$donnees = 'Mise en cache à : '.strftime('%A %d %B %Y à %H:%M:%S', time()).'<br/>';
for ($i = 0; $i < 100000; $i++) {
$donnees .= $i;
}
$cache->sauver($donnees, $id);
}
// Affichage des données
echo '<hr/>'.$donnees.'<hr/><p>Hors cache : '.strftime('%A %d %B %Y à %H:%M:%S').'</p>';
}
}
?>
/tags/v0.3-aleaume/exemple/services/modules/0.1/ServiceCacheSqlite.php
New file
0,0 → 1,88
<?php
class ServiceCacheSqlite extends RestService {
public function consulter($ressources, $parametres) {
// Redéfinition ici mais peut être configuré depuis le fichier config.ini
$options = array(
'stockage_mode' => Cache::STOCKAGE_MODE_SQLITE,
'stockage_chemin' => Fichier::getDossierTmp().DS.'cache.sqlite',
'controle_ecriture' => false,
'mise_en_cache' => true,
'cache_id_prefixe' => null,
'serialisation_auto' => false,
'nettoyage_auto' => 10,
'duree_de_vie' => 3600,
);
$cache = new Cache($options);
$id = 'monCache'; // id de cache de "ce que l'on veut cacher"
$id01 = $id.'01';
$id02 = $id.'02';
$id03 = $id.'03';
if (!($donnees = $cache->charger($id01))) {
$donnees = 'Mise en cache à : '.strftime('%A %d %B %Y à %H:%M:%S', time()).'<br/>';
for ($i = 0; $i < 100000; $i++) {
$donnees .= $i;
}
$cache->sauver($donnees, $id01);
$cache->sauver($donnees, $id02, array('tagTest01'));
$cache->sauver($donnees, $id03, array('tagTest01','tagTest02', 'tagTest03'));
}
// Affichage des données
echo $donnees.'<br/>';
// Affichage des ids du cache
echo 'Ids des enregistrements en cache : <pre>'.print_r($cache->getIds(), true).'</pre>';
// Affichage des ids du cache
echo 'Tags des enregistrements en cache : <pre>'.print_r($cache->getTags(), true).'</pre>';
// Affichage des ids du cache pour un tag donnée
$tag01 = 'tagTest01';
$tag02 = 'tagTest02';
$tag03 = 'tagTest03';
echo "Ids avec les tag '$tag02, $tag03' : ".'<pre>'.print_r($cache->getIdsAvecLesTags(array($tag02, $tag03)), true).'</pre>';
echo "Ids possédant le tag '$tag01' : ".'<pre>'.print_r($cache->getIdsAvecUnTag(array($tag01)), true).'</pre>';
echo "Ids sans les tag '$tag01, $tag02' : ".'<pre>'.print_r($cache->getIdsSansLesTags(array($tag01, $tag02)), true).'</pre>';
// Test du test de l'existence du cache
$id_test = $id01;
echo ($cache->tester($id_test) ? "OK : le cache '$id_test' existe" : "KO : le cache '$id_test' devrait exister").'<br/>';
// Affichage du pourcentage de remplissage
echo 'Pourcentage de remplissage : '.$cache->getPourcentageRemplissage().'%<br/>';
// Affichage des métadonnées
$meta03 = $cache->getMetadonnees($id03);
echo "Métadonnées du cache '$id03' : <pre>".print_r($meta03, true).'</pre>';
$meta01 = $cache->getMetadonnees($id_test);
echo "Métadonnées du cache '$id_test' : <pre>".print_r($meta01, true).'</pre>';
// Nettoyage & suppression
echo "Temps avant suppression du cache : ".(time() - $meta01['expiration']).'s<br/>';
if ((time() - $meta01['expiration']) >= -30) {
// Suppressions
$cache->supprimer($id_test);
echo (!$cache->tester($id_test) ? "OK : le cache '$id_test' a bien été supprimé" : "KO : le cache '$id_test' n'a pas été supprimé").'<br/>';
// Nettoyage
$cache->nettoyer(Cache::NETTOYAGE_MODE_AVEC_LES_TAGS, array($tag02, $tag03));
echo (!$cache->tester($id03) ? "OK : le cache '$id03' a bien été supprimé" : "KO : le cache '$id03' n'a pas été supprimé").'<br/>';
$cache->nettoyer(Cache::NETTOYAGE_MODE_SANS_LES_TAGS, array($tag01));
echo ($cache->tester($id02) ? "OK : le cache '$id02' n'a pas été supprimé" : "KO : le cache '$id02' a été supprimé").'<br/>';
$cache->nettoyer(Cache::NETTOYAGE_MODE_EXPIRATION);
echo ($cache->tester($id02) ? "OK : le cache '$id02' n'a pas été supprimé" : "KO : le cache '$id02' a été supprimé").'<br/>';
$cache->nettoyer(Cache::NETTOYAGE_MODE_TOUS);
echo (!$cache->tester($id01) ? "OK : le cache '$id02' a été supprimé" : "KO : le cache '$id02' n'a pas été supprimé").'<br/>';
} else if ((time() - $meta01['expiration']) < -60) {
// Test ajout d'une durée de vie supplémentaire
$meta01 = $cache->getMetadonnees($id_test);
echo "Durée de vie du cache '$id_test' : ".$meta01['expiration'].'<br/>';
$cache->ajouterSupplementDureeDeVie($id_test, -3540);
$meta02 = $cache->getMetadonnees($id_test);
echo "Durée de vie du cache '$id_test' après ajout supplément de -3540s : ".$meta02['expiration'].
' - diff. : '.($meta02['expiration'] - $meta01['expiration']).'<br/>';
}
}
}
?>
/tags/v0.3-aleaume/exemple/services/configurations/config.ini
New file
0,0 → 1,21
; Encodage : UTF-8
; +------------------------------------------------------------------------------------------------------+
; Info sur l'application
info.nom = Services de tests
; Abréviation de l'application
info.abr = SERVICE
; Version du Framework nécessaire au fonctionnement de cette application
info.framework.version = 0.3
;Encodage de l'application
encodage_appli = "UTF-8"
 
; +------------------------------------------------------------------------------------------------------+
; Débogage
; Indique si oui ou non on veut afficher le débogage.
debogage = true
; Indique si oui ou non on veut lancer le chronométrage
chronometrage = false
 
; +------------------------------------------------------------------------------------------------------+
; Spécifique aux services
serveur.baseURL = /framework/exemple/services/
/tags/v0.3-aleaume/exemple/services/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 désirée du Framework
require_once '../../framework/Framework.php';
?>
/tags/v0.3-aleaume/exemple/services/.htaccess
New file
0,0 → 1,13
<files *.ini>
order deny,allow
deny from all
</files>
 
#AddHandler x-httpd-php5 .php
AddDefaultCharset UTF-8
 
RewriteEngine On
# Redirections générale vers le fichier principal de Widget.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php/
/tags/v0.3-aleaume/exemple/services
New file
Property changes:
Added: svn:ignore
+framework.php
/tags/v0.3-aleaume/exemple/.
New file
Property changes:
Added: svn:ignore
+framework.php