xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Как с помощью VBO сгенерировать пользователям новый пароль и отправить его на почту

Опубликовано в

Настраиваемый экшен для 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
Похожие записи

Комментарии RSS

А можно ли использовать этот код для восстановления пароля?
И куда его вставлять? )

можно, но только зачем

вставлять в файл своего модуля

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании