Antworten:
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 validated
mit dem Sie nach Bestätigung per E-Mail Aktionen ausführen können.
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
}
}
if($account->uid && $account->original->status == 0 && $account->status == 1)
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 = TRUE
Kontoeigenschaft, 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).