/branches/v4.0/scripts/configuration/config_chemin.inc.php |
---|
New file |
0,0 → 1,67 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.3 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This file is part of eFlore-consultation. | |
// | | |
// | Foobar is free software; you can redistribute it and/or modify | |
// | it under the terms of the GNU General Public License as published by | |
// | the Free Software Foundation; either version 2 of the License, or | |
// | (at your option) any later version. | |
// | | |
// | Foobar is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// | GNU General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public License | |
// | along with Foobar; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: ef_config_chemin.inc.php,v 1.16 2007-07-17 07:48:23 jp_milcent Exp $ |
/** |
* Fichier de configuration des chemins des fichiers utilisés par l'application eFlore. |
* |
* Fichier contenant des constantes et des variables globales permettant de configurer eFlore-consultation. |
* |
*@package eflore |
*@subpackage configuration |
//Auteur original : |
*@author Linda ANGAMA<linda_angama@yahoo.fr> |
//Autres auteurs : |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.16 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// | CORPS du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// Définition des chemins de fichiers. |
/** Constante stockant le chemin vers le dossier modules.*/ |
define('SC_CHEMIN_MODULE', SC_CHEMIN_APPLI.'modules/'); |
/** Constante stockant le chemin vers le dossier bibliothèque.*/ |
define('SC_CHEMIN_BIBLIO', SC_CHEMIN_APPLI.'bibliotheque/'); |
/** Constante stockant le chemin vers le dossier metier.*/ |
define('SC_CHEMIN_BIBLIO_METIER', Sc_CHEMIN_BIBLIO.'metier/'); |
/** Constante stockant le chemin vers le dossier noyau.*/ |
define('SC_CHEMIN_BIBLIO_NOYAU', SC_CHEMIN_BIBLIO.'noyau/'); |
/** Constante stockant le chemin vers l'API PEAR.*/ |
define('SC_CHEMIN_PEAR', '../api/pear/'); |
// +------------------------------------------------------------------------------------------------------+ |
// Tableaux sotckant les chemins des classes pour la fonction autoload |
$GLOBALS['_SCRIPT_']['chemins_classes'] = array( SC_CHEMIN_BIBLIO_NOYAU, |
SC_CHEMIN_BIBLIO_METIER); |
?> |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/branches/v4.0/scripts/configuration/config.inc.php.defaut |
---|
New file |
0,0 → 1,125 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.3 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This file is part of eFlore-consultation. | |
// | | |
// | Foobar is free software; you can redistribute it and/or modify | |
// | it under the terms of the GNU General Public License as published by | |
// | the Free Software Foundation; either version 2 of the License, or | |
// | (at your option) any later version. | |
// | | |
// | Foobar is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// | GNU General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public License | |
// | along with Foobar; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: ef_config.inc.php.sauv,v 1.1 2005/12/21 15:11:13 jp_milcent Exp $ |
/** |
* Fichier de configuration des paramêtres sépcifique à un déploiement d'eFlore. |
* |
* Fichier contenant des constantes et des variables globales permettant de configurer eFlore-consultation. |
* |
*@package eflore |
*@subpackage configuration |
//Auteur original : |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// LA LIVRAISON : |
define('SC_LIVRAISON', 'HEAD'); |
// +------------------------------------------------------------------------------------------------------+ |
// LA DISTRIBUTION : |
/** Constante stockant le nom de la distribution. Utile lorsqu'on déploie cette appli pour un site particulier et |
* que l'on veut pouvoir employer des squelettes particuliers pour chaque module.*/ |
define('SC_DISTRIBUTION', 'tela'); |
// +------------------------------------------------------------------------------------------------------+ |
// Définition des valeurs par défaut de l'interface d'eFlore |
$GLOBALS['_SCRIPT_']['titre'] = 'Script';// Le titre générique de l'application |
// +------------------------------------------------------------------------------------------------------+ |
// Gestion de Pear |
// define('SC_CHEMIN_PEAR', ''); |
// set_include_path(get_include_path().PATH_SEPARATOR.SC_CHEMIN_PEAR); |
// +------------------------------------------------------------------------------------------------------+ |
// Définition de la langue |
/** Constante stockant la langue principale utilisée pour l'application.*/ |
define('SC_LANGUE_PRINCIPALE', 'fr'); |
// +------------------------------------------------------------------------------------------------------+ |
// Gestion des dates |
/** Définition du fuseau horaire à utiliser pour eFlore. */ |
date_default_timezone_set('Europe/Paris'); |
// +------------------------------------------------------------------------------------------------------+ |
// Débogage |
/** Constante stockant si oui ou non on veut afficher le débogage.*/ |
define('SC_DEBOGAGE', true); |
/** Constante stockant si oui ou non on veut afficher le débogage des fichiers PEAR.*/ |
define('SC_DEBOGAGE_PEAR', false); |
/** Constante stockant la chaine permettant de repérer en se basabt sur le chemin, les fichiers provenant de la bibliothèque PEAR.*/ |
define('SC_DEBOGAGE_PEAR_CHAINE', '/lib/php/'); |
/** Constante stockant une expression régulière permettant de repérer en se basant sur le message, les fichiers provenant de la bibliothèque PEAR.*/ |
define('SC_DEBOGAGE_PEAR_REGEXP_MESSAGE', '/^Non-static method (?:DB::connect|PEAR::isError)/'); |
/** Constante stockant si oui ou non on veut afficher le contexte de débogage.*/ |
define('SC_DEBOGAGE_CONTEXTE', false); |
/** Constante stockant une valeur correspondant au niveau d'erreur à employer pour le code PHP.*/ |
define('SC_DEBOGAGE_NIVEAU', 2048);// Voir le manuel de PHP pour les différents niveaux disponibles. |
/** Constante stockant si oui ou nom on veut afficher le tableau de chronométrage de l'application.*/ |
define('SC_DEBOGAGE_CHRONO', true); |
ini_set('html_errors', true); |
// +------------------------------------------------------------------------------------------------------+ |
// Paramétrage de la base de données. |
/** Constante stockant le protocole de la base de données.*/ |
define('SC_BDD_PROTOCOLE', 'mysql'); |
/** Constante stockant le nom du serveur de bases de données.*/ |
define('SC_BDD_SERVEUR', 'localhost'); |
/** Constante stockant le nom de l'utilisateur de la base de données.*/ |
define('SC_BDD_UTILISATEUR', ''); |
/** Constante stockant le mot de passse de l'utilisateur de la base de données.*/ |
define('SC_BDD_MOT_DE_PASSE', ''); |
/** Constante stockant le nom de la base de données principale.*/ |
define('SC_BDD_NOM_PRINCIPALE', 'tela_prod_wikini'); |
// +------------------------------------------------------------------------------------------------------+ |
// Définition des chemins où stocker les fichiers |
/** Constante stockant si oui ou non, nous appliquons un mécanisme de cache.*/ |
define('SC_BOOL_STOCKAGE_CACHE', false); |
/** Constante stockant le chemin vers le dossier où sont stockés les pages mise en cache.*/ |
define('SC_CHEMIN_STOCKAGE_CACHE', '/home/telabotap/tmp/'); |
// +------------------------------------------------------------------------------------------------------+ |
// Les URLs |
/** Constante stockant l'URL de base de l'application recherche de plante sous forme de chaine txt.*/ |
define('SC_URL', 'http://www.tela-botanica.org/scripts/'); |
/** Constante stockant l'URL du fichier css "complexe" (= pour les navigateurs récents) de Tela Botanica.*/ |
define('SC_URL_CSS_TB_COMPLEXE', 'http://www.tela-botanica.org/sites/commun/fr/styles/commun_complexe.css'); |
/** Constante stockant l'URL du fichier css "simple" (= pour les vieux navigateurs) de Tela Botanica.*/ |
define('SC_URL_CSS_TB_SIMPLE', 'http://www.tela-botanica.org/sites/commun/fr/styles/commun_simple.css'); |
/** Constante stockant l'URL du fichier css "impression" de Tela Botanica.*/ |
define('SC_URL_CSS_TB_IMPRESSION', 'http://www.tela-botanica.org/sites/commun/fr/styles/impression.css'); |
/** Constante stockant l'URL du fichier css d'eFlore.*/ |
define('SC_URL_CSS_EFLORE', 'http://www.tela-botanica.org/sites/eflore/fr/styles/eflore.css'); |
/** Constante stockant le chemin (l'url) vers le dossier js (javascript)*/ |
define('SC_URL_JS','http://www.tela-botanica.org/scripts/bibliotheque/js/'); |
?> |
/branches/v4.0/scripts/configuration/config_bdd.inc.php |
---|
New file |
0,0 → 1,89 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.3 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This file is part of eFlore-consultation. | |
// | | |
// | Foobar is free software; you can redistribute it and/or modify | |
// | it under the terms of the GNU General Public License as published by | |
// | the Free Software Foundation; either version 2 of the License, or | |
// | (at your option) any later version. | |
// | | |
// | Foobar is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// | GNU General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public License | |
// | along with Foobar; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: ef_config_bdd.inc.php,v 1.9 2007-06-19 10:32:57 jp_milcent Exp $ |
/** |
* Fichier de configuration de la base de données d'eFlore. |
* |
* Contient les constantes de connexion à la base de données d'eFlore. |
* |
*@package eflore |
*@subpackage configuration |
//Auteur original : |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
//Autres auteurs : |
*@author aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.9 $ $Date: 2007-06-19 10:32:57 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// | CORPS du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// Paramétrage de la valeur du DSN pour Pear DB. |
/** Constante stockant le DSN permetant de se connecter à la base de données principale.*/ |
define('SC_DSN_PRINCIPAL', SC_BDD_PROTOCOLE.'://'.SC_BDD_UTILISATEUR.':'.SC_BDD_MOT_DE_PASSE.'@'.SC_BDD_SERVEUR.'/'.SC_BDD_NOM_PRINCIPALE); |
$GLOBALS['_SCRIPT_']['dsn'] = SC_DSN_PRINCIPAL; |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: ef_config_bdd.inc.php,v $ |
* Revision 1.9 2007-06-19 10:32:57 jp_milcent |
* Début utilisation de classes par module utilisant l'API 1.1.1. |
* Renomage des anciennes classes en "Deprecie". |
* |
* Revision 1.8 2005-12-21 15:11:13 jp_milcent |
* Nouvelle gestion de la configuration. |
* |
* Revision 1.7 2005/12/15 16:01:21 jp_milcent |
* Fusion de la branche bdnff_v3_v4 vers la branche principale. |
* |
* Revision 1.6 2005/12/04 23:57:28 ddelon |
* Recherche approchee |
* |
* Revision 1.5 2005/10/06 18:48:47 jp_milcent |
* Modif |
* |
* Revision 1.4 2005/08/30 16:11:13 jp_milcent |
* La recherche dans la classification fonctionne de manière récursive. |
* |
* Revision 1.3 2005/07/28 15:37:56 jp_milcent |
* Début gestion des squelettes et de l'API eFlore. |
* |
* Revision 1.2 2005/07/26 16:27:29 jp_milcent |
* Début mise en place framework eFlore. |
* |
* Revision 1.1 2005/07/26 09:19:05 jp_milcent |
* Légère modif. |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/branches/v4.0/scripts/configuration |
---|
New file |
Property changes: |
Added: svn:ignore |
+config.inc.php |
/branches/v4.0/scripts/modules/wikini/squelettes/proprietaire.tpl.html |
---|
New file |
0,0 → 1,54 |
<h1>Modification des proprietaires des pages de wikini</h1> |
<p>Cette interface met à jour le proprietaire d'une ou plusieurs pages de wikini</p> |
<p>Dans le champs "chemin" indiquer soit :</p> |
<ul> |
<li>un fichier wakka.config.php pour modifier un seul wikini. Exemple : /home/outilsre/www/wikini/WikiniPapyrus/wakka.config.php</li> |
<li>un dossier pour modifier tous les wikini qu'il contient. Exemple : /home/outilsre/www/wikini</li> |
</ul> |
<p>Dans le champ proprietaire, indiquer le nom Wiki du nouveau proprietaire des pages.</p> |
<p>Dans le champ page(s), laisser vide pour modifier toutes les pages ou indiquer le nom des pages à modifier séparées par des virgules.</p> |
<div> |
<p>Les champs précédés du symbole <span class="symbole_obligatoire">*</span> doivent être obligatoirement remplis.</p> |
<form id="sc_form" name="sc_form" action="<?=$url;?>" method="post" onsubmit="return validate(this, var_1);"> |
<fieldset> |
<legend>Suppression de commentaires et referrers</legend> |
<table id="sc_table_form"> |
<tr> |
<td><span class="symbole_obligatoire">*</span> <label for="sc_chemin" class="champ_obligatoire">Chemin du dossier des wikini</label></td> |
<td><input id="sc_chemin" name="sc_chemin" type="text" value="<?=(isset($_POST['sc_chemin'])) ? $_POST['sc_chemin'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><span class="symbole_obligatoire">*</span> <label for="sc_utilisateur" class="champ_obligatoire">Nom du nouveau propriétaire</label></td> |
<td><input id="sc_owner" name="sc_owner" type="text" value="<?=(isset($_POST['sc_owner'])) ? $_POST['sc_owner'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_utilisateur" class="champ_obligatoire">Page(s)</label></td> |
<td><input id="sc_page" name="sc_page" type="text" value="<?=(isset($_POST['sc_page'])) ? $_POST['sc_page'] : '' ;?>"/></td> |
</tr> |
</table> |
</fieldset> |
<p> |
<input type="submit" value="Modifier le proprietaire" /> |
<input type="reset" value="Tout effacer" /> |
</p> |
</form> |
</div> |
<?php if (isset($wikinis)) : ?> |
<?php foreach ($wikinis as $wikini) : ?> |
<h2><?=$wikini['nom'];?> (dossier : <?=$wikini['dossier'];?> - version : <?=$wikini['version'];?>)</h2> |
<pre> |
<?php foreach ($wikini['requetes'] as $requete) : ?> |
<?=$requete;?> |
<?php endforeach; ?> |
</pre> |
<?php endforeach; ?> |
<?php endif; ?> |
<script type="text/javascript"> |
<!--/*--><![CDATA[//><!-- |
var msg_1 = 'Erreur:'; |
var var_1 = new Array(); |
var_1[0] = new Array('sc_chemin','e', "Vous n'avez pas mentionné le chemin vers le dossier contenant les dossiers des wikinis.", ''); |
var_1[1] = new Array('sc_owner','e', "Vous n'avez pas mentionné le nom du nouveau propriétaire.", ''); |
//--><!]]> |
</script> |
<script type="text/JavaScript" src="<?=SC_URL_JS.'ValiderFormulaire.js';?>"></script> |
/branches/v4.0/scripts/modules/wikini/squelettes/config_bdd.tpl.html |
---|
New file |
0,0 → 1,44 |
<h1>Mise à jour des tables de Wikini</h1> |
<p>Cette interface permet pour l'instant de mettre à jour la table "acls" de Wikini. Elle va remplacer les droits présent dans la |
table par ceux présent dans les valeurs par défaut définies dans le fichier wakka.config.php du Wikini.</p> |
<p>Dans le champs "chemin" indiquer soit :</p> |
<ul> |
<li>un fichier wakka.config.php pour modifier un seul wikini. Exemple : /home/outilsre/www/wikini/WikiniPapyrus/wakka.config.php</li> |
<li>un dossier pour modifier tous les wikini qu'il contient. Exemple : /home/outilsre/www/wikini</li> |
</ul> |
<div> |
<p>Les champs précédés du symbole <span class="symbole_obligatoire">*</span> doivent être obligatoirement remplis.</p> |
<form id="sc_form" name="sc_form" action="<?=$url;?>" method="post" onsubmit="return validate(this, var_1);"> |
<fieldset> |
<legend>Base de données</legend> |
<table id="sc_table_form"> |
<tr> |
<td><span class="symbole_obligatoire">*</span> <label for="sc_chemin" class="champ_obligatoire">Chemin des dossiers des wikini</label></td> |
<td><input id="sc_chemin" name="sc_chemin" type="text" value="<?=(isset($_POST['sc_chemin'])) ? $_POST['sc_chemin'] : '' ;?>"/></td> |
</tr> |
</table> |
</fieldset> |
<p> |
<input type="submit" value="Mettre à jour la base de données" /> |
<input type="reset" value="Tout effacer" /> |
</p> |
</form> |
</div> |
<?php if (isset($wikinis)) : ?> |
<?php foreach ($wikinis as $wikini) : ?> |
<h2><?=$wikini['nom'];?> (dossier : <?=$wikini['dossier'];?> - version : <?=$wikini['version'];?>)</h2> |
<pre> |
<?php foreach ($wikini['requetes'] as $requete) : ?> |
<?=$requete;?> |
<?php endforeach; ?> |
</pre> |
<?php endforeach; ?> |
<?php endif; ?> |
<script type="text/javascript"> |
<!--/*--><![CDATA[//><!-- |
var msg_1 = 'Erreur:'; |
var var_1 = new Array(); |
var_1[0] = new Array('sc_chemin','e', "Vous n'avez pas mentionné le chemin vers le dossier contenant les dossiers des wikinis.", ''); |
//--><!]]> |
</script> |
<script type="text/JavaScript" src="<?=SC_URL_JS.'ValiderFormulaire.js';?>"></script> |
/branches/v4.0/scripts/modules/wikini/squelettes/config_fichier.tpl.html |
---|
New file |
0,0 → 1,70 |
<h1>Mise à jour des fichiers de config de Wikini</h1> |
<p>Cette interface permet de mettre à jour les fichier wakka.config.php d'un ou plusieurs Wikini.</p> |
<p>Dans le champs "chemin" indiquer soit :</p> |
<ul> |
<li>un fichier wakka.config.php pour modifier un seul wikini. Exemple : /home/outilsre/www/wikini/WikiniPapyrus/wakka.config.php</li> |
<li>un dossier pour modifier tous les wikini qu'il contient. Exemple : /home/outilsre/www/wikini</li> |
</ul> |
<p>Pour ne pas modifier un paramêtre, laisser le champ vide. Seu</p> |
<div> |
<p>Les champs précédés du symbole <span class="symbole_obligatoire">*</span> doivent être obligatoirement remplis.</p> |
<form id="sc_form" name="sc_form" action="<?=$url;?>" method="post" onsubmit="return validate(this, var_1);"> |
<fieldset> |
<legend>Paramêtres du fichier wakka.config.php</legend> |
<table id="sc_table_form"> |
<tr> |
<td><span class="symbole_obligatoire">*</span> <label for="sc_chemin" class="champ_obligatoire">Chemin des dossiers des wikini</label></td> |
<td><input id="sc_chemin" name="sc_chemin" type="text" value="<?=(isset($_POST['sc_chemin'])) ? $_POST['sc_chemin'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_mysql_host" class="champ_obligatoire">Hôte mysql</label></td> |
<td><input id="sc_mysql_host" name="sc_mysql_host" type="text" value="<?=(isset($_POST['sc_mysql_host'])) ? $_POST['sc_mysql_host'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_mysql_database" class="champ_obligatoire">Base de données</label></td> |
<td><input id="sc_mysql_database" name="sc_mysql_database" type="text" value="<?=(isset($_POST['sc_mysql_database'])) ? $_POST['sc_mysql_database'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_mysql_user" class="champ_obligatoire">Utilisateur</label></td> |
<td><input id="sc_mysql_user" name="sc_mysql_user" type="text" value="<?=(isset($_POST['sc_mysql_user'])) ? $_POST['sc_mysql_user'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_mysql_password">Mot de passe</label></td> |
<td><input id="sc_mysql_password" name="sc_mysql_password" type="text" value="<?=(isset($_POST['sc_mysql_password'])) ? $_POST['sc_mysql_password'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_referrers_purge_time">Durée entre deux purges des referrers (en jour)</label></td> |
<td><input id="sc_referrers_purge_time" name="sc_referrers_purge_time" type="text" value="<?=(isset($_POST['sc_referrers_purge_time'])) ? $_POST['sc_referrers_purge_time'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_pages_purge_time">Durée entre deux purges de l'historique des pages (en jour)</label></td> |
<td><input id="sc_pages_purge_time" name="sc_pages_purge_time" type="text" value="<?=(isset($_POST['sc_pages_purge_time'])) ? $_POST['sc_pages_purge_time'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_default_write_acl">Droit d'écriture par défaut</label></td> |
<td><input id="sc_default_write_acl" name="sc_default_write_acl" type="text" value="<?=(isset($_POST['sc_default_write_acl'])) ? $_POST['sc_default_write_acl'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_default_read_acl">Droit de lecture par défaut</label></td> |
<td><input id="sc_default_read_acl" name="sc_default_read_acl" type="text" value="<?=(isset($_POST['sc_default_read_acl'])) ? $_POST['sc_default_read_acl'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_default_comment_acl">Droit des commentaires par défaut</label></td> |
<td><input id="sc_default_comment_acl" name="sc_default_comment_acl" type="text" value="<?=(isset($_POST['sc_default_comment_acl'])) ? $_POST['sc_default_comment_acl'] : '' ;?>"/></td> |
</tr> |
</table> |
</fieldset> |
<p> |
<input type="submit" value="Modifier les fichiers de config" /> |
<input type="reset" value="Tout effacer" /> |
</p> |
</form> |
</div> |
<script type="text/javascript"> |
<!--/*--><![CDATA[//><!-- |
var msg_1 = 'Erreur:'; |
var var_1 = new Array(); |
var_1[0] = new Array('sc_chemin','e', "Vous n'avez pas mentionné le chemin vers le dossier contenant les dossiers des wikinis.", ''); |
//--><!]]> |
</script> |
<script type="text/JavaScript" src="<?=SC_URL_JS.'ValiderFormulaire.js';?>"></script> |
/branches/v4.0/scripts/modules/wikini/squelettes/nettoyage.tpl.html |
---|
New file |
0,0 → 1,47 |
<h1>Nettoyage des referrers et commentaires des wikini</h1> |
<p>Cette interface supprime les referrers et les commentaires de wikini</p> |
<p>Dans le champs "chemin" indiquer soit :</p> |
<ul> |
<li>un fichier wakka.config.php pour modifier un seul wikini. Exemple : /home/outilsre/www/wikini/WikiniPapyrus/wakka.config.php</li> |
<li>un dossier pour modifier tous les wikini qu'il contient. Exemple : /home/outilsre/www/wikini</li> |
</ul> |
<div> |
<p>Les champs précédés du symbole <span class="symbole_obligatoire">*</span> doivent être obligatoirement remplis.</p> |
<form id="sc_form" name="sc_form" action="<?=$url;?>" method="post" onsubmit="return validate(this, var_1);"> |
<fieldset> |
<legend>Suppression de commentaires et referrers</legend> |
<table id="sc_table_form"> |
<tr> |
<td><span class="symbole_obligatoire">*</span> <label for="sc_chemin" class="champ_obligatoire">Chemin du dossier des wikini</label></td> |
<td><input id="sc_chemin" name="sc_chemin" type="text" value="<?=(isset($_POST['sc_chemin'])) ? $_POST['sc_chemin'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><label for="sc_utilisateur" class="champ_obligatoire">Indiquer les referrers à ne pas supprimer séparés par des virgules</label></td> |
<td><input id="sc_referrers" name="sc_referrers" type="text" value="<?=(isset($_POST['sc_referrers'])) ? $_POST['sc_referrers'] : '' ;?>"/></td> |
</tr> |
</table> |
</fieldset> |
<p> |
<input type="submit" value="Supprimer les referrers et commentaires" /> |
<input type="reset" value="Tout effacer" /> |
</p> |
</form> |
</div> |
<?php if (isset($wikinis)) : ?> |
<?php foreach ($wikinis as $wikini) : ?> |
<h2><?=$wikini['nom'];?> (dossier : <?=$wikini['dossier'];?> - version : <?=$wikini['version'];?>)</h2> |
<pre> |
<?php foreach ($wikini['requetes'] as $requete) : ?> |
<?=$requete;?> |
<?php endforeach; ?> |
</pre> |
<?php endforeach; ?> |
<?php endif; ?> |
<script type="text/javascript"> |
<!--/*--><![CDATA[//><!-- |
var msg_1 = 'Erreur:'; |
var var_1 = new Array(); |
var_1[0] = new Array('sc_chemin','e', "Vous n'avez pas mentionné le chemin vers le dossier contenant les dossiers des wikinis.", ''); |
//--><!]]> |
</script> |
<script type="text/JavaScript" src="<?=SC_URL_JS.'ValiderFormulaire.js';?>"></script> |
/branches/v4.0/scripts/modules/wikini/squelettes/supprimer_utilisateur.tpl.html |
---|
New file |
0,0 → 1,47 |
<h1>Suppression d'utilisateurs</h1> |
<p>Cette interface permet de supprimer les utilisateurs d'un ou plusieurs Wikini.</p> |
<p>Dans le champs "chemin" indiquer soit :</p> |
<ul> |
<li>un fichier wakka.config.php pour modifier un seul wikini. Exemple : /home/outilsre/www/wikini/WikiniPapyrus/wakka.config.php</li> |
<li>un dossier pour modifier tous les wikini qu'il contient. Exemple : /home/outilsre/www/wikini</li> |
</ul> |
<div> |
<p>Les champs précédés du symbole <span class="symbole_obligatoire">*</span> doivent être obligatoirement remplis.</p> |
<form id="sc_form" name="sc_form" action="<?=$url;?>" method="post" onsubmit="return validate(this, var_1);"> |
<fieldset> |
<legend>Suppression d'utilisateurs</legend> |
<table id="sc_table_form"> |
<tr> |
<td><span class="symbole_obligatoire">*</span> <label for="sc_chemin" class="champ_obligatoire">Chemin du dossier des wikini</label></td> |
<td><input id="sc_chemin" name="sc_chemin" type="text" value="<?=(isset($_POST['sc_chemin'])) ? $_POST['sc_chemin'] : '' ;?>"/></td> |
</tr> |
<tr> |
<td><span class="symbole_obligatoire">*</span> <label for="sc_utilisateur" class="champ_obligatoire">Indiquer les noms d'utilisateur séparé par des virgules</label></td> |
<td><input id="sc_utilisateur" name="sc_utilisateur" type="text" value="<?=(isset($_POST['sc_utilisateur'])) ? $_POST['sc_utilisateur'] : '' ;?>"/></td> |
</tr> |
</table> |
</fieldset> |
<p> |
<input type="submit" value="Supprimer les utilisateurs" /> |
<input type="reset" value="Tout effacer" /> |
</p> |
</form> |
</div> |
<?php if (isset($wikinis)) : ?> |
<?php foreach ($wikinis as $wikini) : ?> |
<h2><?=$wikini['nom'];?> (dossier : <?=$wikini['dossier'];?> - version : <?=$wikini['version'];?>)</h2> |
<pre> |
<?php foreach ($wikini['requetes'] as $requete) : ?> |
<?=$requete;?> |
<?php endforeach; ?> |
</pre> |
<?php endforeach; ?> |
<?php endif; ?> |
<script type="text/javascript"> |
<!--/*--><![CDATA[//><!-- |
var msg_1 = 'Erreur:'; |
var var_1 = new Array(); |
var_1[0] = new Array('sc_chemin','e', "Vous n'avez pas mentionné le chemin vers le dossier contenant les dossiers des wikinis.", ''); |
//--><!]]> |
</script> |
<script type="text/JavaScript" src="<?=SC_URL_JS.'ValiderFormulaire.js';?>"></script> |
/branches/v4.0/scripts/modules/wikini/Wikini.class.php |
---|
New file |
0,0 → 1,624 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 5.1 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 1999-2006 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This file is part of eflore_bp. | |
// | | |
// | eflore_bp is free software; you can redistribute it and/or modify | |
// | it under the terms of the GNU General Public License as published by | |
// | the Free Software Foundation; either version 2 of the License, or | |
// | (at your option) any later version. | |
// | | |
// | eflore_bp is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// | GNU General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public License | |
// | along with Foobar; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: RecueilDeDonnees.class.php,v 1.5 2007-07-25 17:45:19 jp_milcent Exp $ |
/** |
* eflore_bp - ReccueilDeDonnee.php |
* |
* Description : |
* |
*@package eflore_bp |
//Auteur original : |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 1999-2007 |
*@version $Revision: 1.5 $ $Date: 2007-07-25 17:45:19 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTÊTE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// | CORPS du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
class Wikini extends aModule { |
private $bdd_principale = SC_BDD_NOM_PRINCIPALE; |
private $bdd_options = array('debug' => 3); |
private $bdd_dsn = SC_DSN_PRINCIPAL; |
private $connexion = null; |
private $sites = array('http://www.tela-botanica.org', 'http://www.outils-reseaux.org'); |
public function __construct() |
{ |
$this->connexion = DB::connect($this->bdd_dsn, $this->bdd_options); |
if (PEAR::isError($this->connexion)) { |
$e = $this->connexion->getMessage(); |
trigger_error($e, E_USER_ERROR); |
} |
parent::__construct(); |
} |
// La méthode executer est appellé par défaut |
public function executer() |
{ |
$this->poursuivreVers('config_fichier'); |
} |
private function rechercherWikini($chemin = null, $methode) |
{ |
if (isset($chemin)) { |
if (preg_match('/wakka\.config\.php$/', $chemin)) { |
$this->$methode($chemin); |
} else if (is_dir($chemin)) { |
// Nettoyage et ajout d'un slash final |
$chemin = rtrim(trim($chemin), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR; |
// Nous vérifions que le dossier indiqué est un dossier de wikini |
$fichier = $chemin.'wakka.config.php'; |
$this->$methode($fichier); |
// Nous regardons si le dossier indiqué contient d'autres dossiers wikini |
foreach (scandir($chemin) as $dossier) { |
if (is_dir($chemin.$dossier.DIRECTORY_SEPARATOR) && $dossier != '..' && $dossier != '.') { |
$fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php'; |
$this->$methode($fichier); |
} |
} |
} else { |
trigger_error('Le chemin suivant n\'est ni un dossier, ni un fichier wakka.config.php :'.$chemin, E_USER_WARNING); |
} |
} |
} |
public function executerConfigFichier() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
// Gestion de l'url de l'envoie de mail |
$url = clone $GLOBALS['_SCRIPT_']['url']; |
$url->addQueryString('module', 'wikini'); |
$url->addQueryString('action', 'config_fichier_maj'); |
$aso_donnees['url'] = $url->getUrl(); |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
$this->setChrono('fin'); |
} |
public function executerConfigFichierMaj() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
// Récupération des infos pour conpléter le squelette du courriel |
$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigFichier'); |
// Nous ajoutons une action à éxecuter avant de rendre la main |
$this->poursuivreVers('config_fichier'); |
// Fin de l'action |
$this->setChrono('fin'); |
} |
private function modifierConfigFichier($fichier) |
{ |
if (file_exists($fichier)) { |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
$arrFile = file($fichier); |
$handle = fopen($fichier, 'w'); |
if($handle != false){ |
// Définition des compteurs |
$currentLine = 0; |
$cntFile = count($arrFile);// Nombre de ligne |
// Write contents, inserting $item as first item |
while ($currentLine <= $cntFile){ |
if (isset($arrFile[$currentLine])) { |
foreach ($_POST as $cle => $val) { |
if ($val != '') { |
if(preg_match('/"'.preg_replace('/^sc_/', '', $cle).'" =>/', $arrFile[$currentLine])) { |
$arrFile[$currentLine] = preg_replace('/=> ".*"/', '=> "'.$val.'"', $arrFile[$currentLine]); |
} |
} |
} |
fwrite($handle, $arrFile[$currentLine]); |
if (preg_match('/^\?>$/', $arrFile[$currentLine])) { |
fclose($handle); |
$currentLine = $cntFile; |
} |
} |
$currentLine++; |
} |
} else { |
trigger_error('Fichier '.$fichier.' impossible à ouvrir', E_USER_WARNING); |
} |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
} |
} |
public function executerSupprimerUtilisateur() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
// Gestion de l'url de l'envoie de mail |
$url = clone $GLOBALS['_SCRIPT_']['url']; |
$url->addQueryString('module', 'wikini'); |
$url->addQueryString('action', 'supprimer_utilisateur_maj'); |
$aso_donnees['url'] = $url->getUrl(); |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
$this->setChrono('fin'); |
} |
public function executerSupprimerUtilisateurMaj() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
// Récupération des infos pour conpléter le squelette du courriel |
$this->rechercherWikini($_POST['sc_chemin'], 'modifierSupprimerUtilisateur'); |
// Nous ajoutons une action à éxecuter avant de rendre la main |
$this->poursuivreVers('supprimer_utilisateur'); |
// Fin de l'action |
$this->setChrono('fin'); |
} |
private function modifierSupprimerUtilisateur($fichier) |
{ |
if (file_exists($fichier)) { |
// Initialisation de variables |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
$wakka_config = array(); |
$requetes = array(); |
// Récupération de la config du wikini |
$tab_fichier = file($fichier); |
foreach ($tab_fichier as $ligne_num => $ligne) { |
if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) { |
//trigger_error(print_r($match, true), E_USER_NOTICE); |
$wakka_config[$match[1]] = $match[2]; |
} |
} |
//trigger_error(print_r($wakka_config, true), E_USER_NOTICE); |
if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) { |
// Connexion à la base de données |
$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database']; |
$this->connexion = DB::connect($dsn, $this->bdd_options); |
if (PEAR::isError($this->connexion)) { |
$e = $this->connexion->getMessage(); |
trigger_error($e, E_USER_ERROR); |
} |
// Traitement de la chaine utilisateur |
$tab_utilisateurs = explode(',', trim($_POST['sc_utilisateur'])); |
$chaine_utilisateur = ''; |
foreach ($tab_utilisateurs as $utilisateur) { |
$chaine_utilisateur .= '"'.trim($utilisateur).'", '; |
} |
$chaine_utilisateur = trim($chaine_utilisateur, ', '); |
// Suppression de l'utilisateur |
$requete = 'DELETE FROM '.$wakka_config['table_prefix'].'users '. |
'WHERE name IN ('.$chaine_utilisateur.')'; |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
$requetes[] = $res->getMessage().$res->getDebugInfo(); |
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING); |
} |
// Stockage des requetes |
if (count($requetes) > 0 ) { |
$aso_donnees['wikinis'][] = array( 'dossier' => $fichier, |
'nom' => $wakka_config['wakka_name'], |
'version' => $wakka_config['wikini_version'], |
'requetes' => $requetes); |
} |
} else { |
trigger_error(print_r($wakka_config, true), E_USER_NOTICE); |
} |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
} |
} |
public function executerConfigBdd() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
// Gestion de l'url de l'envoie de mail |
$url = clone $GLOBALS['_SCRIPT_']['url']; |
$url->addQueryString('module', 'wikini'); |
$url->addQueryString('action', 'config_bdd_maj'); |
$aso_donnees['url'] = $url->getUrl(); |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
// Fin de l'action |
$this->setChrono('fin'); |
} |
public function executerConfigBddMaj() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
// Récupération des infos pour conpléter le squelette du courriel |
$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigBdd'); |
// Nous ajoutons une action à éxecuter avant de rendre la main |
$this->poursuivreVers('config_bdd'); |
// Fin de l'action |
$this->setChrono('fin'); |
} |
private function modifierConfigBdd($fichier) |
{ |
if (file_exists($fichier)) { |
// Initialisation de variables |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
$wakka_config = array(); |
$requetes = array(); |
// Récupération de la config du wikini |
$tab_fichier = file($fichier); |
foreach ($tab_fichier as $ligne_num => $ligne) { |
if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) { |
//trigger_error(print_r($match, true), E_USER_NOTICE); |
$wakka_config[$match[1]] = $match[2]; |
} |
} |
//trigger_error(print_r($wakka_config, true), E_USER_NOTICE); |
if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) { |
// Connexion à la base de données |
$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database']; |
$this->connexion = DB::connect($dsn, $this->bdd_options); |
if (PEAR::isError($this->connexion)) { |
$e = $this->connexion->getMessage(); |
trigger_error($e, E_USER_ERROR); |
} |
// Mise à jour des droits |
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '. |
'SET list = "'.$wakka_config['default_write_acl'].'" '. |
'WHERE privilege = "write" '; |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
$requetes[] = $res->getMessage().$res->getDebugInfo(); |
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING); |
} |
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '. |
'SET list = "'.$wakka_config['default_read_acl'].'" '. |
'WHERE privilege = "read" '; |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
$requetes[] = $res->getMessage().$res->getDebugInfo(); |
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING); |
} |
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '. |
'SET list = "'.$wakka_config['default_comment_acl'].'" '. |
'WHERE privilege = "comment" '; |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
$requetes[] = $res->getMessage().$res->getDebugInfo(); |
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING); |
} |
$requete = 'DELETE FROM '.$wakka_config['table_prefix'].'acls '. |
'WHERE page_tag = "ParametresUtilisateur"'; |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
$requetes[] = $res->getMessage().$res->getDebugInfo(); |
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING); |
} |
$requete = 'INSERT INTO '.$wakka_config['table_prefix'].'acls '. |
'VALUES ("ParametresUtilisateur", "write", "*") '; |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
$requetes[] = $res->getMessage().$res->getDebugInfo(); |
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING); |
} |
// Stockage des requetes |
if (count($requetes) > 0 ) { |
$aso_donnees['wikinis'][] = array( 'dossier' => $fichier, |
'nom' => $wakka_config['wakka_name'], |
'version' => $wakka_config['wikini_version'], |
'requetes' => $requetes); |
} |
} else { |
trigger_error(print_r($wakka_config, true), E_USER_NOTICE); |
} |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
} |
} |
public function executerNettoyage() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
// Gestion de l'url de l'envoie de mail |
$url = clone $GLOBALS['_SCRIPT_']['url']; |
$url->addQueryString('module', 'wikini'); |
$url->addQueryString('action', 'nettoyage_maj'); |
$aso_donnees['url'] = $url->getUrl(); |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
$this->setChrono('fin'); |
} |
public function executerNettoyageMaj() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
// Récupération des infos pour conpléter le squelette du courriel |
$this->rechercherWikini($_POST['sc_chemin'], 'lancerNettoyage'); |
// Nous ajoutons une action à éxecuter avant de rendre la main |
$this->poursuivreVers('nettoyage'); |
// Fin de l'action |
$this->setChrono('fin'); |
} |
public function lancerNettoyage($fichier) |
{ |
if (file_exists($fichier)) { |
// Initialisation de variables |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
$wakka_config = array(); |
$requetes = array(); |
// Récupération de la config du wikini |
$tab_fichier = file($fichier); |
foreach ($tab_fichier as $ligne_num => $ligne) { |
if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) { |
//trigger_error(print_r($match, true), E_USER_NOTICE); |
$wakka_config[$match[1]] = $match[2]; |
} |
} |
if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) { |
// Connexion à la base de données |
$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database']; |
$this->connexion = DB::connect($dsn, $this->bdd_options); |
if (PEAR::isError($this->connexion)) { |
$e = $this->connexion->getMessage(); |
trigger_error($e, E_USER_ERROR); |
} |
// Ajout des nouveaux referrers à ceux par défaut |
if (!empty($_POST['sc_referrers'])) { |
$this->sites = array_merge(preg_split("~,~", $_POST['sc_referrers'], -1, PREG_SPLIT_NO_EMPTY), $this->sites); |
} |
// +---------------------------------------------------------------------------------------------------+ |
// Referrers |
$site_nbre = count($this->sites); |
$site_0 = $this->sites[0]; |
$requete = 'DELETE FROM '.$wakka_config['table_prefix'].'referrers '. |
'WHERE referrer NOT LIKE "'.$site_0.'%" '; |
for ($i = 1; $i < $site_nbre; $i++) { |
$requete .= 'AND referrer NOT LIKE "'.$this->sites[$i].'%" '; |
} |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
die($res->getMessage()); |
} |
// +---------------------------------------------------------------------------------------------------+ |
// Pages : commentaires |
$requete = 'SELECT tag FROM '.$wakka_config['table_prefix'].'pages '. |
'WHERE tag LIKE "Comment%" '; |
$requetes[] = $requete."\n"; |
$aso_pages = $this->connexion->getAll($requete, null, DB_FETCHMODE_ASSOC); |
if (PEAR::isError($aso_pages)) { |
die($aso_pages->getMessage()); |
} |
if (count($aso_pages) > 0) { |
$tab_pages = array(); |
foreach ($aso_pages as $page) { |
if (preg_match('/^Comment\d+$/', $page['tag'])){ |
$tab_pages[] = $page['tag']; |
} |
} |
if (count($tab_pages) > 0) { |
$requete = 'DELETE FROM '.$wakka_config['table_prefix'].'pages '. |
'WHERE tag IN ("'.implode('","', $tab_pages).'") '; |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
die($res->getMessage()); |
} |
// +---------------------------------------------------------------------------------------------------+ |
// ACLs : commentaires |
$requete = 'DELETE FROM '.$wakka_config['table_prefix'].'acls '. |
'WHERE page_tag LIKE "Comment%" '; |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
die($res->getMessage()); |
} |
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '. |
'SET list = "+" '. |
'WHERE privilege = "comment" '; |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
die($res->getMessage()); |
} |
} |
} |
// +---------------------------------------------------------------------------------------------------+ |
// Stockage des requetes |
if (count($requetes) > 0 ) { |
$aso_donnees['wikinis'][] = array( 'dossier' => $fichier, |
'nom' => $wakka_config['wakka_name'], |
'version' => $wakka_config['wikini_version'], |
'requetes' => $requetes); |
} |
} |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
} |
} |
public function executerProprietaire() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
// Gestion de l'url de l'envoie de mail |
$url = clone $GLOBALS['_SCRIPT_']['url']; |
$url->addQueryString('module', 'wikini'); |
$url->addQueryString('action', 'proprietaire_maj'); |
$aso_donnees['url'] = $url->getUrl(); |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
$this->setChrono('fin'); |
} |
public function executerProprietaireMaj() |
{ |
// Initialisation des variables |
$this->setChrono('debut'); |
// Récupération des infos pour conpléter le squelette du courriel |
$this->rechercherWikini($_POST['sc_chemin'], 'modifierProprietaire'); |
// Nous ajoutons une action à éxecuter avant de rendre la main |
$this->poursuivreVers('proprietaire'); |
// Fin de l'action |
$this->setChrono('fin'); |
} |
public function modifierProprietaire($fichier) |
{ |
if (file_exists($fichier)) { |
// Initialisation de variables |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
$wakka_config = array(); |
$requetes = array(); |
// Récupération de la config du wikini |
$tab_fichier = file($fichier); |
foreach ($tab_fichier as $ligne_num => $ligne) { |
if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) { |
//trigger_error(print_r($match, true), E_USER_NOTICE); |
$wakka_config[$match[1]] = $match[2]; |
} |
} |
//trigger_error(print_r($wakka_config, true), E_USER_NOTICE); |
if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) { |
// Connexion à la base de données |
$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database']; |
$this->connexion = DB::connect($dsn, $this->bdd_options); |
if (PEAR::isError($this->connexion)) { |
$e = $this->connexion->getMessage(); |
trigger_error($e, E_USER_ERROR); |
} |
// Mise à jour des droits |
$requete = 'UPDATE '.$wakka_config['table_prefix'].'pages '. |
'SET owner = "'.$_POST['sc_owner'].'" '. |
((!empty($_POST['sc_page'])) ? 'WHERE tag IN ("'.implode('","', preg_split("~,~", $_POST['sc_page'], -1, PREG_SPLIT_NO_EMPTY)).'") ' : ''); |
$requetes[] = $requete."\n"; |
$res = $this->connexion->query($requete); |
if (PEAR::isError($res)) { |
$requetes[] = $res->getMessage().$res->getDebugInfo(); |
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING); |
} |
// Stockage des requetes |
if (count($requetes) > 0 ) { |
$aso_donnees['wikinis'][] = array( 'dossier' => $fichier, |
'nom' => $wakka_config['wakka_name'], |
'version' => $wakka_config['wikini_version'], |
'requetes' => $requetes); |
} |
} |
// Attribution des données pour remplir le squelette |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
} |
} |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: RecueilDeDonnees.class.php,v $ |
* Revision 1.5 2007-07-25 17:45:19 jp_milcent |
* Corrections des champs obligatoires. |
* |
* Revision 1.4 2007-07-24 14:31:57 jp_milcent |
* Ajout dans les fichiers de configuration de l'hôte smtp. |
* |
* Revision 1.3 2007-07-11 13:11:06 jp_milcent |
* Ajout de la vérification des donnés du formulaire côté serveur. |
* |
* Revision 1.2 2007-07-10 16:47:30 jp_milcent |
* Ajout de l'identification et améliorations diverses. |
* |
* Revision 1.1 2007-07-09 19:29:26 jp_milcent |
* Ajout du module Recueil de données |
* |
* Revision 1.1 2007-07-09 15:45:59 jp_milcent |
* Début ajout du module de Reccueil de Données. |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/v4.0/scripts/modules/communs/Communs.class.php |
---|
New file |
0,0 → 1,30 |
<?php |
class Communs extends aModule { |
public static function getAppletteBalise() |
{ |
return '\{\{Communs(?:\s*(?:(action="[^"]+")|))+\s*\}\}'; |
} |
// La méthode executer est appellé par défaut |
public function executer() |
{ |
// TODO : afficher la liste des méthode disponible! |
// Si on veut rediriger l'action vers une autre méthode, il faut définir le nom de la nouvelle action. |
// Le module commun n'a pas d'action par défaut |
//$this->poursuivreVers(''); |
} |
public function executerAccueil() |
{ |
// Seulement un template! |
// Cette méthode pourrait être supprimée : elle reste pour mémo! |
} |
public function executerPiedPage() |
{ |
// Seulement un template! |
// Cette méthode pourrait être supprimée : elle reste pour mémo! |
} |
} |
?> |
/branches/v4.0/scripts/modules/communs/squelettes/accueil.tpl.html |
---|
New file |
0,0 → 1,2 |
<h1>Interface d'administration</h1> |
<p>Bienvenue, dans l'interface d'administration en ligne de ce site.</p> |
/branches/v4.0/scripts/modules/communs/squelettes/pied_page.tpl.html |
---|
New file |
0,0 → 1,4 |
<p id="eflore_pied_page"> |
<?=$i18n['info'];?> |
<a href="mailto:<?=$i18n['mail'];?>"><?=$i18n['mail'];?></a><?=$i18n['point'];?> |
</p> |
/branches/v4.0/scripts/script.php |
---|
New file |
0,0 → 1,392 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.3 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This file is part of eFlore-consultation. | |
// | | |
// | Foobar is free software; you can redistribute it and/or modify | |
// | it under the terms of the GNU General Public License as published by | |
// | the Free Software Foundation; either version 2 of the License, or | |
// | (at your option) any later version. | |
// | | |
// | Foobar is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// | GNU General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public License | |
// | along with Foobar; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: eflore.php,v 1.62 2007-07-24 14:33:18 jp_milcent Exp $ |
/** |
* Fichier principal des modules d'eFlore. |
* |
* Ce fichier correspond au patter FontController. Il est systématiquement appelé. Il identifie le module et |
* l'action demandée. Il exécute alors l'action puis passe son résultat à la vue liée. Le résultat de la vue est alors |
* renvoyée en fonction du format demandé. |
* |
*@package eFlore |
//Auteur original : |
*@author Linda ANGAMA <linda_angama@yahoo.fr> |
//Autres auteurs : |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.62 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTÊTE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// Variable globale de l'application |
/** Definition de la variable globale d'eFlore.*/ |
$GLOBALS['_SCRIPT_'] = array(); |
// +------------------------------------------------------------------------------------------------------+ |
// Gestion du chemin de l'application et de son dossier de configuration |
/** Constante "dynamique" stockant le chemin absolue de base de l'application recherche de plante.*/ |
define('SC_CHEMIN_APPLI', dirname(realpath($_SERVER['SCRIPT_FILENAME'])).DIRECTORY_SEPARATOR); |
/** Constante "dynamique" stockant le chemin relatif de base de l'application recherche de plante.*/ |
define('SC_CHEMIN_APPLI_RELATIF', str_replace(realpath($_SERVER['DOCUMENT_ROOT']), '', SC_CHEMIN_APPLI)); |
/** Constante stockant le chemin et le nom du fichier contenant la fonction d'autoload des classes.*/ |
require_once SC_CHEMIN_APPLI.'autoload.inc.php'; |
/** Constante stockant le chemin vers le dossier configuration.*/ |
define('SC_CHEMIN_CONFIG', SC_CHEMIN_APPLI.'configuration'.DIRECTORY_SEPARATOR); |
// +------------------------------------------------------------------------------------------------------+ |
// Inclusion des fichiers propres à l'appli |
// Tentative d'inclusion du fichier de configuration spécifique à un déploiment de l'appli |
if (file_exists(SC_CHEMIN_CONFIG.'config.inc.php')) { |
/** Inclusion du fichier config spécifique de l'application. */ |
require_once SC_CHEMIN_CONFIG.'config.inc.php'; |
} else { |
$message = 'Fichier introuvable : '.SC_CHEMIN_CONFIG.'config.inc.php '; |
$message .= 'Veuillez configurer l\'application!'; |
die($message); |
} |
/** Inclusion du fichier config des chemins d'eflore. */ |
require_once SC_CHEMIN_CONFIG.'config_chemin.inc.php'; |
/** Inclusion du fichier config de la base de données d'eflore. */ |
require_once SC_CHEMIN_CONFIG.'config_bdd.inc.php'; |
// +------------------------------------------------------------------------------------------------------+ |
// Gestion du fonctionnement hors Papyrus |
// Redéfini le séparateur utilisé lorsque PHP génère des URLs pour séparer les arguments. (compatible XHTML strict) |
ini_set('arg_separator.input', '&'); |
ini_set('arg_separator.output', '&'); |
$GLOBALS['_DEBOGAGE_'] = ''; |
session_name('script_beta'); |
session_start(); |
$expiration = 60*60*60; |
setcookie(session_name(),session_id(), time()+$expiration, '/'); |
$GLOBALS['_SCRIPT_']['url'] = new Net_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); |
// Initialisation du gestionnaire d'erreur |
$GLOBALS['_SCRIPT_']['erreur'] = new GestionnaireErreur(SC_DEBOGAGE_CONTEXTE); |
$GLOBALS['_SCRIPT_']['erreur']->setNiveauErreurCourrant(SC_DEBOGAGE_NIVEAU); |
// Gestion de l'identification : nécessaire pour le fonctionnement de Wikini |
//$GLOBALS['_SCRIPT_']['identification'] = new EfloreIdentification(); |
// +------------------------------------------------------------------------------------------------------+ |
// Inclusion des fichiers propres à l'appli (utilisant PEAR) |
// /** Inclusion du fichier config des URLs de l'application. */ |
// require_once SC_CHEMIN_CONFIG.'config_url.inc.php'; |
// +------------------------------------------------------------------------------------------------------+ |
// Utilisation du chornométrage. |
// Doit toujours être créé, sinon il faut mettre des conditions à chaque mesure de temps... |
$GLOBALS['_SCRIPT_']['chrono'] = new Chronometre(); |
// +------------------------------------------------------------------------------------------------------+ |
// Gestion de variables |
// Paramêtres par défaut de l'url |
if (!isset($_GET['module'])) { |
$_GET['module'] = 'communs'; |
} |
if (!isset($_GET['action'])) { |
$_GET['action'] = 'accueil'; |
} |
if (!isset($_GET['format'])) { |
$_GET['format'] = 'html'; |
} |
// +------------------------------------------------------------------------------------------------------+ |
// | CORPS du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
function afficherContenuMenu() |
{ |
$sortie = ''; |
return $sortie; |
} |
function afficherContenuNavigation() |
{ |
$sortie = ' '; |
return $sortie; |
} |
function afficherContenuTete() |
{ |
// Transférer tout ceci dans la fonction afficherContenuNavigation(). |
$sortie = ''; |
return $sortie; |
} |
function afficherContenuCorps() |
{ |
// +--------------------------------------------------------------------------------------------------+ |
// Initialisation |
$sortie = ''; |
$Registre = Registre::getInstance(); |
if (isset($_GET['format'])) { |
$Registre->set('format', $_GET['format']); |
} |
if (isset($_GET['action'])) { |
$Registre->set('action', $_GET['action']); |
} |
// +--------------------------------------------------------------------------------------------------+ |
// Gestion des actions |
$module_nom = implode('', array_map('ucfirst', explode('_', $_GET['module']))); |
$chemin_module_nouveau = SC_CHEMIN_MODULE.strtolower($_GET['module']).'/'.$module_nom.'.class.php'; |
if (file_exists($chemin_module_nouveau)) { |
include_once $chemin_module_nouveau; |
$Module = new $module_nom(); |
return $Module->traiterAction(); |
} else { |
trigger_error('Module '.$_GET['module'].' introuvable!', E_USER_WARNING); |
} |
} |
function afficherContenuPied() |
{ |
$sortie = ' '; |
return $sortie; |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: eflore.php,v $ |
* Revision 1.62 2007-07-24 14:33:18 jp_milcent |
* Correction permettant de gérer une identification Pear::Auth extérieure. |
* |
* Revision 1.61 2007-07-18 11:54:58 jp_milcent |
* Amélioration des paramêtres passés via Papyrus. |
* |
* Revision 1.60 2007-07-17 07:46:58 jp_milcent |
* Séparation de l'autoload dans un fichier à part. |
* |
* Revision 1.59 2007-06-25 16:39:48 jp_milcent |
* Utilisation de la constante stockant le type de séparation de dossier. |
* |
* Revision 1.58 2007-06-25 13:37:58 jp_milcent |
* Compatibilité de la gestion des chemins de l'appli avec une utilisation dans Papyrus. |
* |
* Revision 1.57 2007-06-25 13:25:41 jp_milcent |
* Complément au message demandant la configuration de l'appli. |
* |
* Revision 1.56 2007-06-19 10:32:57 jp_milcent |
* Début utilisation de classes par module utilisant l'API 1.1.1. |
* Renomage des anciennes classes en "Deprecie". |
* |
* Revision 1.55 2007-06-11 12:47:08 jp_milcent |
* Fusion correction provenant de la livraison Moquin-Tandon : 11 juin 2007 |
* |
* Revision 1.54 2007-06-01 13:23:05 jp_milcent |
* Fusion avec livraison Moquin-Tandon : 01 juin 2007 |
* |
* Revision 1.49.2.2 2007-05-14 14:14:26 jp_milcent |
* Correction bogue applette wikini... |
* |
* Revision 1.53 2007-02-12 14:54:08 jp_milcent |
* Amélioration de la gestion des chemins de l'appli. |
* |
* Revision 1.52 2007/02/10 17:30:02 jp_milcent |
* Pour les nouveaux modules, les dossiers utilisent des undescrores à la place des tirets. |
* |
* Revision 1.51 2007/02/07 18:04:45 jp_milcent |
* Fusion avec la livraison Moquin-Tandon. |
* |
* Revision 1.50 2007/01/24 16:44:27 jp_milcent |
* Ajout du format de sortie pour JSON. |
* Passage par le registre du format pour les nouveaux modules. |
* |
* Revision 1.49.2.1 2007/02/02 18:13:19 jp_milcent |
* Ajout du remplacement d'un caractère mal passé en utf8. |
* |
* Revision 1.49 2007/01/05 18:40:13 jp_milcent |
* Début gestion d'applette et d'un nouveau système de module. |
* |
* Revision 1.48 2007/01/05 14:29:55 jp_milcent |
* Simplification gestion hors de Papyrus. |
* Amélioration de l'autoload. |
* |
* Revision 1.47 2007/01/03 19:45:43 jp_milcent |
* Ajout du chargement des classes de l'api d'eFlore. |
* |
* Revision 1.46 2006/07/12 17:09:29 jp_milcent |
* Correction bogue onglet non sélectionné. |
* Utilisation du Registre. |
* |
* Revision 1.45 2006/07/12 09:05:55 jp_milcent |
* Correction bogue : ajout du exit. |
* |
* Revision 1.44 2006/07/11 16:19:19 jp_milcent |
* Intégration de l'appllette Xper. |
* |
* Revision 1.43 2006/07/07 09:26:17 jp_milcent |
* Modification selon les remarques de Daniel du 29 juin 2006. |
* Changement de nom de classes abstraites. |
* |
* Revision 1.42 2006/06/20 16:28:58 jp_milcent |
* Amélioration sortie pdf. |
* |
* Revision 1.41 2006/06/20 13:18:34 ddelon |
* Bug chemin |
* |
* Revision 1.40 2006/06/17 11:56:12 ddelon |
* Bug chemin |
* |
* Revision 1.39 2006/05/29 13:58:02 ddelon |
* Integration wiki dans eflore |
* |
* Revision 1.38 2006/05/15 19:51:07 ddelon |
* parametrage cache |
* |
* Revision 1.37 2006/05/11 12:55:38 jp_milcent |
* Ajout de chemins à l'autoload. |
* |
* Revision 1.36 2006/05/11 10:28:27 jp_milcent |
* Début modification de l'interface d'eFlore pour la livraison Decaisne. |
* |
* Revision 1.35 2006/05/11 09:43:37 ddelon |
* Action cache |
* |
* Revision 1.34 2006/05/02 10:01:40 jp_milcent |
* Corrections diverses de l'interface graphique conformément aux demandes de Daniel. |
* Ajout du moteur de recherche en haut de la page synthèse. |
* |
* Revision 1.33 2006/04/26 16:57:04 ddelon |
* Fusion bdnbe + saisie assistee |
* |
* Revision 1.32 2006/04/10 17:22:40 jp_milcent |
* Fusion avec la livraison bdnbe_v1. |
* |
* Revision 1.31.2.1 2006/03/10 15:19:53 jp_milcent |
* Correction bogue qui empéchait l'affichage du titre formaté sous Papyrus. |
* |
* Revision 1.31 2006/03/03 17:29:17 jp_milcent |
* Amélioration de la gestion des variables de session. |
* Ajout du nouveau projet indépendant de la BDNFF : BDNBE. |
* |
* Revision 1.30 2005/12/21 16:10:30 jp_milcent |
* Gestion des fichiers de localisation et simplification du code. |
* |
* Revision 1.29 2005/12/15 16:01:21 jp_milcent |
* Fusion de la branche bdnff_v3_v4 vers la branche principale. |
* |
* Revision 1.28 2005/12/09 16:51:34 jp_milcent |
* Utilisation d'une variable globale pour passer à la fonction autoload les chemins où rechercher les classes. |
* |
* Revision 1.27 2005/12/06 16:38:28 jp_milcent |
* Ajout des chemins d'accès aux classes du module commun. |
* |
* Revision 1.26 2005/12/01 17:42:54 jp_milcent |
* Réglage bogue chemin relatif de l'appli. |
* |
* Revision 1.25 2005/12/01 17:26:13 jp_milcent |
* Gestion des chemins relatifs de l'appli pour les images de la recherche de taxons. |
* |
* Revision 1.24 2005/12/01 15:53:03 ddelon |
* orthographe |
* |
* Revision 1.23 2005/11/29 16:49:23 jp_milcent |
* Modification pour garder la compatibilité avec Papyrus. |
* |
* Revision 1.22 2005/11/28 17:45:30 jp_milcent |
* Utilisation de $_POST à la place de $_REQUEST. |
* |
* Revision 1.21 2005/11/23 18:07:23 jp_milcent |
* Début correction des bogues du module Fiche suite à mise en ligne eFlore Beta. |
* |
* Revision 1.20 2005/10/19 16:46:48 jp_milcent |
* Correction de bogue liés à la modification des urls. |
* |
* Revision 1.19 2005/10/18 17:17:20 jp_milcent |
* Début de la gestion des url d'eFlore. |
* |
* Revision 1.18 2005/10/11 17:30:32 jp_milcent |
* Amélioration gestion de la chorologie en cours. |
* |
* Revision 1.17 2005/10/10 13:53:34 jp_milcent |
* Amélioration de la gestion des sessions. |
* |
* Revision 1.16 2005/10/10 07:28:07 jp_milcent |
* Utilisation du webservice Yahoo-Image. |
* |
* Revision 1.15 2005/09/28 16:29:31 jp_milcent |
* Début et fin de gestion des onglets. |
* Début gestion de la fiche Synonymie. |
* |
* Revision 1.14 2005/09/16 16:41:45 jp_milcent |
* Gestion de l'onglet Synthèse en cours. |
* Création du modèle pour l'attribution des noms vernaculaires aux taxons. |
* |
* Revision 1.13 2005/09/13 16:25:23 jp_milcent |
* Fin de gestion des interfaces de recherche. |
* |
* Revision 1.12 2005/08/19 13:54:11 jp_milcent |
* Début de gestion de la navigation au sein de la classification. |
* |
* Revision 1.11 2005/08/17 15:37:50 jp_milcent |
* Gestion de la rechercher par taxon en cours... |
* |
* Revision 1.10 2005/08/11 10:15:49 jp_milcent |
* Fin de gestion des noms verna avec requête rapide. |
* Début gestion choix aplhabétique des taxons. |
* |
* Revision 1.9 2005/08/05 15:13:35 jp_milcent |
* Gestion de l'affichage des résultats des recherches taxonomiques (en cours). |
* |
* Revision 1.8 2005/08/04 15:51:45 jp_milcent |
* Implémentation de la gestion via DAO. |
* Fin page d'accueil. |
* Fin formulaire recherche taxonomique. |
* |
* Revision 1.7 2005/08/02 16:19:33 jp_milcent |
* Amélioration des requetes de recherche de noms. |
* |
* Revision 1.6 2005/08/01 16:18:40 jp_milcent |
* Début gestion résultat de la recherche par nom. |
* |
* Revision 1.5 2005/07/28 15:37:56 jp_milcent |
* Début gestion des squelettes et de l'API eFlore. |
* |
* Revision 1.4 2005/07/27 15:43:21 jp_milcent |
* Début débogage avec gestion de l'appli hors Papyrus. |
* |
* Revision 1.3 2005/07/26 16:27:29 jp_milcent |
* Début mise en place framework eFlore. |
* |
* Revision 1.2 2005/07/26 09:19:05 jp_milcent |
* Légère modif. |
* |
* Revision 1.1 2005/07/25 14:24:36 jp_milcent |
* Début appli de consultation simplifiée. |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/branches/v4.0/scripts/.htaccess |
---|
New file |
0,0 → 1,8 |
AddHandler application/x-httpd-php5 .php |
AuthUserFile /home/telabotap/www/phpmyadmin/.htpasswd |
AuthGroupFile /dev/null |
AuthName "Administrateur" |
AuthType Basic |
<Limit GET POST> |
require valid-user |
</Limit> |
/branches/v4.0/scripts/bibliotheque/noyau/Chronometre.class.php |
---|
New file |
0,0 → 1,185 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 5.0.4 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2005 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This file is part of eFlore-Debogage. | |
// | | |
// | Foobar is free software; you can redistribute it and/or modify | |
// | it under the terms of the GNU General Public License as published by | |
// | the Free Software Foundation; either version 2 of the License, or | |
// | (at your option) any later version. | |
// | | |
// | Foobar is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// | GNU General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public License | |
// | along with Foobar; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: Chronometre.class.php,v 1.1 2007-01-12 13:16:09 jp_milcent Exp $ |
/** |
* Classe permettant de mesurer le temps d'execution d'un script. |
* |
* Contient des méthodes permettant d'évaluer la vitesse d'exécution d'un script. |
* |
*@package eFlore |
*@subpackage Debogage |
//Auteur original : |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
//Autres auteurs : |
*@author aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.1 $ $Date: 2007-01-12 13:16:09 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// | CORPS du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/**Classe Chronometre() - Permet de stocker et d'afficher les temps d'éxécution de script. |
* |
* Cette classe permet de réaliser un ensemble de mesure de temps prises à |
* différents endroits d'un script. Ces mesures peuvent ensuite être affichées au |
* sein d'un tableau XHTML. |
* |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
*/ |
class Chronometre |
{ |
/*** Attributs : ***/ |
private $temps = array(); |
/*** Constructeur : ***/ |
public function __construct() { |
$this->setTemps(array('depart' => microtime())); |
} |
/*** Accesseurs : ***/ |
public function getTemps($cle = NULL) { |
if (!is_null($cle)) { |
return $this->temps[$cle]; |
} else { |
return $this->temps; |
} |
} |
public function setTemps($moment = array()) { |
array_push($this->temps, $moment); |
} |
/*** Méthodes : ***/ |
/**Méthode afficherChrono() - Permet d'afficher les temps d'éxécution de différentes parties d'un script. |
* |
* Cette fonction permet d'afficher un ensemble de mesure de temps prises à différents endroits d'un script. |
* Ces mesures sont affichées au sein d'un tableau XHTML dont on peut controler l'indentation des balises. |
* Pour un site en production, il suffit d'ajouter un style #chrono {display:none;} dans la css. De cette façon, |
* le tableau ne s'affichera pas. Le webmaster lui pourra rajouter sa propre feuille de style affichant le tableau. |
* Le développeur initial de cette fonction est Loic d'Anterroches. Elle a été modifiée par Jean-Pascal Milcent. |
* Elle utilise une variable gobale : $_CHRONO_ |
* |
* @author Loic d'Anterroches |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @param int l'indentation de base pour le code html du tableau. |
* @param int le pas d'indentation pour le code html du tableau. |
* @return string la chaine XHTML de mesure des temps. |
*/ |
function afficherChrono($indentation_origine = 8, $indentation = 4) { |
// Création du chrono de fin |
$GLOBALS['_SCRIPT_']['chrono']->setTemps(array('fin' => microtime())); |
// Début création de l'affichage |
$sortie = str_repeat(' ', $indentation_origine). |
'<table id="chrono" lang="fr" summary="Résultat du chronométrage du programme affichant la page actuelle.">'."\n"; |
$sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))). |
'<caption>Chronométrage</caption>'."\n"; |
$sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))). |
'<thead>'."\n"; |
$sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 2))). |
'<tr><th>Action</th><th>Temps écoulé (en s.)</th><th>Cumul du temps écoulé (en s.)</th></tr>'."\n"; |
$sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))). |
'</thead>'."\n"; |
$tbody = str_repeat(' ', ($indentation_origine + ($indentation * 1))). |
'<tbody>'."\n"; |
$total_tps_ecoule = 0; |
// Récupération de la première mesure |
$tab_depart =& $this->getTemps(0); |
list($usec, $sec) = explode(' ', $tab_depart['depart']); |
// Ce temps correspond à tps_fin |
$tps_debut = ((float)$usec + (float)$sec); |
foreach ($this->getTemps() as $tab_temps) { |
foreach ($tab_temps as $cle => $valeur) { |
list($usec, $sec) = explode(' ', $valeur); |
$tps_fin = ((float)$usec + (float)$sec); |
$tps_ecoule = abs($tps_fin - $tps_debut); |
$total_tps_ecoule += $tps_ecoule; |
$tbody .= str_repeat(' ', ($indentation_origine + ($indentation * 2))). |
'<tr>'. |
'<th>'.$cle.'</th>'. |
'<td>'.number_format($tps_ecoule, 3, ',', ' ').'</td>'. |
'<td>'.number_format($total_tps_ecoule, 3, ',', ' ').'</td>'. |
'</tr>'."\n"; |
$tps_debut = $tps_fin; |
} |
} |
$tbody .= str_repeat(' ', ($indentation_origine + ($indentation * 1))). |
'</tbody>'."\n"; |
$sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))). |
'<tfoot>'."\n"; |
$sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 2))). |
'<tr>'. |
'<th>'.'Total du temps écoulé (en s.)'.'</th>'. |
'<td colspan="2">'.number_format($total_tps_ecoule,3, ',', ' ').'</td>'. |
'</tr>'."\n"; |
$sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))). |
'</tfoot>'."\n"; |
$sortie .= $tbody; |
$sortie .= str_repeat(' ', $indentation_origine). |
'</table>'."\n"; |
return $sortie; |
} |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: Chronometre.class.php,v $ |
* Revision 1.1 2007-01-12 13:16:09 jp_milcent |
* Déplacement des classes de débogage et d'optimisation dans le dossier noyau. |
* |
* Revision 1.1 2005/08/04 15:51:45 jp_milcent |
* Implémentation de la gestion via DAO. |
* Fin page d'accueil. |
* Fin formulaire recherche taxonomique. |
* |
* Revision 1.2 2005/08/03 15:52:31 jp_milcent |
* Fin gestion des résultats recherche nomenclaturale. |
* Début gestion formulaire taxonomique. |
* |
* Revision 1.1 2005/08/02 16:19:33 jp_milcent |
* Amélioration des requetes de recherche de noms. |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/v4.0/scripts/bibliotheque/noyau/aModule.class.php |
---|
New file |
0,0 → 1,405 |
<?php |
abstract class aModule { |
/*** Constantes : ***/ |
const TPL_NULL = 'NULL'; |
const TPL_PHP = 'PHP'; |
const TPL_PHP_MAIL = 'PHP_MAIL'; |
const TPL_IT = 'IT'; |
const TPL_FPDI = 'FPDI'; |
const SORTIE_NULL = 'NULL'; |
const SORTIE_EXIT = 'EXIT'; |
const SORTIE_MAIL_SMTP = 'email'; |
const SORTIE_HTML = 'html'; |
const SORTIE_EXIT_HTML = 'exit.html'; |
const SORTIE_XML = 'xml'; |
const SORTIE_PDF = 'pdf'; |
/*** Attributs : ***/ |
private $registre; |
private $cache; |
private $actions_chainees = null; |
/*** Constructeur : ***/ |
public function __construct() |
{ |
$this->registre = Registre::getInstance(); |
$this->registre->set('squelette_moteur', aModule::TPL_PHP); |
$this->registre->set('format', aModule::SORTIE_HTML); |
$applette_dossier = preg_replace('/([a-z])([A-Z])/', '$1_$2', get_class($this)); |
// Nous créons automatiquement les chemins vers les différents dossier de l'application |
$this->registre->set('chemin_module', SC_CHEMIN_MODULE.strtolower($applette_dossier).DIRECTORY_SEPARATOR); |
$this->registre->set('chemin_module_config', $this->registre->get('chemin_module').'configuration'.DIRECTORY_SEPARATOR); |
$this->registre->set('chemin_module_squelette', $this->registre->get('chemin_module').'squelettes'.DIRECTORY_SEPARATOR); |
// Nous définissons si oui ou non le cache sera utilisé |
if (defined('SC_BOOL_STOCKAGE_CACHE')) { |
$this->cache_bool = SC_BOOL_STOCKAGE_CACHE; |
} else { |
$this->cache_bool = false; |
$e = 'La constante SC_BOOL_STOCKAGE_CACHE est indéfinie. Le cache a été désactivé!'; |
trigger_error($e, E_USER_WARNING); |
} |
// Nous chargeons le fichier de config de l'appli s'il existe |
if ($this->getConfigFichier()) { |
require_once $this->getConfigFichier(); |
} |
} |
/*** Accesseurs : ***/ |
public function getRegistre() |
{ |
return $this->registre; |
} |
public function setCacheBool($cb) |
{ |
return $this->cache_bool = $cb; |
} |
/*** Méthodes : ***/ |
public function getCacheId() |
{ |
if ($this->getActionNom() != null) { |
$methode_cache_id = 'getCacheId'.$this->getActionNom(); |
if (method_exists($this, $methode_cache_id) && !is_null($this->$methode_cache_id())) { |
return call_user_func(array($this, $methode_cache_id)); |
} |
} |
return null; |
} |
public function getCacheFichier() |
{ |
$fichier_cache = EF_CHEMIN_STOCKAGE_CACHE.$this->getCacheId(); |
if (!is_null($this->getCacheDuree())) { |
$fichier_cache .= '_['.$this->getCacheDuree().']'; |
} |
$fichier_cache .= '.cache.'.$this->getRegistre()->get('format'); |
return $fichier_cache; |
} |
public function getCacheDuree() |
{ |
$dlc = null; |
$methode_cache_dlc = 'getCacheDlc'.$this->getActionNom(); |
if (method_exists($this, $methode_cache_dlc) && !is_null($this->$methode_cache_dlc())) { |
$dlc = call_user_func(array($this, $methode_cache_dlc)); // dlc en seconde |
} |
return $dlc; |
} |
public function getActionNom() |
{ |
if ($this->getRegistre()->get('action') != null) { |
return $action = str_replace(' ', '', ucwords(str_replace('_', ' ', $this->getRegistre()->get('action')))); |
} |
return null; |
} |
public function setDebogage($d, $e = E_USER_NOTICE) |
{ |
if (is_array($d) || is_object($d)) { |
trigger_error(print_r($d, true), $e); |
} else { |
trigger_error($d, $e); |
} |
} |
public function setChrono($balise) |
{ |
// Mesure du temps d'éxecution |
$class = new ReflectionClass($this); |
$GLOBALS['_SCRIPT_']['chrono']->setTemps(array($class->getName().'-'.$balise => microtime())); |
} |
public function getSqueletteFichier() |
{ |
// Par défaut le nom du fichier de squelette est construit à partir du nom de l'action. |
if (is_null($this->getRegistre()->get('squelette_fichier'))) { |
$this->getRegistre()->set('squelette_fichier', $this->getRegistre()->get('action')); |
} |
// Nous recherchons s'il existe un squelette spécifique à la distribution |
$fichier_tpl_defaut = $this->getRegistre()->get('chemin_module_squelette'). |
$this->getRegistre()->get('squelette_fichier').'.tpl.'.$this->registre->get('format'); |
if (defined('SC_DISTRIBUTION') && SC_DISTRIBUTION != ''&& !is_null(SC_DISTRIBUTION)) { |
$fichier_tpl_projet = $this->getRegistre()->get('chemin_module_squelette'). |
strtolower(SC_DISTRIBUTION).DIRECTORY_SEPARATOR. |
$this->getRegistre()->get('squelette_fichier').'.tpl.'.$this->getRegistre()->get('format'); |
if (file_exists($fichier_tpl_projet)) { |
return $fichier_tpl_projet; |
} |
} |
if (file_exists($fichier_tpl_defaut)) { |
return $fichier_tpl_defaut; |
} |
return false; |
} |
public function getConfigFichier() |
{ |
$fichier_conf_defaut = $this->getRegistre()->get('chemin_module_config').'config.inc.php'; |
if (defined('SC_DISTRIBUTION') && SC_DISTRIBUTION != '') { |
$fichier_conf_projet = $this->getRegistre()->get('chemin_module_config'). |
'config.'.strtolower(SC_DISTRIBUTION).'.inc.php'; |
if (file_exists($fichier_conf_projet)) { |
return $fichier_conf_projet; |
} |
} |
if (file_exists($fichier_conf_defaut)) { |
return $fichier_conf_defaut; |
} |
return false; |
} |
public function getActionsChainees() |
{ |
// Création du tableau si nécessaire |
if (is_null($this->actions_chainees)) { |
$this->actions_chainees = array(); |
$this->actions_chainees[] = $this->getRegistre()->get('action'); |
} |
return $this->actions_chainees; |
} |
public function poursuivreVers($action) |
{ |
// Ajout de l'action suivante |
$this->actions_chainees[] = $action; |
} |
public function traiterAction() |
{ |
// Gestion des actions chainées si nécessaire |
$sortie = ''; |
$module_nom = strtolower(get_class($this)); |
$i = 0; |
while ($i < count($this->getActionsChainees())) { |
// Initialisation de variables |
$actions = $this->getActionsChainees(); |
$action = $actions[$i++]; |
// Remise à défaut des valeurs du Registre pour la prochaine action |
$this->getRegistre()->set('action', $action); |
$this->getRegistre()->set('format', aModule::SORTIE_HTML); |
$this->getRegistre()->set('squelette_fichier', null); |
$this->getRegistre()->set('squelette_moteur', aModule::TPL_PHP); |
// Gestion du multilinguisme |
/* |
if (isset($GLOBALS['_EF_']['i18n'][$module_nom][$action]) || isset($GLOBALS['_EF_']['i18n']['_defaut_'][$action])) { |
$this->getRegistre()->set('module_i18n', $GLOBALS['_EF_']['i18n']['_defaut_']['general']); |
if (isset($GLOBALS['_EF_']['i18n']['_defaut_'][$action])) { |
$this->getRegistre()->set('module_i18n', $GLOBALS['_EF_']['i18n']['_defaut_'][$action]); |
} |
if (isset($GLOBALS['_EF_']['i18n'][$module_nom][$action])) { |
$this->getRegistre()->set('module_i18n', $GLOBALS['_EF_']['i18n'][$module_nom][$action]); |
} |
$aso_donnees = $this->getRegistre()->get('squelette_donnees'); |
$aso_donnees['i18n'] = $this->getRegistre()->get('module_i18n'); |
$this->getRegistre()->set('squelette_donnees', $aso_donnees); |
} |
*/ |
// Exécution du rendu de l'action |
$sortie .= $this->traiterRendu($action); |
} |
// Gestion de la sortie finale |
return $sortie; |
} |
private function traiterRendu() |
{ |
// Gestion du cache : avant toute chose, retour du cache s'il existe |
if ($this->cache_bool) { |
//$this->setDebogage($this->getCacheId()); |
if (!is_null($this->getCacheId())) { |
if (file_exists($this->getCacheFichier())) { |
// Gestion de la DLC |
if ( (is_null($this->getCacheDuree())) || |
(!is_null($this->getCacheDuree()) && (time() < (filemtime($this->getCacheFichier()) + $this->getCacheDuree())))) { |
$this->registre->set('sortie', file_get_contents($this->getCacheFichier())); |
return $this->traiterSortie(); |
} |
} |
} |
} |
// Attribution si nécessaire de l'encodage de sortie |
if (!$this->registre->get('charset')) { |
$this->registre->set('charset', 'ISO-8859-1'); |
} |
// Execution de l'action |
$methode_action = 'executer'; |
if ($this->getActionNom() != null) { |
$methode_action .= $this->getActionNom(); |
} |
if (method_exists($this, $methode_action)) { |
call_user_func(array($this, $methode_action)); |
} else if (!$this->getSqueletteFichier()) { |
// Tentative de recherche de l'action dans le module des Communs |
$fichier_communs = SC_CHEMIN_MODULE.'communs'.DIRECTORY_SEPARATOR.'Communs.class.php'; |
if (file_exists($fichier_communs)) { |
include_once $fichier_communs; |
$Commun = new Communs(); |
$sortie_commun = $Commun->traiterAction(); |
} |
if (isset($sortie_commun)) { |
return $sortie_commun; |
} else { |
$e = 'Aucun squelette ou méthode "'.$methode_action.'" n\'existe pour l\'action '.$this->registre->get('action'); |
trigger_error($e, E_USER_WARNING); |
return null; |
} |
} |
// Gestion du rendu en fonction du type de template |
switch($this->registre->get('squelette_moteur')) { |
case aModule::TPL_PHP_MAIL : |
case aModule::TPL_PHP : |
$Squelette = new SquelettePhp(); |
$Squelette->set($this->getRegistre()->get('squelette_donnees')); |
if ($this->getSqueletteFichier()) { |
$sortie = $Squelette->analyser($this->getSqueletteFichier()); |
if ($this->registre->get('squelette_moteur') == aModule::TPL_PHP_MAIL) { |
// Traitement spécial pour les mails |
if (preg_match_all('/<(html|txt|file)(?:>(.*?)<\/\\1>|\s+src="(.*)"\s+type="(.*)"\s*\/>\s*$)/ism', $sortie, $decoupage, PREG_SET_ORDER)) { |
$this->registre->set('sortie_mail_mime', $decoupage); |
} |
} else { |
$this->registre->set('sortie', $sortie); |
} |
} else { |
$e = 'Action : '.$this->getRegistre()->get('action').' fichier de squelette introuvable !'; |
trigger_error($e, E_USER_WARNING); |
return null; |
} |
break; |
case aModule::TPL_NULL : |
// Nous ne faisons rien, nous passons à la gestion du type de sortie |
break; |
default : |
trigger_error('Moteur de squelette inconnu', E_USER_WARNING); |
return null; |
} |
// Gestion du cache : écriture du fichier |
if ($this->cache_bool) { |
if (!is_null($this->getCacheId())) { |
if (!file_put_contents($this->getCacheFichier(), $this->getRegistre()->get('sortie'))) { |
$e = 'Écriture du fichier de cache impossible : '.$this->getCacheFichier(); |
trigger_error($e, E_USER_WARNING); |
} |
} |
} |
// Gestion du format de sortie |
return $this->traiterSortie(); |
} |
private function traiterSortie() |
{ |
switch($this->getRegistre()->get('format')) { |
case aModule::SORTIE_HTML : |
// +--------------------------------------------------------------------------------------------------+ |
// A FAIRE : Gestion des statistiques |
// +--------------------------------------------------------------------------------------------------+ |
// Gestion du cache : affichage de la date du cache |
if ($this->cache_bool) { |
if (!is_null($this->getCacheId())) { |
$e = 'Cache, généré le '.date('D d M Y à H:i:s', filemtime($this->getCacheFichier())). |
' sera généré à nouveau le '. |
date('D d M Y à H:i:s', (filemtime($this->getCacheFichier()) + $this->getCacheDuree()))." \n"; |
trigger_error($e, E_USER_NOTICE); |
} |
} |
return $this->getRegistre()->get('sortie'); |
break; |
case aModule::SORTIE_EXIT_HTML : |
echo $this->getRegistre()->get('sortie'); |
exit(); |
break; |
case aModule::SORTIE_XML : |
header('Content-Type: application/xhtml+xml; charset='.$this->registre->get('charset')); |
echo $this->registre->get('sortie'); |
exit(); |
break; |
case aModule::SORTIE_PDF : |
header('Content-type: application/pdf'); |
header('Content-Length: '.strlen($this->getRegistre()->get('sortie'))); |
header('Content-Disposition: inline; filename='.str_replace(' ', '_', $GLOBALS['_SCRIPT_']['titre_fichier']).'.pdf');// |
echo $this->registre->get('sortie'); |
break; |
case aModule::SORTIE_MAIL_SMTP : |
//trigger_error(print_r($this->getRegistre()->get('sortie_mail_mime'), true), E_USER_NOTICE); |
// TODO : réseoudre le problème de l'autoload pour les fichiers PEAR ci-dessous |
include_once 'Mail.php'; |
include_once 'Mail/smtp.php'; |
$sortie_mail = ''; |
// Nous vérifions si nous avons à faire à un mail mime ou pas |
if (is_null($this->getRegistre()->get('sortie_mail_mime'))) { |
$sortie_mail = $this->getRegistre()->get('sortie'); |
} else { |
// Pour l'instant supporte du html et son alternative en txt plus des fichiers attachés |
// TODO : Les mails multiparts contenant des imbrications de html et de txt ne sont pas encore pris en compte... |
include_once 'Mail/mime.php'; |
$MailMime = new Mail_mime("\n"); |
foreach ($this->getRegistre()->get('sortie_mail_mime') as $valeur) { |
switch (strtolower($valeur[1])) { |
case 'txt' : |
// Syntaxe multiligne: <txt>mettre ici du texte brute</txt> |
$MailMime->setTXTBody($valeur[2]); |
break; |
case 'html' : |
// Syntaxe multiligne: <html>mettre ici votre html</html> |
$MailMime->setHTMLBody($valeur[2]); |
break; |
case 'file' : |
// Syntaxe sur une ligne: <file src="/tmp/un_test.txt" type="text/plain" /> |
$e = $MailMime->addAttachment($valeur[3], $valeur[4]); |
if ($e instanceof PEAR_Error) { |
trigger_error($e->getMessage(), E_USER_NOTICE); |
} |
break; |
default : |
trigger_error('Type de balise inconnue :'.$valeur[1], E_USER_WARNING); |
} |
} |
//do not ever try to call these lines in reverse order |
$sortie_mail = $MailMime->get(); |
$this->getRegistre()->set('sortie_mail_smtp_entete', $MailMime->headers($this->getRegistre()->get('sortie_mail_smtp_entete'))); |
} |
$mail_object = new Mail_smtp($this->getRegistre()->get('sortie_mail_smtp_params')); |
$message = $mail_object->send( $this->getRegistre()->get('sortie_mail_smtp_destinataire'), |
$this->getRegistre()->get('sortie_mail_smtp_entete'), |
$sortie_mail); |
$this->getRegistre()->set('sortie_mail_smtp_info', $message); |
return null; |
break; |
case aModule::SORTIE_EXIT : |
// Nous ne faisons rien, nous terminons seulement le programme ici |
exit(); |
break; |
case aModule::SORTIE_NULL : |
// Nous ne faisons rien, nous retournons null |
return null; |
break; |
default : |
trigger_error('Type de sortie inconnu', E_USER_ERROR); |
} |
} |
} |
?> |
/branches/v4.0/scripts/bibliotheque/noyau/GestionnaireErreur.class.php |
---|
New file |
0,0 → 1,423 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 5.0.4 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2005 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This file is part of eFlore-Debogage. | |
// | | |
// | Foobar is free software; you can redistribute it and/or modify | |
// | it under the terms of the GNU General Public License as published by | |
// | the Free Software Foundation; either version 2 of the License, or | |
// | (at your option) any later version. | |
// | | |
// | Foobar is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// | GNU General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public License | |
// | along with Foobar; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: GestionnaireErreur.class.php,v 1.6 2007-07-09 18:54:43 jp_milcent Exp $ |
/** |
* Classe de gestion des erreurs. |
* |
* |
* |
*@package eFlore |
*@subpackage Debogage |
//Auteur original : |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
//Autres auteurs : |
*@author aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.6 $ $Date: 2007-07-09 18:54:43 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// | CORPS du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* Classe GestionnaireErreur |
* |
* Gérer les erreurs PHP et SQL. |
*/ |
class GestionnaireErreur |
{ |
/*** Attributes: ***/ |
/** |
* Permet de savoir si on utilise PHP en ligne de commande dans une console (PHP-CLI) ou en mode module de serveur. |
* @access private |
*/ |
private $mode; |
/** |
* Contient la liste des erreurs. |
* @access private |
*/ |
private $erreurs; |
/** |
* Permet de savoir si on veut faire apparaître ou pas le contexte de l'erreur, |
* c'est à dire le contenu des variables. |
* @access private |
*/ |
private $contexte; |
/** |
* Contient le niveau d'erreur courrant. Celui que l'on donne à la fonction |
* error_reporting(). |
* @access private |
*/ |
private $niveau_erreur_courrant; |
/*** Constructeur: ***/ |
/** |
* Construit le gestionnaire d'erreur. |
* |
* @return void |
* @access public |
*/ |
public function __construct( $contexte = false ) |
{ |
$this->mode = php_sapi_name(); |
$this->erreurs = array(); |
$this->setContexte($contexte); |
set_error_handler(array(&$this, 'gererErreur')); |
} |
/*** Accesseurs: ***/ |
// end of member function __construct |
/** |
* Récupère le tableau des erreurs. |
* |
* @return array |
* @access public |
*/ |
public function getErreur( ) { |
return $this->erreurs; |
} |
/** |
* Ajoute une erreur à la liste. |
* |
* @param array une_erreur |
* @return void |
* @access public |
*/ |
public function setErreur( $une_erreur ) { |
$this->erreurs[] = $une_erreur; |
} |
/** |
* Récupère la valeur du contexte. |
* |
* @return boolean |
* @access public |
*/ |
public function getContexte( ) { |
return $this->contexte; |
} |
/** |
* Définit si oui ou non le contexte sera affiché. |
* |
* @param boolean un_contexte |
* @return void |
* @access public |
*/ |
public function setContexte( $un_contexte ) { |
$this->contexte = $un_contexte; |
} |
/** |
* Récupère le niveau d'erreur courrant. |
* |
* @return int le niveau d'erreur courrant. |
* @access public |
*/ |
public function getNiveauErreurCourrant( ) { |
return (int)$this->niveau_erreur_courrant; |
} |
/** |
* Définit le niveau d'erreur courrant. |
* |
* @param int un niveau d'erreur. |
* @return void |
* @access public |
*/ |
public function setNiveauErreurCourrant( $niveau = 2048 ) { |
$this->niveau_erreur_courrant = $niveau; |
} |
/** |
* Définit le niveau d'erreur courrant (synonyme fonction precedente) |
* |
* @param int un niveau d'erreur. |
* @return void |
* @access public |
*/ |
public function setActive ($niveau) { |
$this->niveau_erreur_courrant = $niveau; |
} |
/*** Méthodes : ***/ |
/** |
* |
* @param int niveau |
* @param string message |
* @param string fichier |
* @param int ligne |
* @param boolean contexte |
* @return void |
* @access public |
*/ |
public function gererErreur($niveau, $message, $fichier, $ligne, $contexte) |
{ |
$aso_erreur = array(); |
// Nous vérifions si nous affichons ou pas l'erreur en fonction du niveau demandé |
if ( $niveau <= $this->getNiveauErreurCourrant() ) { |
$aso_erreur['niveau'] = $niveau; |
$aso_erreur['message'] = $message; |
$aso_erreur['fichier'] = $fichier; |
$aso_erreur['ligne'] = $ligne; |
if ($this->getContexte()) { |
$aso_erreur['contexte'] = $contexte; |
} |
$this->setErreur($aso_erreur); |
} |
// Si nous avons à faire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du script |
switch ($niveau) { |
case E_ERROR : |
case E_USER_ERROR : |
die($this->retournerErreur()); |
break; |
} |
} |
/** |
* Retourne l'erreur PHP formatée en XHTML. |
* |
* @return string |
* @access public |
*/ |
public function retournerErreur() |
{ |
$retour = ''; |
$erreur_pear_nbre = 0; |
$erreur_pear_fichier_nbre = 0; |
$erreur_pear_message_nbre = 0; |
foreach($this->getErreur() as $aso_erreur) { |
if ('<!-- BEGIN sql -->' == substr($aso_erreur['message'], 0, 18)) { |
$retour .= $aso_erreur['message']; |
continue; |
} |
// Nous testons les erreurs PEAR pour ne pas en tenir compte |
if (!SC_DEBOGAGE_PEAR && stristr($aso_erreur['fichier'], SC_DEBOGAGE_PEAR_CHAINE)) { |
$erreur_pear_fichier_nbre++; |
} else if (!SC_DEBOGAGE_PEAR && preg_match(SC_DEBOGAGE_PEAR_REGEXP_MESSAGE, $aso_erreur['message'])) { |
$erreur_pear_message_nbre++; |
} else { |
switch ($this->mode) { |
case 'cli' : |
if ($aso_erreur['niveau'] == E_USER_NOTICE) { |
$retour .= $aso_erreur['message']."\n"; |
$retour .= 'Fichier : '.$aso_erreur['fichier']."\n"; |
$retour .= 'Ligne : '.$aso_erreur['ligne']."\n"; |
} else if ($aso_erreur['niveau'] <= 512) { |
$retour .= 'INFO : Niveau '.$aso_erreur['niveau']."\n"; |
} else { |
$retour .= 'ERREUR : Niveau '.$aso_erreur['niveau']."\n"; |
} |
$retour .= 'Niveau : '.$aso_erreur['niveau']."\n"; |
$retour .= 'Message : '.$aso_erreur['message']."\n"; |
$retour .= 'Fichier : '.$aso_erreur['fichier']."\n"; |
$retour .= 'Ligne : '.$aso_erreur['ligne']."\n"; |
if ($this->getContexte()) { |
$retour .= 'Contexte : '."\n".print_r($aso_erreur['contexte'], true)."\n"; |
} |
break; |
default: |
if ($aso_erreur['niveau'] == E_USER_NOTICE) { |
$retour .= '<pre class="debogage">'."\n"; |
$retour .= htmlentities($aso_erreur['message'])."\n"; |
$retour .= '<span class="debogage_fichier">'.'Fichier : '.$aso_erreur['fichier'].'</span>'."\n"; |
$retour .= '<span class="debogage_ligne">'.'Ligne : '.$aso_erreur['ligne'].'</span>'."\n"; |
$retour .= '</pre>'."\n"; |
continue; |
} else if ($aso_erreur['niveau'] <= 512) { |
$retour .= '<p class="information">'."\n"; |
$retour .= '<strong>INFO : Niveau '.$aso_erreur['niveau'].'</strong><br />'."\n"; |
} else { |
$retour .= '<p class="attention">'."\n"; |
$retour .= '<strong>ERREUR : Niveau '.$aso_erreur['niveau'].'</strong><br />'."\n"; |
} |
$retour .= '<strong>Niveau : </strong>'.$aso_erreur['niveau'].'<br />'."\n"; |
$retour .= '<strong>Message : </strong>'.$aso_erreur['message'].'<br />'."\n"; |
$retour .= '<strong>Fichier : </strong>'.$aso_erreur['fichier'].'<br />'."\n"; |
$retour .= '<strong>Ligne : </strong>'.$aso_erreur['ligne'].'<br />'."\n"; |
if ($this->getContexte()) { |
$retour .= '<pre>'."\n"; |
$retour .= '<stong>Contexte : </stong>'."\n".print_r($aso_erreur['contexte'], true)."\n"; |
$retour .= '</pre>'."\n"; |
} |
$retour .= '</p>'."\n"; |
} |
} |
} |
$erreur_pear_nbre = $erreur_pear_fichier_nbre + $erreur_pear_message_nbre; |
if ($erreur_pear_nbre != 0) { |
$retour .= '<p class="attention">'. |
'<strong>Nombre d\'erreurs PEAR totales : </strong>'.$erreur_pear_nbre.'<br />'."\n". |
'<strong> - éliminées car le "fichier" contené '.SC_DEBOGAGE_PEAR_CHAINE.' : </strong>'.$erreur_pear_fichier_nbre.'<br />'."\n". |
'<strong> - éliminées car le "message" correspondé à '.SC_DEBOGAGE_PEAR_REGEXP_MESSAGE.' : </strong>'.$erreur_pear_message_nbre.'<br />'."\n". |
'</p>'."\n"; |
} |
return $retour; |
} |
/** |
* Retourne l'erreur SQL formatée en XHTML. |
* |
* @param string fichier |
* @param int ligne |
* @param string message |
* @param string requete |
* @param string autres |
* @return string |
* @static |
* @access public |
*/ |
public static function retournerErreurSql( $fichier, $methode, $message, $requete = null, $autres = null ) |
{ |
$retour = ''; |
switch (php_sapi_name()) { |
case 'cli' : |
$retour .= 'ERREUR SQL '."\n"; |
$retour .= 'Fichier : '.$fichier."\n"; |
$retour .= 'Méthode : '.$methode."\n"; |
$retour .= 'Message : '.$message."\n"; |
if (!is_null($requete)) { |
$retour .= 'Requete : '."\n"; |
$retour .= $requete."\n"; |
} |
if (!is_null($autres)) { |
$retour .= 'Autres infos : '."\n"; |
$retour .= $autres."\n"; |
} |
break; |
default: |
$retour .= '<!-- BEGIN sql -->'; |
$retour .= '<div id="zone_erreur">'."\n"; |
$retour .= '<h1 > ERREUR SQL </h1><br />'."\n"; |
$retour .= '<dl>'."\n"; |
$retour .= '<dt> Fichier : </dt> '; |
$retour .= '<dd> '.$fichier.'</dd>'."\n"; |
$retour .= '<dt> Méthode : </dt> '; |
$retour .= '<dd> '.$methode.'</dd>'."\n"; |
$retour .= '<dt> Message erreur : </dt> '; |
$retour .= '<dd> '.$message.'</dd>'."\n"; |
if (!is_null($requete)) { |
$retour .= '<dt> Requete : </dt> '; |
$retour .= '<dd> '.$requete.' </dd>'."\n"; |
} |
if (!is_null($autres)) { |
$retour .= '<dt> Autres infos : </dt> '; |
$retour .= '<dd> '.$autres.' </dd>'."\n"; |
} |
$retour .= '</dl>'."\n"; |
$retour .= '</div>'."\n"; |
$retour .= '<!-- END sql -->'."\n"; |
} |
return $retour; |
} |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: GestionnaireErreur.class.php,v $ |
* Revision 1.6 2007-07-09 18:54:43 jp_milcent |
* Remplacement des balises html par des entités pour le message des E_USER_NOTICE. |
* |
* Revision 1.5 2007-07-02 15:31:53 jp_milcent |
* Initialisation d'une variable. |
* |
* Revision 1.4 2007-07-02 12:43:09 jp_milcent |
* Gestion de php-cli ou cgi... |
* |
* Revision 1.3 2007-07-02 10:50:06 jp_milcent |
* Ajout de la gestion du mode d'affichage (xhtml ou txt). |
* |
* Revision 1.2 2007-01-15 15:30:03 jp_milcent |
* Amélioration du gestionnaire d'erreur pour qu'il prenne en compte les erreurs Pear des méthodes "non static"... |
* |
* Revision 1.1 2007/01/12 13:16:09 jp_milcent |
* Déplacement des classes de débogage et d'optimisation dans le dossier noyau. |
* |
* Revision 1.9 2006/10/25 08:15:23 jp_milcent |
* Fusion avec la livraison Decaisne. |
* |
* Revision 1.8.2.1 2006/08/29 09:22:37 jp_milcent |
* Correction et amélioration du gestionnaire d'erreurs. |
* |
* Revision 1.8 2006/07/20 13:33:46 jp_milcent |
* Légère modif affichage. |
* |
* Revision 1.7 2006/07/20 13:33:03 jp_milcent |
* Amélioration du gestionnaire d'erreur. |
* |
* Revision 1.6 2006/07/20 13:27:07 jp_milcent |
* Ajout du type information. |
* |
* Revision 1.5 2006/05/29 13:52:41 ddelon |
* Integration wiki dans eflore |
* |
* Revision 1.4 2005/12/09 10:47:05 jp_milcent |
* Amélioration du Gestionnaire de Bogues. |
* |
* Revision 1.3 2005/10/10 07:28:07 jp_milcent |
* Utilisation du webservice Yahoo-Image. |
* |
* Revision 1.2 2005/10/04 16:34:03 jp_milcent |
* Début gestion de la chorologie. |
* Ajout de la bibliothèque de cartographie (à améliorer!). |
* |
* Revision 1.1 2005/08/04 15:51:45 jp_milcent |
* Implémentation de la gestion via DAO. |
* Fin page d'accueil. |
* Fin formulaire recherche taxonomique. |
* |
* Revision 1.3 2005/08/02 16:19:33 jp_milcent |
* Amélioration des requetes de recherche de noms. |
* |
* Revision 1.2 2005/08/01 16:18:39 jp_milcent |
* Début gestion résultat de la recherche par nom. |
* |
* Revision 1.1 2005/07/28 15:37:56 jp_milcent |
* Début gestion des squelettes et de l'API eFlore. |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/branches/v4.0/scripts/bibliotheque/noyau/SquelettePhp.class.php |
---|
New file |
0,0 → 1,48 |
<?php |
// Auteur d'origine : Brian Lozier |
// Source : http://www.massassi.com/php/articles/template_engines/ |
class SquelettePhp { |
private $vars; // Contient toutes les variables à insérer dans le squelette |
/** |
* Constructeur |
* |
* @param $fichier string le nom du fichier de template à charger. |
*/ |
public function __construct($fichier_tpl = null) |
{ |
$this->fichier = $fichier_tpl; |
} |
/** |
* Ajout une variable pour le squelette. |
*/ |
public function set($nom, $valeur = null) |
{ |
if (is_null($valeur) && is_array($nom)) { |
$this->vars = $nom; |
} else if ($valeur instanceof SquelettePhp) { |
$this->vars[$nom] = $valeur->analyser(); |
} else { |
$this->vars[$nom] = $valeur; |
} |
} |
/** |
* Ouvre, parse, and retourne le squelette. |
* |
* @param $fichier string le nom du fichier squelette. |
*/ |
public function analyser($fichier = null) |
{ |
if(!$fichier) $fichier = $this->fichier; |
extract($this->vars); // Extrait les variables et les ajoutes à l'espace de noms local |
ob_start(); // Démarre le buffer |
include($fichier); // Inclusion du fichier |
$contenu = ob_get_contents(); // Récupérer le contenu du buffer |
ob_end_clean(); // Arrête et détruit le buffer |
return $contenu; // Retourne le contenu |
} |
} |
?> |
/branches/v4.0/scripts/bibliotheque/noyau/Registre.class.php |
---|
New file |
0,0 → 1,56 |
<?php |
class Registre { |
private $aso_stock = array(); |
private static $registre; |
public function __construct() |
{ |
} |
public static function getInstance() |
{ |
if (self::$registre instanceof Registre) { |
return self::$registre; |
} |
self::$registre = new Registre; |
return self::$registre; |
} |
function set($intitule, $objet) |
{ |
if (is_array($objet) && isset($this->aso_stock[$intitule])) { |
$this->aso_stock[$intitule] = array_merge((array)$this->aso_stock[$intitule], (array)$objet); |
$message = "Le tableau $intitule présent dans le registre a été fusionné avec un nouveau tableau de même intitulé !"; |
trigger_error($message, E_USER_WARNING); |
} else { |
$this->aso_stock[$intitule] = $objet; |
} |
} |
function get($intitule) |
{ |
if (isset($this->aso_stock[$intitule])) { |
return $this->aso_stock[$intitule]; |
} |
return null; |
} |
function detruire($intitule) |
{ |
if (isset($this->aso_stock[$intitule])) { |
unset($this->aso_stock[$intitule]); |
} |
} |
public function etrePresent($intitule) |
{ |
if(isset($this->aso_stock[$intitule])){ |
return true; |
} |
return false; |
} |
} |
?> |
/branches/v4.0/scripts/bibliotheque/js/ValiderFormulaire.js |
---|
New file |
0,0 → 1,136 |
/* |
Origine du script : http://actuel.fr.selfhtml.org/articles/javascript/controle_formulaire/index.htm |
Auteur : Dieter RABER <d.raber@gmx.net> |
*/ |
function validate(sender, myarray, err_hd) { |
var message_erreur = !err_hd?new Array('Les erreurs suivantes sont survenues:\n'):new Array(err_hd+'\n'); |
var error = false; |
if (!sender.name) { |
alert('Le formulaire doit comporter un attribut name'); |
return false; |
} |
for (i = 0; i < myarray.length; i++) { |
field = document.forms[sender.name].elements[myarray[i][0]]; |
/* Bloc 1 vérifie les champs qui doivent être renseignés */ |
if (myarray[i][1].indexOf('e') > -1) { |
if (!field.value) { |
error = true; |
message_erreur.push(myarray[i][2]); |
} |
} |
/* Bloc 2 vérifie si l'adresse électronique est correcte dans la forme */ |
else if (myarray[i][1].indexOf('m')>-1) { |
if (field.value) { |
var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")"; |
var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}"; |
var regex = "^"+usr+"\@"+domain+"$"; |
var myrxp = new RegExp(regex); |
var check = (myrxp.test(field.value)); |
if (check!=true) { |
error = true; |
message_erreur.push(field.value+" "+myarray[i][2]); |
} |
} |
} |
/* Bloc 3 vérifie les champs dont la valeur doit être numérique */ |
else if (myarray[i][1].indexOf('n')>-1) { |
var num_error = false; |
if(field.value) { |
var myvalue = field.value; |
var num = myvalue.match(/[^0-9,\.]/gi) |
var dot = myvalue.match(/\./g); |
var com = myvalue.match(/,/g); |
if (num!=null) { |
num_error = true; |
} |
else if ((dot!=null)&&(dot.length>1)) { |
num_error = true; |
} |
else if ((com!=null)&&(com.length>1)) { |
num_error = true; |
} |
else if ((com!=null)&&(dot!=null)) { |
num_error = true; |
} |
} |
if (num_error==true) { |
error = true; |
message_erreur.push(myvalue+" "+myarray[i][2]); |
} |
} |
/* Bloc 4 vérifie la valeur à l'aide d'une expression régulière sur un modèle déterminé */ |
else if (myarray[i][1].indexOf('r')>-1) { |
var regexp = myarray[i][3]; |
if (field.value) { |
if (!regexp.test(field.value)) { |
error = true; |
message_erreur.push(field.value+" "+myarray[i][2]); |
} |
} |
} |
/* Bloc 5 vérifie les champs qui doivent être formatés comme des prix et modifie éventuellement le formatage */ |
else if (myarray[i][1].indexOf('p')>-1) { |
var myvalue = field.value; |
var reg = /,-{1,}|\.-{1,}/; |
var nantest_value = myvalue.replace(reg,""); |
var num = nantest_value.match(/[^0-9,\.]/gi) |
sep = myarray[i][1].substr(1,1)?myarray[i][1].substr(1,1):','; |
if (field.value) { |
var myvalue = field.value.replace(/\./,','); |
if (myvalue.indexOf(',')==-1) { |
field.value = myvalue+sep+'00'; |
} |
else if (myvalue.indexOf(",--")>-1) { |
field.value = myvalue.replace(/,--/,sep+'00'); |
} |
else if (myvalue.indexOf(",-")>-1) { |
field.value = myvalue.replace(/,-/,sep+'00'); |
} |
else if (!myvalue.substring(myvalue.indexOf(',') + 2)) { |
error=true; |
message_erreur.push(field.value+" "+myarray[i][2]); |
} |
else if (myvalue.substring(myvalue.indexOf(',') + 3)!='') { |
error=true; |
message_erreur.push(field.value+" "+myarray[i][2]); |
} else if (num!=null) { |
error = true; |
message_erreur.push(field.value+" "+myarray[i][2]); |
} |
} |
} |
/* Bloc 6 vérifie les champs de nom et rectifie éventuellement la casse */ |
else if (myarray[i][1].indexOf('c')>-1) { |
var noble = new Array(" d\'", "de","von","van","der","d","la","da","of"); |
var newvalue=''; |
var myvalue = field.value.split(/\b/); |
for (k=0;k<myvalue.length;k++) { |
newvalue+= myvalue[k].substr(0,1).toUpperCase()+myvalue[k].substring(1); |
} |
for(k = 0; k < noble.length; k++){ |
var reg = new RegExp ("\\b"+noble[k]+"\\b","gi"); |
newvalue = newvalue.replace(reg,noble[k]); |
} |
field.value = newvalue; |
} |
} |
/* En cas d'erreur, les messages d'erreur récoltés sont exploités ici puis affichés. |
Si le formulaire est correctement rempli, il est transmis */ |
if (error) { |
message_erreur = message_erreur.join('\n\xB7 '); |
alert(message_erreur); |
return false; |
} else { |
return true; |
} |
} |
/branches/v4.0/scripts/index.php |
---|
New file |
0,0 → 1,143 |
<?php |
/** Inclusion du fichier principal de l'application (eflore)*/ |
require_once 'script.php'; |
$contenu_navigation = afficherContenuNavigation(); |
$contenu_tete = afficherContenuTete(); |
$contenu_corps = afficherContenuCorps(); |
$titre = $GLOBALS['_SCRIPT_']['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=ISO-8859-15" /> |
<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="noindex,nofollow" /> |
<meta name="author" content="Tela Botanica" /> |
<meta name="description" content="Outils d'adminstration'" /> |
<link rel="stylesheet" type="text/css" media="screen" href="<?php echo SC_URL_CSS_TB_SIMPLE; ?>" /> |
<link rel="stylesheet" type="text/css" media="print" href="<?php echo SC_URL_CSS_TB_IMPRESSION; ?>" /> |
<style type="text/css" media="screen"> |
@import "<?php echo SC_URL_CSS_TB_COMPLEXE; ?>"; |
/*--------------------------------------------------------------------------------------------------------------*/ |
/* Spécial */ |
h2 { |
text-transform:none;} |
/*--------------------------------------------------------------------------------------------------------------*/ |
/* 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="acces_direct"> |
<a href="#nav_gauche">Aller aux menus</a> <a href="#contenu">Aller au texte</a> |
</div> |
<div id="bandeau"> |
<div id="bandeau_contenu"> |
<div id="titre_monde"><h1>Scripts <sup>BETA</sup></h1></div> |
<div id="plan_contact"> </div> |
</div> |
</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; |
if (SC_DEBOGAGE) { |
$GLOBALS['_DEBOGAGE_'] .= $GLOBALS['_SCRIPT_']['erreur']->retournerErreur(); |
echo $GLOBALS['_DEBOGAGE_']; |
} |
if (SC_DEBOGAGE_CHRONO) { |
echo $GLOBALS['_SCRIPT_']['chrono']->afficherChrono(); |
} |
?> |
</div> |
</div> |
</div> |
<div id="nav_gauche"> |
<div id="menus"> |
<ul class="menu_classique_n1"> |
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php">Accueil</a></li> |
<li class="menu_inactif">Wikini |
<ul> |
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&action=nettoyage">Nettoyage des commentaires et referrers</a></li> |
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&action=config_fichier">Modification des fichiers wakka.config.php</a></li> |
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&action=config_bdd">Modification des droits (table ACLS)</a></li> |
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&action=supprimer_utilisateur">Suppression d'utilisateurs</a></li> |
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&action=proprietaire">Modification de propriétaire</a></li> |
</ul> |
</li> |
</ul> |
</div> |
<div id="menu_contextuel"> |
<?php echo $contenu_menu; ?> |
</div> |
</div> |
<div id="pied"> |
<p> ©<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> |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/branches/v4.0/scripts/autoload.inc.php |
---|
New file |
0,0 → 1,42 |
<?php |
/** |
* La fonction __autoload() charge dynamiquement les classes trouvées dans le code. |
* |
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code. |
* |
*@param string le nom de la classe appelée. |
*@return void le fichier contenant la classe doit être inclu par la fonction. |
*/ |
function __autoload($classe) |
{ |
// Gestion des classes de la bibliothèque et du module "ef_commun" |
foreach ($GLOBALS['_SCRIPT_']['chemins_classes'] as $chemin) { |
if (file_exists($fichier_a_tester = $chemin.$classe.'.class.php')) { |
//echo $fichier."<br>"; |
require_once $fichier_a_tester; |
return null; |
} |
} |
// Gestion des fichiers présents dans l'include_path (PEAR) |
$fichier = $classe.'.php'; |
if (substr_count($classe, '_') > 0) { |
// Gestion des classes PEAR |
$tab_chemin = explode('_', $classe); |
$fichier = ''; |
$nbre_niveau = count($tab_chemin); |
for ($i = 0; $i < $nbre_niveau; $i++) { |
if (($nbre_niveau-1) == $i) { |
$fichier .= $tab_chemin[$i].'.php'; |
} else { |
$fichier .= $tab_chemin[$i].DIRECTORY_SEPARATOR; |
} |
} |
} |
if (file_exists($fichier)) { |
include_once $fichier; |
return null; |
} |
} |
?> |
/branches/v4.0/scripts/. |
---|
New file |
Property changes: |
Added: svn:ignore |
+bdd.ini |