Настраиваемый экшен для VBO, генерирующий пользователям новый пароль и отправляющий его на почту:
/**
* Implements hook_action_info().
*/
function mymodule_action_info() {
return array(
'mymodule_change_password' => array(
'type' => 'user',
'label' => 'Сменить пароль',
'configurable' => TRUE,
'triggers' => array('any'),
),
);
}
/**
* Action form.
*/
function mymodule_change_password_form($context) {
$form['subject'] = array(
'#type' => 'textfield',
'#title' => 'Тема письма',
'#default_value' => 'Уведомление о смене пароля',
);
$form['message'] = array(
'#type' => 'textarea',
'#title' => 'Сообщение',
'#description' => 'Сообщение, которое будет отправлено пользователям',
'#default_value' => 'Ваш пароль на сайте [site:url] изменён на [user:password]',
);
return $form;
}
/**
* Action form submit.
*/
function mymodule_change_password_submit($form, $form_state) {
return array(
'subject' => $form_state['values']['subject'],
'message' => $form_state['values']['message'],
);
}
/**
* Action callback.
*/
function mymodule_change_password($user, $context) {
$new_password = user_password(8);
user_save($user, array('pass' => $new_password));
$context['message'] = str_replace('[user:password]', $new_password, $context['message']);
drupal_mail('system', 'mail', $user->mail, language_default(), array(
'context' => array(
'subject' => token_replace($context['subject'], array('user' => $user)),
'message' => token_replace($context['message'], array('user' => $user)),
)
));
}
Полезно при миграции пользователей из других cms.
Написанное актуально для
Drupal 7.x
Похожие записи
Комментарии
А можно ли использовать этот код для восстановления пароля?
И куда его вставлять? )
можно, но только зачем
вставлять в файл своего модуля
Добавить комментарий