2010-08-23 4 views
1

bonjour, j'ai créé un nouveau type de contenu - pétition, une dernière étape doit être la vérification de leur adresse mail en leur envoyant un lien pour les prouver ou les supprimer de la pétition.Vérification du courrier basé sur l'action du courrier symbolique

Je dois obtenir une sorte de lien unique que j'envoie comme courrier d'action à jeton au compte de courrier électronique fourni dans le formulaire. le lien tokenized devrait alors fixer leur adresse de courrier électronique valide et devrait également être en mesure de publier la publication.

Je suis un peu désespéré ici, les directions générales sont appréciées.

Répondre

1

Voici un exemple sur la façon de changer le contenu d'un nœud et comment envoyer un mail lors de la création d'un nœud (mais vous pouvez également envoyer un mail quand un formulaire est rempli). Vous devriez être capable de l'adapter pour travailler avec votre configuration.

Un noeud est créé et n'est pas publié par défaut. Ici, je vais définir le noeud comme publié lorsque quelqu'un clique sur un lien dans un mail.

Créer un module personnalisé qui parle au nodeapi:

function module_nodeapi($node, $op, $a3 = NULL, $a4 = NULL){ 

    if($node->type == 'petition'){ 
     switch ($op) { 
      case 'submit': 

      case 'insert': 
       $mail = $user->mail; 
       $nodeid = $node->nid; 
        // mail the user using the drupal_send_mail() function 
        // make the link something like: http://web.be/petition/validate/$nodeid/$mail 
        // drupal_set_message('thank you for validating the petition'); 
      case 'update': 
      break; 
     } 
    } 

Ainsi, un exemple du lien est http://web.be/petition/validate/20/[email protected]. La prochaine chose à faire est d'utiliser le hook_menu pour obtenir le lien et ses variables (également dans votre module personnalisé):

function module_menu(){ 
    $items['petition/valid/%/%'] = array(
     'title' => 'Validated your petition-entry', 
     'page callback' => 'module_validate_petition', 
     'page arguments' => array(1,2), 
     'access arguments' => array('access content'), 
     'type' => MENU_CALLBACK, 
    ); 
} 

function module_validate_petition($nid, $mail){ 
    // load the node 
    $node = node_load($nid); 
    // set to published 
    $node->status = 1; 
    // save the node 
    node_save($node); 
} 
Questions connexes