$nom_site_spip, 'adresse_site' => $adresse_site, 'cookie' => $cookie)); if (envoyer_mail($email_oubli, "[$nom_site_spip] "._T('pass_oubli_mot'), $message)) $erreur = _T('pass_recevoir_mail'); else $erreur = _T('pass_erreur_probleme_technique'); } } else $erreur = _T('pass_erreur_non_enregistre', array('email_oubli' => htmlspecialchars($email_oubli))); } else $erreur = _T('pass_erreur_non_valide', array('email_oubli' => htmlspecialchars($email_oubli))); } // afficher le formulaire d'oubli du pass if($oubli_pass=="oui") { return array($formulaire, $GLOBALS['delais'], array( 'oubli_pass' => $oubli_pass, 'erreur' => $erreur, 'inscription_redac' => '', 'inscription_visiteur' => '', 'mode_login' => false, 'reponse_formulaire' => '', 'liste' => '' ) ); } //code pour s inscrire else if ($inscriptions_ecrire OR $inscriptions_publiques OR (lire_meta('forums_publics') == 'abo') ) { // debut presentation ($inscriptions_ecrire AND $type=="redac") ? $inscription_redac = "oui" : $inscription_redac = "non" ; ($type!="redac" AND $inscriptions_publiques AND $acces_membres=='oui') ? $inscription_visiteur = "oui" : $inscription_visiteur = "non" ; list($affiche_formulaire,$reponse_formulaire)=formulaire_inscription(($type=="redac")? 'redac' : 'forum',$acces_membres,$formulaire); } else { spip_log(_T('pass_erreur')." "._T('pass_rien_a_faire_ici')."visiteurs non autorises spip listes"); } return array($formulaire, $GLOBALS['delais'], array( 'oubli_pass' => $oubli_pass, 'erreur' => $erreur, 'inscription_redacteur' => $inscription_redac, 'acces_membres' => $acces_membres, 'inscription_visiteur' => $inscription_visiteur, 'mode_login' => $affiche_formulaire, 'reponse_formulaire' => $reponse_formulaire, 'accepter_auteur' => lire_meta("accepter_inscriptions") , 'id_liste' => $id_liste ) ); } // inscrire les visiteurs dans l'espace public (statut 6forum) ou prive (statut nouveau->1comite) function formulaire_inscription($type,$acces_membres,$formulaire) { $request_uri = $GLOBALS["REQUEST_URI"]."#abo"; global $mail_inscription_; global $nom_inscription_; global $list; global $liste; global $id_fond; //fond name of the form posting values if ($type == 'redac') { if (lire_meta("accepter_inscriptions") != "oui") return; $statut = "nouveau"; } else if ($type == 'forum') { $statut = "6forum"; } else { return; // tentative de hack...? } if($acces_membres == 'non') $nom_inscription_ = test_login2($mail_inscription_) ; //utiliser_langue_site(); $nomsite= extraire_multi(lire_meta("nom_site")); $urlsite=extraire_multi(lire_meta("adresse_site")); //Verify the form source. This way it is possible to create many newsletter forms //in the same page (but with different fond) to separate subscription and deletion as an example $verify_source_fond = false; if(!$id_fond) {$verify_source_fond = true;} elseif($id_fond==$formulaire) $verify_source_fond = true; if($mail_inscription_ && $verify_source_fond){ $mail_valide = email_valide($mail_inscription_); } if ($mail_valide && $nom_inscription_) { $result = spip_query("SELECT * FROM spip_auteurs WHERE email="._q($mail_inscription_)); //echo "
"; // l'abonne existe deja. if ($row = spip_fetch_array($result)) { $id_auteur = $row['id_auteur']; $statut = $row['statut']; $abonne_existant = "oui" ; unset ($continue); if ($statut == '5poubelle') { $reponse_formulaire = _T('form_forum_access_refuse'); }elseif ($statut == 'nouveau') { spip_query ("DELETE FROM spip_auteurs WHERE id_auteur="._q($id_auteur)); $continue = true; }else{ // envoyer le cookie de relance modif abonnement $cookie = creer_uniqid(); spip_query("UPDATE spip_auteurs SET cookie_oubli = "._q($cookie)." WHERE email ="._q($mail_inscription_)); $message = _T('spiplistes:abonnement_mail_passcookie', array('nom_site_spip' => $nomsite, 'adresse_site' => $urlsite, 'cookie' => $cookie)); if (envoyer_mail($mail_inscription_, "[$nomsite] "._T('spiplistes:abonnement_titre_mail'), $message)){ $reponse_formulaire =_T('spiplistes:pass_recevoir_mail'); //echo _T('spiplistes:pass_recevoir_mail'); }else{ $reponse_formulaire =_T('pass_erreur_probleme_technique'); //echo _T('pass_erreur_probleme_technique'); } } } else { $continue = true; } // envoyer identifiants par mail if ($continue) { //ajouter un code pour retrouver l'abonne $pass = creer_pass_aleatoire(8, $mail_inscription_); $login_ = test_login2($mail_inscription_); $mdpass = md5($pass); $htpass = generer_htpass($pass); $cookie = creer_uniqid(); $type_abo = $GLOBALS['suppl_abo'] ; //verify suppl_abo is correct if($desabo!="oui" && $type_abo!="texte" && $type_abo!="html") return; $result = spip_query("INSERT INTO spip_auteurs (nom, email, login, pass, statut, htpass, cookie_oubli) ". "VALUES ("._q($nom_inscription_).", "._q($mail_inscription_).","._q($login_).","._q($mdpass).","._q($statut).","._q($htpass).","._q($cookie).")"); spip_log("insert inscription : ->".$mail_inscription_); $id_abo=spip_insert_id(); spip_query("INSERT INTO `spip_auteurs_elargis` (`id_auteur`,`spip_listes_format`) VALUES ("._q($id_abo).","._q($type_abo).")"); // abonnement aux listes http://www.phpfrance.com/tutorials/index.php?page=2&id=13 $result = spip_query("SELECT * FROM spip_auteurs WHERE email="._q($mail_inscription_)); // l'abonne existe deja. if ($row = spip_fetch_array($result)) { $id_auteur = $row['id_auteur']; $statut = $row['statut']; // on abonne l'auteur aux listes if(is_array($list)){ while( list(,$val) = each($list) ){ $result=spip_query("DELETE FROM spip_auteurs_listes WHERE id_auteur="._q($id_auteur)." AND id_liste="._q($val)); $result=spip_query("INSERT INTO spip_auteurs_listes (id_auteur,id_liste) VALUES ("._q($id_auteur).","._q($val).")"); } } } // abo ecrire_acces(); $nom_site_spip = extraire_multi(lire_meta("nom_site")); $adresse_site = extraire_multi(lire_meta("adresse_site")); $message = _T('form_forum_message_auto')."\n\n"._T('spiplistes:bonjour')."\n"; if ($desabo=="oui"){ $message .= _T('spiplistes:mail_non', array('nom_site_spip' => $nom_site_spip))."\n"; }else if($type_abo=="texte" || $type_abo=="html") { //SELECT des listes de l'abonne $result_list = spip_query("SELECT * FROM spip_auteurs_listes AS abonnements, spip_listes AS listes WHERE abonnements.id_auteur="._q($id_auteur)." AND abonnements.id_liste=listes.id_liste AND listes.statut='liste'"); //lister les listes $message_list = '' ; $i = 0 ; while($row = spip_fetch_array($result_list)) { $id_liste = $row['id_liste'] ; $result = spip_query("SELECT * FROM spip_listes WHERE id_liste="._q($id_liste)); $row = spip_fetch_array($result); $titre = $row['titre'] ; $message_list .= "\n- ".$titre ; $i++ ; } if($i>1){ $message .= "\n"._T('spiplistes:inscription_responses').$nom_site_spip."." ; $message .= "\n"._T('spiplistes:inscription_listes').$message_list ; } if($i==1){ $message .= "\n"._T('spiplistes:inscription_response').$nom_site_spip."." ; $message .= "\n"._T('spiplistes:inscription_liste').$message_list ; } if($i==0){ $message .= "\n"._T('spiplistes:inscription_response').$nom_site_spip._T('spiplistes:inscription_format').$type_abo."." ; } } if(($acces_membres == 'oui') && ($type == 'forum') ){ $message .="\n\n"._T('spiplistes:inscription_mail_forum', array('nom_site_spip' => $nom_site_spip, 'adresse_site' => $adresse_site))."\n\n"; $message .= "- "._T('form_forum_login')." $login_\n"; $message .= "- "._T('form_forum_pass')." $pass\n\n"; } if(($type == 'redac') OR ($inscriptions_ecrire AND $acces_membres == 'non')) { $message .="\n\n"._T('spiplistes:inscription_mail_redac', array('nom_site_spip' => $nom_site_spip, 'adresse_site' => $adresse_site))."\n\n"; $message .= "- "._T('form_forum_login')." $login_\n"; $message .= "- "._T('form_forum_pass')." $pass\n\n"; } } $message .= "\n\n-----------------------------------------\n\n" ; $message .= _T('spiplistes:abonnement_mail').' '.generer_url_public("abonnement","d=$cookie") ; $message .= "\n\n-----------------------------------------\n\n" ; if($abonne_existant != 'oui'){ if (envoyer_mail($mail_inscription_, "[$nom_site_spip] "._T('spiplistes:form_forum_identifiants'), $message)) { spip_log("inscription : ->".$mail_inscription_); if($acces_membres == 'oui'){ $reponse_formulaire =_T('form_forum_identifiant_mail'); }else{ $reponse_formulaire =_T('spiplistes:form_forum_identifiant_confirm'); } } else { $reponse_formulaire =_T('form_forum_probleme_mail'); } } } else { //Non c'è email o non è valida if($mail_inscription_ AND !$mail_valide && $verify_source_fond){ $reponse_formulaire =_T('spiplistes:erreur_adresse'); } //Infos sur la liste if(!$liste) $liste=''; return array(true,$reponse_formulaire); } return array(false,$reponse_formulaire); } function test_login2($mail) { if (strpos($mail, "@") > 0) $login_base = substr($mail, 0, strpos($mail, "@")); else $login_base = $mail; $login_base = strtolower($login_base); $login_base = ereg_replace("[^a-zA-Z0-9]", "", $login_base); if (!$login_base) $login_base = "user"; for ($i = 0; ; $i++) { if ($i) $login = $login_base.$i; else $login = $login_base; $result = spip_query("SELECT id_auteur FROM spip_auteurs WHERE login="._q($login)); if (!spip_num_rows($result)) break; } return $login; } ?>