Rev 1483 | Blame | Last modification | View Log | RSS feed
<?php//vim: set expandtab tabstop=4 shiftwidth=4:// +-----------------------------------------------------------------------------------------------+// | PHP version 4.0 |// +-----------------------------------------------------------------------------------------------+// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |// +-----------------------------------------------------------------------------------------------+// | This source file is subject to version 2.0 of the PHP license, |// | that is bundled with this package in the file LICENSE, and is |// | available at through the world-wide-web at |// | http://www.php.net/license/2_02.txt. |// | If you did not receive a copy of the PHP license and are unable to |// | obtain it through the world-wide-web, please send a note to |// | license@php.net so we can mail you a copy immediately. |// +-----------------------------------------------------------------------------------------------+/****Fichier des fonctions du bottin**@package bottin//Auteur original :*@author Alexandre GRANIER <alexandre@tela-botanica.org.org>//Autres auteurs :*@copyright Outils-reseaux 2006-2040*@version 05 avril 2006// +-----------------------------------------------------------------------------------------------+//// $Id: bottin.class.php,v 1.6 2007-08-27 13:12:15 alexandre_tb Exp $// FICHIER : $RCSfile: bottin.class.php,v $// AUTEUR : $Author: alexandre_tb $// VERSION : $Revision: 1.6 $// DATE : $Date: 2007-08-27 13:12:15 $*/// +------------------------------------------------------------------------------------------------------+// | ENTETE du PROGRAMME |// +------------------------------------------------------------------------------------------------------+require_once PAP_CHEMIN_API_PEAR.'PEAR.php';// +------------------------------------------------------------------------------------------------------+// | CONSTANTE DES TEMPLATES |// +------------------------------------------------------------------------------------------------------+// Page d'accueildefine ('INS_TEMPLATE_PAGE_ACCUEIL', 1);//Template du formulairedefine ('INS_TEMPLATE_FORMULAIRE', 3);// Template mail confirmation inscriptiondefine ('INS_TEMPLATE_MAIL_CONFIRMATION_SUJET', 4);define ('INS_TEMPLATE_MAIL_CONFIRMATION_CORPS', 2);// Template d envoie de mot de passe perdudefine ('INS_TEMPLATE_MAIL_PASSE_SUJET', 5);define ('INS_TEMPLATE_MAIL_PASSE_CORPS', 6);// Template du mail apres moderation acceptedefine ('INS_TEMPLATE_MAIL_APRES_MODERATION_SUJET', 7);define ('INS_TEMPLATE_MAIL_APRES_MODERATION_CORPS', 8);// Modele du titre du formulaire (ce qui precede le formulaire)define ('INS_TEMPLATE_TITRE_FORMULAIRE', 9);// Message apres demande d inscription modereedefine ('INS_TEMPLATE_MESSAGE_INSCRIPTION_MODEREE', 10);// Modele de la page de la cartogrphie googledefine ('INS_TEMPLATE_CARTO_GOOGLE_ACCUEIL', 11);class inscription extends PEAR {/*** Constructeur*** @return void* @access public*/function inscription() {}/*** Renvoie le code HTML d une liste avec les lettres** @global Un pointeur vers une connexion de base de donnee $GLOBALS['ins_url']* @return array ['ic_param'] les parametres tels que dans la table inscription_config* @access public*/function getConfig($id_inscription = '') {// Recuperation de la configuration$requete = 'select * from inscription_configuration';if ($id_inscription != '') $requete .= ' where ic_id_inscription="'.$id_inscription.'"';$resultat = $GLOBALS['ins_db']->query($requete);if (DB::isError($resultat)) return "Echec de la requete : $requete<br />".$resultat->getMessage() ;if ($resultat->numRows() != 0) {$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);return $ligne;} else {return PEAR::raiseError('La table inscription_configuration est vide...');}}/*** Renvoi un tableau avec les informations de inscription_attente** @global Un pointeur vers une connexion de base de donnee $GLOBALS['ins_db']* @return array Un tableau ['id'], ['nom'], ['prenom'] ... ou la chaine vide si il n'y a personne en attente* @access public*/function getInscritEnAttenteModeration() {$requete = 'select * from inscription_attente';$resultat = $GLOBALS['ins_db']->query($requete);$tableau_inscrit = array();if (DB::isError($resultat)) return "Echec de la requete : $requete<br />".$resultat->getMessage() ;if ($resultat->numRows() != 0) {while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {$donnees = unserialize (stripslashes($ligne->ia_donnees)) ;array_push ($tableau_inscrit, array_merge (array('id' => $ligne->ia_id_inscription, 'date' => $ligne->ia_date), $donnees));}return $tableau_inscrit;} else {return '';}}/** Renvoi le tableau HTML des inscrits en attente** @global $GLOBALS['ins_url'] un objet Net_URL avec l url courante* @param array Un tableau de tableau d inscrit avec ['id'],['nom'],['prenom'],['email'],['ville'],['date']* @return string Un tableau HTML*/function getTableauEnAttente($tableau) {$html = '';if (empty ($tableau)) {return INS_PAS_D_INSCRIT_EN_ATTENTE;}$table = new HTML_Table();$table->addRow(array (INS_NOM, INS_EMAIL, INS_VILLE, INS_DATE_INS, INS_ACTION), '', 'TH');$action = '<a href="'.$GLOBALS['ins_url']->getURL().'">'.'</a>';foreach ($tableau as $demandeur) {// L identifiant du demandeur dans l url$GLOBALS['ins_url']->addQueryString (INS_VARIABLE_ID_DEMANDEUR, $demandeur['id']) ;$GLOBALS['ins_url']->addQueryString(ANN_VARIABLE_ACTION, ANN_ACTION_VALIDER_INSCRIPTION);$valide = '<a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_VALIDER.'</a> / ';$GLOBALS['ins_url']->addQueryString(ANN_VARIABLE_ACTION, ANN_ACTION_SUPPRIMER_DEMANDE_INSCRIPTION);$valide .= '<a href="'.$GLOBALS['ins_url']->getURL().'" onclick="javascript:return confirm(\''.INS_SUPPRIMER.' ?\')">'.INS_SUPPRIMER.'</a>';$table->addRow(array($demandeur['a_nom'].' '.(isset($demandeur['a_prenom']) ? $demandeur['a_prenom']: ''), $demandeur['a_mail'],$demandeur['a_ville'], $demandeur['date'], $valide));}return $table->toHTML();}/*** Renvoie un tableau avec les moderateurs de l inscription* ceux du champs ic_mail_moderateur** @return array Un tableau de mail de moderateur*/function getModerateurs() {}/*** Insere une demande d inscription dans la table inscription_attente et* envoi un mail aux moderateurs** @param string Un identifiant de session, soit genere aleatoirement soit venu de la tablea inscription_demande* @global array la globale $GLOBALS['ins_config']* @global mixed un pointeur vers une base de donnees $GLOBALS['ins_db']* @return string Un message a renvoye a l utilisateur indiquant que sa demande a ete prise en compte*/function demandeInscriptionModere($valeurs) {// On stocke les informations dans un variable de session// On coupe l'identifiant de session pour ne prendre que les 8 premiers caractères// afin d'eviter d'obtenir une url trop longue$chaine = substr (session_id(), 0, 8) ;$requete_verif = 'select * from inscription_attente where ia_id_inscription="'.$chaine.'"' ;$resultat_verif = $GLOBALS['ins_db']->query ($requete_verif) ;if ($resultat_verif->numRows() != 0) {$requete_suppression = 'delete from inscription_attente where ia_id_inscription="'.$chaine.'"' ;$GLOBALS['ins_db']->query ($requete_suppression) ;}$requete = 'insert into inscription_attente set ia_id_inscription="'.$chaine.'", ia_donnees="'.addslashes(serialize($valeurs)).'", ia_date=NOW()' ;$resultat = $GLOBALS['ins_db']->query ($requete) ;if (DB::isError ($resultat)) {echo ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;}// On envoie un email aux moderateursrequire_once PAP_CHEMIN_RACINE.'api/pear/HTML/Template/IT.php';$tpl = new HTML_Template_IT() ;// Le gabarit du mail est dans un template// template 3$url = $GLOBALS['ins_url']->getURL();$requete = 'select it_template from inscription_template where it_id_template=3'.' and it_i18n like "%'.INS_LANGUE_DEFAUT.'"' ;if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) {echo 'erreur' ;}$tpl->setVariable('URL_INSCRIPTION', $url) ;$mails_moderateur = split ('/\n/', $GLOBALS['ins_config']['ic_mail_moderateur']);foreach ($mails_moderateur as $mail) {mail ($mail, INS_MODERATION_SUJET,html_entity_decode(INS_NOUVELLE_INSCRIPTION_A_MODERE),'From: '.$GLOBALS['ins_config']['ic_from_mail_confirmation']) ;}return true ;}/*** Valide une demande d inscription* Transfere les donnees de la table inscription_attente vers annuaire** Envoie un email d avertissement a l inscrit** @global array la globale ins_config*/function validerInscription() {$requete = 'SELECT ia_donnees FROM inscription_attente WHERE ia_id_inscription="'.$_GET[INS_VARIABLE_ID_DEMANDEUR].'"' ;$resultat = $GLOBALS['ins_db']->query($requete) ;if (DB::isError ($resultat)) {return ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;}$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;$donnees = unserialize (stripslashes($ligne->ia_donnees)) ;// dans les donnees serialisees, on recupere l identifiant de l inscription// pour charger la globale ins_config$GLOBALS['ins_config'] = inscription::getConfig($donnees['id_inscription']);// Template du formulaire$GLOBALS['ins_config']['ic_inscription_template'] = inscription::getTemplate(INS_TEMPLATE_FORMULAIRE,$GLOBALS['ins_config']['ic_id_inscription']);$id_utilisateur = inscription_insertion($donnees) ;// Envoie du mail$destinataire = $donnees['a_mail'];$sujet = inscription::getTemplate(INS_TEMPLATE_MAIL_APRES_MODERATION_SUJET, $GLOBALS['ins_config']['ic_id_inscription']);$corps = inscription::getTemplate(INS_TEMPLATE_MAIL_APRES_MODERATION_CORPS, $GLOBALS['ins_config']['ic_id_inscription']);// Appel des actions desinscriptions des applications clientes$d = dir(GEN_CHEMIN_CLIENT);while (false !== ($repertoire = $d->read())) {if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php'))include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php' ;}$d->close();if (INS_CHAMPS_LETTRE != '' && isset ($donnees['a_lettre'])) {inscription_lettre($GLOBALS['ins_config']['ic_mail_inscription_news']) ;}if (!mail ($destinataire, $sujet, $corps, 'From: '.$GLOBALS['ins_config']['ic_from_mail_confirmation'])) return 'erreur dans l\'envoi du mail';inscription::supprimerDemandeInscription();}/*** Supprime une demande d inscription dans la table inscription_attente** @global string l indentifiant de la demande* @global mixed la globale ins_db*/function supprimerDemandeInscription() {// Suppression de la ligne dans inscription_attente$req_sup = 'delete from inscription_attente where ia_id_inscription="'.$_GET[INS_VARIABLE_ID_DEMANDEUR].'"';$res_sup = $GLOBALS['ins_db']->query ($req_sup);if (DB::isError ($res_sup)) {return ("Echec de la requete : $req_sup<br />".$res_sup->getMessage()) ;}}/*** Supprimer un inscrit de l annuaire et appelle les fichiers* client appli.desinscription.inc.php** @static* @global int l identifiant de l inscrit* @global mixed la globale ins_db*/function supprimerInscription() {$queryLogin = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'='.$_GET[INS_VARIABLE_ID_INSCRIT] ;$resultLogin = $GLOBALS['ins_db']->query($queryLogin) ;$rowLogin = $resultLogin->fetchRow(DB_FETCHMODE_ASSOC) ;$mail = $rowLogin[INS_CHAMPS_MAIL];// suppression$query = 'delete from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'='.$_GET[INS_VARIABLE_ID_INSCRIT] ;$resultat = $GLOBALS['ins_db']->query($query);if (DB::isError ($resultat)) {return ("Echec de la requete : $req_sup<br />".$res_sup->getMessage()) ;}// Appel des actions desinscriptions des applications clientes$d = dir(GEN_CHEMIN_CLIENT);$id_utilisateur = $_GET[INS_VARIABLE_ID_INSCRIT];while (false !== ($repertoire = $d->read())) {if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php'))include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php' ;}$d->close();}function getTemplate($id_template, $id_inscription, $langue = INS_LANGUE_DEFAUT) {$requete = 'select it_template from inscription_template where it_id_template="'.$id_template.'"'.' and it_i18n like "'.$langue.'%" and it_ce_inscription="'.$id_inscription.'"' ;$resultat = $GLOBALS['ins_db']->query($requete);if (DB::isError ($resultat)) {$this->raiseError();}$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT);return $ligne->it_template;}}class lettresAlphabet extends PEAR {var $url;var $variable_lettre ;/*** Constructeur** @param Net_URL un objet Net_URL* @param string $variable_lettre le nom de la variable $_GET qui sera place dans l URL* @return void* @access public*/function lettresAlphabet($url, $variable_lettre = 'lettre') {$this->url = $url ;$this->variable_lettre = $variable_lettre ;}/*** Renvoie le code HTML d une liste avec les lettres** @return string HTML* @access public*/function toHMTL() {$res = '<ul class="liste_lettre">'."\n" ;for ($i = 65 ; $i <91 ; $i++) {$this->url->addQueryString($this->variable_lettre, chr($i)) ;$res .= "\t".'<li class="liste_lettre"><a class="lien_alphabet" '.'href="'.$this->url->getURL().'">';$res .= chr($i) ;$res .= '</a></li>'."\n";}$res .= '</ul>';return $res ;}}//-- Fin du code source ------------------------------------------------------------/** $Log: not supported by cvs2svn $* Revision 1.5 2007-06-25 15:02:50 alexandre_tb* correction bug** Revision 1.4 2007-06-25 09:59:03 alexandre_tb* ajout de carte_google, mise en place des templates avec api/formulaire, configuration de multiples inscriptions, ajout de modele pour les mails** Revision 1.3 2007-06-01 13:47:47 alexandre_tb* nouvelles methodes** Revision 1.2 2007-05-25 14:31:24 alexandre_tb* en cours** Revision 1.1 2006/12/13 13:26:52 alexandre_tb* version initiale**/?>