Jawaban:
Meskipun pendekatan ini menggunakan modul, saya menambahkan node setelah pengguna mengkonfirmasi email mereka menggunakan Logintoboggan dan Aturan . Integrasi aturan Logintoboggan menambahkan acara baru When the user account is validated
, yang akan memungkinkan Anda untuk melakukan tindakan setelah konfirmasi email.
Ini bekerja untuk saya:
/**
* 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)
Jika Anda menggunakan modul LoginToboggan untuk validasi email dan Anda tidak ingin menggunakan modul aturan, Anda cukup meniru respons validasi modul (mengeksploitasi logintoboggan_email_validated = TRUE
properti akun sementara yang didorong ke hook_user_update) sendiri dalam kode:
/**
* 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
}
}
Karena modul inti dan lainnya juga akan mengaktifkan hook_user_update Anda ingin menerapkan sesuatu untuk menghindari tindakan berulang. Dalam contoh ini saya menetapkan properti lain pada $ akun setelah tindakan dimulai tetapi Anda dapat menerapkan kontrol yang lebih baik jika perlu.
Perhatikan bahwa jika menggunakan LoginToboggan untuk validasi e-mail otomatis, metode IOco tidak akan berfungsi (di antara banyak alasan - selama hook_user_presave, $ akun-> status == 1 (hanya perannya ada dalam "pra-resmi" yang Anda pilih) negara).