Gibt es nach der Benutzerbestätigung einen Haken?

8

Ich möchte einen Inhaltstyp hinzufügen, nachdem sich ein Benutzer auf der Site registriert hat.

Ich habe es versucht, hook_user_save()aber es speichert den Inhaltstyp, bevor der Benutzer seine E-Mail bestätigt.

Gibt es nach der E-Mail-Bestätigung einen Haken?

Ahmed
quelle

Antworten:

11

Obwohl dieser Ansatz Module verwendet, füge ich Knoten hinzu, nachdem Benutzer ihre E-Mails mit Logintoboggan und Rules bestätigt haben . Durch die Integration der Logintoboggan-Regeln wird ein neues Ereignis hinzugefügt, When the user account is validatedmit dem Sie nach Bestätigung per E-Mail Aktionen ausführen können.

Patrick Kenny
quelle
Stellen Sie sicher, dass Sie das LoginToboggan Rules Integration- Modul aus dem LoginToboggan- Projekt installieren .
Batandwa
8

Das macht den Job für mich:

/**
 * 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
  }
}
Lukasz Frankowski
quelle
Ich musste verwendenif($account->uid && $account->original->status == 0 && $account->status == 1)
user2534880
2

Wenn Sie das LoginToboggan-Modul für die E-Mail-Validierung verwenden und das Regelmodul nicht verwenden möchten, können Sie die Validierungsantwort des Moduls (Ausnutzung einer temporären logintoboggan_email_validated = TRUEKontoeigenschaft, die an hook_user_update gesendet wird) einfach selbst im Code nachahmen:

 /**
 * 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

  }
}

Da Core- und andere Module auch hook_user_update aufrufen, möchten Sie etwas implementieren, um wiederholte Aktionen zu vermeiden. In diesem Beispiel habe ich eine andere Eigenschaft für das $ -Konto festgelegt, sobald die Aktion gestartet wurde. Sie können jedoch bei Bedarf eine genauere Kontrolle festlegen.

Beachten Sie, dass bei Verwendung von LoginToboggan für die automatische E-Mail-Validierung die IOco-Methode nicht funktioniert (unter den vielen Gründen - während eines hook_user_presave ist der $ account-> status == 1 (es ist nur die Rolle in Ihrem gewählten "vorautorisierten"). Zustand).

Vishnar Tadeleratha
quelle