Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 324 → Rev 325

/trunk/client/ins_annuaire/bibliotheque/fonctions.php
New file
0,0 → 1,267
<?php
// +--------------------------------------------------------------------------------+
// | fonctions.php |
// +--------------------------------------------------------------------------------+
// | Copyright (c) 2002 Tela Botanica |
// +--------------------------------------------------------------------------------+
// | Fonctions diverses |
// +--------------------------------------------------------------------------------+
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> |
// +--------------------------------------------------------------------------------+
//
// $Id: fonctions.php,v 1.1 2005-04-06 13:33:32 florian Exp $
 
// effectue une requete sur un colonne unique et renvoie le resultat sous la forme
// d'un tableau
 
function get($query) {
$tableau = array() ;
$query = "SELECT " . $query;
$result = mysql_query($query) or die ("Echec de la requ&ecirc;te sur AGORA");
while ($row = mysql_fetch_row($result)) {
array_push ($tableau,$row[0]);
}
 
return $tableau ;
}
 
function textecourt($texte, $taille) {
if (strlen($texte) > $taille) return substr($texte, 0, $taille-3)."...";
return $texte;
}
 
// formulaire, prend en parametre les valeurs par defaut
function formulaire($titre="",$description="", $abreviation="", $internet="", $selectedForums="", $selectedProjet="",$origine="NOUVEAU") {
global $baseURL, $forums, $projets, $projetAb ;
$forums = get("AGO_A_ALIAS FROM agora") ;
$IDforums = get ("AGO_A_ID FROM agora");
$projets = get("TITRE FROM PROJET_PROJET ORDER BY ABREVIATION");
$projetAb = get("ABREVIATION FROM PROJET_PROJET ORDER BY ABREVIATION") ;
if ($selectedForums == "") $selectedForums = array() ;
if ($selectedProjet == "") $selectedProjet = array() ;
$res ="<table>\n";
if ($origine == "NOUVEAU") {
$res .="<form action=\"$baseURL&menuProjet=projetadm&action=2\" method=\"post\">\n";
} else {
$res .="<form action=\"$baseURL&menuProjet=projetgest&projet=$abreviation&action=2\" method=\"post\">\n";
}
$res .="<tr class=\"text\"><td style=\"text-align:right;font-weight:bold;\">Titre :</td><td><input type=\"text\"
class=\"insInputForm\" name=\"titre\" size=\"60\" value=\"$titre\"></td></tr>\n";
$res .="<tr class=\"text\"><td valign=\"top\" style=\"text-align:right;font-weight:bold;\">Description :</td><td><textarea name=\"description\"
class=\"insInputForm\" cols=\"60\" rows=\"20\">$description</textarea></td></tr>\n";
if ($origine == "NOUVEAU") {
$res .="<tr class=\"text\"><td style=\"text-align:right;font-weight:bold;\">Abr&eacute;viation :</td>\n";
$res .="<td><input class=\"insInputForm\" type=\"text\" name=\"abreviation\" size=\"5\" value=\"$abreviation\">&nbsp;&nbsp;";
$res .="&nbsp;&nbsp;Au maximum 5 caract&egrave;res, de pr&eacute;f&eacute;rence en majuscule.</td></tr>\n";
}
$res .="<tr class=\"text\"><td style=\"text-align:right;font-weight:bold;\">Espace Internet :</td>\n";
$res .="<td><input class=\"insInputForm\" type=\"text\" name=\"internet\" size=\"60\" value=\"$internet\"></td></tr>\n";
$res .="<tr class=\"text\"><td valign=\"top\" style=\"text-align:right;font-weight:bold;\">Forums associ&eacute;s :</td><td><select class=\"insInputForm\" name=forumsS[] size=\"";
$res .=count($forums);
$res .="\" multiple>\n";
for ($i = 0 ; $i < count($forums) ; $i++) {
$res .="<option value=\"$IDforums[$i]\"";
if (in_array($forums[$i],$selectedForums)) $res .=" selected";
$res .=">";
$res .=$forums[$i];
$res .="</option>\n";
}
$res .="</select>\n";
$res .="<tr class=\"text\"><td valign=\"top\" style=\"text-align:right;font-weight:bold;\">Projets associ&eacute;s :</td>\n<td><select class=\"insInputForm\" name=projetsS[] size=\"";
$res .=count($projets);
$res .="\" multiple>\n";
for ($i = 0 ; $i < count($projets) ; $i++) {
$res .="<option value=\"";
$res .=$projetAb[$i];
$res .="\"";
if (in_array($projetAb[$i],$selectedProjet)) $res .=" selected";
$res .=">";
$res .=$projets[$i];
$res .="</option>\n";
}
$res .="</select></td></tr>\n";
$res .="<tr><td colspan=\"2\" align=\"center\">\n";
if ($origine != "NOUVEAU") $res .="<input style=\"background-color:#FFFFFF\" type=\"button\" onclick=\"Javascript:history.go(-1);\" value=\"Annuler\">\n" ;
$res .="<input style=\"background-color:#FFFFFF\" type=\"submit\"";
if ($origine == "NOUVEAU") {
$res .=" value=\"Cr&eacute;er\">";
} else { $res .=" value=\"Valider\">";
}
$res .="</td></tr>\n";
$res .="</form>\n";
$res .="</table>\n";
return $res ;
}
 
function getExtension($filename) {
$extension = explode (".",$filename) ;
return $extension[1] ;
}
 
#--------------------------------------------------------------
# Insere $num espace insecable
#--------------------------------------------------------------
 
function insert_spaces($num) {
$res = "" ;
for ($i = 0; $i < $num; $i++) $res .= "&nbsp;";
return $res ;
}
 
function getEnumSet($text) {
$resultat = explode("'", $text) ;
$retour = array() ; $j = 0 ;
for ($i = 1 ; $i < count ($resultat)-1 ; $i = $i + 2) {
$retour[$j] = $resultat[$i] ;
$j++ ;
}
return $retour ;
}
 
$jour = array("lundi","mardi", "mercredi", "jeudi", "vendredi", "samedi","dimanche");
$moi = array("janvier","f&eacute;vrier","mars","avril","mai","juin","juillet","septembre","octobre","novembre","d&eacute;cembre") ;
 
function parcourrirAnnu($event) {
global $baseURL, $lettre, $menuProjet ;
$outputText = "" ;
$outputText .= "<tr><td>&nbsp;</td></tr>\n";
$outputText .= "<tr><td><table align=\"center\">";
$outputText .= "<tr class=\"texte_tb\">";
// ecrire toutes les lettres avec un lien
for ($i = 65 ; $i <91 ; $i++) {
$outputText .= "\t<td><a style=\"font-size:15px;\" href=\"$baseURL&amp;menuProjet=$menuProjet&amp;action=$event&amp;lettre=";
$outputText .= chr($i) ;
$outputText .= "\">";
$outputText .= chr($i) ;
$outputText .= "</a></td>\n";
}
$outputText .= "<td>&nbsp;&nbsp;<a href=\"$baseURL&amp;menuProjet=$menuProjet&amp;action=$event&amp;lettre=tous\">Tous</a></td>\n" ;
$outputText .= "</tr></table></td></tr>\n";
// si une lettre est selectionne
if (!empty($lettre)) {
$query = "SELECT annuaire_tela.U_NAME,annuaire_tela.U_SURNAME,annuaire_tela.U_MAIL,annuaire_tela.U_CITY,
annuaire_tela.U_ZIP_CODE,gen_COUNTRY.GC_NAME FROM annuaire_tela,gen_COUNTRY WHERE";
if ($lettre != "tous") $query .= " U_NAME LIKE \"$lettre%\" AND" ;
$query .= " annuaire_tela.U_COUNTRY=gen_COUNTRY.GC_ID AND gen_COUNTRY.GC_LOCALE=\"fr\"
AND U_NAME<>\"\" and U_SHOW=3 ORDER BY U_NAME" ;
$result = mysql_query($query) or die ("Echec de la requ&ecirc;te sur annuaire_tela...");
if (mysql_num_rows($result) != 0) {
// pour chaque nom, on inscrit les infos
$outputText .= "<tr><td>&nbsp;</td></tr>\n";
$outputText .= "<tr class=\"insTitle1\"><td>Liste des inscrits &agrave; la lettre : $lettre</td></tr>\n";
$outputText .= "<tr><td><table width=\"100%\">";
$outputText .= "<tr class=\"insTitle1\"><td>Nom</td>";
$outputText .= "<td>Pr&eacute;nom</td><td align=\"center\">E-mail</td>\n";
$outputText .= "<td align=\"center\">Code postal</td><td>Pays</td></tr>\n";
$pair = true ;
while ($row = mysql_fetch_object($result)) {
$outputText .= "<tr class=\"texte_tb2\"";
if ($pair) {
$outputText .= " bgcolor=\"#E8FFE5\"";
$pair = false ;
} else {
$pair = true ;
}
$outputText .= "><td>$row->U_NAME</td><td>$row->U_SURNAME</td>\n";
$outputText .= "<td align=\"left\"><a href=\"mailto:$row->U_MAIL\">$row->U_MAIL</a></td>\n";
$outputText .= "<td align=\"center\">$row->U_ZIP_CODE</td>\n";
$outputText .= "<td>$row->GC_NAME</td>\n" ;
$outputText .= "</tr>\n";
}
$outputText .= "</table></td></tr>\n";
} else {
$outputText .= "<tr><td>&nbsp;</td></tr>\n";
$outputText .= "<tr class=\"texte_tb\"><td>Pas d'inscrit</td></tr>\n";
}
}
return $outputText ;
}
function formRep($nom="", $description="", $origine="NOUVEAU", $visibilite="") {
global $baseURL, $projet, $repcourant, $id ;
if ($origine == "NOUVEAU") {
$res = "<form action=$baseURL&action=20\" method=\"post\">\n" ;
} else {
$res = "<form action=$baseURL&action=19\" method=\"post\"\n>" ;
}
$res .= "\t<table align=\"center\">\n\t" ;
$res .= "<tr class=\"texte_tb\"><td colspan=\"2\">N'utilisez pas d'accents, ni d'espace pour le nom du r&eacute;pertoire.</td></tr>\n";
$res .= "<tr class=\"text\"><td style=\"font-weight:bold;text-align:right\">" ;
$res .= "Nom : </td><td><input class=\"insInputForm\" type=\"text\" name=\"nom\" size=\"80\" value=\"$nom\"></td></tr>\n" ;
$res .= "<tr class=\"text\"><td style=\"font-weight:bold;text-align:right;vertical-align:top\">Description : </td>\n" ;
$res .= "<td><textarea class=\"insInputForm\" name=\"description\" cols=\"81\">$description</textarea></td></tr>\n" ;
$res .= "<tr class=\"text\"><td align=\"right\"><b>Visibilit&eacute; :</b></td>\n";
$res .= "<td align=\"left\">\n";
$res .= "<input style=\"background-color:#FFFFFF;\" type=\"radio\" name=\"visible\" value=\"public\"" ;
if ($visibilite == "public" or $visibilite == "") $res .= " checked" ;
$res .= ">Tout public&nbsp;&nbsp;&nbsp;&nbsp;";
$res .= "<input style=\"background-color:#FFFFFF;\" type=\"radio\" name=\"visible\" value=\"prive\"" ;
if ($visibilite == "prive") $res.= " checked" ;
$res .= ">Projet seulement</td></tr>\n";
$res .= "<tr class=\"text\"><td><input type=\"hidden\" name=\"repcourant\" value=\"$repcourant\"</td><td>\n" ;
$res .= "<input type=\"hidden\" name=\"id\" value=\"$id\">" ;
$res .= "<input type=\"submit\" style=\"background-color:#FFFFFF;\"" ;
if ($origine == "NOUVEAU") { $res.= "value=\"Valider\"" ; } else { $res .= "value=\"Modifier\"" ; }
$res .= "></td></tr></table></form>\n" ;
return $res ;
}
 
