Score:2

ฉันจะลบผู้ใช้โดยทางโปรแกรมโดยไม่ลบเนื้อหาได้อย่างไร

ธง us

ฉันต้องการลบผู้ใช้ด้วยรหัสนี้:

บัญชี $ = ผู้ใช้ :: โหลด (19920);
$account->delete();

ฉันจะทำอย่างนั้นได้อย่างไรโดยไม่ลบเนื้อหาของผู้ใช้ด้วย

ฉันได้ตรวจสอบ _user_cancel() hooks แล้ว แต่ทั้งหมดดูเหมือนจะเกี่ยวกับการทำสิ่งต่างๆ ใน ​​UI ของผู้ดูแลระบบ

hook นี้ทำงานตามที่ฉันคาดไว้และลบตัวเลือกปุ่มตัวเลือก user_cancel_delete ออกจาก UI ของผู้ดูแลระบบ

/**
 * ใช้ hook_user_cancel_methods_alter()
 */
ฟังก์ชัน my_user_module_user_cancel_methods_alter(&$methods) {
  // Remove ลบบัญชีและวิธีการเนื้อหา
  unset($methods['user_cancel_delete']);
}

แต่ฉันต้องการที่จะไม่ลบเนื้อหาเมื่อ $บัญชี->ลบ() ถูกเรียกในเบ็ดอัปเดตของฉัน

Score:4
ธง cn

ได้ คุณสามารถใช้กระบวนการ user_cancel เพื่อป้องกันไม่ให้เนื้อหาถูกลบ อย่างที่คุณทราบ การลบตัวเลือกออกจาก UI ไม่ได้ช่วยอะไร คุณต้องเรียกใช้ฟังก์ชันโดยตรงโดยทางโปรแกรมโดยระบุเมธอด user_cancel_reassign เพื่อแทนที่ผู้เขียนด้วยนิรนามก่อนที่จะลบผู้ใช้:

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

ข้อแม้: สิ่งนี้ใช้ไม่ได้กับเนื้อหามากกว่า 10 ชิ้น จากนั้นคุณต้องเรียกใช้สิ่งนี้เป็นแบทช์ ซึ่งจะลบผู้ใช้ด้วยเป็นขั้นตอนสุดท้ายของกระบวนการแบทช์ ดู การลบผู้ใช้: user_cancel_reassign ไม่ทำงานเมื่อผู้ใช้มีเนื้อหาที่เกี่ยวข้องมากกว่า 10 รายการ

us flag
Thanks @4k4. `user_cancel([], $uid, 'user_cancel_reassign');` was the thing I was missing. I'm sure it's been around forever in Drupal. lol. I'll also have a look at when working with more than 10 pieces of content, which I'm sure will come up.
4uk4 avatar
cn flag
Yes, this looks like ancient Drupal code. It might be more future-proof to query the nodes and change the author to anonymous yourself.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา