Simplenews again

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous.

Je tiens tout d'abord à m'excuser de poster un autre sujet sur ce thème mais c'est assez urgent.

J'ai un problème avec ce module que je ne parviens par très bien à déterminer.

Je l'ai quelque peu modifié (je sais, ce n'est pas la bonne façon d'arriver à mes fins) et ajouté un champ 'nom' dans la table simplenews_subscriptions car j'avais besoin de stocker le nom de la personne qui y souscrivait.

Lorsque la personne s'abonne, elle rentre son adresse e-mail et son nom qui sont correctement stockés dans la table.

Le hic c'est que quand elle clique sur le mail de confirmation, une seconde insertion se produit et un nombre est inséré dans le champ mail et le mail dans le champ nom. Ce qui fait que pour la même personne, j'ai deux entrées dans la table : une normale et une avec ce chiffre.

Je me suis dit que l'insertion devait poser problème mais je ne vois pas où puisque quand elle s'inscrit ça fonctionne normalement.

D'où ma question : est-ce normal d'avoir deux insertions dans la table où est-ce mon code qui n'est pas bon ?

Je vous montre mes modifs.

////////////////////////////////////////////////
function simplenews_subscribe_user($name, $mail, $tid, $confirm = TRUE) {
$subscription = simplenews_get_user_subscription($mail);

// If user is not subscribed to ANY newsletter, add basic info first.
if (!$subscription) {
$account = _simplenews_user_load($mail);
db_query("INSERT INTO {simplenews_subscriptions} (mail, uid, a_status, name) VALUES ('%s', %d, 1, '%s')", $mail, $account->uid, $name);
$subscription = simplenews_get_user_subscription($mail);
}

$newsletter = taxonomy_get_term($tid);
if ($confirm) {
// Send confirmation e-mail to user to complete subscription or to tell
// them that he or she is already subscribed.
simplenews_mail_confirm($mail, $newsletter, $subscription ? $subscription->snid : NULL, 'subscribe');
}
elseif (!isset($subscription->tids[$tid])) {
// Then, add user to newsletter relationship if not already subscribed.
db_query("INSERT INTO {simplenews_snid_tid} (snid, tid) VALUES (%d, %d)", $subscription->snid, $tid);
}
return TRUE;
}

///////////////////////////////////////////////////
function simplenews_block_form($tid) {
global $user;
$form = array();

if ($user->uid) {
if (simplenews_user_is_subscribed($user->mail, $tid)) {
$submit_text = t('Unsubscribe');
$form['action'] = array('#type' => 'value', '#value' => 'unsubscribe');
}
else {
$submit_text = t('Subscribe');
$form['action'] = array('#type' => 'value', '#value' => 'subscribe');
}
$form['display_mail'] = array('#type' => 'item',
'#title' => t('E-mail'),
'#value' => truncate_utf8($user->mail, 29, FALSE, TRUE),
);
$form['name'] = array('#type' => 'value', '#value' => $user->name);
$form['mail'] = array('#type' => 'value', '#value' => $user->mail);
}
else {
$form['mail'] = array('#type' => 'textfield',
'#title' => t('E-mail'),
'#size' => 20,
'#maxlength' => 128,
'#required' => TRUE,
);
$form['name'] = array('#type' => 'textfield',
'#title' => t('Nom'),
'#size' => 20,
'#maxlength' => 128,
'#required' => TRUE,
);
$form['action'] = array('#type' => 'radios',
'#default_value' => 'subscribe',
'#options' => array('subscribe' => t('Subscribe'), 'unsubscribe' => t('Unsubscribe')),
);
}

$form['tid'] = array('#type' => 'value', '#value' => $tid);
$form['submit'] = array('#type' => 'submit', '#value' => isset($submit_text) ? $submit_text : t('Submit'));
return $form;
}

/**
* Forms API callback; handles block form (un)subscribe validation.
*/
function simplenews_block_form_validate($form_id, $form_values) {
if (!valid_email_address($form_values['mail'])) {
form_set_error('mail', t("The e-mail address you supplied is not valid."));
}
}

Seconde question : par défaut, un e-mail est envoyé pour confirmer l'inscription, est-il possible de s'en passer, que la personne soit directement inscrite ?

Je vous remercie de prendre le temps de lire mon pavé.

Version de Drupal :