// renvoie le chemin complet depuis la racine de l'application
// on indique en argument l'identifiant du repertoire en cour
// la fonction remonte d'etage en etage jusqu'a ce que gen_voiraussi.PERE soit NULL
function getPath($ID_rep) {
$path = "" ;
$query = "SELECT PERE,NOM FROM gen_repertoire WHERE ID='$ID_rep'" ;
$result = mysql_query($query) or die ("Echec de la requ&ecirc;te dans gen_voiraussi, au cours de la recherche
du chemin des repertoire") ;
$row = mysql_fetch_object($result) ;
if ($row->PERE != NULL) {
$path .= getPath($row->PERE)."/".$row->NOM ;
}
return $path ;
}
 
 
// renvoie le chemin avec les tag <a href
 
function getHTMLPath($ID_rep) {
global $baseURL ;
$query = "SELECT PERE,NOM FROM gen_repertoire WHERE ID='$ID_rep'" ;
$result = mysql_query($query) or die ("Echec de la requ&ecirc;te dans gen_voiraussi, au cours de la recherche
du chemin des repertoire") ;
$row = mysql_fetch_object($result) ;
if ($row->PERE != NULL) {
$path .= " <b>&gt;</b><a href=\"$baseURL&amp;repcourant=$ID_rep\">" ;
$path .= $row->NOM ;
$path .= "</a>\n" ;
$path = getHTMLPath($row->PERE).$path ;
}
return $path ;
}
 
function nettoieAccent(&$texte) {
 
// un peu barbare
$texte = ereg_replace("é","e",$texte) ;
$texte = ereg_replace("è","e",$texte) ;
$texte = ereg_replace("ê","e",$texte) ;
$texte = ereg_replace("à","a",$texte) ;
$texte = ereg_replace("ù","u",$texte) ;
$texte = ereg_replace("â","a",$texte) ;
$texte = ereg_replace("ä","a",$texte) ;
$texte = ereg_replace("ë","e",$texte) ;
$texte = ereg_replace("î","i",$texte) ;
$texte = ereg_replace("ô","o",$texte) ;
$texte = ereg_replace("û","u",$texte) ;
$texte = ereg_replace("ö","o",$texte) ;
$texte = ereg_replace("ü","u",$texte) ;
 
return $texte ;
}
 
?>
/trunk/client/ins_annuaire/bibliotheque/inscription.fonct.spip.php
New file
0,0 → 1,131
<?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: inscription.fonct.spip.php,v 1.1 2005-04-06 13:33:32 florian Exp $
/**
* Fonctions wikini
*
* Ce fichier propose 3 fonctions pour intervenir sur la table interwikini_users.
*
*@package inscription
*@subpackage fonctions_wikini
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2005-04-06 13:33:32 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
function inscription_spip($id, &$valeur)
{
 
// Requete pour inscrire dans SPIP
if (isset ($valeur['nomwiki'])) {
$login = $valeur['nomwiki'] ;
} else {
$login = $valeur['email'] ;
}
$requete = "insert into spip_auteurs set id_auteur=$id, nom=\"".$valeur['prenom']." ".$valeur['nom'].
"\",email=\"".$valeur['email']."\",login=\"".$login.
"\", pass=\"".md5($valeur['password'])."\", statut=\"nouveau\", lang=\"".
strtolower($valeur['pays'])."\"" ;
@mysql_query($requete) or die ("$requete<br>Echec <br>".mysql_error()) ;
}
 
function mod_inscription_spip($id, &$valeur)
{
if (isset ($valeur['nomwiki'])) {
$login = $valeur['nomwiki'] ;
} else {
$login = $valeur['email'] ;
}
//BIEN METTRE alea_actuel, htpass ET alea_futur À ""
$requete = "update spip_auteurs set nom=\"".$valeur['prenom']." ".$valeur['nom'].
"\",email=\"".$valeur['email']."\",login=\"".$login.
"\", pass=\"".md5($valeur['password'])."\", htpass=\"\", alea_actuel=\"\", alea_futur=\"\", lang=\"fr\" where id_auteur=$id" ;
//echo $requete;
@mysql_query($requete) or die ("$requete<br>Echec <br>".mysql_error()) ;
}
function desinscription_spip($id_utilisateur)
{
$requete = 'delete from spip_auteurs where id_auteur='.$id_utilisateur ;
@mysql_query($requete) or die ("$requete<br>Echec de la requête de mise à la poubelle de l'utilisateur dans spip <br>".mysql_error()) ;
}
 
function spip_cookie() {
if ($userid != 0) {
setcookie("spip_admin", "@$login", time()+3600*24*30, "/vecam/") ;
include ("ecrire/inc_version.php3");
include_ecrire ("inc_meta.php3");
include_ecrire ("inc_session.php3");
$query = "SELECT * FROM spip_auteurs WHERE id_auteur=$userid";
$result = mysql_query($query);
$GLOBALS['auteur_session'] = mysql_fetch_array($result) ;
$GLOBALS['auteur_session']['statut'] = "1comite" ;
$GLOBALS['auteur_session']['lang'] = "en" ;
if (!$HTTP_COOKIE_VARS["spip_session"]) {
$id_session = $userid."_".(md5 (uniqid (rand ())));
setcookie("spip_session", $id_session, time()+3600*24*30, "/vecam/") ;
} else {
$id_session = preg_replace("/[0-9]+_/", $userid."_", $HTTP_COOKIE_VARS["spip_session"]) ;
setcookie("spip_session", $id_session, time()+3600*24*30, "/vecam/") ;
}
ajouter_session($GLOBALS['auteur_session'], $id_session) ;
}
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2005/03/21 16:57:30 florian
* correction de bug, mise à jour interface
*
* Revision 1.1 2004/12/15 13:32:25 alex
* version initiale
*
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.2 2004/06/25 14:25:27 alex
* modification de la requete de suppresssion
*
* Revision 1.1 2004/06/18 09:20:48 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
 
 
 
 
?>
/trunk/client/ins_annuaire/bibliotheque/inscription.class.php
New file
0,0 → 1,225
<?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: inscription.class.php,v 1.1 2005-04-06 13:33:32 florian Exp $
/**
* Inscription
*
* Un module d'inscription, en général ce code est spécifique à
* un site web
*
*@package inscription
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2005-04-06 13:33:32 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
require_once 'HTML/QuickForm.php' ;
 
class ListeDePays extends PEAR{
 
var $_db ;
/** Constructeur
* Vérifie l'existance de la table gen_pays_traduction
*
* @param DB Un objet PEAR::DB
* @return
*/
function ListeDePays(&$objetDB) {
$this->_db = $objetDB ;
$requete = "show tables" ;
$resultat = $objetDB->query ($requete) ;
if (DB::isError ($resultat)) {
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
}
while ($ligne = $resultat->fetchRow()) {
if ($ligne[0] == INS_TABLE_PAYS) {
return ;
}
}
return $this->raiseError('La table gen_pays_traduction n\'est pas présente dans la base de donnée !') ;
}
/** Renvoie la liste des pays traduite
*
* @param string une chaine de type i18n ou une chaine code iso langue (fr_FR ou fr ou FR)
* @return un tableau contenant en clé, le code iso du pays, en majuscule et en valeur le nom du pays traduit
*/
function getListePays($i18n) {
if (strlen($i18n) == 2) {
$i18n = strtolower($i18n)."-".strtoupper($i18n) ;
}
$requete = 'select '.INS_CHAMPS_ID_PAYS.', '.INS_CHAMPS_LABEL_PAYS.' from '.INS_TABLE_PAYS;
$resultat = $this->_db->query ($requete) ;
if (DB::isError ($resultat)) {
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
}
if ($resultat->numRows() == 0) {
return $this->raiseError('Le code fourni ne correspond à aucun pays ou n\'est pas dans la table!') ;
}
$retour = array() ;
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
$retour[$ligne[INS_CHAMPS_ID_PAYS]] = $ligne[INS_CHAMPS_LABEL_PAYS] ;
}
return $retour ;
}
}
 
class HTML_formulaireInscription extends HTML_Quickform {
 
/**
* Constructeur
*
* @param string formName Le nom du formulaire
* @param string method Méthode post ou get
* @param string action L'action du formulaire.
* @param int target La cible.
* @param Array attributes Les attributs HTML en plus.
* @param bool trackSubmit ??
* @return void
* @access public
*/
function HTML_formulaireInscription( $formName, $method = "post", $action, $target = "_self", $attributes, $trackSubmit = false ) {
HTML_Quickform::HTML_Quickform($formName, $method, $action, $target, $attributes, $trackSubmit) ;
}
/**
*
*
* @return void
* @access public
*/
function construitFormulaire($url)
{
$squelette =& $this->defaultRenderer();
$squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n");
$squelette->setElementTemplate( '<li class="liste_inscription">'."\n".'{label}'."\n".'{element}'."\n".
'<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
'</li>'."\n");
$squelette->setGroupElementTemplate('<span class="groupe_formulaire">{label}{element}</span>', 'groupe_mot_de_passe') ;
$squelette->setGroupElementTemplate('<span class="groupe_formulaire">{label}{element}</span>', 'groupe_cp_ville') ;
$squelette->setGroupElementTemplate('<span class="groupe_formulaire">{label}{element}</span>', 'groupe_nom') ;
$squelette->setRequiredNoteTemplate("\n".'<p>'."\n".'<span class="symbole_obligatoire">*</span> {requiredNote}'."\n".'</p>'."\n");
$fieldset_debut = '<fieldset>'."\n".
'<legend>'.INS_AJOUT_MEMBRE.'</legend>'."\n".
'<ul>'."\n";
$this->addElement('html', $fieldset_debut);
$this->addElement('text', 'email', INS_EMAIL) ;
$this->addRule('email', INS_EMAIL_REQUIS, 'required','', 'client') ;
$this->addRule('email', INS_MAIL_INCORRECT, 'email', '', 'client') ;
$this->registerRule('doublonmail', 'callback', 'verif_doublonMail');
$this->addRule('email', INS_MAIL_DOUBLE, 'doublonmail', true);
// A faire, grouper les mots de passe
$this->addElement('password', 'mot_de_passe', INS_MOT_DE_PASSE) ;
$this->addElement('password', 'mot_de_passe_repete', INS_REPETE_MOT_DE_PASSE) ;
$this->addRule('mot_de_passe', INS_MOT_DE_PASSE_REQUIS, 'required', '', 'client') ;
$this->addRule('mot_de_passe_repete', INS_MOT_DE_PASSE_REQUIS, 'required', '', 'client') ;
$this->addRule(array ('mot_de_passe', 'mot_de_passe_repete'), INS_MOTS_DE_PASSE_DIFFERENTS, 'compare', '', 'client') ;
$this->addElement('text', 'nom', INS_NOM) ;
$this->addElement('text', 'prenom', INS_PRENOM) ;
if (INS_UTILISE_WIKINI) {
$this->addElement('text', 'nom_wikini', INS_NOM_WIKI) ;
$this->addRule('nom_wikini', INS_MAUVAIS_NOM_WIKI, 'regex', '/(!?[A-Z][A-Za-z0-9]*[a-z0-9]+[A-Z][A-Za-z0-9]*)/', 'client') ;
$this->registerRule('doublonwikini', 'callback', 'verif_doublonNomWiki');
$this->addRule('nom_wikini', INS_NOMWIKI_DOUBLE, 'doublonwikini', true);
}
$this->addElement('text', 'adresse_1', INS_ADRESSE_1) ;
$this->addElement('text', 'adresse_2', INS_ADRESSE_2) ;
$this->addElement('text', 'region', INS_REGION) ;
$this->addElement('text', 'cp', INS_CODE_POSTAL) ;
$this->addElement('text', 'ville', INS_VILLE) ;
$this->addRule('cp', INS_CODE_POSTAL_REQUIS, 'required', '', 'client') ;
// L'élément pays est construit à partir du tableau liste_pays
$liste_pays = new ListeDePays($GLOBALS['ins_db']) ;
$this->addElement('select', 'pays', INS_PAYS, $liste_pays->getListePays(INS_LANGUE_DEFAUT)) ;
$this->addElement('text', 'site', INS_SITE_INTERNET) ;
$this->addElement('checkbox', 'lettre',INS_LETTRE) ;
$defauts=array ('lettre'=>1,'pays'=>'FR');
$this->setDefaults($defauts);
// on fait un groupe avec les boutons pour les mettres sur la même ligne
$buttons[] = &HTML_QuickForm::createElement('button', 'annuler', INS_ANNULER, array ("onclick" => "javascript:document.location.href='".$url."'"));
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', INS_VALIDER);
$this->addGroup($buttons, null, null, '&nbsp;');
$fieldset_fin = '</ul>'."\n".
'</fieldset>'."\n";
$this->addElement('html', $fieldset_fin);
 
$this->setRequiredNote(INS_CHAMPS_REQUIS) ;
} // end of member function construitFormulaire
/** Modifie le formulaire pour l'adapter au cas des structures
*
*
* @return void
* @access public
*/
function formulaireStructure()
{
$this->removeElement('nom') ;
$this->removeElement('prenom') ;
$this->removeElement('email', false) ;
$mail = & HTML_QuickForm::createElement ('text', 'email', INS_MAIL_STRUCTURE) ;
$this->insertElementBefore ($mail, 'mot_de_passe') ;
$nom_structure = & HTML_QuickForm::createElement ('text', 'nom', INS_NOM_STRUCTURE) ;
$this->insertElementBefore ($nom_structure, 'email') ;
$this->removeElement ('site', false) ;
$site_structure = & HTML_QuickForm::createElement ('text', 'site', INS_SITE_STRUCTURE) ;
$this->insertElementBefore ($site_structure, 'pays') ;
$this->addElement ('hidden', 'est_structure', 1) ;
$sigle_structure = & HTML_QuickForm::createElement ('text', 'sigle_structure', INS_SIGLE_STRUCTURE) ;
$this->insertElementBefore ($sigle_structure, 'nom') ;
$this->addRule ('sigle_structure', INS_SIGLE_REQUIS, 'required', '', 'client') ;
}
/**
*
*
* @return string
* @access public
*/
function toHTML( )
{
$res = HTML_QuickForm::toHTML() ;
return $res ;
} // end of member function toHTML
}
 
?>
/trunk/client/ins_annuaire/bibliotheque/annuaire_backoffice.fonct.php
New file
0,0 → 1,385
<?php
 
// +--------------------------------------------------------------------------------+
// | annuaire_moteur_fonction.php |
// +--------------------------------------------------------------------------------+
// | Copyright (c) 2000 - 2003 Tela Botanica |
// +--------------------------------------------------------------------------------+
// | Les fonctions de annuaire_moteur.php |
// +--------------------------------------------------------------------------------+
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> |
// +--------------------------------------------------------------------------------+
//
// $Id: annuaire_backoffice.fonct.php,v 1.1 2005-04-06 13:33:32 florian Exp $
 
 
/** function mkengine ()
*
*
*
* @return
*/
 
