function spiplistes_formulaire_abonnement ( $type , $acces_membres , $formulaire , $nom_site_spip , $inscription_redacteur , $inscription_visiteur ) { $mail_inscription_ = trim(strtolower(_request('mail_inscription_'))); $nom_inscription_ = trim(_request('nom_inscription_')); $type_abo = _request('suppl_abo') ; $listes_demande = _request('list'); $desabo = ($type_abo == 'non') ? 'oui' : 'non'; $adresse_site = $GLOBALS['meta']['adresse_site']; $reponse_formulaire = ''; $email_a_envoyer = $mode_modifier = $sql_where = false; $abonne = array(); // traiter d'abord si retour de mail lien cookie $d = _request('d'); if(!empty($d)) { $sql_where = array( 'cookie_oubli='.sql_quote($d) , 'statut<>'.sql_quote('5poubelle') , 'pass<>'.sql_quote('') ); } // ou si identifie' else if($connect_id_auteur = intval($GLOBALS['auteur_session']['id_auteur'])) { $sql_where = array("id_auteur=$connect_id_auteur"); } if($sql_where) { // cherche les coordonnees de l'abonne' $sql_select = 'id_auteur,statut,nom,email,cookie_oubli'; $sql_result = sql_select( $sql_select , 'spip_auteurs' , $sql_where , '', '', 1 ); if($row = sql_fetch($sql_result)) { foreach(explode(',', $sql_select) as $key) { $abonne[$key] = $row[$key]; } } $abonne['format'] = spiplistes_format_abo_demande($abonne['id_auteur']); } // si identifie' par cookie ou login... effectuer les modifications demandees if(count($abonne)) { // toujours rester en mode modif pour permettre la correction $mode_modifier = 'oui'; if($desabo == 'oui') { spiplistes_format_abo_modifier($abonne['id_auteur']); $reponse_formulaire = _T('spiplistes:vous_etes_desabonne'); $email_a_envoyer = true; } else if($listes_demande) { //spiplistes_debug_log("demande modification abonnements listes " . implode(",", $listes_demande)); if(is_array($listes_demande) && count($listes_demande)) { $listes_ajoutees = spiplistes_abonnements_ajouter($abonne['id_auteur'] , array_map('intval', $listes_demande) ); $curr_abos_auteur = spiplistes_abonnements_listes_auteur($abonne['id_auteur']); foreach($curr_abos_auteur as $id_liste) { if(!in_array($id_liste, $listes_demande)) { spiplistes_abonnements_auteur_desabonner($abonne['id_auteur'] , $id_liste ); } } } // modifier le format de reception ? if(spiplistes_format_valide($type_abo) && ($type_abo != $abonne['format'])) { spiplistes_format_abo_modifier($abonne['id_auteur'], $abonne['format'] = $type_abo); //$abonne['ids_abos'] = spiplistes_abonnements_listes_auteur($abonne['id_auteur']); } $reponse_formulaire = _T('spiplistes:demande_enregistree_retour_mail'); $email_a_envoyer = true; } else { //spiplistes_debug_log('pas de demande, afficher formulaire de modif au complet'); $reponse_formulaire = '' . '<span class="nom">' . $abonne['nom'] . "</span>\n" . '<span class="souhait">' . _T('spiplistes:effectuez_modif_validez', array('s'=>$abonne['nom'])). "</span>\n" ; } $id_abonne = $abonne['id_auteur']; $objet_email = _T('spiplistes:votre_abo_listes'); $contexte = array('titre' => $objet_email); } else // non identifie' ? gestion par cookie_oubli. { $texte_intro = _T('form_forum_message_auto') . '<br /><br />'._T('spiplistes:bonjour') . "<br />\n"; $abonne = array('email' => email_valide($mail_inscription_)); if($abonne['email']) { // si l'abonne existe deja mais pas d'action demandee, // affiche formulaire complet //if($row = sql_fetch( if ($row = spiplistes_auteurs_auteur_select ('id_auteur,login,nom,statut,lang', 'email='.sql_quote($abonne['email'])) ) { $abonne['id_auteur'] = intval($row['id_auteur']); $abonne['statut'] = $row['statut']; $abonne['login'] = $row['login']; $abonne['nom'] = $row['nom']; $abonne['lang'] = $row['lang']; $abonne['format'] = ($f = spiplistes_format_abo_demande($abonne['id_auteur'])) ? $f : 'texte' ; if($abonne['statut'] == '5poubelle') { $reponse_formulaire = _T('form_forum_access_refuse'); } // si encore nouveau, c'est qu'il ne s'est jamais identifie' else if($abonne['statut'] == 'nouveau') { // le supprimer. Il sera re-cree plus loin spiplistes_auteurs_auteur_delete('id_auteur='.sql_quote($abonne['id_auteur'])); $abonne['id_auteur'] = false; } else { // demande de modifier l'abonnement ? envoie le cookie de relance par mail spiplistes_auteurs_cookie_oubli_updateq($abonne['cookie_oubli'] = creer_uniqid(), $abonne['email']); $objet_email = _T('spiplistes:abonnement_titre_mail'); $texte_email = spiplistes_texte_inventaire_abos($abonne['id_auteur'], $type_abo, $nom_site_spip); $contexte = array('titre' => $objet_email); $id_abonne = $abonne['id_auteur']; } } // l'adresse mail n'existe pas dans la base. else { $abonne['login'] = spiplistes_login_from_email($abonne['email']); $abonne['nom'] = (($acces_membres == 'non') || empty($nom_inscription_)) ? ucfirst($abonne['login']) : $nom_inscription_ ; // ajouter l'abonne $pass = creer_pass_aleatoire(8, $abonne['email']); $abonne['zepass'] = $pass; $abonne['mdpass'] = md5($pass); $abonne['htpass'] = generer_htpass($pass); $abonne['cookie_oubli'] = creer_uniqid(); $abonne['statut'] = ($inscription_redacteur == 'oui') ? 'nouveau' : '6forum'; // format d'envoi par defaut pour le premier envoi de confirmation $abonne['format'] = 'texte'; // creation du compte ... if($id_abonne = spiplistes_auteurs_auteur_insertq( array( 'nom' => $abonne['nom'] , 'email' => $abonne['email'] , 'login' => $abonne['login'] , 'pass' => $abonne['mdpass'] , 'statut' => $abonne['statut'] , 'htpass' => $abonne['htpass'] , 'cookie_oubli' => $abonne['cookie_oubli'] ) )) { // creation .htpasswd & LDAP si besoin systeme ecrire_acces(); // premier format de reception par defaut spiplistes_format_abo_modifier($id_abonne, $abonne['format']); } $objet_email = _T('spiplistes:confirmation_inscription'); $contexte = array( 'titre' => $objet_email , 'nouvel_inscription' => 'oui' , 'inscription_redacteur' => $inscription_redacteur , 'inscription_visiteur' => $inscription_visiteur ); } $email_a_envoyer = true; } else if(!empty($mail_inscription_)) { //Non email o non valida return(array(true, _T('spiplistes:erreur_adresse'), $mode_modifier, false)); } } if($id_abonne && $email_a_envoyer) { $abonne['ids_abos'] = spiplistes_abonnements_listes_auteur($abonne['id_auteur']); $abonne['format'] = spiplistes_format_valide($abonne['format']); $email_a_envoyer = spiplistes_preparer_message( ($objet_email = "[$nom_site_spip] " . $objet_email) , spiplistes_patron_message() , array_merge($contexte, $abonne) ); if( spiplistes_envoyer_mail( $abonne['email'] , $objet_email , $email_a_envoyer , false , '' , $abonne['format'] ) ) { $reponse_formulaire = ($acces_membres == 'oui') ? _T('form_forum_identifiant_mail') : _T('spiplistes:demande_enregistree_retour_mail') ; } else { $reponse_formulaire = _T('form_forum_probleme_mail'); } } return(array(true, $reponse_formulaire, $mode_modifier, $abonne)); } // end spiplistes_formulaire_abonnement()
function formulaires_spip_listes_inscription_traiter_dist ($id_liste='') { // enregistre dans spip_auteurs, spip_auteurs_elargis, spip_auteurs_listes $val['email'] = _request('email'); $val['nom'] = _request('email'); $alea_actuel = creer_uniqid(); $alea_futur = creer_uniqid(); $val['alea_actuel'] = $alea_actuel; $val['alea_futur'] = $alea_futur; $val['low_sec'] = ''; $val['statut'] = 'aconfirmer'; $format = _request('format_abo'); $listes = _request('listes'); // si l'auteur existe deja, $auteur = spiplistes_auteurs_auteur_select('id_auteur,statut,lang' , 'email='.sql_quote($val['email'])); if ($auteur) { $id_auteur = $auteur['id_auteur']; // reactiver le compte si necessaire if ($auteur['statut'] == '5poubelle') { spiplistes_auteurs_auteur_statut_modifier ($id_auteur, 'aconfirmer'); } spiplistes_debug_log ('inscription auteur #'.$id_auteur.' email:'.$val['email']); } else { // creer le compte abonne' if ($id_auteur = spiplistes_auteurs_auteur_insertq ($val)) { sql_insertq( 'spip_auteurs_elargis' , array('id_auteur'=>$id_auteur ,'spip_listes_format'=>$format ) ); } spiplistes_debug_log ('NEW inscription email:'.$val['email']); $lang = $GLOBALS['meta']['langue_site']; } if ($listes) { foreach($listes as $liste) { sql_insertq ('spip_auteurs_listes' , array('id_auteur'=>$id_auteur ,'id_liste'=>$liste ) ); } } // envoyer mail de confirmation if ( spiplistes_envoyer_mail ( $val['email'] , _T('spiplistes:confirmation_inscription') , _T('spiplistes:inscription_reponses_s' , array('s' => spiplistes_nom_site_texte ($lang)) ) ) ) { $contexte = array('message_ok'=>_T('spiplistes:demande_ok'),'editable' => false,); } else { $contexte = array('message_ok'=>_T('spiplistes:demande_ko'),'editable' => false,); } return ($contexte); }