Respuestas:
Aunque este enfoque utiliza módulos, agrego nodos después de que los usuarios confirman sus correos electrónicos utilizando Logintoboggan y Reglas . La integración de reglas de Logintoboggan agrega un nuevo evento, When the user account is validated
que le permitirá realizar acciones tras la confirmación por correo electrónico.
Esto hace el trabajo para mí:
/**
* 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)
Si está utilizando el módulo LoginToboggan para la validación de correo electrónico y no desea utilizar el módulo de reglas, simplemente puede imitar la respuesta de validación del módulo (explotando una logintoboggan_email_validated = TRUE
propiedad de cuenta temporal que se envía a hook_user_update) usted mismo en el código:
/**
* 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
}
}
Dado que los módulos principales y otros también invocarán hook_user_update, querrá implementar algo para evitar acciones repetidas. En este ejemplo, configuro otra propiedad en la cuenta $ una vez que se inicia la acción, pero puede imponer un control más preciso si es necesario.
Tenga en cuenta que si usa LoginToboggan para la validación automática de correo electrónico, el método de IOco no funcionará (entre las muchas razones, durante un hook_user_presave, $ account-> status == 1 (es solo el rol que está en su "autorización previa" elegida) estado).