function mkengine()
{
global $label_bbota;
global $nbr_total;
global $bouton, $HTTP_POST_VARS ;
$mon_frag = new fragmenteur_session() ;
$mes_vars = array ("recherche", "nom", "ville", "mail" ,"dept", "prenom", "cotisant", "pays", "sort", "T_REPONSE", "lettre","statut") ;
// Deux cas , soit on a cliqué sur rechercher, soit on a cliqué sur un lien
foreach ($mes_vars as $key=>$value) {
if (!$bouton) { // on a cliqué sur un lien
if (empty($HTTP_POST_VARS[$value])) {
$$value = $mon_frag->getVariable($value);
}
} else {
// Si on clique sur le bouton rechercher
if (empty ($HTTP_POST_VARS[$value])) {
$$value = "" ;
} else {
$$value = $HTTP_POST_VARS[$value] ;
}
}
}
// Comptage du nombre total de données dans la table (hors CACHER = 1)
$query = "select count(*) as CPT from ".ANN_ANNUAIRE;
$result = mysql_query($query) or die("<B>Erreur !</B> $query a échoué...");
 
if (mysql_num_rows($result) == 1)
{
$tmp_nb = mysql_fetch_object($result);
$nbr_total = $tmp_nb->CPT;
if ($nbr_total > 0) $chaine = "parmi $nbr_total données";
else die("<B>Erreur</B> lors du comptage des structures ($nbr_total trouvées) : $query");
}
else die("<B>Erreur</B> lors du comptage des structures : $query");
 
mysql_free_result($result);
// fin comptage
 
$ret = "";
 
// construction du moteur de str
$ret .= "<form action=\"".$GLOBALS['ann_url']->getURL()."\" method=\"post\">\n";
$ret .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" summary=\"\">\n";
$ret .= "<tr class=\"titlePage\"><td colspan=\"2\">".AM_L_TITRE."</td></tr>\n" ;
$ret .= "<tr class=\"insTitle1\"><td colspan=\"2\">".AM_L_TITRE." $chaine :</td></tr>\n" ;
 
// ligne de recherche
$ret .= "<tr><td colspan=\"2\">\n";
$ret .= "<table border=\"0\"><tr>\n" ;
$ret .= "<td class=\"insLabel\">".AM_L_RECHERCHER." :\n</td>\n<td>";
$ret .= form_mk_chaineI(stripslashes($recherche), "recherche")."&nbsp;";
$ret .= "</td><td class=\"insLabel\" colspan=\"4\">".AM_L_PAYS." : \n" ;
$ret .= "" ;
 
// formulaire contenant les pays, avec par défaut soit le pays en cours
// soit "tous les pays"
$query_pays = "select GC_ID, GC_NAME from gen_COUNTRY where GC_LOCALE='fr'" ;
$result_pays = mysql_query($query_pays) or die ("Echec de la requete sur gen_COUNTRY") ;
$ret .= "<select name=\"pays\" class=\"insInputForm\">\n" ;
$ret .= "<option value=\"tous\">Tous les pays</option>\n" ;
while ($row_pays = mysql_fetch_object($result_pays)) {
$ret .= "<option value=\"$row_pays->GC_ID\"" ;
if (!empty($pays)) {
if ($pays == $row_pays->GC_ID) $ret .= " selected" ;
}
$ret .= ">$row_pays->GC_NAME</option>\n" ;
}
$ret .= "</select>\n" ;
$ret .= "</td>\n" ;
$ret .= "<tr>\n";
$ret .= "<td class=\"insLabel\">".AM_L_NOM." :\n</td><td>";
$ret .= form_mk_chaineI(stripslashes($nom), "nom")."&nbsp;</td>\n<td class=\"insLabel\">" ;
$ret .= AM_L_PRENOM."&nbsp;:</td>\n<td>".form_mk_chaineI(stripslashes($prenom), "prenom")."&nbsp;</td>\n<td class=\"insLabel\">" ;
$ret .= AM_L_VILLE."&nbsp;:</td>\n<td>".form_mk_chaineI(stripslashes($ville), "ville")."&nbsp;</td>" ;
$ret .= "</tr><tr>\n" ;
$ret .= "<td class=\"insLabel\">".AM_L_DEPARTEMENT."&nbsp;: </td>\n<td>" ;
// Construction du <select> des départements
$requete_dpt = "select GFD_ID, GFD_NAME from gen_FRENCH_DPT" ;
$resultat_dpt = mysql_query($requete_dpt) or die ("Echec de la requete sur gen_FRENCH_DPT<br>".mysql_error()) ;
$ret .= "<select name=\"dept\" class=\"insInputForm\">\n" ;
$ret .= "<option value=\"tous\">tous</option>\n" ;
while ($ligne_dpt = mysql_fetch_object($resultat_dpt)) {
$ret .= "<option value=\"$ligne_dpt->GFD_ID\"" ;
if ($dept == $ligne_dpt->GFD_ID) $ret .= " selected" ;
$ret .= ">$ligne_dpt->GFD_ID - $ligne_dpt->GFD_NAME</option>\n" ;
}
$ret .= "</select></td>\n" ;
$ret .= "<td class=\"insLabel\">".AM_L_MAIL."&nbsp;: </td>\n<td>".form_mk_chaineI(stripslashes($mail), "mail")."</td>\n" ;
$ret .= "<td class=\"insLabel\">".AM_L_COTISANTS." : </td>\n" ;
$ret .= "<td>".form_mk_select(stripslashes($cotisant), "cotisant")."</td>\n";
$ret .= "</tr></table>\n";
$ret .= "</td></tr>\n";
$ret .= "<tr><td><table>\n" ;
// Les statuts des inscrits
$tableau_statut = array ("0" => "Désinscrit", "1" =>"Cotisant non inscrit", "3" =>"Inscrit") ;
$ret .= "<tr>\n";
$ret .= "<td class=\"insLabel\">Statut&nbsp;:&nbsp;</td>" ;
$ret .= "<td><select name=\"statut\" class=\"insInputForm\">\n" ;
foreach ($tableau_statut as $key=>$value) {
$ret .= "<option value=\"$key\"" ;
if (!empty($HTTP_POST_VARS["statut"]) && $HTTP_POST_VARS["statut"] == $key) $ret .= " selected" ;
if (empty($HTTP_POST_VARS["statut"]) && $key == "3") $ret .= " selected" ;
$ret .= ">$value</option>\n" ;
}
$ret .= "</select></td>" ;
$ret .= "<td class=\"insLabel\" width=\"60%\">\n";
$ret .= AM_L_GRP_RES." : </td>" ;
$grp = array(20, 50, 100) ;
$ret .= "<td><select name=\"T_REPONSE\" class=\"insInputForm\">\n" ;
for ($i = 0; $i < count($grp); $i++) {
$ret .= "<option value=\"".$grp[$i]."\">".$grp[$i]."</option>\n" ;
}
$ret .= "</select></td>" ;
$ret .= "<td class=\"texte_tb\" align=\"right\" width=\"40%\">\n";
$ret .= "<input type=\"submit\" class=\"texte_tb\" value=\"".AM_L_RECHERCHER."\" name =\"bouton\">\n";
$ret .= "</td></tr></table>\n</td></tr>\n";
$ret .= "</table></form>\n";
return $ret;
}
 
/** function form_mk_chaineI () Renvoie une balise de type <input>
*
* @param string l'attribut value de la balise
* @param string l'attibut name de la balise
* @param string la classe CSS
* @return string HTML
*/
function form_mk_chaineI($value="", $name, $class="insInputForm")
{
return "<input type=\"text\" size=\"15\" value=\"$value\" name=\"$name\" class=\"$class\">";
}
 
function form_mk_select($value="", $name="", $class="insInputForm") {
$res = "<select name=\"$name\" class=\"$class\">\n" ;
$res .= "<option value=\"1\"" ;
if ($value == 1) $res .= " selected" ;
$res .= ">Cotisants</option>\n" ;
$res .= "<option value=\"2\"" ;
if ($value == 2) $res .= " selected" ;
$res .= ">Non cotisants</option>\n" ;
$res .= "<option value=\"3\"" ;
if ($value == 3 || $value == "") $res .= " selected" ;
$res .= ">Tous</option>\n" ;
$res .= "</select>\n" ;
return $res ;
}
 
function mkquery()
{
// définition des variables globales
global $lettre ;
global $bouton, $HTTP_POST_VARS ;
$mon_frag = new fragmenteur_session() ;
 
// Requete sur l'annuaire pour extraire le nom, prénom, ville, nom du département (jointure),
// l'état de la cotisation (jointure)
// le tableau suivant contient tous les champs de la table annuaire_tela sur lesquels on peut effectuer une recherche
$fields_annu = array("nom" => "U_NAME", "prenom" => "U_SURNAME" , "mail" => "U_MAIL" , "ville" => "U_CITY",
"dept" => "U_FRENCH_DPT", "pays" => "U_COUNTRY" ) ;
 
$mes_vars = array ("recherche", "nom", "ville", "mail" ,"dept", "prenom", "cotisant", "pays", "sort", "T_REPONSE", "lettre","statut") ;
 
foreach ($mes_vars as $key=>$value) {
if (!$bouton) {
if (empty($HTTP_POST_VARS[$value])) {
$$value = $mon_frag->getVariable($value);
}
} else {
$lettre = "" ;
$mon_frag->setVariable("lettre", "") ;
$mon_frag->fixerLeDebut(0) ;
if (empty ($HTTP_POST_VARS[$value])) {
$$value = "" ;
} else {
$$value = $HTTP_POST_VARS[$value] ;
}
}
}
if ($bouton) $sort = $mon_frag->getVariable("sort") ;
 
 
$queries = "select ".ANN_ANNUAIRE.".*" ;
$queries .= ", ".ANN_TABLE_PAYS.".GC_NAME ";
$queries .= "from ".ANN_ANNUAIRE ;
$queries .= ",".ANN_TABLE_PAYS ;
// Construction en fonction des champs saisies
// juste le champs "rechercher", on regarde partout
$queries .= " where (" ;
if ($lettre == "") {
if ($recherche != "") {
$queries .= "(U_NAME like '%$recherche%'" ; // le premier
foreach($fields_annu as $key=>$value) {
if ($key == "nom") continue ;
$queries .= ($key == "pays" ?
$pays == "tous" ? ")" :
") and $value = '$pays'" : " or $value like '%$recherche%'") ; // les autres
}
} else {
 
// si un ou plusieurs autres champs ont été indiqué, on les rajoute ici
 
$or_flag = false ;
foreach($fields_annu as $key=>$valeur) {
if ($key != "") {
if ($key == "pays") {
if ($$key == "tous") $queries .= ") and U_COUNTRY like '%'";
else $queries .= ") and $valeur like \"%".$$key."%\"" ;
} else {
if ($key == "dept") {
if ($$key != "tous" && isset($HTTP_POST_VARS[$key])) {
$queries .= " and U_FRENCH_DPT=".$$key ;
if ($fields_annu["pays"] != "fr") $queries .= " and U_COUNTRY=\"fr\"" ;
}
} else {
if ($or_flag) $queries .= "$valeur like \"%".$$key."%\"" ;
else $queries .= "($valeur like \"%".$$key."%\"" ;
if ($key != "ville") $queries .= " and " ;
}
}
$or_flag = true ;
}
}
// ici le cas ou rien n'a été saisie du tout, on affiche tout
if (!$or_flag) {
$queries .= "U_NAME like '%')" ;
}
}
} else {
if ($lettre == "tous") $lettre = "" ;
$queries .="U_NAME like '$lettre%'" ;
}
$queries .= ")" ;
$queries .= " and ".ANN_ANNUAIRE.".U_COUNTRY=".ANN_TABLE_PAYS.".GC_ID" ;
if (isset($cotisant) && $cotisant != 3) if ($cotisant == 1) {
$queries .= " and ".ANN_ANNUAIRE.".U_COT=$cotisant" ;
} else {
$queries .= " and ".ANN_ANNUAIRE.".U_COT=0" ;
}
if (isset($nom) && $nom != "") $queries .= " and U_NAME like \"%$nom%\"" ;
if (isset($prenom) && $prenom != "") $queries .= " and U_SURNAME like \"%$prenom%\"" ;
if (isset($ville) && $ville != "") $queries .= " and U_CITY like \"%$ville%\"" ;
if (isset($mail) && $mail != "") $queries .= " and U_MAIL like \"%$mail%\"" ;
if (isset($statut) && $statut != "") $queries .= " and U_SHOW=$statut" ; else $queries .= " and U_SHOW=0" ;
if (isset($sort) && $sort != "") $queries .= " order by $sort" ;
return $queries;
}
function mkresu()
{
global $HTTP_HOST, $SCRIPT_URL, $SCRIPT_NAME, $bouton ;
$mon_frag = new fragmenteur_session() ;
$mon_frag->setURL($GLOBALS['ann_url']->getURL()) ;
if ($bouton) $mon_frag->fixerLeDebut(0) ;
$requete = mkquery() ;
 
// Deux requetes, une avec tous les resultats, l'autre avec les résultats affichés
$result_total = mysql_query($requete) or print ("Echec de la requete <br>$requete<br>".mysql_error()) ;
// Affichage de la requete
$ret_req = "<tr class=\"texte_tb\"><td><br><b>La requete : </b><br>$requete".
" limit ".$mon_frag->lireLeDebut().",".$mon_frag->lireLePas()."</td></tr>\n" ;
$result_final = mysql_query($requete." limit ".$mon_frag->lireLeDebut().",".$mon_frag->lireLePas()) or print (mysql_error());
$nbr_final = mysql_num_rows($result_total) ;
mysql_free_result($result_total) ;
// cxt_addVariable(AM_BD_BOTA, AM_BD_LINK, "requete_mail_tous", $requete) ;
$_SESSION['requete_mail_tous'] = $requete ;
$ret = "<div><table><tr>" ;
for ($i = 65 ; $i <91 ; $i++) {
$ret .= "\t<td><a href=\"".$GLOBALS['ann_url']->getURL()."&lettre=";
$ret .= chr($i)."\">";
$ret .= chr($i) ;
$ret .= "</a></td>\n";
}
 
$ret .= "<td>&nbsp;&nbsp;<a href=\"".$GLOBALS['ann_url']->getURL()."&lettre=tous\">".AM_L_TOUS."</a></td>\n" ;
$ret .= "<tr></table></div>\n" ;
$ret .= "<div>".$mon_frag->affNbRes($nbr_final).'</div>' ;
$ret .= "<div>".$mon_frag->fragmente($nbr_final)."</div>\n" ;
if ($nbr_final != 0) {
$ret .= "<div><table>\n";
$ret .= "<tr class=\"insTitle1\"><td nowrap><a href=\"".$GLOBALS['ann_url']->getURL()."&amp;sort=U_NAME\">Identit&eacute;</a></td>\n";
$ret .= "<td><a href=\"".$GLOBALS['ann_url']->getURL()."&amp;sort=U_MAIL\">Adresse mail</a></td>\n" ;
$ret .= "<td><a href=\"".$GLOBALS['ann_url']->getURL()."&amp;sort=U_CITY\">".AM_L_VILLE."</a></td>\n" ;
$ret .= "<td>Pays ou Dpt (fr)</td>\n" ;
$ret .= "<td><a href=\"".$GLOBALS['ann_url']->getURL()."&amp;sort=U_COT\">".AM_L_COTISANTS."</a></td></tr>\n" ;
 
$cotisant = array( "non", "oui") ;
 
$pair = true ; // pour afficher une ligne de résultat coloré, l'autre non
 
while ($row = mysql_fetch_object($result_final))
{
$ret .= "<tr class=\"texte_tb2\"";
if ($pair) {
$ret .= " bgcolor=\"\"" ;
$pair = false ;
} else {
$pair = true ;
}
$ret .= ">" ;
$ret .= "\n<td nowrap>";
$urlPop = $GLOBALS['ann_url']->getURL()."&amp;u_id=$row->U_ID";
$ret .= "<a href=\"$urlPop\">" ;
$ret .= $row->U_NAME." ".$row->U_SURNAME ;
$ret .= "</a></td>\n ";
$ret .= "<td><a href=\"mailto:$row->U_MAIL\">$row->U_MAIL</a></td>\n" ;
$ret .= "<td>$row->U_CITY</td>" ;
if ($row->U_COUNTRY != 'fr') {
$ret .= "<td>$row->GC_NAME</td>" ;
} else {
$req_dpt = "select GFD_NAME from ".ANN_TABLE_DEPARTEMENT.",".ANN_ANNUAIRE." where ".ANN_ANNUAIRE.".U_ID=$row->U_ID" ;
$req_dpt .= " and ".ANN_ANNUAIRE.".U_FRENCH_DPT=".ANN_TABLE_DEPARTEMENT.".GFD_ID" ;
$resultat_dpt = mysql_query($req_dpt) or die ("Echec de la requete sur ".ANN_TABLE_DEPARTEMENT."<br>".mysql_error()) ;
$ligne_dpt = mysql_fetch_object($resultat_dpt) ;
$ret .= "<td>$ligne_dpt->GFD_NAME</td>" ;
}
$ret .= "<td>".$cotisant[$row->U_COT]."</td></tr>\n" ;
}
 
$ret .= "</table></div>\n" ;
$ret .= "<div>".$mon_frag->fragmente($nbr_final)."</div>\n" ;
$ret .= "<div><a href=\"".$GLOBALS['ann_url']->getURL()."&amp;action=".ANN_MAIL_TOUS."\">".AM_L_MAIL_SELECTION."</a></div>\n" ;
}
// $ret .= $ret_req ;
return $ret;
}
 
