//Autres auteurs : *@author Florian Schmitt *@copyright Tela-Botanica 2000-2004 *@version $Revision: 1.28 $ $Date: 2007-04-20 08:39:37 $ // +------------------------------------------------------------------------------------------------------+ */ // +------------------------------------------------------------------------------------------------------+ // | ENTETE du PROGRAMME | // +------------------------------------------------------------------------------------------------------+ include_once 'inscription.fonct.wiki.php' ; include_once 'inscription.class.php' ; if (INS_UTILISE_SPIP) include_once 'inscription.fonct.spip.php' ; // +------------------------------------------------------------------------------------------------------+ // | LISTE de FONCTIONS | // +------------------------------------------------------------------------------------------------------+ /** * * @param array les valeurs renvoyés par le formulaire * @return */ function demande_inscription($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'éviter d'obtenir une url trop longue $chaine = substr (session_id(), 0, 8) ; $requete_verif = 'select * from inscription_demande where id_identifiant_session="'.$chaine.'"' ; $resultat_verif = $GLOBALS['ins_db']->query ($requete_verif) ; if ($resultat_verif->numRows() != 0) { $requete_suppression = 'delete from inscription_demande where id_identifiant_session="'.$chaine.'"' ; $GLOBALS['ins_db']->query ($requete_suppression) ; } $requete = 'insert into inscription_demande set id_identifiant_session="'.$chaine.'", id_donnees="'. addslashes(serialize($valeurs)).'", id_date=NOW()' ; $resultat = $GLOBALS['ins_db']->query ($requete) ; if (DB::isError ($resultat)) { echo ("Echec de la requete : $requete
".$resultat->getMessage()) ; } // On envoie un email de confirmation pour l'utilisateur $GLOBALS['ins_url']->addQueryString ('id', $chaine) ; if (INS_UTILISE_REECRITURE_URL) { $url = 'http://'.$GLOBALS['ins_url']->host.'/'.INS_URL_PREFIXE.$chaine ; } else { $url = str_replace ('&', '&', $GLOBALS['ins_url']->getURL()) ; } require_once PAP_CHEMIN_API_PEAR.'HTML/Template/IT.php'; $tpl = new HTML_Template_IT() ; // Le gabarit du mail est dans un template // template 2 $requete = 'select it_template from inscription_template where it_id_template=2'. ' and it_i18n like "%'.INS_LANGUE_DEFAUT.'"' ; if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) { echo 'erreur' ; } $tpl->setVariable('URL_INSCRIPTION', $url) ; mail ($GLOBALS['email'], 'Inscription', $tpl->get(), 'From: '.INS_MAIL_ADMIN_APRES_INSCRIPTION) ; } /** * * @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 (INS_CHAMPS_LETTRE != '' && isset ($valeurs['lettre'])) { inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ; } } /** * Renvoie l'accueil de l'inscription * * @return string HTML */ function AUTH_formulaire_login() { require_once PAP_CHEMIN_API_PEAR.'api/pear/HTML/Template/IT.php'; $tpl = new HTML_Template_IT() ; // Le formulaire pour se logguer est dans un template // template 1 $requete = 'SELECT it_template FROM inscription_template WHERE it_id_template=1'. ' AND it_i18n LIKE "%'.INS_LANGUE_DEFAUT.'"' ; if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) { echo 'erreur' ; } $tpl->setVariable('URL_INSCRIPTION', $GLOBALS['ins_url']->getURL()); return $tpl->get() ; } /** formulaire_envoi_passe() - Renvoie le code HTML d'un formulaire d'envoi de mot de passe par mail * * @return string HTML */ function formulaire_envoi_passe() { $res = '

'.INS_SI_PASSE_PERDU.'

'."\n" ; $res .= '
'."\n" ; $res .= '

'.INS_EMAIL.' :

'."\n" ; $res .= ''."\n" ; $res .= '' ; $res .= '

