Subversion Repositories Applications.framework

Compare Revisions

No changes between revisions

Ignore whitespace Rev 321 → Rev 322

/trunk/exemples/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/>';
}
}
}
?>
/trunk/exemples/services/modules/0.1/MonService.php
New file
0,0 → 1,8
<?php
class MonService extends RestService {
public function consulter($ressources, $parametres) {
echo "ok";
}
}
?>
/trunk/exemples/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/>';
}
}
}
?>
/trunk/exemples/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>';
}
}
?>
/trunk/exemples/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/
/trunk/exemples/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';
?>
/trunk/exemples/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/
/trunk/exemples/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);
}
}
?>
/trunk/exemples/services
New file
Property changes:
Added: svn:ignore
+framework.php
/trunk/exemples/scripts/modules/mon_script/config.ini
New file
0,0 → 1,0
param1 = "config OK";
/trunk/exemples/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");
}
}
?>
/trunk/exemples/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
/trunk/exemples/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';
?>
/trunk/exemples/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();
}
?>
/trunk/exemples/scripts
New file
Property changes:
Added: svn:ignore
+framework.php
/trunk/exemples/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>