/** function presa_mk_blkline () insere des lignes vides du type <tr><td>&nbsp;</td></tr>
*
*
* @param integer nombre de ligne à insérer
* @return string HTML
*/
 
function presa_mk_blkline ($nombre) {
$res = "" ;
for ($i = 0; $i < $nombre; $i++) {
$res .= "<tr><td>&nbsp;</td></tr>\n" ;
}
return $res ;
}
 
?>
/trunk/client/ins_annuaire/bibliotheque/voir_recu_pdf.php
New file
0,0 → 1,39
<?php
// +----------------------------------------------------------------------------+
// |recu_pdf.php |
// +----------------------------------------------------------------------------+
// | Copyright (c) 2003 Tela Botanica |
// +----------------------------------------------------------------------------+
// | Ce fichier génère un fichier PDF |
// | contenant le recu pour une cotisation à Tela Botanica |
// | Il utilise la librairie FPDF |
// | http://www.fpdf.org/ |
// | |
// | Recoie $cotisation_id en parametre |
// +----------------------------------------------------------------------------+
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> |
// +----------------------------------------------------------------------------+
//
// $Id: voir_recu_pdf.php,v 1.1 2005-04-06 13:33:32 florian Exp $
 
 
// Inclusion des fichiers nécessaire à une connection
include_once ("../../papyrus/configuration/pap_config.inc.php") ;
include_once 'DB.php' ;
 
$db = DB::connect (PAP_DSN) ;
 
include_once "../../api/fpdf/fpdf.php";
 
$envoie = 1 ;
 
include_once "recu_pdf_corps.php" ;
 
 
// buffer est une propriété de la classe FPDF qui contient les données au format PDF.
// habituellement on ne l'utilise pas, on appelle $pdf->Output() qui envoie les
// entete HTTP du document généré
 
$pdf->Output() ;
 
?>
/trunk/client/ins_annuaire/bibliotheque/edition_fiche.php
New file
0,0 → 1,504
<?php
 
// +--------------------------------------------------------------------------------+
// | admin_annu.php |
// +--------------------------------------------------------------------------------+
// | Copyright (c) 2002 |
// +--------------------------------------------------------------------------------+
// | Administration des inscrits à un annuaire de type annuaire_tela |
// | de Gsite, |
// | Sont également mises en jeux les tables gen_COUNTRY, gen_FRENCH_DPT, |
// | LABELS |
// | Plus spécifique la fonction cotisation($id) en bas permet de |
// | gérer les cotisations versées par les inscrits, avec la table |
// | annuaire_COTISATION |
// +--------------------------------------------------------------------------------+
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> |
// +--------------------------------------------------------------------------------+
//
// $Id: edition_fiche.php,v 1.1 2005-04-06 13:33:32 florian Exp $
 
 
global $HTTP_HOST ;
 
define ("URL_RECU", $GLOBALS['ann_url']->protocol. '://'.$GLOBALS['ann_url']->host."/client/annuaire/voir_recu_pdf.php") ;
 
include_once ("HTML/Table.php") ;
include_once 'api/formulaire/FORM_formulaire.class.php' ;
 
// admin_annu est une application cliente de gsite elle commence donc
// dans une fonction putFrame()
 
 
function putFrame()
{
global $u_id, $cotisation_id ;
global $action ;
global $link ;
 
if (empty($action)) $action = false ;
 
$url = $GLOBALS['ann_url']->getURL() ;
 
// mise à jour si il y lieu
 
if ($action == "up") {
upSQL() ;
}
 
// Requete de pour récupérer toutes les infos d'un usager
 
$query = "select annuaire_tela.*,annuaire_LABEL_ACT.*,annuaire_LABEL_ASS.*,gen_COUNTRY.GC_NAME" ;
$query .= ", annuaire_LABEL_NIV.*, annuaire_LABEL_STATUT.*" ;
$query .= " from annuaire_tela,gen_COUNTRY,gen_FRENCH_DPT," ;
$query .= " annuaire_LABEL_ACT,annuaire_LABEL_ASS, annuaire_LABEL_NIV, annuaire_LABEL_STATUT" ;
$query .= " where U_ID=$u_id" ;
//$query .= " and annuaire_tela.U_FRENCH_DPT=gen_FRENCH_DPT.GFD_ID" ;
$query .= " and annuaire_tela.U_COUNTRY=gen_COUNTRY.GC_ID" ;
$query .= " and annuaire_tela.U_ACT=annuaire_LABEL_ACT.ID_LABEL_ACT" ;
$query .= " and annuaire_tela.U_ASS=annuaire_LABEL_ASS.ID_LABEL_ASS" ;
$query .= " and annuaire_tela.U_NIV=annuaire_LABEL_NIV.ID_LABEL_NIV" ;
$query .= " and annuaire_tela.U_SHOW=annuaire_LABEL_STATUT.ID_LABEL_STATUT" ;
 
$result = mysql_query($query) or die("Echec de la requete sur ".ANN_ANNUAIRE.":<br>".mysql_error().'<br>'.$query) ;
 
$row = mysql_fetch_object($result) ;
 
$res = "<h1>Edition d'un adh&eacute;rent : $row->U_NAME $row->U_SURNAME</h1>\n" ;
$res .= "<div>".form("Nom : ", "U_NAME", $row->U_NAME)."</div>\n" ;
$res .= "<div>".form("Pr&eacute;nom : ", "U_SURNAME", $row->U_SURNAME)."</div>\n" ;
$res .= "<div>".form("Adresse mail : ", "U_MAIL", $row->U_MAIL)."</div>\n" ;
$res .= "<div>".form("Date d'inscription : ", "U_DATE", $row->U_DATE)."</div>\n" ;
$res .= "<div>".form("Adresse 1 : ", "U_ADDR1", $row->U_ADDR1)."</div>\n" ;
$res .= "<div>".form("Adresse 2 : ", "U_ADDR2", $row->U_ADDR2)."</div>\n" ;
$res .= "<div>".form("Région : ", "U_STATE", $row->U_STATE)."</div>\n" ;
$res .= "<div>".form("Code postal : ", "U_ZIP_CODE", $row->U_ZIP_CODE)."</div>\n" ;
$res .= "<div>".form("Ville : ", "U_CITY", $row->U_CITY)."</div>\n" ;
$res .= "<div>".form("Pays : ", "U_COUNTRY", $row->U_COUNTRY)."</div>\n" ;
$res .= "<div>".form("Site web personnel : ", "U_WEB", $row->U_WEB)."</div>\n" ;
$res .= "<div>".form("Organisme : ", "U_TITLE", $row->U_TITLE)."</div>\n" ;
$res .= "<div>".form("Fonction : ", "U_FONCTION", $row->U_FONCTION)."</div>\n" ;
$res .= "<div>".form("Niveau en botanique : ", "LABEL_NIV", $row->LABEL_NIV)."</div>\n" ;
$res .= "<div>".form("Activit&eacute; : ", "LABEL_ACT", $row->LABEL_ACT)."</div>\n" ;
$res .= "<div>".form("Secteur associatif : ", "LABEL_ASS", $row->LABEL_ASS)."</div>\n" ;
$res .= "<div>".form("Sp&eacute;cialit&eacute; : ", "U_SPE", $row->U_SPE)."</div>\n" ;
$res .= "<div>".form("Sp&eacute;cialit&eacute; g&eacute;ographique : ", "U_GEO", $row->U_GEO)."</div>\n" ;
$res .= "<div>".form("Statut : ", "LABEL_STATUT", $row->LABEL_STATUT)."</div>\n" ;
if (isset($cotisation_id) && $cotisation_id != "") {
$db = & $GLOBALS['ann_db'];
include_once ANN_CHEMIN_APPLI."recu_pdf_corps.php" ;
// buffer est une propriété de la classe FPDF qui contient les données au format PDF.
// habituellement on ne l'utilise pas, on appelle $pdf->Output() qui envoie les
// entete HTTP du document généré
 
$pdf->Close() ;
$buf = $pdf->buffer;
 
// Inclusion des bibliothèques PEAR
 
include_once ('Mail.php');
include_once ('Mail/mime.php');
 
$file = 'Recu_Fiscal_Tela_Botanica.pdf';
$crlf = "\r\n";
$hdrs = array(
'From' => 'accueil@tela-botanica.org',
'Subject' => 'Reçu pour don à Tela Botanica'
);
 
$mime = new Mail_mime($crlf);
$text = "Bonjour !\n\n".
"Le Réseau Tela Botanica vous remercie du soutien financier que vous lui avez apporté. Votre contribution permettra au réseau :\n\n".
"- de continuer à encourager et accompagner des projets botaniques,\n".
"- de maintenir et d'améliorer nos services Internet dédiés à la botanique.\n\n".
"Vous trouverez en pièce jointe à ce message un document PDF contenant le reçu fiscal à imprimer".
" et à joindre à votre déclaration d'impôts. Si vous n'arrivez pas à imprimer ce document, veuillez".
" nous le signaler en répondant à ce mail et en indiquant votre nom et votre adresse postale. Nous vous".
" ferons parvenir le reçu imprimé à cette adresse.\n\n".
"Rappel : Votre contribution financière ne constitue pas une adhésion à l'Association Tela Botanica mais ".
"bien un soutien aux actions menées par le Réseau Tela Botanica.\n\n".
"Si ce n'est déjà fait, n'oubliez pas de vous inscrire au Réseau sur le site Internet, à l'adresse : ".
"http://www.tela-botanica.org (menu « Inscription», onglet « Inscription»), afin que vous puissiez :\n\n".
"- consulter l'annuaire des personnes inscrites au Réseau ;\n- localiser les membres du Réseau dans tous".
" les pays;\n- accédez à certaines données diffusées sur le site ;\n- vous inscrire à des projets ".
"botaniques ;\n- être informé personnellement des actualités du Réseau.\n\n".
"Bien cordialement,\n\n".
"Tela Botanica\nLe Réseau des Botanistes Francophones\n163, rue A. Broussonnet\n34090 Montpellier\n".
"Tél. : 04-67-52-41-22\naccueil@tela-botanica.org\nhttp://www.tela-botanica.org\n" ;
$mime->setTXTBody($text);
 
// On attache le document PDF grace à $buf, et en indiquant son type MIME
$mime->addAttachment($buf, 'application/pdf', $file, false) ;
 
$body = $mime->get();
$hdrs = $mime->headers($hdrs);
 
$mail =& Mail::factory('mail');
$mail->send($ligne->U_MAIL, $hdrs, $body);
 
// On insere le numéro du reçu dans la table annuaire_COTISATION
@mysql_query("update annuaire_COTISATION set IC_RECU=$num_recu, IC_DATE_ENVOIE_RECU=NOW() where IC_ID=$cotisation_id") ;
 
// On incrémente le compteur de mail de 1
if (!$deja_envoye) {
$num_recu++ ;
mysql_query("update COMPTEUR_COTISATION set COMPTEUR=$num_recu ") ;
}
$res .= "<div>Le reçu a été envoyé</div>\n" ;
}
$res .= cotisation($u_id) ;
$res .= suppression($u_id) ;
return $res ;
}
 
 
// form construit soit un formulaire de type <input type="text" ...> et
// de nom $field_ et place un $label devant
// soit construit un lien vers un formulaire à partir du champs $field_
 
 
function form($label, $field_, $value)
{
global $u_id, $GS_GLOBAL, $field ;
 
$url = $GLOBALS['ann_url']->getURL() ;
 
if ($field != $field_) {
$res = "<b>$label</b>" ;
$res .= "<a href=\"$url&amp;field=$field_\">" ;
if ($field_ == 'LABEL_NIV' || $field_ == 'LABEL_ACT' || $field_== 'LABEL_ASS') {
$res .= $value ? $value : "(vide)";
} else if ($field_ == "U_COT") {
if ($value == 0) {
$res .= "non" ;
} else {
$res .= "oui" ;
}
} else {
$res .= $value ? $value : "(vide)";
}
$res .= "</a>\n" ;
}
if ($field == $field_) {
$res = "\n<form action=\"$url&amp;u_id=$u_id&amp;action=up&amp;field_=$field_\" method=\"post\">" ;
$res .= "<b>$label</b>\n" ;
switch ($field_) {
case "U_COUNTRY" :
$select_country = new form($GS_GLOBAL['link']) ;
$res .= ereg_replace("gen_COUNTRY", "U_COUNTRY", $select_country->selectFromTable("gen_COUNTRY", $value, "GC_ID", "GC_NAME")) ;
unset($select_country) ;
break ;
 
case "LABEL_NIV" :
$res .= getFormInsInfo($field_, $value) ;
break ;
 
case "LABEL_ASS" :
$res .= getFormInsInfo($field_, $value) ;
break ;
 
case "LABEL_ACT" :
$res .= getFormInsInfo($field_, $value) ;
break ;
 
case "LABEL_STATUT" :
$res .= getFormInsInfo($field_, $value) ;
break ;
 
case "U_COT" :
$res .= "<select class=\"insInputForm\" name=\"II_COT\">\n" ;
if ($value == 0) {
$check0 = " selected" ;
$check1 = "" ;
} else {
$check1 = " selected" ;
$check0 = "" ;
}
$res .= "<option value=\"0\"$check0>non</option>\n" ;
$res .= "<option value=\"1\"$check1>oui</option>\n" ;
$res .= "</select>\n" ;
break ;
 
default :
$res .= "<input type=\"text\" size=\"40\" name=\"$field_\" value=\"$value\">\n" ;
}
$res .= "<input type=\"submit\" value=\"valider\" class=\"texte_tb\">\n" ;
$res .= "</form>" ;
}
return $res ;
}
 
 
// upSQL met à jour la table annuaire_tela
 