'."\n" ; $res .= AUTH_formulaire_login() ; return $res; } function insertion($valeur) { // =========== Insertion dans l'annuaire =================== // Génération du nom wikini à partir du nom et du prénom if (INS_UTILISE_WIKINI && INS_NOM_WIKINI_GENERE) { $valeur['nom_wiki'] = genere_nom_wiki ($valeur['nom'], isset ($valeur['prenom']) ? $valeur['prenom'] : '') ; } else { if (!INS_NOM_WIKINI_GENERE) { $valeur['nom_wiki'] = $valeur['nomwiki']; } } $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) ; } if (INS_UTILISE_WIKINI) inscription_interwikini_users('', $valeur) ; return $id_utilisateur ; } /** * 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, $id = '') { // ====================Mise à jour dans l'annuaire gen_annuaire ==================== if ($id == '') { $id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID); } $requete = 'update '.INS_ANNUAIRE.' set '. requete_annuaire ($valeur). 'where '.INS_CHAMPS_ID.'="'.$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.'="'.addslashes($valeur['nom']).'", '; if (isset($valeur['est_structure']) && $valeur['est_structure'] == 0) $req .= INS_CHAMPS_PRENOM.'="'.addslashes($valeur['prenom']).'", '; // Initialisation de variable pour éviter des notices foreach (array ('adresse_1', 'adresse_2', 'ville', 'telephone', 'fax', 'site') as $val) { if (!isset ($valeur[$val])) $valeur[$val] = '' ; } $req .= INS_CHAMPS_MAIL.'="'.addslashes($valeur['email']).'", ' ; $req .= INS_CHAMPS_PASSE.'="'.md5($valeur['mot_de_passe']).'", '. INS_CHAMPS_PAYS.'="'.addslashes($valeur['pays']).'", '. INS_CHAMPS_ADRESSE_1.'="'.addslashes($valeur['adresse_1']).'", '. INS_CHAMPS_ADRESSE_2.'="'.addslashes($valeur['adresse_2']).'", '. INS_CHAMPS_DATE_INSCRIPTION.'=NOW(), '. INS_CHAMPS_CODE_POSTAL.'="'.addslashes($valeur['cp']).'", '. INS_CHAMPS_VILLE.'="'.addslashes($valeur['ville']).'", '. INS_CHAMPS_EST_STRUCTURE.'="'.addslashes($valeur['est_structure']).'", '. INS_CHAMPS_TELEPHONE.'="'.addslashes($valeur['telephone']).'", '. INS_CHAMPS_FAX.'="'.addslashes($valeur['fax']).'", '. INS_CHAMPS_SITE_INTERNET.'="'.addslashes($valeur['site']).'" '; if (isset($valeur['visible'])) $req .= ', '.INS_CHAMPS_VISIBLE.'="'.$valeur['visible'].'"'; else $req .= ', '.INS_CHAMPS_VISIBLE.'=0'; if (INS_CHAMPS_LETTRE != '') { if (isset($valeur['lettre'])) { $req .= ', '.INS_CHAMPS_LETTRE.'="'.$valeur['lettre'].'" '; inscription_lettre('inscrire'); } else { $req .= ', '.INS_CHAMPS_LETTRE.'=0 '; inscription_lettre('desinscrire'); } } if (isset($valeur['sigle_structure'])) { $req .= ', '.INS_CHAMPS_SIGLE_STRUCTURE.'="'.addslashes($valeur['sigle_structure']).'"' ; } if (isset($valeur['num_agrement'])) { $req .= ', '.INS_CHAMPS_NUM_AGREMENT.'="'.addslashes($valeur['num_agrement']).'"' ; } // traitement du numéro de département pour la france if ($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'"; } if (INS_UTILISE_WIKINI && isset ($valeur['nom_wiki'])) $req .= ','.INS_CHAMPS_NOM_WIKINI.'="'.$valeur['nom_wiki'].'"'; 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($id = '') { if ($id == '') { $id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID); } $requete = 'select '.INS_ANNUAIRE.'.* '. 'from '.INS_ANNUAIRE.' '. 'where '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'= "'.$id.'"' ; $resultat = $GLOBALS['ins_db']->query ($requete) ; if (DB::isError($resultat)) { die ($resultat->getMessage().'
'.$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] ; if (INS_CHAMPS_STRUCTURE != '' && isset($ligne[INS_CHAMPS_STRUCTURE])) { $valeurs_par_defaut['structure'] = $ligne[INS_CHAMPS_STRUCTURE] ; //$valeurs_par_defaut['type_structure'] = $ligne['a_type_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] ; if (INS_CHAMPS_NUM_AGREMENT != '') $valeurs_par_defaut['num_agrement'] = $ligne[INS_CHAMPS_NUM_AGREMENT] ; return $valeurs_par_defaut ; } /** info() - Renvoie une fiche d'information sur la personne ou la structure * * @param integer identifiant de la fiche a afficher, mettre -1 pour voir sa propre fiche * @param text nom de l'onglet de la fiche * * @return text Code HTML de la fiche */ function info($id=-1, $type_info='fiche') { if ($id==-1) $id=$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID); $requete = 'SELECT * FROM '.INS_ANNUAIRE.' WHERE '.INS_ANNUAIRE.'.' .INS_CHAMPS_ID.'="'.$id.'"' ; $resultat = $GLOBALS['ins_db'] -> query($requete) ; if (DB::isError($resultat)) { die ($resultat->getMessage().'
'.$resultat->getDebugInfo()) ; } $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ; //voir la présentation de la fiche if ($type_info=='fiche') { if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) { $res = '

'.$ligne[INS_CHAMPS_NOM].'

'."\n"; $res .= '

'.INS_FICHE_STRUCTURE.'

'."\n" ; $res .= '