C'è un gancio dopo la conferma dell'utente?


8

Voglio aggiungere un tipo di contenuto dopo che un utente si è registrato al sito.

Ho provato hook_user_save()ma salva il tipo di contenuto prima che l'utente confermi la sua e-mail.

C'è un gancio dopo la conferma via e-mail?

Risposte:


11

Sebbene questo approccio utilizzi i moduli, aggiungo nodi dopo che gli utenti hanno confermato le loro e-mail utilizzando Logintoboggan e Regole . L'integrazione delle regole di Logintoboggan aggiunge un nuovo evento, When the user account is validatedche ti consentirà di eseguire azioni dopo la conferma via e-mail.


Assicurati di installare il modulo Integrazione regole LoginToboggan dal progetto LoginToboggan .
Batandwa,

8

Questo fa il lavoro per me:

/**
 * Implements @see hook_user_presave
 */
function hook_user_presave(&$edit, $account, $category) {
  if ($account->uid // user is not new
      && $account->status === "0" && $edit['status']==1) { // user is being activated
  }
}

Ho dovuto usareif($account->uid && $account->original->status == 0 && $account->status == 1)
user2534880 il

2

Se stai utilizzando il modulo LoginToboggan per la convalida della posta elettronica e non desideri utilizzare il modulo delle regole, puoi semplicemente imitare la risposta di convalida del modulo (sfruttando una logintoboggan_email_validated = TRUEproprietà dell'account temporanea che viene trasferita a hook_user_update) nel codice:

 /**
 * Implement hook_user_update()
 *
 */
function yourcustommodule_user_update(&$edit, $account) {
  if (!empty($account->logintoboggan_email_validated) && !isset($account->your_custom_action)) {
        $account->your_custom_action = TRUE;

        // Do what you want here

  }
}

Poiché core e altri moduli invocheranno anche hook_user_update, si vorrebbe implementare qualcosa per evitare azioni ripetute. In questo esempio ho impostato un'altra proprietà sull'account $ una volta avviata l'azione ma è possibile imporre un controllo più preciso, se necessario.

Si noti che se si utilizza LoginToboggan per la convalida automatica della posta elettronica, il metodo di IOco non funzionerà (tra i molti motivi - durante un hook_user_presave, $ account-> status == 1 (è solo il ruolo nella scelta "pre-autorizzata" stato).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.