function upSQL()
{
global $field_ ;
global $u_id ;
global $HTTP_POST_VARS ;
switch ($field_) {
case "LABEL_STATUT" : $field_ = "U_SHOW" ;
$id_field = "ID_LABEL_STATUT";
break ;
case "LABEL_NIV" : $field_ = "U_NIV" ;
$id_field = "ID_LABEL_NIV";
break ;
case "LABEL_ACT" : $field_ = "U_ACT" ;
$id_field = "ID_LABEL_ACT";
break ;
case "LABEL_ASS" : $field_ = "U_ACT" ;
$id_field = "ID_LABEL_ASS";
break ;
default :$id_field = $field_ ;
}
 
// Recherche de l'ancien mail
$req_am = "select U_MAIL from annuaire_tela where U_ID = $u_id" ;
$res_am = mysql_query ($req_am) or die ("Echec ".mysql_error()) ;
$ligne_am = mysql_fetch_object ($res_am) ;
$ancien_mail = $ligne_am->U_MAIL ;
 
$query = "update annuaire_tela set $field_=\"".$HTTP_POST_VARS[$id_field]."\" where U_ID = $u_id" ;
mysql_query($query) or die ("<br>Echec de la requete de mise à jour<br>\n") ;
 
// Traitement du département
if ($field_ == "U_ZIP_CODE") {
if (preg_match("/^97|98[0-9]*/", $HTTP_POST_VARS['U_ZIP_CODE'])) {
$n_dpt = substr($HTTP_POST_VARS['U_ZIP_CODE'], 0, 3) ;
} else {
$n_dpt = substr($HTTP_POST_VARS['U_ZIP_CODE'], 0, 2) ;
}
mysql_query ("update annuaire_tela set U_FRENCH_DPT='$n_dpt' where U_ID='$u_id'") ;
}
 
// Traitement de l'adresse mail
 
 
if ($field_ == "U_MAIL") {
$requete = "update ins_STATS set IS_MAIL=\"".$HTTP_POST_VARS['U_MAIL']."\" where IS_MAIL=\"$ancien_mail\"" ;
mysql_query ($requete) ;
}
}
 
function getFormInsInfo($field, $value)
{
 
$query = "select * from annuaire_$field" ;
$id_field = "ID_$field" ;
$result = mysql_query($query) or die ("Echec de la requete sur ID_$field<br>".mysql_error()) ;
 
$res = "<select name=\"$id_field\" class=\"insInputForm\">\n" ;
$i = 0 ;
while ($row = mysql_fetch_object($result)) {
 
$res .= "<option value=\"".$row->$id_field."\"" ;
if ($value == $row->$field) $res .= " selected";
$res .= ">" ;
$res .= $row->$field ;
$res .= "</option>\n" ;
$i++ ;
}
$res .= "</select>\n" ;
return $res ;
}
 
// Fonction pour gérer les cotisations d'un inscrit, en
// fonction de son id ($u_id)
 
function cotisation($u_id)
{
global $GS_GLOBAL, $action, $IC_MONTANT, $IC_DATE, $id_cot, $IC_MC_ID ;
 
$res = '' ;
// un peu de javascript pour la confirmation en cas de destruction
 
$outputText = "function confirmLink(theLink, theSqlQuery)
{
var is_confirmed = confirm(theSqlQuery);
return is_confirmed;
} " ;
 
// fonction gsite pour inclure la fonction Javascript
// au code html
 
GEN_stockerCodeScript($outputText) ;
 
$url = $GLOBALS['ann_url']->getURL() ;
 
// Ce qui suit sont le traitement des 3 actions ajouter, modifier, supprimer
// qui agissent sur la table annuaire_COTISATION
 
// l'action 'cu' consiste en l'insertion d'une ligne dans la table annuaire_COTISATION
 
if ($action == "cu") {
$date = preg_replace("/([0-9]+)-([0-9]+)-([0-9]+)/", "\\3\\2\\1", $IC_DATE) ;
$query = "insert into annuaire_COTISATION values (\"\", $IC_MC_ID, $u_id, UNIX_TIMESTAMP($date),\"$IC_MONTANT\", 0, \"0000-00-00\")" ;
mysql_query ($query) or die ("Echec de la requete d'insertion dans annuaire_COTISATION<br>$query<br>".mysql_error()) ;
mysql_query("update annuaire_tela set U_COT=1 where U_ID=$u_id") ;
}
 
// l'action 'mu' permet de mettre à jour une ligne dans annuaire_COTISATION
 
if ($action == "mu") {
$date = preg_replace("/([0-9]+)-([0-9]+)-([0-9]+)/", "\\3\\2\\1", $IC_DATE) ;
$query = "update annuaire_COTISATION set IC_DATE=UNIX_TIMESTAMP($date), IC_MONTANT=\"$IC_MONTANT\",
IC_MC_ID=$IC_MC_ID where IC_ID=$id_cot" ;
mysql_query ($query) or die ("Echec de la requete d'insertion dans annuaire_COTISATION<br>$query<br>".mysql_error()) ;
}
 
// l'action 'rm' retire une ligne de la table annuaire_COTISATION
 
if ($action == "rm") {
$query = "delete from annuaire_COTISATION where IC_ID=$id_cot" ;
mysql_query ($query) or die ("Echec de la requete de suppression dans annuaire_COTISATION") ;
mysql_query("update annuaire_tela set U_COT=0 where U_ID=$u_id") ;
}
 
// Quoi qu'il arrive, on récupère les informations concernant
// les cotisations d'un inscrit et on les affiche sous forme de
// table HTML
 
$query = "select * from annuaire_COTISATION, MODE_COTISATION where IC_ANNU_ID=$u_id
and IC_MC_ID=MC_ID" ;
$result = mysql_query($query) or die ("Echec de la requete sur annuaire_COTISATION<br>".$query) ;
$res = "<h1>Etat des cotisations : </h1>" ;
 
// formatage de la date
$date = date("d-m-Y") ;
 
 
// l'action 'sc' correspond à l'édition d'une ligne de la table
// annuaire_COTISATION. Si elle est présente on affiche un formulaire
// de modification
 
if ($action == "sc") {
 
$res .= "<div><form action=\"$url&action=cu\" method=\"post\"><b>Date : </b>" ;
$res .= "<input type=\"text\" size=\"9\" class=\"insInputForm\" name=\"IC_DATE\" value=\"";
$res .= $date ;
$res .= "\">\n" ;
$res .= "<b>Montant : </b><input type=\"text\" class=\"insInputForm\" size=\"5\" name=\"IC_MONTANT\" value=\"30\"> &euro;\n" ;
$res .= mode_paiement(0) ;
$res .= "<input type=\"submit\" value=\"Valider\" class=\"texte_tb\">\n" ;
$res .= "<input type=\"button\" value=\"Annuler\" class=\"texte_tb\" onclick=\"javascript:window.location.href='$url';\"></form>\n" ;
$res .= "</div>\n" ;
 
// si l'action 'sc' n'est pas active on affiche toutes les lignes
// de cotisation de l'inscrit
 
} else {
if (mysql_num_rows($result) != 0) {
$res .= "<div>" ;
$table = new HTML_Table(array("width" => "100%", "class" => "texte_tb2")) ;
$table->addRow(array("Date", "Montant", "Mode", "modifier", "supprimer", "Voir le reçu", "Envoyer le reçu",
"Date d'envoie du reçu"),
array("class" => "insTitle1")) ;
 
while ($row = mysql_fetch_object($result)) {
// Le reçu a t il été envoyé ?
if ($row->IC_RECU != 0) {
$message_envoye = $row->IC_DATE_ENVOIE_RECU ; ;
} else {
$message_envoye = "Reçu non envoyé";
}
if ($action != "mc" || $id_cot != $row->IC_ID) {
$table->addRow(array (date ("j m Y", $row->IC_DATE), $row->IC_MONTANT." <b>&euro;</b>", $row->MC_LABEL,
"<a href=\"$url&amp;action=mc&amp;id_cot=$row->IC_ID\">modifier</a>",
"<a href=\"$url&amp;action=rm&amp;id_cot=$row->IC_ID\"".
" onclick=\"javascript:return confirmLink(this, '&ecirc;tes-vous".
" s&ucirc;r de vouloir supprimer cette entr&eacute;e');\">supprimer</a>",
"<a href=\"".URL_RECU."?cotisation_id=$row->IC_ID\">Voir le reçu</a>",
"<a href=\"$url&cotisation_id=$row->IC_ID\">Envoyer le reçu</a>",
$message_envoye)) ;
} else {
// Recherche du mode de paiement
 
$table->addRow(array("<form action=\"$url&amp;action=mu&amp;id_cot=$row->IC_ID\" method=\"post\">\n".
"<input type=\"text\" size=\"9\" class=\"insInputForm\" name=\"IC_DATE\" value=\"".date ("j-m-Y", $row->IC_DATE)."\">",
"<input type=\"text\" size=\"5\" class=\"insInputForm\" name=\"IC_MONTANT\" value=\"$row->IC_MONTANT\"><b>&euro;</b>",
mode_paiement($row->IC_MC_ID),
"<input type=\"submit\" class=\"texte_tb\" value=\"valider\">".
"<input type=\"button\" value=\"Annuler\" class=\"texte_tb\" onclick=\"javascript:window.location.href='$url';\"></form>",
"&nbsp;")) ;
}
}
$table->altRowAttributes(1, array("class" => "texte_tb2"), array("class" => "text2")) ;
$res .= $table->toHTML()."</div>\n" ;
unset($table) ;
} else {
$res .= "<div>non cotisant</div>\n" ;
}
$res .= "<div><input type=\"button\" class=\"texte_tb\" " ;
$res .= "value=\"Saisir une cotisation\" onclick=\"javascript:window.location.href='$url&action=sc';\"></div>\n" ;
}
 
return $res ;
}
 
function suppression($u_id) {
global $GS_GLOBAL, $action ;
 
// un peu de javascript pour la confirmation en cas de destruction
 
$outputText = "function confirmLink(theLink, theSqlQuery)
{
var is_confirmed = confirm(theSqlQuery);
return is_confirmed;
} " ;
 
// fonction gsite pour inclure la fonction Javascript
// au code html
 
GEN_stockerCodeScript($outputText) ;
 
$url = $GLOBALS['ann_url']->getURL() ;
 
$res = "<div>Supprimer l'inscription</div>\n" ;
$res .="<div><form action=\"$url&action=suppr_adh\" method=\"post\">\n" ;
$res .= "<input type=\"submit\" class=\"texte_tb\" value=\"Supprimer\" " ;
$res .= "onclick=\"javascript:return confirmLink(this, '&ecirc;tes-vous s&ucirc;r de vouloir supprimer cet adh&eacute;rent');\">\n" ;
$res .= "</form></div>\n" ;
 
if ($action=="suppr_adh") {
$queryLogin = "select U_MAIL from annuaire_tela where U_ID=$u_id" ;
$resultLogin = mysql_query($queryLogin) or die ("Echec de la requete sur annu_USERS");
$rowLogin = mysql_fetch_object($resultLogin) ;
$mail = $rowLogin->U_MAIL ;
mysql_free_result($resultLogin) ;
 
// vérifications
// 1. annu_ADMIN
$q_annu_ADMIN = "select AA_ID from annu_ADMIN where AA_ID=$u_id" ;
$r_annu_ADMIN = mysql_query($q_annu_ADMIN) or die ("Echec ..." );
if (mysql_num_rows($r_annu_ADMIN) != 0) {
$res .= "Une référence dans annu_ADMIN" ;
}
 
// 2.
// suppression
 
$query = "delete from annuaire_tela where U_ID=$u_id" ;
}
return $res ;
}
 
/** function mode_paiement () Produit un champs select avec le mode de paiement
*
*
* @param integer mode de paiement par defaut
* @return string HTML
*/
function mode_paiement ($defaut) {
$res = "<select name=\"IC_MC_ID\" class=\"insInputForm\">\n" ;
$req_mode = "select * from MODE_COTISATION" ;
$res_mode = mysql_query($req_mode) or die ($req_mode."<br>".mysql_error()) ;
while ($ligne_mode = mysql_fetch_object($res_mode)) {
$res .= "<option value=\"$ligne_mode->MC_ID\"" ;
if ($ligne_mode ->MC_ID == $defaut) $res .= " selected" ;
$res .= ">$ligne_mode->MC_LABEL</option>\n" ;
}
$res .= "</select>\n" ;
return $res ;
}
 
