Puncte:2

Cum pot șterge programatic un utilizator fără a-i șterge conținutul?

drapel us

Vreau să șterg un utilizator cu acest cod:

$cont = Utilizator::load(19920);
$cont->delete();

Cum pot face asta fără să șterg și conținutul utilizatorului?

Am examinat cârligele _user_cancel(), dar toate par să se refere la a face lucruri în interfața de utilizare admin.

Acest cârlig funcționează așa cum mă aștept și elimină opțiunea butonului radio user_cancel_delete din interfața de utilizare admin.

/**
 * Implementează hook_user_cancel_methods_alter().
 */
funcția my_user_module_user_cancel_methods_alter(&$methods) {
  // Eliminare Șterge contul și metoda de conținut.
  unset($methods['user_cancel_delete']);
}

dar vreau să nu șterg conținut când $account->delete() este numit în cârligul meu de actualizare.

Puncte:4
drapel cn

Da, puteți utiliza procesul user_cancel pentru a preveni ștergerea conținutului. După cum ați aflat, nu vă ajută să eliminați opțiunile din UI. Programatic trebuie să apelați direct funcția, specificând metoda user_cancel_reassign pentru a înlocui autorul cu anonim înainte de a șterge utilizatorul:

user_cancel([], $uid, 'user_cancel_reassign');
$cont = Utilizator::load($uid);
$cont->delete();

Avertisment: acest lucru nu funcționează pentru mai mult de 10 piese de conținut. Apoi, trebuie să rulați acest lucru ca lot, ceea ce ar șterge și utilizatorul ca pas final al procesului lot. Vedea ștergerea utilizatorului: user_cancel_reassign nu funcționează când utilizatorul are mai mult de 10 conținut asociat

drapel us
Mulțumesc @4k4. `user_cancel([], $uid, 'user_cancel_reassign');` a fost lucrul care mi-a lipsit. Sunt sigur că a existat pentru totdeauna în Drupal. laugh out loud. Voi arunca o privire și atunci când lucrez cu mai mult de 10 piese de conținut, care sunt sigur că vor apărea.
4uk4 avatar
drapel cn
Da, arată ca un cod antic Drupal. Ar putea fi mai potrivit pentru viitor să interogați nodurile și să schimbați singur autorul în anonim.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.