Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 3 → Rev 4

/trunk/papyrus/bibliotheque/fonctions/pap_initialisation.fonct.php
New file
0,0 → 1,120
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_initialisation.fonct.php,v 1.1 2004-06-15 15:10:44 jpm Exp $
/**
* Bibliothèque de fonction pour l'initialisation de Papyrus.
*
* Cette bibliothèque contient des fonctions utilisé lors de l'initialisation de Papyrus.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Alexandre GRANIER <alexadandre@tela-botanica.org
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:10:44 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE des FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
/** Fonction donnerIdPremiereApplicationLiee() - Renvoie l'id de la première application liée à un menu.
*
* Cette fonction recherche l'application liée à un menu, mais comme il peut
* ne pas y en avoir, elle cherche alors l'application du menu fils qui
* lui-même peut ne pas en avoir, etc...
*
* @param integer l'identifiant d'un menu.
* @return integer l'identifiant de la première application trouvée.
*/
function donnerIdPremiereApplicationLiee($id_menu)
{
global $db;
$aso_application_info = array();
$requete = 'SELECT gm_ce_application, gm_application_arguments '.
'FROM gen_menu '.
'WHERE gm_id_menu = '.$id_menu;
$resultat = $db->query($requete) ;
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$aso_application_info =& $resultat->fetchRow(DB_FETCHMODE_ASSOC);
if ($aso_application_info['gm_ce_application'] == 0) {
// Le menu demandé n'a pas d'application liée, nous cherchons celle du premièr menu fils.
$requete_fils = 'SELECT gm_id_menu '.
'FROM gen_menu, gen_menu_relation '.
'WHERE gmr_id_menu_02 = '.$id_menu.' '.
'AND gmr_id_valeur = 1 '.
'AND gmr_id_menu_01 = gm_id_menu '.
'ORDER BY gmr_ordre ASC ';
$resultat_fils = $db->query($requete_fils) ;
(DB::isError($resultat_fils))
? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_fils->getMessage(), $requete_fils))
: '' ;
if ($resultat_fils->numRows() >= 1) {
// Nous avons un menu fils, nous rappelons récursivement la fontion avec son identifiant
// pour récuperer l'application liée.
$ligne_fils = $resultat_fils->fetchRow(DB_FETCHMODE_OBJECT);
$aso_application_info = donnerIdPremiereApplicationLiee($ligne_fils->gm_id_menu);
}
else {
// Gestion des erreurs sur la recherche de l'application liée.
die('ERREUR Génésia : aucune application trouvable pour le menu demandé. <br />'.
'Menu : '.$id_menu.'<br />'.
'Ligne n° : '. __LINE__ . '<br />'.
'Fichier : '. __FILE__ . '<br />');
}
}
return $aso_application_info['gm_ce_application'];
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.6 2004/04/28 12:04:40 jpm
* Changement du modèle de la base de données.
*
* Revision 1.5 2004/04/09 16:23:41 jpm
* Prise en compte des tables i18n.
*
* Revision 1.4 2004/04/02 16:34:03 jpm
* Modifications de commentaires des fonctions.
*
* Revision 1.3 2004/04/01 11:24:51 jpm
* Ajout et modification de commentaires pour PhpDocumentor.
*
* Revision 1.2 2004/03/31 16:53:05 jpm
* Modification du code vis à vis du modèle revision 1.9 de Génésia.
*
* Revision 1.1 2004/03/29 14:53:25 jpm
* Création du fichier et ajout de la fonction donnerIdPremiereApplicationLiee().
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/fonctions/pap_style.fonct.php
New file
0,0 → 1,177
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_style.fonct.php,v 1.1 2004-06-15 15:14:32 jpm Exp $
/**
* Les fonctions permettant d'inclure des styles CSS.
*
* Ces fonctions permettent d'inclure des CSS directement dans les pages
* des applications. Elles peuvent donc être appelées par les applications
* intégrées à Papyrus.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:14:32 $
// +------------------------------------------------------------------------------------------------------+
*/
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
/** Fonction GEN_modifierTypeStyle() - Permet de stocker le type des styles intégrés.
*
* Papyrus permet à une application donnée d'intégrer des styles directement dans
* l'entête de la page. Cette fonction définit le type Mime des styles utilisés.
* En XHTML strict, cette fonction ne devrait pas être utilisé car les styles devraient être
* stockés dans des fichiers séparés.
*
* @deprecated déprécier dans le cadre d'application XHTML.
* @global string "style_type" : utilisé pour stocker le type des styles intégrés dans l'entête de la page.
* @param string le type des styles intégrés.
* @return void le type des styles intégrés est stocké dans une variable globale.
*/
function GEN_modifierTypeStyle($type = 'text/css')
{
global $_GEN_commun;
$_GEN_commun['style_type'] .= $type;
}
 
/** Fonction GEN_stockerStyleIntegree() - Permet de stocker un style utilisé par une application.
*
* Papyrus permet à une application donnée de stocker des styles intégrés
* directement dans l'entête de la page. En XHTML strict, l'utilisation de cette
* fonction est déconseillée. Utiliser plutôt une feuille de styles externes qui
* sera appelé par l'entête. Cette fonction peut être appelé plusieurs fois. Elle ne
* fait que stocker les styles dans une variable globale utilisée par Génésia.
*
* @deprecated déprécier dans le cadre d'application XHTML.
* @global string "style_integree" : utilisé pour stocker les styles intégrés.
* @param string le style à insérer.
* @return void le style est stocké dans une variable globale.
*/
function GEN_stockerStyleIntegree($style_integree)
{
global $_GEN_commun;
$_GEN_commun['style_integree'] .= $style_integree;
}
 
/** Fonction GEN_stockerStyleExterne() - Permet de stocker des fichiers de styles externes.
*
* Papyrus permet à une application donnée de stocker des feuilles de styles externes qui seront
* appelés depuis l'entête de la page. En XHTML strict, l'utilisation de cette
* fonction est conseillée.
* Cette fonction peut être appelé plusieurs fois. Elle ne fait que stocker les chemin des
* feuilles de styles externes dans une variable (tableau associatif) globale utilisée par Papyrus.
*
* @global array "style_fichier" : utilisé pour stocker les chemins des feuilles de styles externes.
* @param string la clé du tableau de fichiers, par exemple le nom de la feuille de styles externes à insérer.
* @param string le chemin complet du fichier de styles à insérer.
* @param string le titre de la feuille de styles externes.
* @param string la relation de la feuille de style (stylesheet, alternate stylesheet, ...).
* @param string le type MIME des styles (text/css, ...).
* @param string le type de média concerné par la feuille de styles (screen, print, aural, ...).
* @return void le chemin du fichier CSS est stocké dans une variable (tableau associatif) globale.
*/
function GEN_stockerStyleExterne($id_fichier, $chemin_fichier, $titre = '', $rel = 'stylesheet', $type = 'text/css', $media = 'screen')
{
global $_GEN_commun;
if (empty($_GEN_commun['style_externe'][$id_fichier])) {
$_GEN_commun['style_externe'][$id_fichier]['rel'] = $rel;
$_GEN_commun['style_externe'][$id_fichier]['type'] = $type;
$_GEN_commun['style_externe'][$id_fichier]['media'] = $media;
$_GEN_commun['style_externe'][$id_fichier]['titre'] = $titre;
$_GEN_commun['style_externe'][$id_fichier]['chemin'] = $chemin_fichier;
} else {
die('ERREUR Génésia : cet identifiant de fichier à déjà été enregistré par GEN_stockerStyleExterne(). <br />'.
'Identifiant : '. $id_fichier .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier : '. __FILE__);
}
}
 
/** Fonction GEN_afficherStyle() - Permet de renvoyer les styles dans l'entete.
*
* Cette fonction récupère les feuilles de styles stockés dans les variables globales de Papyrus
* et les retourne formatés pour l'affichage dans l'entête du squelette du site.
* C'est la balise Génésia <!-- STYLES --> qui permet de situer l'endroit où afficher
* les CSS.
*
* @global array "style_externe" : utilisé pour stocker les chemins des feuilles de styles externes et
* "style_integree" : utilisé pour stocker les styles intégrés directement dans l'entête.
* @return string le code XHTML contenant les styles à insérer dans l'entête.
*/
function GEN_afficherStyle()
{
global $_GEN_commun;
$sortie = '';
$styles_externes = '';
if (isset($_GEN_commun['style_externe'])) {
foreach ($_GEN_commun['style_externe'] as $cle => $valeur) {
$styles_externes .= str_repeat(' ', 8).
'<link rel="'.$valeur['rel'].'" '.
'type="'.$valeur['type'].'" '.
'media="'.$valeur['media'].'" '.
'title="'.$valeur['titre'].'" '.
'href="'.$valeur['chemin'].'" />'."\n";
}
$sortie .= $styles_externes;
} else {
$sortie .= '<!-- Aucun style externe -->'."\n";
}
$styles_integrees = '';
$styles_integrees = $_GEN_commun['style_integree'];
if ($styles_integrees != '') {
$sortie .= "\n";
$sortie .= str_repeat(' ', 8).'<style type="'.$_GEN_commun['style_type'].'">'."\n";
$sortie .= str_repeat(' ', 12).'<!--/*--><![CDATA[//><!--'."\n";
$sortie .= $styles_integrees."\n";
$sortie .= str_repeat(' ', 12).'//--><!]]>'."\n";
$sortie .= str_repeat(' ', 8).'</style>';
} else {
$sortie .= '<!-- Aucun style intégré -->'."\n";
}
return $sortie;
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.3 2004/04/20 15:25:58 jpm
* Ajout de commentaire html à la place d'une chaine vide lors du remplacement de balise Genesia.
*
* Revision 1.1 2004/04/20 10:46:43 jpm
* Ajout de la bibliothèque gérant les styles.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/fonctions/pap_compression.fonct.php
New file
0,0 → 1,160
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_compression.fonct.php,v 1.1 2004-06-15 15:09:26 jpm Exp $
/**
* Bibliothèque de fonction de compression et d'envoi de données.
*
* Cette bibliothèque contient toutes les fonctions nécessaires à l'envoi de
* données au navigateur client. Cela consiste donc à vérifier le support de
* la compression par le navigateur du client et à compresser puis envoyer ces donées.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:09:26 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
 
/** Fonction GEN_compresserDonneesZLIB() - Compresse des données si nécessaire et les retourne.
*
* Si les données sont plus grandes que 2048 caractères nous compressons et nous les retournons
* compressées. Si la compression est un echec false est retourné. Si le nombre de caractères des
* données à compresser ou que l'extension ZLIB n'est pas présente, la valeur vide est retournée.
*
* @param string données à compresser.
* @param int taux de compression à utiliser.
* @param int nombre de caractères minimums que doivent comporter les données pour être compressé.
* @return mixed données compressées, "false" si la compression échoue, void s'il n'est pas nécessaire de compresser.
*/
function GEN_compresserDonneesZLIB($donnees, $taux_compression = 9, $valeur_incompressible = 2048)
{
// Si les données sont infèrieures à 2048 nous ne compressons pas.
if ((strlen($donnees) < $valeur_incompressible) || (! extension_loaded('zlib')) ) {
return '';
}
// Tentative de compression des donnée
$donnees_gzip = gzcompress($donnees, $taux_compression);
if (! $donnees_gzip) {
return false;
} else {
return $donnees_gzip;
}
}
 
/** Fonction GEN_decompresserDonneesZLIB() - Décompresse des données si nécessaire et les retourne.
*
* Nous décompressons les données. Si la décompression renvoie faut, nous retournons les données
* tels qu'elle nous été transmises.
*
* @param mixed données à décompresser.
* @return mixed données décompressées ou "false" si les données n'ont pas pue être décompréssées...
*/
function GEN_decompresserDonneesZLIB($donnees)
{
$donnees_ungzip = gzuncompress($donnees);
if (! $donnees_ungzip) {
return false;
} else {
return $donnees_ungzip;
}
}
 
/** Fonction GEN_retournerTypeCompressionNavigateur() - Retourne le type de compression du navigateur du client.
*
* Si le navigateur supporte la compression nous retournons le type d'encodage supporté.
* Dans tous les autres cas, nous retournons une chaine vide.
* Nous utilisons la superglobale $_SERVER permettant d'obtenir "SERVER_PROTOCOL" et "HTTP_ACCEPT_ENCODING".
*
* @return string la chaine correspondant au type d'encodage surpporté par le navigateur du client.
*/
function GEN_retournerTypeCompressionNavigateur()
{
// Si les entêtes HTTP ont déjà été envoyés, nous retournons void.
if (headers_sent()) return '';
if ($_SERVER['SERVER_PROTOCOL'] != 'HTTP/1.1') return '';
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) return 'x-gzip';
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) return 'gzip';
return '';
}
 