?>
/trunk/client/ins_annuaire/bibliotheque/inscription.fonct.php
New file
0,0 → 1,553
<?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: inscription.fonct.php,v 1.1 2005-04-06 13:33:32 florian Exp $
// CVS : $Id: inscription.fonct.php,v 1.1 2005-04-06 13:33:32 florian Exp $
/**
* Fonctions du module inscription
*
* Fonctions du module inscription
*
*@package inscription
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2005-04-06 13:33:32 $
*@version $Revision: 1.1 $ $Date: 2005-04-06 13:33:32 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
include_once 'inscription.fonct.wiki.php' ;
if (INS_UTILISE_SPIP) include_once 'inscription.fonct.spip.php' ;
require_once 'HTML/QuickForm.php' ;
require_once 'HTML/QuickForm/checkbox.php' ;
require_once 'HTML/QuickForm/password.php' ;
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
 
/**
*
* @param array les valeurs renvoyés par le formulaire
* @return
*/
// A COMPLETER , NE MARCHE PAS
function demande_inscription($valeurs) {
// On stocke les informations dans un variable de session
$_SESSION['donnees_inscription'] = $valeurs ;
// On envoie un email de confirmation pour l'utilisateur
$GLOBALS['ins_url']->addQueryString('id', session_id()) ;
mail($GLOBALS['email'], INS_ENTETE_INSCRIPTION, INS_MESSAGE_VALIDER_INSCRIPTION.$GLOBALS['ins_url']->getURL()) ;
}
 
/**
*
* @param array les valeurs renvoyés par le formulaire
* @return
*/
 
function inscription_validee($valeurs) {
insertion($valeurs) ;
$GLOBALS['AUTH']->username = $valeurs['email'] ;
$GLOBALS['AUTH']->password = $valeurs['mot_de_passe'] ;
// On loggue l'utilisateur
$GLOBALS['AUTH']->login() ;
// inscription à la lettre d'information
if (isset ($valeurs['lettre'])) {
inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ;
}
}
 
/**
* Réalise l'insertion dans la base de donnée
*
* @param array un tableau de valeur avec en clé les noms des champs du formulaire
* @return void
*/
 
function AUTH_formulaire_login($msg = '') {
//--------------------------------------------------------------------------
// Le formulaire
//--------------------------------------------------------------------------
$res = '';
if ($msg!='') {$res .= $msg.'<br /><br />';}
$res .= '<br /><div>'.INS_DEJA_INSCRIT.'</div><br />'."\n" ;
$GLOBALS['ins_url']->removeQueryString('action') ;
$form = new HTML_QuickForm('inscription', 'post', str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL())) ;
$form->addElement('text', 'username', INS_EMAIL) ;
$form->addElement('password', 'password', INS_MOT_DE_PASSE) ;
$form->addElement('submit', 'valider', INS_VALIDER);
$res .= $form->toHTML()."\n" ;
$res .= '<div>'.INS_TEXTE_PERDU.'</div><br /><br />'."\n" ;
$GLOBALS['ins_url']->addQueryString('action', 'inscription') ;
$form = new HTML_QuickForm('inscription', 'post', preg_replace ('/&amp;/', '&', str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL()))) ;
$form->addElement('submit', 'Inscription', INS_INSCRIPTION_PERSONNE) ;
if (INS_FORMULAIRE_STRUCTURE) $form->addElement('submit', 'form_structure', INS_INSCRIPTION_STRUCTURE) ;
$res .= "<div>".INS_LAIUS_INSCRIPTION_2."</div>\n" ;
$res .= $form->toHTML() ;
return $res;
}
 
/** message_erreur () - Renvoie le code HTML d'un message d'erreur
*
* @return string HTML
*/
 
function message_erreur() {
$res = '';
$url = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
$res .= "<div class=\"inscription_erreur\">".INS_ERREUR_LOGIN."</div>\n" ;
$res .= "<div>".INS_SI_PASSE_PERDU."</div>\n" ;
$res .= '<div>' ;
$res .= '<form action="'.$url.'&action=sendpasswd" method="post">'."\n" ;
$res .= INS_EMAIL.'&nbsp;' ;
$res .= '<input type="text" value="'.$_POST['username'].'" name="mail" size="32" /></li></ul>'."\n" ;
$res .= "<input type=\"submit\" value=\"".INS_ENVOIE_PASSE."\" />" ;
$res .= "</form></div>\n" ;
 
// On remet le formulaire d'inscription mais un peu réduit
$res .= '<br /><h3 class="titre2_inscription">'.INS_DEJA_INSCRIT.'</h3>' ;
$form = new HTML_QuickForm ('inscription', 'post', $url) ;
$form->addElement ('text', 'username', INS_EMAIL) ;
$form->addElement ('password', 'password', INS_MOT_DE_PASSE) ;
$form->addElement('submit', 'valider', INS_VALIDER);
$res .= $form->toHTML() ;
$res .= '<h3 class="titre2_inscription">'.INS_PAS_INSCRIT.'</h3>' ;
$GLOBALS['ins_url']->addQueryString('action', 'inscription') ;
$form = new HTML_QuickForm('inscription', 'post', preg_replace ('/&amp;/', '&', str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL()))) ;
$form->addElement('submit', 'Inscription', INS_INSCRIPTION) ;
if (INS_FORMULAIRE_STRUCTURE) $form->addElement('submit', 'form_structure', INS_INSCRIPTION_STRUCTURE) ;
$res .= "<div>".INS_LAIUS_INSCRIPTION_2."</div>\n" ;
$res .= $form->toHTML() ;
return $res;
}
 
function insertion($valeur) {
// =========== Insertion dans l'annuaire gen_annuaire ===================
 
$id_administrateur = nextId(INS_ANNUAIRE, INS_CHAMPS_ID, $GLOBALS['ins_db']) ;
$requete = 'insert into '.INS_ANNUAIRE.' set '.
INS_CHAMPS_ID.'="'.$id_administrateur.'",'.
requete_annuaire($valeur) ;
 
$resultat = $GLOBALS['ins_db']->query ($requete) ;
if (DB::isError($resultat)) {
die ($resultat->getMessage().$resultat->getDebugInfo()) ;
}
 
// ================ Insertion dans SPIP =========================================
if (INS_UTILISE_SPIP) {
inscription_spip($id_administrateur, $valeur) ;
}
//inscription_interwikini_users() ;
}
 
/**
* Réalise une mise à jour dans la base de donnée
*
* @param array un tableau de valeur avec en clé les noms des champs du formulaire
* @return void
*/
function mise_a_jour($valeur) {
// ====================Mise à jour dans l'annuaire gen_annuaire ====================
$requete = 'update '.INS_ANNUAIRE.' set '.
requete_annuaire ($valeur).
'where '.INS_CHAMPS_ID.'="'.$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID).'"';
$resultat = $GLOBALS['ins_db']->query ($requete) ;
if (DB::isError($resultat)) {
die ($resultat->getMessage().$resultat->getDebugInfo()) ;
}
unset ($resultat) ;
 
// ========================= Mise à jour dans SPIP ================================
if (INS_UTILISE_SPIP) {
mod_inscription_spip($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID), $valeur) ;
}
}
 
/** requete_annuaire() - Renvoie une chaine contenant les champs de l'annuaire avec leur valeur suite à le fonction process de QuickForm
*
* @return string une requete du type champs="valeur",...
*/
 
function requete_annuaire($valeur) {
$req = INS_CHAMPS_NOM.'="'.$valeur['nom'].'",'.
INS_CHAMPS_PRENOM.'="'.$valeur['prenom'].'",'.
INS_CHAMPS_MAIL.'="'.$valeur['email'].'",' ;
if (INS_UTILISE_WIKINI) $req .= INS_CHAMPS_NOM_WIKINI.'="'.$valeur['nomwiki'].'",' ;
$req .= INS_CHAMPS_PASSE.'="'.md5 ($valeur['mot_de_passe']).'",'.
INS_CHAMPS_PAYS.'="'.$valeur['pays'].'",'.
INS_CHAMPS_ADRESSE_1.'="'.$valeur['adresse_1'].'",'.
INS_CHAMPS_ADRESSE_2.'="'.$valeur['adresse_2'].'",'.
INS_CHAMPS_DATE_INSCRIPTION.'=NOW(),'.
INS_CHAMPS_CODE_POSTAL.'="'.$valeur['cp'].'" ' ;
if (INS_FORMULAIRE_STRUCTURE) {
$req .= ",".INS_CHAMPS_EST_STRUCTURE.'="'.$valeur['est_structure'].'"' ;
$req .= ",".INS_CHAMPS_SIGLE_STRUCTURE.'="'.$valeur['sigle_structure'].'"' ;
}
// traitement du numéro de département pour la france
if (isset($valeur[INS_CHAMPS_PAYS])) {
if ($valeur[INS_CHAMPS_PAYS] == 'FR') {
if (preg_match("/^97|98[0-9]*/", $valeur['cp'])) {
$n_dpt = substr($valeur['cp'], 0, 3) ;
} else {
$n_dpt = substr($valeur['cp'], 0, 2) ;
}
$req .= ",".INS_CHAMPS_DEPARTEMENT."='$n_dpt'";
}}
// Le téléphone et le fax
if (INS_CHAMPS_TELEPHONE) {
$req .= ",".INS_CHAMPS_TELEPHONE.'="'.$valeur['telephone'].'"' ;
}
if (INS_CHAMPS_FAX) {
$req .= ",".INS_CHAMPS_FAX.'="'.$valeur['fax'].'"' ;
}
if (INS_CHAMPS_STRUCTURE) {
$req .= ",".INS_CHAMPS_STRUCTURE.'="'.$valeur['structure'].'"' ;
}
return $req ;
}
 
 
 
