Blame | Last modification | View Log | RSS feed
<?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-09-22 14:02:49 ddelon Exp $// CVS : $Id: inscription.fonct.php,v 1.1 2005-09-22 14:02:49 ddelon 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-09-22 14:02:49 $*@version $Revision: 1.1 $ $Date: 2005-09-22 14:02:49 $// +------------------------------------------------------------------------------------------------------+*/// +------------------------------------------------------------------------------------------------------+// | 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 PASfunction 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'informationif (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 /><h3>'.INS_DEJA_INSCRIT.'</h3><br />'."\n" ;$GLOBALS['ins_url']->removeQueryString('action') ;$form = new HTML_QuickForm('inscription_identification', 'post', str_replace ('&', '&', $GLOBALS['ins_url']->getURL())) ;$squelette =& $form->defaultRenderer();$squelette->setFormTemplate("\n".'<form {attributes}>'."\n".'{content}'."\n".'</form>'."\n");$squelette->setElementTemplate( '<label>{label} </label>'."\n".'{element}<br />'."\n");$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 .= '<span style="font-size:11px;">'.INS_TEXTE_PERDU.'</span><br /><br />'."\n" ;$GLOBALS['ins_url']->addQueryString('action', 'inscription') ;$form = new HTML_QuickForm('inscription_personne', 'post', preg_replace ('/&/', '&', str_replace ('&', '&', $GLOBALS['ins_url']->getURL()))) ;$form->addElement('submit', 'Inscription', INS_INSCRIPTION_PERSONNE) ;$res .= $form->toHTML() ;if (INS_FORMULAIRE_STRUCTURE) {$form = new HTML_QuickForm('inscription_structure', 'post', preg_replace ('/&/', '&', str_replace ('&', '&', $GLOBALS['ins_url']->getURL()))) ;$form->addElement('hidden', 'form_structure', 1) ;$form->addElement('submit', 'bouton_form_structure', INS_INSCRIPTION_STRUCTURE) ;$res .= $form->toHTML() ;}$res .= "<br /><div>".INS_LAIUS_INSCRIPTION_2."</div>\n" ;return $res;}/** message_erreur () - Renvoie le code HTML d'un message d'erreur** @return string HTML*/function message_erreur() {$res = '';$url = preg_replace ('/&/', '&', $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.' ' ;$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 ('/&/', '&', str_replace ('&', '&', $GLOBALS['ins_url']->getURL()))) ;$form->addElement('submit', 'Inscription', INS_INSCRIPTION) ;if (INS_FORMULAIRE_STRUCTURE) $form->addElement('submit', 'form_structure', INS_INSCRIPTION_STRUCTURE) ;$res .= "<br /><div>".INS_LAIUS_INSCRIPTION_2."</div>\n" ;$res .= $form->toHTML() ;return $res;}function insertion($valeur) {// =========== Insertion dans l'annuaire gen_annuaire ===================$id_utilisateur = nextId(INS_ANNUAIRE, INS_CHAMPS_ID, $GLOBALS['ins_db']) ;$requete = 'insert into '.INS_ANNUAIRE.' set '.INS_CHAMPS_ID.'="'.$id_utilisateur.'",'.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_utilisateur, $valeur) ;}//inscription_interwikini_users() ;//inscription dans Bazar$requete = 'INSERT INTO bazar_droits VALUES ('.$id_utilisateur.',1,1),('.$id_utilisateur.',2,1),('.$id_utilisateur.',3,1),('.$id_utilisateur.',7,1)';if ($valeur['est_structure']==1) $requete.=',('.$id_utilisateur.',4,1),('.$id_utilisateur.',5,1),('.$id_utilisateur.',6,1)';$resultat = $GLOBALS['ins_db']->query($requete);if (DB::isError($resultat)) {die($resultat->getMessage().$resultat->getDebugInfo()) ;}unset($resultat) ;}/*** 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'].'", ';if (isset($valeur['prenom'])) {$req .= INS_CHAMPS_PRENOM.'="'.$valeur['prenom'].'", ';if (INS_UTILISE_WIKINI) $req .= INS_CHAMPS_NOM_WIKINI.'="'.ucfirst(strtr($valeur['prenom'],' ','_')).ucfirst(strtr($valeur['nom'],' ','_')).'", ' ;}elseif (INS_UTILISE_WIKINI) $req .= INS_CHAMPS_NOM_WIKINI.'="Structure'.ucfirst(strtr($valeur['nom'],' ','_')).'", ' ;$req .= INS_CHAMPS_MAIL.'="'.$valeur['email'].'", ' ;$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'].'", '.INS_CHAMPS_VILLE.'="'.$valeur['ville'].'", '.INS_CHAMPS_EST_STRUCTURE.'="'.$valeur['est_structure'].'", '.INS_CHAMPS_TELEPHONE.'="'.$valeur['telephone'].'", '.INS_CHAMPS_FAX.'="'.$valeur['fax'].'", '.INS_CHAMPS_SITE_INTERNET.'="'.$valeur['site'].'" ';if (isset($valeur['lettre'])) {$req .= ', '.INS_CHAMPS_LETTRE.'="'.$valeur['lettre'].'"';}else $req .= ', '.INS_CHAMPS_LETTRE.'=0';if (isset($valeur['visible'])) {$req .= ', '.INS_CHAMPS_VISIBLE.'="'.$valeur['visible'].'"';}else $req .= ', '.INS_CHAMPS_VISIBLE.'=0';if (isset($valeur['sigle_structure'])) {$req .= ','.INS_CHAMPS_SIGLE_STRUCTURE.'="'.$valeur['sigle_structure'].'"' ;}if (isset($valeur['num_agrement'])) {$req .= ','.INS_CHAMPS_NUM_AGREMENT.'="'.$valeur['num_agrement'].'"' ;}// traitement du numéro de département pour la franceif ($valeur['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'";}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['site'] = $ligne[INS_CHAMPS_SITE_INTERNET] ;$valeurs_par_defaut['lettre'] = $ligne[INS_CHAMPS_LETTRE] ;$valeurs_par_defaut['visible'] = $ligne[INS_CHAMPS_VISIBLE] ;$valeurs_par_defaut['sigle_structure'] = $ligne[INS_CHAMPS_SIGLE_STRUCTURE] ;$valeurs_par_defaut['num_agrement'] = $ligne[INS_CHAMPS_NUM_AGREMENT] ;return $valeurs_par_defaut ;}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 = '<h1 class="inscription_titre1">'.INS_MESSAGE_BIENVENU.'</h1><br />'."\n" ;$res .= '<h2 class="inscription_titre2">'.INS_FICHE_PERSONNELLE.'</h2><br />'."\n" ;if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) {$res .= '<h3>'.$ligne[INS_CHAMPS_NOM].'</h3><br />'."\n";}else $res .= '<h3>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h3><br />'."\n";$res .='<label>'.INS_EMAIL.' :</label> '.$ligne[INS_CHAMPS_MAIL].'<br />'."\n" ;if ($ligne[INS_CHAMPS_ADRESSE_1] != '') $res .= '<label>'.INS_ADRESSE_1.' :</label> '.$ligne[INS_CHAMPS_ADRESSE_1].'<br />'."\n" ;if ($ligne[INS_CHAMPS_ADRESSE_2] != '') $res .= '<label>'.INS_ADRESSE_2.' :</label> '.$ligne[INS_CHAMPS_ADRESSE_2].'<br />'."\n" ;if ($ligne[INS_CHAMPS_TELEPHONE] != '') $res .= '<label>'.INS_TELEPHONE.' :</label> '.$ligne[INS_CHAMPS_TELEPHONE].'<br />'."\n" ;if ($ligne[INS_CHAMPS_FAX] != '') $res .= '<label>'.INS_FAX.' :</label> '.$ligne[INS_CHAMPS_FAX].'<br />'."\n" ;if (INS_UTILISE_WIKINI) {if ($ligne[INS_CHAMPS_NOM_WIKINI] != '') $res .= '<label>'.INS_NOM_WIKI.' :</label> '.$ligne[INS_CHAMPS_NOM_WIKINI].'<br />'."\n" ;}$res .= '<br />';return $res ;}function bouton($url) {//requete pour savoir s'il s'agit d'une structure ou d'une personne$requete = 'SELECT '.INS_CHAMPS_EST_STRUCTURE.' FROM '.INS_ANNUAIRE.' '.'WHERE '.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) ;$form_boutons = new HTML_QuickForm('inscription', 'post', $url) ;if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) {$form_boutons->addElement('hidden', 'form_structure', 1) ;}else {$form_boutons->addElement('hidden', 'form_structure', 0) ;}$squelette =& $form_boutons->defaultRenderer();$squelette->setFormTemplate("\n".'<form {attributes}>'."\n".'{content}'."\n".'</form>'."\n");$squelette->setElementTemplate( '{label}'."\n".'{element}'."\n");// on fait un groupe avec les boutons pour les mettres sur la même ligne$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." ?');"));$form_boutons->addGroup($buttons, null, null, ' '."\n");return $form_boutons->toHTML() ;}/*** Renvoie un lien pour se déconnecter** @return string*/function deconnexion($url) {// Un champs logoutreturn "<div><a href=\"".$url."&logout=1\">".INS_DECONNEXION."</a></div>" ;}/** Renvoie vrai si l'email passé en paramètre n'est pas déjà dans l'annuaire* ou si, en cas de modification d'inscription, l'inscrit ne modifie pas son email** @return boolean*/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 mailif (!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.4 2005/09/22 13:30:49 florian* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!)** 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 ----------------------------------------------------------------------------------------+*/?>