Рейтинг:2

Как я могу программно удалить пользователя, не удаляя его содержимое?

флаг us

Я хочу удалить пользователя с этим кодом:

$аккаунт = Пользователь::загрузить(19920);
$аккаунт->удалить();

Как я могу это сделать, не удаляя при этом контент пользователя?

Я просматривал хуки _user_cancel(), но все они, похоже, связаны с действиями в пользовательском интерфейсе администратора.

Этот хук работает так, как я ожидаю, и удаляет опцию переключателя user_cancel_delete из пользовательского интерфейса администратора.

/**
 * Реализует hook_user_cancel_methods_alter().
 */
функция my_user_module_user_cancel_methods_alter(&$methods) {
  // Удалить Удалить учетную запись и метод ее содержимого.
  unset($methods['user_cancel_delete']);
}

но я хочу не удалять контент, когда $аккаунт->удалить() вызывается в моем хуке обновления.

Рейтинг:4
флаг cn

Да, вы можете использовать процесс user_cancel, чтобы предотвратить удаление контента. Как вы узнали, удаление параметров из пользовательского интерфейса не помогает. Программно нужно вызвать функцию напрямую, указав метод user_cancel_reassign чтобы заменить автора на анонимного перед удалением пользователя:

user_cancel([], $uid, 'user_cancel_reassign');
$account = User::load($uid);
$аккаунт->удалить();

Предостережение: это не работает для более чем 10 единиц контента. Затем вам нужно запустить это как пакет, который также удалит пользователя в качестве последнего шага пакетного процесса. Видеть удаление пользователя: user_cancel_reassign не работает, когда у пользователя более 10 связанного контента

флаг us
Спасибо @4k4. `user_cancel([], $uid, 'user_cancel_reassign');` это то, чего мне не хватало. Я уверен, что это было всегда в Drupal. LOL. Я также посмотрю, когда работаю с более чем 10 частями контента, которые, я уверен, появятся.
4uk4 avatar
флаг cn
Да, это похоже на древний код Drupal. Возможно, было бы более перспективным запросить узлы и самостоятельно изменить автора на анонимный.

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

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.