function action_spiplistes_supprimer_abonne_dist () { include_spip('inc/autoriser'); include_spip('inc/spiplistes_api'); // les globales ne passent pas en action //global $connect_id_auteur; $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur']; $securiser_action = charger_fonction('securiser_action', 'inc'); $id_auteur = intval($securiser_action()); $redirect = urldecode(_request('redirect')); if (autoriser('supprimer', 'auteur', $id_auteur)) { $result = sql_select("id_auteur,statut", "spip_auteurs", "id_auteur=".sql_quote($id_auteur), '','', 1); if ($row = sql_fetch($result)) { $id_auteur = intval($row['id_auteur']); $statut = $row['statut']; if( ($id_auteur > 0) && ($statut=='6forum') ) { $sql_whereq = "id_auteur=".sql_quote($id_auteur); if( // vide la queue du courrier en attente pour cet abonne' spiplistes_courriers_en_queue_supprimer($sql_whereq) // supprime l'abonne' des abonnements && spiplistes_abonnements_auteur_desabonner($id_auteur, 'toutes') // supprime l'abonne' des formats elargis && spiplistes_format_abo_supprimer($id_auteur) ) { spiplistes_log("ID_AUTEUR #$id_auteur UNSUBSCRIBE BY ID_AUTEUR #$connect_id_auteur"); // ne peut supprimer que les invites if($statut=='6forum') { if(spiplistes_auteurs_auteur_delete($sql_whereq)) { // garde une petite trace... spiplistes_log("ID_AUTEUR #$id_auteur DELETED BY ID_AUTEUR #$connect_id_auteur"); } } } } } } if($redirect) { redirige_par_entete(str_replace("&", "&", $redirect)); } }
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()