/** formulaire_defaults() - Renvoie un tableau avec les valeurs par défaut du formulaire d'inscription
*
* @return array Valeurs par défaut du formulaire d'inscription
*/
function formulaire_defaults() {
$requete = 'select '.INS_ANNUAIRE.'.* '.
'from '.INS_ANNUAIRE.' '.
'where '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'= "'.$GLOBALS['AUTH']->getAuthData (INS_CHAMPS_ID).'"' ;
$resultat = $GLOBALS['ins_db']->query ($requete) ;
if (DB::isError($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
$valeurs_par_defaut = array() ;
$valeurs_par_defaut['email'] = $ligne[INS_CHAMPS_MAIL];
$valeurs_par_defaut['nom'] = $ligne[INS_CHAMPS_NOM];
$valeurs_par_defaut['prenom'] = $ligne[INS_CHAMPS_PRENOM] ;
$valeurs_par_defaut['pays'] = $ligne[INS_CHAMPS_PAYS] ;
if (INS_UTILISE_WIKINI) {$valeurs_par_defaut['nomwiki'] = $ligne[INS_CHAMPS_NOM_WIKINI] ;}
$valeurs_par_defaut['cp'] = $ligne[INS_CHAMPS_CODE_POSTAL] ;
$valeurs_par_defaut['ville'] = $ligne[INS_CHAMPS_VILLE] ;
$valeurs_par_defaut['adresse_1'] = $ligne[INS_CHAMPS_ADRESSE_1] ;
$valeurs_par_defaut['adresse_2'] = $ligne[INS_CHAMPS_ADRESSE_2] ;
$valeurs_par_defaut['telephone'] = $ligne[INS_CHAMPS_TELEPHONE] ;
$valeurs_par_defaut['fax'] = $ligne[INS_CHAMPS_FAX] ;
$valeurs_par_defaut['structure'] = $ligne[INS_CHAMPS_STRUCTURE] ;
$valeurs_par_defaut['lettre'] = $ligne[INS_CHAMPS_LETTRE] ;
return $valeurs_par_defaut ;
}
 
function bouton($url) {
$boutons = new HTML_QuickForm('inscription', 'post', $url) ; ;
//confirmation() ;
$buttons[] = &HTML_QuickForm::createElement('submit', 'modifier', INS_MODIFIER_INSCRIPTION);
$buttons[] = &HTML_QuickForm::createElement('submit', 'supprimer', INS_SUPPRIMER_INSCRIPTION,
array ("onclick" => "javascript:return confirm('".INS_SUPPRIMER_INSCRIPTION." ?');"));
$boutons->addGroup($buttons, null, null, '&nbsp;');
return '<div>'.$boutons->toHTML().'</div>' ;
}
 
/**
* Renvoie un lien pour se déconnex=cter
*
* @return string
*/
 
function deconnexion($url) {
// Un champs logout
return "<div><a href=\"".$url."&logout=1\">".INS_DECONNEXION."</a></div>" ;
}
 
 
function info() {
$requete = 'select * from '.INS_ANNUAIRE.' '.
'where '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'="'.$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID).'"' ;
$resultat = $GLOBALS['ins_db'] -> query($requete) ;
if (DB::isError($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
 
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
$res .= "<br /><h2 class=\"inscription_titre1\">".INS_MESSAGE_BIENVENU ;
$res .= "</h2><br />\n" ;
$res .= "<h3 class=\"inscription_titre2\">".INS_FICHE_PERSONNELLE."</h3><br />\n" ;
$res .= "<div>".INS_EMAIL." : ".$ligne[INS_CHAMPS_MAIL]."</div>\n" ;
if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) $nom = INS_NOM_STRUCTURE ; else $nom = INS_NOM ;
$res .= "<div>".$nom." : ".$ligne[INS_CHAMPS_NOM]."</div>" ;
if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 0) $res .= "<div>".INS_PRENOM." : ".$ligne[INS_CHAMPS_PRENOM]."</div>\n" ;
if (INS_UTILISE_WIKINI) {if ($ligne[INS_CHAMPS_NOM_WIKINI] != "") $res .= "<div>".INS_NOM_WIKI." : ".$ligne[INS_CHAMPS_NOM_WIKINI]."</div>\n" ;}
if ($ligne[INS_CHAMPS_ADRESSE_1] != "") $res .= "<div>".INS_ADRESSE_1." : ".$ligne[INS_CHAMPS_ADRESSE_1]."</div>\n" ;
if ($ligne[INS_CHAMPS_ADRESSE_2] != "") $res .= "<div>".INS_ADRESSE_2." : ".$ligne[INS_CHAMPS_ADRESSE_2]."</div>\n" ;
if ($ligne[INS_CHAMPS_TELEPHONE] != "") $res .= "<div>".INS_TEL." : ".$ligne[INS_CHAMPS_TELEPHONE]."</div>\n" ;
if ($ligne[INS_CHAMPS_FAX] != "") $res .= "<div>".INS_FAX." : ".$ligne[INS_CHAMPS_FAX]."</div>\n" ;
if ($ligne[INS_CHAMPS_STRUCTURE] != "") $res .= "<div>".INS_STRUCTURE." : ".$ligne[INS_CHAMPS_STRUCTURE]."</div>\n" ;
$res .= bouton(str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL()));
$res .= deconnexion($GLOBALS['ins_url']->getURL()) ;
return $res ;
}
 
 
function verif_doublonMail($mail) {
if (isset ($GLOBALS['AUTH']) && $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) != '') {
$requete_mail = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ".INS_CHAMPS_ID."=".$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ;
$resultat_mail = $GLOBALS['ins_db']->query ($requete_mail) ;
if (DB::isError ($resultat_mail)) {
die ("Echec de la requete : $requete_mail<br />".$resultat_mail->getMessage()) ;
}
$ligne_mail = $resultat_mail->fetchRow(DB_FETCHMODE_ASSOC) ;
if ($mail == $ligne_mail[INS_CHAMPS_MAIL]) {
return true ;
}
}
$requete = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ".INS_CHAMPS_MAIL."= \"$mail\"" ;
$resultat = $GLOBALS['ins_db']->query ($requete) ;
if (DB::isError ($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
if ($resultat->numRows() == 0) return true ;
return false ;
}
 
 
function envoie_passe()
{
global $SERVER_ADMIN ;
 
$headers['From'] = $SERVER_ADMIN ;
$headers['Subject'] = INS_NOUVEAU_MOT_DE_PASSE;
 
$nouveau_passe = create_new_random(6) ;
 
$body = INS_NOUVEAU_MOT_DE_PASSE_2.$nouveau_passe ;
$body .= INS_NOUVEAU_MOT_DE_PASSE_LAIUS ;
 
// modification du mot de passe dans la base
$requete = "update ".INS_ANNUAIRE." set ".INS_CHAMPS_PASSE."=MD5(\"$nouveau_passe\") where ".INS_CHAMPS_MAIL."=\"".$GLOBALS['username']."\"" ;
$resultat = $GLOBALS['ins_db']->query($requete) ;
if (DB::isError($resultat)) {
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
}
 
// création du mail
if (!mail ($GLOBALS['username'], $headers['Subject'], $body)) {
return 'erreur lors de l\'envoie de mail' ;
}
 
return "<div class=\"titre1_inscription\">".INS_MOT_DE_PASSE_ENVOYE_1.': '.$GLOBALS['mail']."</div>\n".
"<div><br />".INS_MOT_DE_PASSE_ENVOYE_2."</div>\n";
 
}
 
/**
* Inscrit un adhérent à la lettre d'actualité par l'envoie d'un email subscribe / unsubscribe
* à la liste
*
* @global AUTH Un objet PEAR::Auth
* @return boolean true en cas de succès
*/
 
function inscription_lettre($action) {
include_once 'Mail.php' ;
$mail = & Mail::factory ('smtp') ;
$email = $GLOBALS['AUTH']->getUsername() ;
$headers ['Return-Path'] = $email ;
$headers ['From'] = "<".$email.">" ;
$headers ['Subject'] = $action ;
$headers ['Reply-To'] = $email ;
$mail -> send ($action, $headers, "") ;
if (PEAR::isError ($mail)) {
echo '<div class="erreur">Le mail n\'est pas partie...</div>' ;
return false ;
}
return true ;
}
 
/**
*
* @global ins_db Un pointeur vers un objet PEAR::DB connecté
* @return
*/
 
function envoie_mail() //A COMPLETER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
include_once 'Mail/mime.php' ;
$crlf="\n";
$headers ['From'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ;
$headers ['Subject'] = INS_MAIL_COORD_SUJET ;
$headers ['Reply-To'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ;
$mime = new Mail_mime($crlf);
$requete = "select *, ".INS_CHAMPS_LABEL_PAYS." from ".INS_ANNUAIRE.",".INS_TABLE_PAYS.
" where ".INS_CHAMPS_MAIL."=\"".$GLOBALS['AUTH']->getUsername()."\"".
" and ".INS_CHAMPS_ID_PAYS."=".INS_CHAMPS_PAYS;
 
$resultat = $GLOBALS['ins_db']->query($requete) ;
if (DB::isError ($resultat)) {
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
}
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
$body_entete = INS_MAIL_COORD_CORPS."\n" ;
$body = "mail : ".$ligne[INS_CHAMPS_MAIL]."\n" ;
$body .= "------------------------------------------\n";
$body .= INS_NOM.": ".unhtmlentities($ligne[INS_CHAMPS_NOM])." \n" ;
$body .= INS_PRENOM.' : '.unhtmlentities($ligne[INS_CHAMPS_PRENOM])." \n" ;
$body .= INS_PAYS." : ".unhtmlentities($ligne[PROJET_CHAMPS_LABEL_PAYS])." \n" ;
$body .= "-------------------------------------------\n" ;
$mime->setTXTBody($body);
$mime->setHTMLBody(info()) ;
$body = $mime->get();
$headers = $mime->headers($headers);
$mail = & Mail::factory('mail') ;
$mail -> send ($ligne[INS_CHAMPS_MAIL], $headers, $body) ;
if (PEAR::isError($mail)) {
echo 'erreur d\'envoi' ;
return false ;
}
return true ;
}
 
// For users prior to PHP 4.3.0 you may do this:
function unhtmlentities($string)
{
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($string, $trans_tbl);
}
 
//==============================================================================
/** function create_new_random($n,$type) permet de générer un nombre de caractères aléatoires.
*
*
*
* ENTREE :
* - $n : créer un 'mot' de $n caractères
* - $type : permet de définir la liste des caractères disponibles
*
* SORTIE : chaine de $n caractères pris dans une liste $type
*/
function create_new_random($n,$type="")
{
$str = "";
 
switch ($type){
default:{
$chaine = "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789";
}
break;
}
srand((double)microtime()*1000000);
for($i = 0; $i < $n; $i++){
$str .= $chaine[rand()%strlen($chaine)];
}
return "$str";
}
 
//==============================================================================
/** function nextId () Renvoie le prochain identifiant numérique libre d'une table
*
* On passe en paramètre le nom de la table et l'identifiant de la base selon PEAR DB
*
* @param mixed handler de connexion
* @param string Nom de la table
* return interger l'identifiant
*/
 
function nextId($table, $colonne_identifiant)
{
$requete = 'select MAX('.$colonne_identifiant.') as maxi from '.$table ;
$resultat = $GLOBALS['ins_db']->query($requete) ;
if (DB::isError($resultat)) {
die (__FILE__ . __LINE__ . $resultat->getMessage() . $requete);
return $GLOBALS['ins_db']->raiseError($resultat) ;
}
if ($resultat->numRows() > 1) {
return $GLOBALS['ins_db']->raiseError("<br/>La table $table a un identifiant non unique<br/>") ;
}
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
return $ligne->maxi + 1 ;
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.3 2005/03/21 16:57:30 florian
* correction de bug, mise à jour interface
*
* Revision 1.2 2004/12/17 17:41:51 alex
* ajout du numéro de tel, du fax et de la structure
*
* Revision 1.1 2004/12/15 13:32:25 alex
* version initiale
*
* Revision 1.2 2004/09/01 16:37:52 alex
* modification du formulaire
*
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.7 2004/07/06 15:28:41 alex
* en cours
*
* Revision 1.5 2004/07/06 15:22:19 alex
* en cours
*
=======
* Revision 1.4 2004/06/30 10:00:26 alex
* modification de l'envoie de mail
*
* Revision 1.2 2004/06/23 12:41:51 alex
* amélioration de la gestion de la perte de mot de passe
*
* Revision 1.1 2004/06/18 09:20:47 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
 
?>
/trunk/client/ins_annuaire/bibliotheque/annuaire.fonct.php
New file
0,0 → 1,205
<?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: annuaire.fonct.php,v 1.1 2005-04-06 13:33:32 florian Exp $
/**
* Fonctions du module annuaire
*
* Fonctions du module annuaire
*
*@package annuaire
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
include_once "HTML/QuickForm.php" ;
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
/** function parcourirAnnu () Affiche l'annuaire à partir d'une lettre
*
*
*
* @return string HTML
*/
 
function parcourirAnnu() {
 
$res = '<div><table><tr>';
 
// ecrire toutes les lettres avec un lien
for ($i = 65 ; $i <91 ; $i++) {
$res .= '<td><a style="font-size:15px;" href="'.$GLOBALS['ins_url']->getURL().'&amp;lettre=';
$res .= chr($i) ;
$res .= '">';
$res .= chr($i) ;
$res .= '</a></td>'."\n";
}
$res .= '</tr></table></div>'."\n";
 
// si une lettre est selectionne
if (!empty($_REQUEST['lettre'])) {
$requete = 'SELECT '.INS_CHAMPS_ID;
foreach($GLOBALS['annuaire_champs_visibles']['champs_db'] as $i) {
$requete .= ', '.$i;
}
$requete .= ' FROM '.INS_ANNUAIRE.' WHERE ';
if ($_REQUEST['lettre'] != 'tous') {
$requete .= INS_CHAMPS_NOM.' LIKE "'.$_REQUEST['lettre'].'%"';
} else {
$requete .= '1';
}
$requete .= ' ORDER BY '.INS_CHAMPS_NOM ;
$resultat = $GLOBALS['ins_db']->query($requete);
var_dump($resultat);
if ($resultat->numRows()>0) {
$i=0;
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
$donnees_membres[$i++]=$ligne;
}
$res .= listes_inscrit($donnees_membres, $GLOBALS['annuaire_champs_visibles']['label_champs']);
} else {$res .= ANN_PAS_D_INSCRITS;}
}
return $res ;
}
 
/**
* Renvoie le code HTML de la liste des inscrits
* en fonction de la requete passé en parametre
*
* @return Renvoie le code HTML de la liste des inscrits
*/
 
function listes_inscrit(& $donnees_membres, & $entete , $case_a_cocher=true) {
$res = '<div>'."\n";
if ($case_a_cocher) {$res .= '<form action="'.$GLOBALS['ins_url']->getURL().'"&amp;lettre='.$_REQUEST['lettre'].'" method="post" name="formmail">'."\n";}
$res .= '<table id="table_inscrit">'."\n".'<colgroup>'."\n";
if ($case_a_cocher) {$res .= '<col />';}
foreach($entete as $i) {$res .= '<col />'; }
$res .= '</colgroup>'."\n".'<thead>'."\n";
if ($case_a_cocher) {$res .= '<th>&nbsp;</th>'."\n";}
foreach($entete as $i) {
$res .= '<th>'.$i.'</th>'."\n";
}
$res .= '</thead>'."\n";
$indic=0;
$i=1;
foreach($entete as $i) {
if ($indic==0) {
$res.='<tr class="ligne_impaire">'."\n";
$indic=1;
}
else {
$res.='<tr class="ligne_paire">'."\n";
$indic=0;
}
}
for ($i=0;$i<count($donnees_membres);$i++) {
$id = array_shift($donnees_membres[$i]);
if ($case_a_cocher) {$res.='<td><input type="checkbox" name="select[]" value="'.$id.'"></td>'."\n";}
foreach($donnees_membres[$i] as $valeur) $res .= '<td>'.$valeur.'</td>'."\n" ;
$res .= '</tr>'."\n";
}
$res .= '</table></div>'."\n";
if ($case_a_cocher) {
$res .= '<div class="texte">'.ANN_CHECK_UNCHECK ;
$res .= '&nbsp;<input type="checkbox" name="selecttotal" onclick="javascript:setCheckboxes(\'formmail\');"></div>';
$res .= '<h3>'.ANN_ENVOYER_MAIL.'</h3>'."\n";
$res .= '<div>'."\n".'<table border="0">'."\n"
.'<tr><td class="texte">'.ANN_SUJET.' :</td>'."\n"
.'<td><input class="forml" type="text" name="titre_mail" size="60"></td>'."\n"
.'</tr><tr><td class="texte" valign="top">'.ANN_MESSAGE.'&nbsp;:&nbsp;</td>'."\n"
.'<td><textarea class="forml" name="corps" rows="5" cols="60"></textarea></td>'."\n"
.'</tr><tr><td></td><td align="center">';
$res.='<input type="submit" value="'.ANN_ENVOYER.'">';
$res.='</td>'."\n".'</tr>'."\n".'</table>'."\n".'</div>'."\n".'</form>'."\n";
}
return $res ;
}
 
 
 
/** envoie_mail_depuis_annuaire()
*
*
* @return envoie l'email
*/
 
function envoie_mail_depuis_annuaire() {
$requete = "select ".ANN_CHAMPS_MAIL." from ".ANN_ANNUAIRE.
" where ".ANN_CHAMPS_ID."='".$GLOBALS['AUTH']->getAuthData (ANN_CHAMPS_ID)."'";
$resultat = $GLOBALS['ann_db']->query($requete);
if (DB::isError($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo());
}
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
$entete = "From: <".$ligne[ANN_CHAMPS_MAIL].">\n";
$_POST['corps'] .= ANN_PIED_MESSAGE;
$_POST['corps'] = stripslashes($_POST['corps']) ;
$liste = "" ;
foreach ($_POST['select'] as $key => $value) {
mail ($value, stripslashes($_POST['titre_mail']), $_POST['corps'] , $entete) ;
$liste .= $value."\n" ;
}
$_POST['corps'] .= "\n----------------------------------------------------------------------------";
$_POST['corps'] .= "\n".ANN_MESSAGE_ENVOYE_A." :\n $liste" ;
mail (CAR_MAIL_ADMIN, stripslashes($_POST['titre_mail']), $_POST['corps'], $entete);
$_POST['corps'] = '';
$_POST['titre_mail'] = '';
return '<div>'.ANN_MAIL_ENVOYER.'</div>' ;
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.3 2005/03/24 08:24:29 alex
* --
*
* Revision 1.2 2005/01/06 15:18:31 alex
* modification de la fonction de formulaire d'authentification
*
* Revision 1.1.1.1 2005/01/03 17:27:49 alex
* Import initial
*
* Revision 1.1 2005/01/03 17:18:49 alex
* retour vers la liste des participants après un ajout.
*
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/client/ins_annuaire/bibliotheque/inscription.fonct.wiki.php
New file
0,0 → 1,133
<?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: inscription.fonct.wiki.php,v 1.1 2005-04-06 13:33:32 florian Exp $
/**
* Fonctions wikini
*
* Ce fichier propose 3 fonctions pour intervenir sur la table interwikini_users.
*
*@package inscription
*@subpackage fonctions_wikini
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2005-04-06 13:33:32 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
function inscription_interwikini_users() {
global $db, $HTTP_POST_VARS ;
$requete = "insert into interwikini_users set name=\"".$HTTP_POST_VARS['nomwiki'].
"\", password=\"".md5($HTTP_POST_VARS['password'])."\", email=\"".$HTTP_POST_VARS['email']."\"" ;
$resultat = $db->query ($requete) ;
if (DB::isError($resultat)) {
die ("Echec de la requete dans interwikini_users<br />".$resultat->getMessage()) ;
}
}
 
function mod_inscription_interwikini_users($id) {
global $db, $HTTP_POST_VARS, $AUTH ;
$requete = "update interwikini_users set password=\"".md5($HTTP_POST_VARS['password'])."\", email=\"".$HTTP_POST_VARS['mail']."\"".
" where name=\"".$AUTH->getAuthData(INS_CHAMPS_LOGIN)."\"" ;
$resultat = $db->query ($requete) ;
if (DB::isError($resultat)) {
die ("Echec de la requete dans interwikini_users<br />".$resultat->getMessage()) ;
}
}
 
function desinscription_interwikini_users($nomwiki) {
global $db ;
$requete = "delete from interwikini_users where name=\"$nomwiki\"" ;
$resultat = $db->query ($requete) ;
if (DB::isError($resultat)) {
die ("Echec de la requete dans interwikini_users<br />".$resultat->getMessage()) ;
}
}
 
function verif_doublonNomWiki($nom_wiki) {
global $db ;
$requete = "select name from interwikini_users where name = \"$nom_wiki\"" ;
$resultat = $db->query ($requete) ;
if (DB::isError ($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
if ($resultat->numRows() == 0) return true ;
return false ;
}
 
function wiki_cookie() {
if ($userid != "") {
// 1. name
// On recherche le nom
$nomwikini = $AUTH->getAuthData('ga_login') ;
setcookie ("name", $nomwikini, time () + 3600 * 24 * 30, "/" ) ; // 1 mois
//2. password
// on recherche le mot de passe crypté
$requete = "select ga_mot_de_passe from gen_annuaire where ga_id_administrateur=$userid" ;
$resultat = $db->query ($requete) ;
if (DB::isError($resultat)) {
die ("Erreur") ;
}
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
$mot_de_passe = $ligne->ga_mot_de_passe ;
setcookie ("password", $mot_de_passe, time () + 3600 * 24 * 30, "/") ;
// 3. remember
setcookie ("remember", 1, time () + 3600 * 24 * 30, "/") ;
}
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2005/03/21 16:57:30 florian
* correction de bug, mise à jour interface
*
* Revision 1.1 2004/12/15 13:32:25 alex
* version initiale
*
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.1 2004/06/18 09:20:48 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
 
 
 
 
?>
/trunk/client/ins_annuaire/bibliotheque/mail_tous.php
New file
0,0 → 1,105
<?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: mail_tous.php,v 1.1 2005-04-06 13:33:32 florian Exp $
/**
* Permet d'envoie un mail à une sélection dans l'annuaire
*
*
*@package annuaire
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
function putFrame() {
// configuration
global $objet, $corps, $annuaire_LABEL_STATUT, $SERVER_ADMIN ;
global $action ;
$url = $GLOBALS['ann_url']->getURL() ;
$annu_table = "annuaire_tela" ;
$champs_mail = "U_MAIL" ;
 
// Entete
$corps_debut = "RESEAU TELA BOTANICA - Le ".date("j/m/Y").
"\n\nBonjour,\n"."\n\nCordialement,\n-------------------\nTela Botanica le réseau des botanistes francophones\naccueil@tela-botanica.org\nhttp://www.tela-botanica.org\n";
 
$res = "<h1>Envoi d'un mail &agrave; tous les membres</h1>\n" ;
if ($_GET['action'] == ANN_MAIL_TOUS_ENVOIE) $res .= envoie_mail_selection() ;
// formulaire
$res .= "<div><form action=\"$url&action=".ANN_MAIL_TOUS_ENVOIE."\" method=\"post\"><table>\n" ;
$res .= "<tr><td class=\"insLabel\">" ;
$res .= "Objet&nbsp;:&nbsp;</td><td><input size=\"91\" name=\"objet\" type=\"text\" class=\"insInputForm\"></td></tr>\n" ;
$res .= "<tr><td class=\"insLabel\">Corps&nbsp;:&nbsp;</td><td><textarea name=\"corps\" cols=\"90\" rows=\"30\" class=\"insInputForm\">$corps_debut</textarea></td></tr>\n" ;
$res .= "<tr><td></td><td><input type=\"submit\" class=\"texte_tb\" value=\"envoyer\"" ;
$res .= " onclick=\"javascript:return confirm('Etes-vous sur de vouloir envoyer ce message !!');\"" ;
$res .= "></td></tr>\n" ;
$res .= "</table></form></div>\n" ;
 
return $res ;
}
 
include_once ("Mail.php");
 
// envoie le mail à tous
 
 
function envoie_mail_selection()
{
global $objet, $corps, $annuaire_LABEL_STATUT, $SERVER_ADMIN, $GS_GLOBAL ;
$annuaire = "annuaire_tela" ;
$champs_mail = "U_MAIL" ;
$headers['From'] = "accueil@tela-botanica.org" ;
$headers['Subject'] = stripslashes($objet) ;
 
$corps = stripslashes($corps) ;
$requete = $_SESSION['requete_mail_tous'] ;
unset ($_SESSION['requete_mail_tous']) ;
 
$resultat = mysql_query($requete) or die ("echec") ;
while ($ligne = mysql_fetch_object($resultat)) {
if (!mail($ligne->U_MAIL, $headers['Subject'], $corps, "From: ".$headers['From'])) {
return "<tr><td>Une erreur s'est produite:<br>".$mail_object->getMessage()."</td></tr>\n" ;
}
}
return "<div>Le mail est parti !</div>\n";
 
}
?>
/trunk/client/ins_annuaire/bibliotheque/recu_pdf_corps.php
New file
0,0 → 1,166
<?php
// +----------------------------------------------------------------------------+
// |pdf_recu_et_mail.php |
// +----------------------------------------------------------------------------+
// | Copyright (c) 2003 Tela Botanica |
// +----------------------------------------------------------------------------+
// | Ce fichier génère un fichier PDF |
// | contenant le recu pour une cotisation à Tela Botanica |
// | Il utilise la librairie FPDF |
// | http://www.fpdf.org/ |
// | Il envoie également un email à l'adhérent concerné |
// +----------------------------------------------------------------------------+
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> |
// +----------------------------------------------------------------------------+
//
// $Id: recu_pdf_corps.php,v 1.1 2005-04-06 13:33:32 florian Exp $
 
 
// Recherche des informations sur un utilisateur
 
$requete = "select * from annuaire_COTISATION, annuaire_tela, MODE_COTISATION
where IC_ID=$cotisation_id
and IC_ANNU_ID=U_ID
and IC_MC_ID=MC_ID" ;
$resultat = $db->query($requete) ;
if (DB::isError ($resultat)) {
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
}
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
$resultat->free() ;
 
/*
// On regarde si le reçu a déjà été envoyé
$requete = "select IC_RECU from annuaire_COTISATION where IC_ID=$cotisation_id" ;
$resultat = mysql_query ($requete) or die ($requete."<br>".mysql_error()) ;
$ligne = mysql_fetch_object($resultat) ;
mysql_free_result($resultat) ;
*/
 
if ($ligne->IC_RECU != 0) {
$num_recu = $ligne->IC_RECU ;
// $deja_envoye permettra au programme admin_annu.php de ne pas incrementé
// le compteur de recu
$deja_envoye = true ;
} else {
$res_compteur = $db->query("select COMPTEUR from COMPTEUR_COTISATION") ;
$ligne_compteur = $res_compteur->fetchRow(DB_FETCHMODE_OBJECT) ;
$num_recu = $ligne_compteur->COMPTEUR ;
$deja_envoye = false ;
}
 
@include_once "api/fpdf/fpdf.php";
 
if (!isset($envoie)) $chemin = "client/annuaire/" ;
 
// Constante nécessaire à fpdf.php
define('FPDF_FONTPATH','font/');
 
// Création de l'objet pdf
 
$pdf = new FPDF();
 
$pdf->Open();
$pdf->AddPage("P");
// La ligne du haut
 
$pdf->Line(10, 10, 200, 10) ;
 
// Contenu du document
 
$pdf->SetFont('Arial', '', 8) ;
 
$pdf->Cell(150, 10, "", 0, 0) ;
 
$pdf->MultiCell(40, 10, "Numéro d'ordre : $num_recu", 1,1, "C") ;
 
$pdf->SetY($pdf->GetY() - 10) ;
 
$pdf->SetFont('Arial','B',14);
$pdf->Cell(0,10,'Reçu dons aux œuvres', 0, 1, "C");
$pdf->SetFont('Arial', '', 10) ;
$pdf->Cell(0, 0, '(Article 200-5 et 238 bis du Code Général des impôts)', 0, 1, "C") ;
 
$pdf->Cell(0, 10, 'REÇU A CONSERVER ET A JOINDRE A VOTRE DECLARATION DE REVENUS 2004', 0, 1, "L") ;
 
// On met le logo de Tela
$pdf->Image($chemin."logotb.png", 12, 35, "29", "", "PNG", "http://www.tela-botanica.org/") ;
 
 
 
// On écrie Les titres du cadre
 
$pdf->SetFontSize(12) ;
$pdf->Cell(100, 10, 'Bénéficiaire du don', 0, 0, "C") ;
$pdf->Cell(100, 10, 'Donateur', 0, 1, "C") ;
 
$pdf->SetFont('Arial', 'B', 10) ;
 
$pdf->Cell(38, 5, '', 0, 0) ;
$pdf->Cell(62, 5, 'Association Tela Botanica', 0, 0, "L") ;
 
$pdf->SetFont('Arial', 'B', 10) ;
 
$pdf->Cell(100, 5, "$ligne->U_NAME $ligne->U_SURNAME", 0, 1, "L") ;
 
$pdf->SetFont('Arial', '', 10) ;
 
$pdf->Cell(38, 5, '', 0, 0) ;
$pdf->Cell(62, 5, 'Institut de Botanique', 0, 1, "L") ;
$pdf->Cell(38, 5, '', 0, 0) ;
$pdf->Cell(62, 5, '163, rue A. Broussonnet', 0, 0, "L") ;
$pdf->Cell(100, 5, "$ligne->U_ADDR1", 0, 1, "L") ;
 
$pdf->Cell(38, 5, '', 0, 0) ;
$pdf->Cell(62, 5, '34090 Montpellier', 0, 0, "L") ;
$pdf->Cell(100, 8, "$ligne->U_ADDR2", 0, 1, "L") ;
 
 
$pdf->Cell(100, 5, 'Objet :', 0,1, "L") ;
$pdf->SetFontSize(8) ;
$pdf->MultiCell(100, 4, 'Contribuer au rapprochement de tous les botanistes de langue française. Favoriser l\'échange d\'information'.
' et animer des projets botaniques grâce aux nouvelles technologies de la communication.', 0, 1, "") ;
 
$pdf->SetFontSize(10) ;
 
$pdf->Text(111, 58 + 8, "$ligne->U_ZIP_CODE $ligne->U_CITY") ;
$pdf->SetFontSize(8) ;
$pdf->MultiCell(100,4, 'Organisme d\'intérêt général à caractère scientifique concourant à la diffusion de la langue et des connaissances scientifiques françaises.', 0,1, "R") ;
 
 
 
// On remonte le curseur de 52
$pdf->SetY($pdf->GetY() - 58) ;
 
// Le cadre central
$pdf->Cell(100, 60, '', 1) ;
$pdf->Cell(90, 60, '', 1) ;
$pdf->Ln() ;
 
$pdf->SetFontSize(10) ;
$pdf->Cell(0,10, 'L\'Association reconnaît avoir reçu, à titre de don, la somme de :', 0, 1, "L") ;
 
$pdf->SetFont('Arial', 'B', 11) ;
$pdf->Cell(0,10, "*** $ligne->IC_MONTANT euros ***", 0, 1, "C") ;
 
$pdf->SetFont('Arial', '', 10) ;
 
$pdf->Ln() ;
$pdf->Cell(100,10, "Date du paiement : ".date ("d/m/Y", $ligne->IC_DATE), 0, 0, "L") ;
$pdf->Cell(100, 10, 'Montpellier, le '.date("d/m/Y"), 0, 1, "L") ;
 
// La signature de Daniel
$pdf->Image($chemin."signature_Daniel.png", 110, $pdf->GetY(),28.22, "") ;
 
$pdf->Ln() ;
$pdf->Cell(0, 10, "Mode de versement : $ligne->MC_LABEL", 0, 1, "L") ;
 
$pdf->Cell(100, 10, '', 0, 0) ;
$pdf->Cell (100, 10, 'Daniel MATHIEU, Président', 0, 1, "L") ;
$pdf->Ln(5) ;
 
$pdf->SetFontSize(10) ;
$pdf->Cell(0, 7, '60 % de votre don à Tela Botanica est déductible de vos impôts dans la limite de 20 % de votre revenu imposable.', 1, 1, "C") ;
 
 
?>