/** Fonction GEN_envoyerDonneesCompressees() - Envoi les données au navigateur du client.
*
* Si le navigateur supporte la compression nous lui envoyons les données compressées. Sinon,
* nous lui envoyons les données décompressées. Si la décompression échoue nous n'envoyons rien
* et la fonction retourne false. Si l'envoi est un succès la fonction retourne true.
* Cett fonction fait appel aux fonctions GEN_retournerTypeCompressionNavigateur() et
* GEN_decompresserDonneesZLIB().
*
* @param mixed données compressées (ou pas) à envoyer au navigateur.
* @return bool booléen indiquant si l'envoi est un succès (true) ou pas (false).
*/
function GEN_envoyerDonneesCompressees($donnees_compressees)
{
// Le navigateur du client accepte-t-il la compression?
$type_encodage = GEN_retournerTypeCompressionNavigateur();
// La compression n'est pas supportée.
if (empty($type_encodage)) {
$donnees_decompressees = GEN_decompresserDonneesZLIB($donnees_compressees);
if (! $donnees_decompressees) {
return false;
}
echo $donnees_decompressees;
return true;
} else {
// La compression est supportée. Nous envoyons les données compressées.
header('Content-Encoding: gzip');
// Laisser la chaine ci-dessous entre guillemets. Les cotes font planter le programme!
echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
echo $donnees_compressees;
}
return true;
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.4 2004/04/22 08:39:05 jpm
* Correction d'une déclaration en tant que global d'une variable superglobale.
*
* Revision 1.3 2004/04/09 16:22:49 jpm
* Envoi d'une page sous forme compressée si l'extenssion ZLIB existe. Sinon, la page part non compréssée.
*
* Revision 1.2 2004/04/06 15:56:33 jpm
* Changement de l'ordre des fonctions dans le fichier.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/fonctions/pap_verification.fonct.php
New file
0,0 → 1,65
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_verification.fonct.php,v 1.1 2004-06-15 15:14:52 jpm Exp $
/**
* Bibliothèque de fonctions de vérification.
*
* Liste de fonctions utilisé dans le cadre de la vérification de Papyrus.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Laurent COUDOUNEAU <lc@gsite.org>
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:14:52 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
/**Fonction GEN_envoyerMessageErreur() - Envoie un message d'erreur et arrête le programme.
*
* Cette fonction renvoie un message d'erreur, dont les caractères spéciaux sont
* transformés en entités HTML, et termine l'execution du programme.
*
* @param string un message d'erreur.
* @return void arrête du programme avec envoie du message via la fonction exit().
*/
function GEN_envoyerMessageErreur($message)
{
exit('<strong>'.htmlentities($message).'</strong>');
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2004/04/08 13:23:55 jpm
* Ajout de la bibliothèque de fonction à utiliser dans le cadre de la gestion des erreurs.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/fonctions/pap_cache.fonct.php
New file
0,0 → 1,90
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_cache.fonct.php,v 1.1 2004-06-15 15:08:02 jpm Exp $
/**
* Bibliothèque de fonctions utilisées dans le cadre de la gestion du cache.
*
* Contient des fonctions permettant de gérer le cache.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:08:02 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
/** Fonction GEN_concatenerTaleauAsso() - Retourne une chaine des valeurs et clés du tableau.
*
* Cette fonction prend un tableau associatif en paramêtre dont elle concatène les clés et valeurs,
* puis ces paires clé-valeur entre elles.
* Il est possible de définir la chaine utilisée pour liée une clé avec sa valeur et la chaine liant
* les paires clé-valeur.
*
* @param string chaine utilisé pour faire la liaison entre les clés et les valeurs du tableau associatif.
* @param string chaine utilisé pour faire la liaison entre chaque paire clé-valeur du tableau associatif.
* @param array le tableau associatif à transformer en chaine.
* @return string la chaine des des clés et valeurs du tableau associatif concaténés.
*/
function GEN_concatenerTaleauAsso($liaison_cle_val, $liaison_paire, $tableau_associatif)
{
$tab_sortie = array();
foreach( $tableau_associatif as $cle => $valeur ) {
$tab_sortie[] = $cle.$liaison_cle_val.$valeur;
}
return implode($liaison_paire, $tab_sortie);
}
 
/** Fonction GEN_donnerMD5UriPostSession() - Retourne une chaine des valeurs de l'Uri, du Post et du Session.
*
* Cette fonction retourne une valeur md5 d'une chaine contenant la concaténation de l'URI et des paires
* clé-valeur des tableaux $_POST et $_SESSION. Les données des tableaux sont ajoutés à l'URI en utilisant "="
* pour séparé les clés des valeurs et "&" pour séparer les paires clé-valeur.
*
* @return string la valeur md5 de la chaine concaténant l'uri aux paires clé-valeur des tableaux _POST et _SESSION.
*/
function GEN_donnerMD5UriPostSession()
{
$chaine_variable_post = GEN_concatenerTaleauAsso('=', '&', $_POST);
$chaine_variable_session = GEN_concatenerTaleauAsso('=', '&', $_SESSION);
return md5($_SERVER['REQUEST_URI'].'&'.$chaine_variable_post.'&'.$chaine_variable_session);
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2004/04/09 16:23:20 jpm
* Amélioration de la gestion du cache côté serveur avec prise en compte des variables de session.
*
* Revision 1.1 2004/04/08 12:21:21 jpm
* Ajout de fonction utilisées dans le cadre de la mise en cache d'une page générée par Génésia.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/fonctions/pap_menu.fonct.php
New file
0,0 → 1,421
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_menu.fonct.php,v 1.1 2004-06-15 15:11:37 jpm Exp $
/**
* Bibliothèque de fonction sur le rendu.
*
* Cette bibliothèque contient des fonctions utilisé par le rendu des pages de Papyrus.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Laurent COUDOUNEAU <laurent.coudouneau@ema.fr>
//Autres auteurs :
*@author Alexandre GRANIER <alexadandre@tela-botanica.org>
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:11:37 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE des FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
/** Fonction GEN_donnerProfondeurMax() - Renvoie le nombre de niveau de menu.
*
* Cette fonction calcule, pour un menu donné, le nombre de niveau de menu fils complétant
* l'arbre des menus jusqu'au feuilles.
* Ici on l'utilise en passant l'argument égal à zéro c'est à dire
* en partant du menu racine d'un site gmr_id_menu_02 = 0.
* C'est une fonction récursive.
* Noter que la variable $prof est statique.
*
* @param integer identifiant du site sur lequel la profondeur est calculé.
* @param integer identifiant du menu à partir delaquelle on souhaite calculer la profondeur.
* @return integer le nombre de niveau de menu.
*/
function GEN_donnerProfondeurMax($id_site, $id_menu)
{
global $db;
static $prof = 0;
// Requête sur les relations de type "avoir père" entre menus
$requete = 'SELECT gmr_id_menu_01 '.
'FROM gen_menu, gen_menu_relation '.
'WHERE gmr_id_menu_02 = '.$id_menu.' '.
'AND gmr_id_menu_01 = gm_id_menu '.
'AND gm_ce_site = '.$id_site.' '.
'AND gmr_id_valeur = 1 '.
'ORDER BY gmr_ordre ASC';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
if ($resultat->numRows() == 0) {
return $prof;
}
$prof++;
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
$prof = GEN_donnerProfondeurMax($id_site, $ligne->gmr_id_menu_01);
}
return $prof;
}
 
/** Fonction GEN_etreFreres() - Renvoie vrai si les menus ont le même père.
*
* Cette fonction regarde si deux menus donnés sont frères dans l'arbre
* des menus. Nous regardons si les menus ont le même identifiant comme père.
*
* @param integer identifiant du premier menu.
* @param integer identifiant du seconde menu.
* @return boolean renvoi vrai si les deux menus sont frères sinon faux.
*/
function GEN_etreFreres($id_menu_1, $id_menu_2)
{
// Initialisation des variables.
global $db;
$requete = 'SELECT gmr_id_menu_02 '.
'FROM gen_menu_relation '.
'WHERE gmr_id_menu_01 = '.$id_menu_1.' '.
'AND gmr_id_valeur = 1 ';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$id_pere_1 = $ligne->gmr_id_menu_02;
$resultat->free();
 
$requete = 'SELECT gmr_id_menu_02 '.
'FROM gen_menu_relation '.
'WHERE gmr_id_menu_01 = '.$id_menu_2.' '.
'AND gmr_id_valeur = 1 ';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$id_pere_2 = $ligne->gmr_id_menu_02;
$resultat->free();
return ($id_pere_1 == $id_pere_2);
}
 
/** Fonction GEN_etreAncetre() - Renvoie vrai si le premier argument (identifiant de menu) est un ancètre du second.
*
* Nous récupérons l'identifiant du père du menu passé en argument numéro 2. Puis,
* nous le comparons à l'argument 1. Si c'est les même on retourne faux. Sinon on rapelle
* la fonction avec l'identifiant du père trouvé pour l'argument 2. Ainsi de suite jusqu'a
* renvoyé vrai où tomber sur un menu racine (idetifiant du père = 0).
* C'est une fonction récursive.
*
* @param integer identifiant d'un menu numéro 1.
* @param integer identifiant d'un menu numéro 2.
* @return boolean vrai si le menu numéro 1 est ancètre du second.
*/
function GEN_etreAncetre($id_menu_1, $id_menu_2)
{
// Initialisation des variables.
global $db;
$requete = 'SELECT gmr_id_menu_02 '.
'FROM gen_menu_relation '.
'WHERE gmr_id_menu_01 = '.$id_menu_2.' '.
'AND gmr_id_valeur = 1 ';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
if ($ligne->gmr_id_menu_02 == 0) {
return false;
}
elseif ($ligne->gmr_id_menu_02 == $id_menu_1) {
return true;
} else {
return GEN_etreAncetre($id_menu_1, $ligne->gmr_id_menu_02);
}
}
 
/** Fonction GEN_lireIdentifiantMenuAncetre() - Renvoie l'identifiant du menu ancètre du menu passé en paramètre.
*
* Cette fonction parcours la table gen_menu_relation et retourne l'identifiant du
* menu dont le père est le menu racine (identifiant = 0) pour le menu passé en paramètre.
*
* @global mixed objet Pear DB de connexion à la base de données..
* @param int identifiant du menu dont il faut rechercher le père.
* @return int identifiant du menu ancètre du menu passé en paramètre.
*/
function GEN_lireIdentifiantMenuAncetre($id_menu)
{
global $db;
// On teste si on est au niveau d'un menu racine i.e GM_ID_PERE=0
$requete = 'SELECT gmr_id_menu_02 '.
'FROM gen_menu_relation '.
'WHERE gmr_id_menu_01 = '.$id_menu.' '.
'AND gmr_id_valeur = 1 ';// 1 = avoir "père"
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
// Dans le cas où le menu en paramètre est un menu racine
if ($ligne->gmr_id_menu_02 == 0) {
return $id_menu;
}
return GEN_lireIdentifiantMenuAncetre($ligne->gmr_id_menu_02);
}
 
/** Fonction GEN_lireIdentifiantMenuPere() - Renvoie l'identifiant du père du menu passé en paramètre.
*
* Cette fonction parcours la table gen_menu_relation et retourne l'identifiant du
* menu père du menu passé en paramètre.
*
* @global mixed objet Pear DB de connexion à la base de données..
* @param int l'identifiant du fils
* @return mixed l'identifiant du père,ou false en cas d'erreur.
*/
function GEN_lireIdentifiantMenuPere($id_menu)
{
global $db;
$requete = 'SELECT gmr_id_menu_02 '.
'FROM gen_menu_relation '.
'WHERE gmr_id_menu_01 = '.$id_menu.' '.
'AND gmr_id_valeur = 1 ';// 1 = avoir "père"
$resultat = $db->query($requete) ;
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
//if ($resultat->numRows() != 1) {
// return false;
//}
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
return $ligne->gmr_id_menu_02;
}
 
/** Fonction GEN_lireInfoMenu() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu
*
* Retourne la ligne de la table gen_menu concernant le menu ayant pour identifiant la valeur
* passée en paramètre.
* Ancien nom : getLevel()
*
* @param mixed une instance de la classse Pear DB.
* @param int l'identifiant d'un menu.
* @param string le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
* @return mixed un objet ou tableau résultat de Pear DB contenant une ligne de la table gen_menu, ou false en cas d'erreur.
*/
function GEN_lireInfoMenu($db, $menuid, $mode = DB_FETCHMODE_OBJECT)
{
//----------------------------------------------------------------------------
// Recherche des informations sur le menu
$requete = 'SELECT * '.
'FROM gen_menu '.
'WHERE gm_id_menu = '.$menuid;
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
if ($resultat->numRows() != 1) {
return false;
}
//----------------------------------------------------------------------------
// Récupération des infos
$info_menu = $resultat->fetchRow($mode);
$resultat->free();
return $info_menu;
}
 
/** Fonction GEN_lireInfoMenuRelation() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu_relation
*
* Par défaut recherch une relation de type père.
* Ancien nom : getMenuRelation().
*
* @param mixed Une instance de la classse PEAR_DB
* @param int l'identifiant d'un menu.
* @param int l'identifiant d'une valeur de relation.
* @param string le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
* @return mixed n objet ou tableau résultat Pear DB, ou false en cas d'erreur.
*/
function GEN_lireInfoMenuRelation($db, $menuid, $id_valeur = '1', $mode = DB_FETCHMODE_OBJECT)
{
//----------------------------------------------------------------------------
// Recherche des informations sur la relation de menu
$requete = 'SELECT * '.
'FROM gen_menu_relation '.
'WHERE gmr_id_menu_01 = '.$menuid.' '.
'AND gmr_id_valeur = '.$id_valeur;
$result = $db->query($requete);
(DB::isError($result)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $result->getMessage(), $requete)) : '';
if ($result->numRows() != 1) {
return false;
}
//----------------------------------------------------------------------------
// Récupération des infos
$info_menu_relation = $result->fetchRow($mode);
$result->free();
return $info_menu_relation;
}
 
// +------------------------------------------------------------------------------------------------------+
// A NORMALISER !!!
// +------------------------------------------------------------------------------------------------------+
 
/** Fonction niveau_menu() - Renvoie le niveau d'un menu.
*
* Fournit le niveau d'un menu dans l'arbre des menus d'un site
* donné.
* C'est une fonction récursive.
*
* @param integer l'identifiant du site du menu.
* @param integer l'identifiant de la langue du site du menu.
* @param integer l'identifiant d'un menu.
* @return integer le niveau d'un menu.
*/
function niveau_menu($id_site, $id_langue, $id_menu)
{
global $db ;
static $niveau = 1;
$requete = 'SELECT gm_ce_menu_pere '.
'FROM gen_menu '.
'WHERE gm_id_menu = '.$id_menu.' '.
'AND gm_id_i18n = "'.$id_langue.'" '.
'AND gm_id_site = '.$id_site;
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
if ($resultat->numRows() == 0) {
return $niveau;
}
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
if ($ligne->gm_ce_menu_pere == 0) {
$niveau++;
$niveau = niveau_menu($id_site, $id_langue, $ligne->gm_ce_menu_pere);
}
return $niveau;
}
 
/** Fonction id_ancetre_niveau() - Renvoie l'identifiant de l'ancetre de niveau $niveau
*
* Renvoie l'identifiant de l'ancetre de niveau $niveau.
* C'est une fonction récursive.
*
* @param integer identifiant du site du menu dont on cherche l'ancètre.
* @param integer identifiant de la langue du site du menu dont on cherche l'ancètre.
* @param integer identifiant du menu dont on cherche l'ancètre.
* @param integer niveau souhaité.
* @return integer identifiant de l'ancètre cherché.
*/
function id_ancetre_niveau($id_site, $id_langue, $id_menu, $niveau)
{
global $db;
static $id_et_niveau = array();
 
$requete = 'SELECT gp_ce_page_pere '.
'FROM gen_page '.
'WHERE gp_id_page = '.$id_page;
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
if ($ligne->gm_ce_menu_pere != 0) {
array_push ($id_et_niveau, $ligne->gm_ce_menu_pere);
} else {
return array_pop($id_et_niveau);
}
$resultat->free();
return id_ancetre_niveau($id_site, $id_langue, $ligne->gm_ce_menu_pere, $niveau);
}
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log: not supported by cvs2svn $
* Revision 1.43 2004/05/05 06:13:27 jpm
* Extraction de la fonction générant le "vous êtes ici", transformée en applette.
*
* Revision 1.42 2004/05/04 16:24:06 jpm
* Amélioration de la fonction générant le "vous êtes ici".
*
* Revision 1.41 2004/05/04 16:17:31 jpm
* Ajout de la fonction générant le "vous êtes ici".
*
* Revision 1.40 2004/05/03 11:18:17 jpm
* Normalisation de deux fonctions issues du fichier fontctions.php.
*
* Revision 1.39 2004/05/01 16:17:11 jpm
* Suppression des fonctions liées à la création des listes de menu. Elles ont été transformées en applette.
*
* Revision 1.38 2004/05/01 11:43:16 jpm
* Suppression des fonction GEN_afficherMenuCommun() et GEN_afficherSelecteurSites() transformées en applette.
*
* Revision 1.37 2004/04/30 16:18:41 jpm
* Correction d'un bogue dans les fonctions de gestion des scripts.
*
* Revision 1.36 2004/04/28 12:04:40 jpm
* Changement du modèle de la base de données.
*
* Revision 1.35 2004/04/09 16:23:41 jpm
* Prise en compte des tables i18n.
*
* Revision 1.34 2004/04/02 16:34:44 jpm
* Extraction de variable globale des fonction, remplacé par un passage en paramètre.
*
* Revision 1.33 2004/04/01 11:24:51 jpm
* Ajout et modification de commentaires pour PhpDocumentor.
*
* Revision 1.32 2004/03/31 16:52:30 jpm
* Modification du code vis à vis du modèle revision 1.9 de Génésia.
*
* Revision 1.31 2004/03/29 17:13:05 jpm
* Suppression de fonction, passer en code classique.
*
* Revision 1.30 2004/03/27 11:11:58 jpm
* Début changement nom de variable dans fonction creerInfoPageEtApplication().
*
* Revision 1.29 2004/03/26 12:52:25 jpm
* Ajout des fonctions creerInfoPageEtApplication() et donnerIdPremiereApplicationLiee().
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/fonctions/pap_script.fonct.php
New file
0,0 → 1,219
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_script.fonct.php,v 1.1 2004-06-15 15:13:07 jpm Exp $
/**
* Les fonctions permettant d'inclure des scripts.
*
* Ces fonctions permettent d'inclure des scripts, éxécuté côté client, directement dans les pages
* des applications. Elles peuvent donc être appelées par les applications
* intégrées à Génésia. Par défaut, c'est le Javascript qui est conscidéré commé utilisé.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Laurent COUDOUNEAU <lc@gsite.org>
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:13:07 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
/** Fonction GEN_modifierTypeScript() - Permet de stocker le type des scripts.
*
* Génésia permet à une application donnée d'intégrer du code de scripts, exécuté côté client,
* directement dans l'entête de la page. Cette fonction définit le type Mime du langage de script utilisé.
* En XHTML strict, cette fonction ne devrait pas être utilisé car les scripts devraient être
* stocké dans des fichiers séparés.
*
* @deprecated déprécier dans le cadre d'application XHTML.
* @global string "script_type" : utilisé pour stocker le type des scripts intégrés.
* @param string le code à insérer.
* @return void le code est stocké dans une variable globale.
*/
function GEN_modifierTypeScript($type = 'text/javascript')
{
global $_GEN_commun;
$_GEN_commun['script_type'] .= $type;
}
 
/** Fonction GEN_stockerCodeScript() - Permet de stocker le code d'un script côté client utilisé par une application.
*
* Génésia permet à une application donnée de stocker du code de script, exécuté côté client, qui sera
* envoyer directement dans l'entête de la page. En XHTML strict, l'utilisation de cette
* fonction est déconseillée. Utiliser plutôt une fichier de scripts séparé qui
* sera appelé par l'entête. Cette fonction peut être appelé plusieurs fois. Elle ne
* fait que stocker le code dans une variable globale utilisée par Génésia.
*
* @deprecated déprécier dans le cadre d'application XHTML.
* @global string "script_code" : utilisé pour stocker le code des scripts.
* @param string le code à insérer.
* @return void le code est stocké dans une variable globale.
*/
function GEN_stockerCodeScript($bloc_code)
{
global $_GEN_commun;
$_GEN_commun['script_code'] .= $bloc_code;
}
 
/** Fonction GEN_stockerFonctionScript() - Permet de stocker des fonctions Javascript.
*
* Papyrus permet à une application donnée de stocker des fonctions dans un langage de script donné
* qui seront envoyer directement dans l'entête de la page. En XHTML strict, l'utilisation de cette
* fonction est déconseillée. Utiliser plutôt une fichier de scripts séparé qui
* sera appelé par l'entête. Cette fonction peut être appelé plusieurs fois. Elle ne
* fait que stocker les fonctions dans une variable (tableau associatif) globale utilisée
* par Génésia.
*
* @deprecated déprécier dans le cadre d'application XHTML.
* @global array "script_fonction" : utilisé pour stocker le code des fontions du script.
* @param string la clé du tableau de fontion, par exemple le nom de la fonction à insérer.
* @param string le code complet de la fonction à insérer.
* @return void la fonction est stockée dans une variable (tableau associatif) globale.
*/
function GEN_stockerFonctionScript($id_fonction, $code_fonction)
{
global $_GEN_commun;
if (empty($_GEN_commun['script_fonction'][$id_fonction])) {
$_GEN_commun['script_fonction'][$id_fonction] = $code_fonction;
} else {
die('ERREUR Génésia : cet identifiant de fonction à déjà été enregistré par GEN_stockerFonctionJavascript(). <br />'.
'Identifiant : '. $id_fonction .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier : '. __FILE__);
}
}
 
/** Fonction GEN_stockerFichierScript() - Permet de stocker des fichiers de scripts.
*
* Papyrus permet à une application donnée de stocker des fichiers de script qui seront
* appelés depuis l'entête de la page. En XHTML strict, l'utilisation de cette
* fonction est conseillée.
* Cette fonction peut être appelé plusieurs fois. Elle ne fait que stocker les chemin des
* fichiers dans une variable (tableau associatif) globale utilisée par Génésia.
*
* @global array "script_fichier" : utilisé pour stocker les chemins des scripts.
* @param string la clé du tableau de fichiers, par exemple le nom du fichier à insérer.
* @param string le chemin complet du fichier à insérer.
* @param string le type MIME du langage de script utilisé dans le fichier à insérer.
* @return void le chemin du fichier est stocké dans une variable (tableau associatif) globale.
*/
function GEN_stockerFichierScript($id_fichier, $chemin_fichier, $type_fichier = 'text/javascript')
{
global $_GEN_commun;
if (empty($_GEN_commun['script_fichier'][$id_fichier])) {
$_GEN_commun['script_fichier'][$id_fichier]['type'] = $type_fichier;
$_GEN_commun['script_fichier'][$id_fichier]['chemin'] = $chemin_fichier;
} else {
die('ERREUR Génésia : cet identifiant de fichier à déjà été enregistré par GEN_stockerFichierJavascript(). <br />'.
'Identifiant : '. $id_fichier .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier : '. __FILE__);
}
}
 
/** Fonction GEN_afficherScript() - Permet de renvoyer les scripts.
*
* Cette fonction récupère les scripts stockés dans les variables globales de Papyrus
* et le retourne formaté pour l'affichage dans l'entête du squelette du site.
* C'est la balise Papyrus <!-- SCRIPTS --> qui permet de situer l'endroit où afficher
* les script.
*
* @global array "script_fichier" : utilisé pour stocker les chemins des scripts,
* "script_fonction" : utilisé pour stocker le code des fontions et "script_code" :
* utilisé pour stocker le code des script.
* @return string le code XHTML contenant les scripts à insérer dans l'entête.
*/
function GEN_afficherScript()
{
global $_GEN_commun;
$sortie = '';
$fichiers = '';
if (isset($_GEN_commun['script_fichier'])) {
while (list($cle, $valeur) = each($_GEN_commun['script_fichier'])) {
$fichiers .= str_repeat(' ', 8).'<script type="'.$valeur['type'].'" src="'.$valeur['chemin'].'" ></script>'."\n";
}
$sortie .= $fichiers;
} else {
$sortie .= '<!-- Aucun script externe -->'."\n";
}
$fonctions = '';
while (list($cle, $valeur) = each($_GEN_commun['script_fonction'])) {
$fonctions .= $valeur;
}
$code = '';
$code = $_GEN_commun['script_code'];
if ($fonctions != '' || $code != '') {
$sortie .= "\n";
$sortie .= str_repeat(' ', 8).'<script type="'.$_GEN_commun['script_type'].'">'."\n";
$sortie .= str_repeat(' ', 12).'<!--/*--><![CDATA[//><!--'."\n";
$sortie .= $fonctions."\n";
$sortie .= $code."\n";
$sortie .= str_repeat(' ', 12).'//--><!]]>'."\n";
$sortie .= str_repeat(' ', 8).'</script>';
} else {
$sortie .= '<!-- Aucun script intégré -->'."\n";
}
return $sortie;
}
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.6 2004/04/30 16:18:56 jpm
* Correction d'un bogue dans les fonctions de gestion des scripts.
*
* Revision 1.5 2004/04/20 15:25:58 jpm
* Ajout de commentaire html à la place d'une chaine vide lors du remplacement de balise Genesia.
*
* Revision 1.4 2004/04/20 12:18:03 jpm
* Ajout d'une fonction permettant de modifier le type de scripts intégrés à une page.
*
* Revision 1.3 2004/04/20 10:46:58 jpm
* Modification des commentaires.
*
* Revision 1.2 2004/04/05 16:37:08 jpm
* Correction de bogues concernant les variables globales javascript.
*
* Revision 1.1 2004/04/05 12:35:09 jpm
* Ajout du fichier contenant les fonctions permettant d'inclure le Javascript dans l'entete des pages générées par Génésia.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/fonctions/pap_site.fonct.php
New file
0,0 → 1,125
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_site.fonct.php,v 1.1 2004-06-15 15:13:37 jpm Exp $
/**
* Bibliothèque de fonctions concernant les sites.
*
* Bibliothèque de fonctions permettant de manipuler les tables :
* - gen_site,
* - gen_site_auth,
* - gen_site_auth_bdd,
* - gen_site_auth_ldap,
* - gen_site_categorie,
* - gen_site_categorie_valeur.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:13:37 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
/** Fonction GEN_lireInfoSitePrincipalCodeAlpha() - Renvoie un objet contenant une ligne de la table gen_site
*
* Retourne la ligne de la table gen_site concernant le site principal ayant pour code alphanumérique la valeur
* passée en paramètre.
* Ancien nom : getProjectInfos()
*
* @param mixed une instance de la classse Pear DB.
* @param string le code alphanumérique du site.
* @return mixed un objet résultat de Pear DB contenant une ligne de la table gen_site, ou false en cas d'erreur.
*/
 
function GEN_lireInfoSitePrincipalCodeAlpha($objet_pear_db, $code_alpha)
{
$requete = 'SELECT * '.
'FROM gen_site, gen_site_relation '.
'WHERE gs_code_alpha = "'.$code_alpha.'" '.
'AND gs_id_site = gsr_id_site_01 '.
'AND gsr_id_site_01 = gsr_id_site_02 '.
'AND gsr_id_valeur = 102 '; // 102 = site "principal"
$resultat = $objet_pear_db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
if ($resultat->numRows() != 1) {
// Impossible de récupérer des informations sur le site principal ayant pour code alpha $code_alpha
return false;
}
$info_site_principal = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
return $info_site_principal;
}
 
/** Fonction getSiteI18nInfos() - Renvoie un objet contenant une ligne de la table gen_site
*
* Retourne la ligne de la table gen_site concernant un site ayant pour code alphanumérique et identifiant
* i18n les valeurs passées en paramètres.
* Ancien nom :getSiteI18nInfos():
*
* @param mixed une instance de la classse Pear DB.
* @param string le code alphanumérique du site recherché.
* @param string l'identifiant i18n possédé par le site recherché.
* @return mixed un objet résultat de Pear DB contenant une ligne de la table gen_site, ou false en cas d'erreur.
*/
function GEN_lireInfoSiteI18nCodeAlpha($objet_pear_db, $code_alpha, $i18n)
{
$requete = 'SELECT * '.
'FROM gen_site, gen_site_relation '.
'WHERE gs_code_alpha = "'.$code_alpha.'" '.
'AND gs_ce_i18n = "'.$i18n.'" ';
$resultat = $objet_pear_db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
if ($resultat->numRows() != 1) {
return false;
}
$info_site = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
return $info_site;
}
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2004/05/03 16:26:07 jpm
* Ajout de la bibliothèque de fonctions permettant de manipuler les informations issues des tables "gen_site_..." de Génésia.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/fonctions/pap_meta.fonct.php
New file
0,0 → 1,196
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_meta.fonct.php,v 1.1 2004-06-15 15:12:12 jpm Exp $
/**
* Bibliothèque de fonctions permettant d'inclure des balises META.
*
* Cet ensemble de fonctions permet de manipuler les balise meta à intégrer dans l'entête
* des pages html. Cela peut être très pratique pour les applications voulant définir précisément
* ces informations.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:12:12 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
 
/** Fonction GEN_stockerMetaHttpEquiv() - Permet de stocker des informations Http-Equiv.
*
* Génésia permet à une application donnée de stocker les balises meta contenant l'attribut http-equiv
* à intégrer dans l'entête de la page.
* Cette fonction peut être appelé plusieurs fois. Elle ne fait que stocker les informations
* dans une variable (tableau associatif) globale utilisée par Génésia.
*
* @global array "meta_http_equiv" : utilisé pour stocker les informations des meta contenant l'attribut http-equiv.
* @param string la clé du tableau des meta http-equiv, l'information présente dans l'attribut http-equiv.
* @param string le contenu présent dans l'attribut content.
* @return void les informations sont stockées dans une variable (tableau associatif) globale.
*/
function GEN_stockerMetaHttpEquiv($id_http_equiv, $content)
{
global $_GEN_commun;
if (empty($_GEN_commun['meta_http_equiv'][$id_http_equiv])) {
$_GEN_commun['meta_http_equiv'][$id_http_equiv] = $content;
} else {
die('ERREUR Génésia : cette balise meta à déjà été enregistré par GEN_stockerMetaHttpEquiv(). <br />'.
'Identifiant : '. $id_http_equiv .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier : '. __FILE__);
}
}
 
/** Fonction GEN_stockerMetaName() - Permet de stocker des informations pour la balise meta.
*
* Génésia permet à une application donnée de stocker les balises meta contenant l'attribut name
* à intégrer dans l'entête de la page.
* Cette fonction peut être appelé plusieurs fois. Elle ne fait que stocker les informations
* dans une variable (tableau associatif) globale utilisée par Génésia.
*
* @global array "meta_name" : utilisé pour stocker les informations des meta contenant l'attribut name.
* @param string la clé du tableau des meta name, l'information présente dans l'attribut name.
* @param string le contenu présent dans l'attribut content.
* @return void les informations sont stockées dans une variable (tableau associatif) globale.
*/
function GEN_stockerMetaName($id_name, $content)
{
global $_GEN_commun;
if (empty($_GEN_commun['meta_name'][$id_name])) {
$_GEN_commun['meta_name'][$id_name] = $content;
} else {
die('ERREUR Génésia : cette balise meta à déjà été enregistré par GEN_stockerMetaName(). <br />'.
'Identifiant : '. $id_name .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier : '. __FILE__);
}
}
 
 
/** Fonction GEN_stockerMetaNameDC() - Permet de stocker des informations Dublin Core pour la balise meta.
*
* Génésia permet à une application donnée de stocker des informations Dublin Core pour les balises meta
* à intégrer dans l'entête de la page.
* Cette fonction peut être appelé plusieurs fois. Elle ne fait que stocker les informations
* dans une variable (tableau associatif) globale utilisée par Génésia.
*
* @global array "meta_name_dc" : utilisé pour stocker les informations des meta contenant l'attribut name.
* @param string la clé du tableau des meta name, l'information présente dans l'attribut name.
* @param string le contenu présent dans l'attribut content.
* @param string le contenu présent dans l'attribut lang.
* @param string le contenu présent dans l'attribut scheme.
* @return void les informations sont stockées dans une variable (tableau associatif) globale.
*/
function GEN_stockerMetaNameDC($id_name, $content, $lang = '', $scheme = '')
{
global $_GEN_commun;
if (empty($_GEN_commun['meta_name_dc'][$id_name])) {
$_GEN_commun['meta_name_dc'][$id_name]['contenu'] = $content;
$_GEN_commun['meta_name_dc'][$id_name]['langue'] = $lang;
$_GEN_commun['meta_name_dc'][$id_name]['scheme'] = $scheme;
} else {
die('ERREUR Génésia : cette balise meta à déjà été enregistré par GEN_stockerMetaNameDC(). <br />'.
'Identifiant : '. $id_name .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier : '. __FILE__);
}
}
 
/** Fonction GEN_afficherMeta() - Permet d'afficher les meta informations.
*
* Cette fonction affiche les meta informations Http-Equiv stockées
* dans une variable (tableau associatif) globale utilisée par Génésia.
*
* @global array "meta_http_equiv" : utilisé pour stocker les informations des meta contenant l'attribut http-equiv
* et "meta_name" : utilisé pour stocker les informations des meta contenant l'attribut name.
* @param string le type de balise meta à afficher (http-equiv, name, dc).
* @return void les informations sont stockées dans une variable (tableau associatif) globale.
*/
function GEN_afficherMeta($type = 'name')
{
global $_GEN_commun;
$sortie = '';
if ($type == 'http-equiv' && isset($_GEN_commun['meta_http_equiv'])) {
while (list($cle, $valeur) = each($_GEN_commun['meta_http_equiv'])) {
$sortie .= str_repeat(' ', 8).'<meta http-equiv="'.$cle.'" content="'.$valeur.'" />'."\n";
}
if (empty($sortie)) {
$sortie .= '<!-- Aucune balise meta http-equiv -->'."\n";
}
}else if ($type == 'name' && isset($_GEN_commun['meta_name'])) {
while (list($cle, $valeur) = each($_GEN_commun['meta_name'])) {
if (! empty($valeur['contenu'])) {
$sortie .= str_repeat(' ', 8).'<meta name="'.$cle.'" content="'.$valeur.'" />'."\n";
}
}
if (empty($sortie)) {
$sortie .= '<!-- Aucune balise meta name -->'."\n";
}
} else if ($type == 'dc' && isset($_GEN_commun['meta_name_dc'])) {
while (list($cle, $valeur) = each($_GEN_commun['meta_name_dc'])) {
if (! empty($valeur['contenu'])) {
$sortie .= str_repeat(' ', 8).'<meta name="'.$cle.'" ';
if (! empty($valeur['langue'])) {
$sortie .= 'lang="'.$valeur['langue'].'" ';
}
if (! empty($valeur['scheme'])) {
$sortie .= 'scheme="'.$valeur['scheme'].'" ';
}
$sortie .= 'content="'.$valeur['contenu'].'" />'."\n";
}
}
// Ajout du schéma du Dublin Core si on affiche des informations DC
if (! empty($sortie)) {
$tmp = $sortie;
$sortie = str_repeat(' ', 8).'<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />'."\n";
$sortie .= $tmp;
} else {
$sortie .= '<!-- Aucune balise meta name Dublin Core -->'."\n";
}
}
return $sortie;
}
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2004/04/20 15:24:54 jpm
* Ajout de la bibliotheque de fonctions gérant les meta.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/fonctions/pap_identification.fonct.php
New file
0,0 → 1,146
<?php
//vim: set expandtab tabstop=4 shiftwidth=4:
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | |
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library 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 |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// | |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_identification.fonct.php,v 1.1 2004-06-15 15:10:15 jpm Exp $
/**
* Bibliothèque de fonctions d'identification de Papyrus.
*
* Ce paquetage contient des fonctions d'identifiacation pour différents besoin
* de Papyrus.
*
*@package Papyrus
*@subpackage Fonctions
//Auteur original :
*@author Alexandre GRANIER <alex@tela-botanica.org>
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-15 15:10:15 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +-------------------------------------------------------------------------+
// | Liste des fonctions |
// +-------------------------------------------------------------------------+
 
/** Fonction GEN_afficherInfoIdentification() - Retourne un message demandant l'identification.
*
* Cette fonction informe l'utilisateur qu'il doit utiliser le formulaire d'identification
* mis à sa dispositon. Ce formulaire peut être placé n'importe où dans le squelette via la
* balise <!-- IDENTIFICATION -->. Un note précise de contacter le webmaster si le formulaire
* d'identification est indisponible.
*
* @return string note précisant la nécessité de s'identifier sur le site.
*/
function GEN_afficherInfoIdentification()
{
$res = "\n";
$res .= str_repeat(' ', 12).'<p>';
$res .= 'Veuillez vous identifier dans la zone d\'identification mis à votre disposition sur ce site.';
$res .= str_repeat(' ', 12).'</p>'."\n";
$res .= str_repeat(' ', 12).'<p>';
$res .= '<strong>Note : </strong>Veuillez contacter le webmaster si cette zone d\'identification est abscente.';
$res .= str_repeat(' ', 12).'</p>'."\n";
return $res;
}
 
/** Fonction verification_mot_de_passe() - Met à jour les mots de passe vers le cryptage MD5.
*
* Cette fonction permet de mettre à jour en douceur l'annuaire des inscrits à Tela Botanica.
* Les mots de passe anciennement crypté avec la fonction password de Mysql sont progressivement
* passé en cryptage MD5.
*
* @param mixed l'objet de Pear DB permettant la connexion à la base de données.
* @param string le mot de passe non crypté de l'utilisateur.
* @param string le login de l'utilisateur.
* @return void une requête modifie la base de données.
*/
function verification_mot_de_passe($objet_pear_db, $password, $username)
{
// Requête pour la taille du champs mot de passe pour l'individu
$requete = 'SELECT U_PASSWD, LENGTH(U_PASSWD) AS longueur '.
'FROM annuaire_tela '.
'WHERE U_MAIL = "'.$username.'"' ;
$resultat = $objet_pear_db->query($requete) ;
(DB::isError($resultat)) ? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
$longueur = $ligne ->longueur ;
$mot_de_passe_crypte = $ligne->U_PASSWD ;
unset ($ligne) ;
$resultat->free() ;
 
if ($longueur == 16) {
// Le couple login / mot de passe est-il bon ?
$requete = 'SELECT PASSWORD("'.$password.'")' ;
$resultat = $objet_pear_db->query($requete) ;
(DB::isError($resultat)) ? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
$ligne = $resultat->fetchRow(DB_FETCHMODE_ORDERED) ;
$resultat->free() ;
// Est-ce que le mot de passe est bon ?
if ($ligne[0] == $mot_de_passe_crypte) {
// On met à jour le champs de U_PASSWD pour le mettre en md5
$requete = 'UPDATE annuaire_tela '.
'SET U_PASSWD = "'.md5($password).'" '.
'WHERE U_MAIL = "'.$username.'"' ;
$resultat = $objet_pear_db->query($requete) ;
(DB::isError($resultat)) ? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
}
}
}
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log: not supported by cvs2svn $
* Revision 1.8 2004/05/01 11:42:40 jpm
* Suppression de la fonction GEN_afficherFormIdentification() transformée en applette.
*
* Revision 1.7 2004/04/09 16:23:41 jpm
* Prise en compte des tables i18n.
*
* Revision 1.6 2004/04/02 16:33:04 jpm
* Ajout de commentaires aux fonctions.
* Modification des formulaires d'identification.
*
* Revision 1.5 2004/04/01 11:24:51 jpm
* Ajout et modification de commentaires pour PhpDocumentor.
*
* Revision 1.4 2004/03/26 12:51:24 jpm
* Modification mineure sur l'indentation.
*
* Revision 1.3 2004/03/24 17:31:54 jpm
* Ajout de l'indentation du xhtml de la fonction loginFunction().
* Mise en forme.
*
* Revision 1.2 2004/03/22 18:36:49 jpm
* Ajout de la fonction de mise à jour des mots de passe de l'annuaire Tela Botanica. Cette fonction devrait à terme intégré l'application Annuaire Tela Botanica.
*
* Revision 1.1 2004/03/22 11:34:19 jpm
* Bibliothèque de fonctions gérant l'identification dans Génésia.
*
*
* +--Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/papyrus/bibliotheque/autres/fonctions.php
New file
0,0 → 1,634
<?php
 
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library 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
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//------------------------------------------------------------------------------
 
//==============================================================================
// gs_hex2bin ($data)
// $data : hex data (string) to be converted to binary.
//
// Convert hex value into binary value.
//==============================================================================
 
function gs_hex2bin ($data) {
$len = strlen ($data);
 
return pack ("H$len", $data);
}
 
//==============================================================================
// gs_localizeTimestamp ($ts, $locale)
// $ts : unix time stamp
// $locale : locale code
//
// Convert an unix time stamp in respect with locale (en, fr, sp).
//==============================================================================
 
function gs_localizeTimestamp ($ts, $locale) {
$format = 'Y/m/d H:m:s';
 
if ($locale == 'fr') $format = 'd/m/Y H:m:s';
if ($locale == 'sp') $format = 'd/m/Y H:m:s';
 
return date ($format, $ts);
}
 
//==============================================================================
// gs_localizeDate ($date, $locale)
// $date : date (MySQL format: YYYY-MM-DD)
// $locale : locale code
//
// Convert a MySQL date in respect with locale (en, fr, sp).
//==============================================================================
 
function gs_localizeDate ($date, $locale) {
$dateArray = explode ('-', $date);
 
$y = $dateArray[0];
$m = $dateArray[1];
$d = $dateArray[2];
 
if ($locale == 'en') return "$y/$m/$d";
if ($locale == 'fr') return "$d/$m/$y";
if ($locale == 'sp') return "$d/$m/$y";
 
return $date;
}
 
//==============================================================================
// gs_localizeDateTime ($date, $locale)
// $datetime : datetime field (MySQL format: YYYY-MM-DD HH:MM:SS)
// $locale : locale code
//
// Convert a MySQL date in respect with locale (en, fr, sp).
//==============================================================================
 
function gs_localizeDateTime ($datetime, $locale) {
$date = substr ($datetime, 0, 10);
$time = substr ($datetime, 11, 8);
 
return gs_localizeDate ($date, $locale).' - '.$time;
}
 
//==============================================================================
// gs_localizeDate2MySQL ($date, $locale)
// $date : date (following locale)
// $locale : locale code
//
// Convert a date to MySQL format in respect with locale (en, fr, sp).
//==============================================================================
 
function gs_localizeDate2MySQL ($date, $locale) {
$dateArray = explode ('/', $date);
 
if ($locale == 'en') return "$dateArray[0]-$dateArray[1]-$dateArray[2]";
if ($locale == 'fr') return "$dateArray[2]-$dateArray[1]-$dateArray[0]";
if ($locale == 'sp') return "$dateArray[2]-$dateArray[1]-$dateArray[0]";
 
return $date;
}
 
//==============================================================================
// gs_getLabel ($db, $link, $ident, $locale, $appl, $entities)
// $db : database name
// $link : database link
// $ident : label name
// $locale : locale code
// $appl : application name
// $entities : htmlentities transformation ?
//
// Get localized label. If the label appears into a JavaScript string, $entities
// MUST be false.
//==============================================================================
 
function gs_getLabel ($dbname, $link, $ident, $locale, $appl = '', $entities = true) {
static $labelsCache = array ();
 
$tag = "$ident $locale $appl";
 
if (isset ($labelsCache[$tag])) {
return ($entities ? htmlentities ($labelsCache[$tag]) : $labelsCache[$tag]);
}
 
$query =
"select L_TRANSLATION from $dbname.LABELS".
" where L_IDENT='$ident' and L_LOCALE='$locale' and L_APPL='$appl'";
 
$result = mysql_query ($query, $link);
 
if (! $result) {
die ("Unable to perform query ($query / " . mysql_error ($link) . ")");
}
 
if (mysql_num_rows ($result) == 0) {
mysql_free_result ($result);
return "($ident)";
}
 
$row = mysql_fetch_object ($result);
 
mysql_free_result ($result);
 
$labelsCache[$tag] = $row->L_TRANSLATION;
 
return ($entities ? htmlentities ($row->L_TRANSLATION) : $row->L_TRANSLATION);
}
 
//==============================================================================
// gs_buildControlAndPages ($db, $link, $locale, $url, $first, $max, $numItems,
// $noResponse, $oneResponse, $responses,
// $width, $style, $imgdir)
// $db : database name
// $link : database link
// $locale : locale code
// $url : URL to show datas, without first and max limits
// $first : in the result set, the index of the first item to show
// $max : max count of results by page
// $numItems : results count
// $noResponse : label (if no responses)
// $oneResponse : label (if only one response)
// $responses : label (if more than one response)
// $width : table widh (if equal to zero, 100%)
// $style : style used into the images control cells
// $imgdir : the image set used for the control buttons
//
// Generation of control buttons (first, previous, next, last) and pages numbers
// (search result, for example).
//==============================================================================
 
function gs_buildControlAndPages ($db, $link, $locale,
$url,
$first, $max, $numItems,
$noResponse = null,
$oneResponse = null,
$responses = null,
$width = null,
$style = null,
$imgdir = null,
$appl = 'gsite') {
//----------------------------------------------------------------------------
// Manage default values.
 
if (empty ($noResponse)) $noResponse = 'ctrl_no_response';
if (empty ($oneResponse)) $oneResponse = 'ctrl_one_response';
if (empty ($responses)) $responses = 'ctrl_responses';
if (empty ($width)) $width = '100%';
if (empty ($style)) $style = 'line';
if (empty ($imgdir)) $imgdir = 'dft';
 
//----------------------------------------------------------------------------
// Build style.
 
global $GS_GLOBAL;
 
$STYLErow = $GS_GLOBAL['style_row'];
 
$fontStyle =
"font-family:$STYLErow->S_FONT_FAMILY;".
"font-size:$STYLErow->S_FONT_SIZE_SMALL;".
"color:$STYLErow->S_COLOR_TEXT;".
"font-style:normal;".
"font-weight:bold;";
 
$anchorStyle = "";
// "text-decoration:none;".
// "color:$STYLErow->S_COLOR_TEXT;";
 
//----------------------------------------------------------------------------
// Get labels.
 
$pageLabel = gs_getLabel ($db, $link, 'ctrl_page', $locale, $appl);
$numresLabel0 = gs_getLabel ($db, $link, $noResponse, $locale, $appl);
$numresLabel1 = gs_getLabel ($db, $link, $oneResponse, $locale, $appl);
$numresLabel = gs_getLabel ($db, $link, $responses, $locale, $appl);
 
//----------------------------------------------------------------------------
// Build labels, switch number of results.
 
$responses = '';
if ($numItems == 0) {
$responses = $numresLabel0;
 
} else if ($numItems == 1) {
$responses = $numresLabel1;
 
} else {
$responses = $numresLabel.'&nbsp;: '.$numItems;
}
 
//----------------------------------------------------------------------------
// Build pages count.
 
if ($numItems > $max) {
//-- More than one page.
$count = $pageLabel.'&nbsp;:';
$pgcount = 1;
 
//-- For all sets of items.
 
$current = 0;
$blockArray = array ();
 
for ($i = 0; $i < $numItems; $i += $max) {
if ($first == $i) {
//-- This is the current set.
$current = $pgcount;
$tag = '['.$pgcount.']';
 
} else {
//-- Another set: [$i, $i+$max]
$href = $url.'&amp;first='.$i.'&amp;max='.$max;
$tag = ('<A href="'.$href.'" style="'.$anchorStyle.'">'.$pgcount.'</A>');
}
 
$blockArray[$pgcount] = $tag;
 
$pgcount++;
}
 
$firstTag = ($current - 5 > 0 ? $current - 5 : 1);
$lastTag = $firstTag + 10;
 
if ($firstTag > 1) $count .= '&nbsp;...&nbsp;';
 
while (list ($k, $v) = each ($blockArray)) {
if (($k >= $firstTag) && ($k <= $lastTag)) {
$count .= '&nbsp;'.$v;
}
}
 
if ($lastTag + 1 < $pgcount) $count .= '&nbsp;...&nbsp;';
 
} else {
//-- Zero or one page.
$count = '&nbsp;';
}
 
//----------------------------------------------------------------------------
// Build table.
 
$str = '';
$str .= "\n".' <TABLE width="'.$width.'" border="0" cellspacing="0" cellpadding="0" summary="">';
$str .= "\n".' <TR>';
$str .= "\n".' <TD width="25%" align="left">'.gs_buildControl ($url, $first, $max, $numItems, $style, $imgdir).'</TD>';
$str .= "\n".' <TD width="50%" align="center"><SPAN style="'.$fontStyle.'">'.$responses.'</SPAN></TD>';
$str .= "\n".' <TD width="25%" style="'.$fontStyle.'" align="right"><SPAN style="'.$fontStyle.'">'.$count.'</SPAN></TD>';
$str .= "\n".' </TR>';
$str .= "\n".' </TABLE>';
 
return $str;
}
 
//==============================================================================
// gs_buildControl ($url, $first, $max, $numItems, $style = 'line', $imgdir = 'dft')
// $url : URL to show datas, without first and max limits
// $first : in the result set, the index of the first item to show
// $max : max count of results by page
// $numItems : results count
// $style : style used into the images control cells
// $imgdir : the image set used for the control buttons
//
// Generation of control buttons (first, previous, next, last) for search
// result, for example.
//==============================================================================
 
function gs_buildControl ($url,
$first, $max, $numItems,
$style = 'line',
$imgdir = 'dft') {
//----------------------------------------------------------------------------
// Compute index of last set.
 
if ($numItems == 0) {
$last = 0;
 
} else {
$last = ($numItems % $max == 0 ?
((int)($numItems / $max) - 1) * $max :
((int)($numItems / $max)) * $max);
}
 
//----------------------------------------------------------------------------
// Build infos for gs_control.
 
$ctrlParam = array (
'style' => $style,
'imgdir' => $imgdir,
'begin' => $url.'&amp;first=0&amp;max='.$max,
'last' => $url.'&amp;first='.$last.'&amp;max='.$max
);
 
if ($first > 0) {
$ctrlParam['prev'] = $url.'&amp;first='.($first - $max).'&amp;max='.$max;
}
 
if ($first + $max < $numItems) {
$ctrlParam['next'] = $url.'&amp;first='.($first + $max).'&amp;max='.$max;
}
 
//----------------------------------------------------------------------------
// Build control.
 
return gs_control ($ctrlParam);
}
 
//==============================================================================
// gs_control ($param)
// $param : (...)
//
// Dump a table containing images for first, prev, next, last navigation,
// according to $param parameters array.
//
// $param is an array, with the following items:
// - style : style used for the table cells
// - imgdir : the directory of the control images set (Local/controls/$imgdir)
// - begin : URL to the first set
// - prev : URL to the previous set
// - next : URL to the next set
// - last : URL to the last set
//==============================================================================
 
function gs_control ($param) {
$imgdir = (empty ($param['imgdir']) ? 'dft' : $param['imgdir']);
 
$icon1 = "Local/controls/$imgdir/01$imgdir.gif";
$icon2 = "Local/controls/$imgdir/02$imgdir.gif";
$icon3 = "Local/controls/$imgdir/03$imgdir.gif";
$icon4 = "Local/controls/$imgdir/04$imgdir.gif";
$icon5 = "Local/controls/$imgdir/05$imgdir.gif";
$icon6 = "Local/controls/$imgdir/06$imgdir.gif";
 
$beginImg = '<IMG src="'.$icon2.'" border="0" alt="">';
$prevImg = '<IMG src="'.$icon3.'" border="0" alt="">';
$nextImg = '<IMG src="'.$icon4.'" border="0" alt="">';
$lastImg = '<IMG src="'.$icon5.'" border="0" alt="">';
 
$style = (empty ($param['style']) ? '' : ' class="'.$param['style'].'"');
$beginImg = (empty ($param['begin']) ? $beginImg : '<A href="'.$param['begin'].'">'.$beginImg.'</A>');
$prevImg = (empty ($param['prev']) ? $prevImg : '<A href="'.$param['prev'].'">'.$prevImg.'</A>');
$nextImg = (empty ($param['next']) ? $nextImg : '<A href="'.$param['next'].'">'.$nextImg.'</A>');
$lastImg = (empty ($param['last']) ? $lastImg : '<A href="'.$param['last'].'">'.$lastImg.'</A>');
 
$str = '';
$str .= "\n".'<TABLE border="0" cellspacing="0" cellpadding="0" summary="">';
$str .= "\n".' <TR>';
$str .= "\n".' <TD><IMG src="'.$icon1.'" border="0" alt=""></TD>';
$str .= "\n".' <TD'.$style.'>'.$beginImg.'</TD>';
$str .= "\n".' <TD'.$style.'>'.$prevImg.'</TD>';
$str .= "\n".' <TD'.$style.'>'.$nextImg.'</TD>';
$str .= "\n".' <TD'.$style.'>'.$lastImg.'</TD>';
$str .= "\n".' <TD><IMG src="'.$icon6.'" border="0" alt=""></TD>';
$str .= "\n".' </TR>';
$str .= "\n".'</TABLE>';
 
return $str;
}
 
//==============================================================================
// gs_buildOptionInVar ($db, $link, $query, $current, $valueFieldName, $labelFieldName, $locale, $appl, $isLabel)
// $db : database name
// $link : database link
// $query : query to perform
// $current : current expected value of the select (option SELECTED)
// $valueFieldName : in the query, the field name of the value
// $labelFieldName : in the query, the field name of the text
// $locale : current locale, in case of labelled text
// $name : name of application, for labels
// $isLabel : true if $labelFieldName field is a label name.
//
// According to the result of the query $query, build SELECT options. The result
// is a string.
//==============================================================================
 
function gs_buildOptionInVar ($db, $query, $current, $valueFieldName, $labelFieldName, $locale = '', $appl= '', $isLabel = false) {
//----------------------------------------------------------------------------
// Perform query.
 
$res = $db->query ($query);
 
if (DB::isError($res)) {
die ("Unable to perform query ($query / " . $res->getMessage() . ")");
}
 
//----------------------------------------------------------------------------
// Build options.
 
$str = '';
 
while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
//-- Option label. If $isLabel is true, the field named $labelFieldName is
//-- used as a label. Otherwise, it's only a string.
 
$label = htmlentities ($row[$labelFieldName]);
 
//-- The value: field $valueFieldName of the result set.
$value = $row[$valueFieldName];
 
//-- If the value if equal to $current, this option is selected.
$selected = ($current == $value ? ' selected' : '');
 
//-- Build option.
 
$str .= "\n".'<OPTION value="'.$value.'"'.$selected.'>'.$label.'</OPTION>';
}
 
$res->free();
 
return $str;
}
 
//==============================================================================
// gs_localePutLanguagesFlagsInVar ($dbname, $dblink, $project)
// $dbname : database name
// $dblink : database link
// $project : project name
//
// Dump array of flags, one for each language supported by the project.
// Images are taken from Local/flags directory.
//==============================================================================
 
function gs_localePutLanguagesFlagsInVar ($dbname, $dblink, $project) {
//----------------------------------------------------------------------------
// List of all the languages supported by project.
 
$query =
"select * from $dbname.LOCALE, $dbname.LOCALE_PRJ".
" where LP_PROJECT='$project' and LP_CODE=L_CODE".
" order by LP_ORDER";
 
$result = mysql_query ($query, $dblink);
 
if (! $result) {
die ("Unable to perform query (" . mysql_error ($dblink) . ")");
}
 
//----------------------------------------------------------------------------
// Only one language ? Do nothing.
 
if (mysql_num_rows ($result) <= 1) {
mysql_free_result ($result);
return;
}
 
//----------------------------------------------------------------------------
// Dump array of flags.
 
$outputText = '';
 
$outputText .= "\n".'<TABLE summary="" cellspacing="3" cellpadding="0" border="0">';
$outputText .= "\n".' <TR>';
 
while ($row = mysql_fetch_object ($result)) {
//--------------------------------------------------------------------------
// The flags images are taken from Local/flags.
 
$url = "index.php?project=$project&amp;locale=$row->LP_CODE";
$img = "Local/flags/$row->L_FLAG";
$alt = htmlentities ($row->L_DESCRIPTION);
 
$outputText .= "\n".'<TD>';
$outputText .= '<A target="_top" href="'.$url.'">';
$outputText .= '<IMG border="0" src="'.$img.'" alt="'.$alt.'">';
$outputText .= '</A>';
$outputText .= '</TD>';
}
 
$outputText .= "\n".' </TR>';
$outputText .= "\n".'</TABLE>';
 
mysql_free_result ($result);
 
return $outputText;
}
 
//==============================================================================
// FUNCTION gs_putAmount ($frf, $euro)
//
// Convert an amount into euro.
//
// NOTE: must be move into project module.
//==============================================================================
 
function gs_putAmount ($frf, $euro) {
if ($euro == 0) {
$euro = $frf / 6.55957;
$euro = (round ($euro * 100)) / 100;
}
 
if ($euro == 0) return '&nbsp;';
if ($euro >= 150000) return 'A ( >= 150 000 &euro; )';
if ($euro >= 45000) return 'B ( < 150 000 &euro;, >= 45 000 &euro; )';
if ($euro >= 15000) return 'C ( < 45 000 &euro;, >= 15 000 &euro; )';
 
return 'D ( < 15 000 &euro;)';
}
 
 
 
/** function includeFile () Inclue des fichiers en essayant dans divers lieux
*
* @param mixed Un tableau contenant les fichiers à inclure
* @param string Un message d'erreur
* return boolean true en cas de succès
*/
 
function includeFile($incFiles, $msg) {
if (! isset ($incFiles)) die ('Bad include path');
if (! is_array ($incFiles)) die ('Bad include path');
 
$searchPath = '';
 
for ($i = 0; $i < count ($incFiles); $i++) {
$searchPath .= $incFiles[$i].'<BR>'."\n";
 
if (file_exists ($incFiles[$i])) {
include_once ($incFiles[$i]);
return;
}
}
 
die ("$msg<BR>\nSearch path:<BR>\n$searchPath");
}
 
//==============================================================================
// FUNCTION gs_getUser ($db, $link, $annu, $userid)
//
// Returns an array with user informations.
//==============================================================================
 
function gs_getUser ($db, $link, $annu, $userid) {
$query =
"select * from $db.annu_USERS".
" where U_ID=$userid".
" and U_ANNU_NAME='$annu'";
 
$result = mysql_query ($query, $link);
 
if (! $result) {
die ("Unable to perform query ($query / " . mysql_error ($link) . ")");
}
 
$row = mysql_fetch_object ($result);
if (! $row) return false;
 
$userInfo['login'] = $row->U_LOGIN;
$userInfo['name'] = $row->U_NAME;
$userInfo['surname'] = $row->U_SURNAME;
$userInfo['row'] = $row;
 
mysql_free_result ($result);
 
return $userInfo;
}
 
//==============================================================================
//==============================================================================
 
//==============================================================================
//==============================================================================
 
 
//==============================================================================
// FUNCTION messageTo ($project, $locale, $to)
//
// Dump an icon to send a message.
//==============================================================================
 
function messageTo ($project, $locale, $to) {
$args = "'$project', '$locale', $to";
$icon = '<IMG src="Local/icons/newmsg.gif" alt="" width="16" height="16" border="0">';
 
return
'<A href="javascript:openMessenger ('.$args.')">'.
$icon.
'</A>';
}
 
//==============================================================================
//==============================================================================
 
function gs_print ($item) {
ob_start ();
print_r ($item);
$p = ob_get_contents ();
ob_end_clean ();
 
echo '<PRE>'.htmlentities ($p).'</PRE>';
}
 
//==============================================================================
 
 
?>