/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> |
/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/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/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/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/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 |
---|
New file |
Property changes: |
Added: svn:ignore |
+framework.php |