Merge pull request #5607 from annando/remove-contact

Remove contacts in the background
This commit is contained in:
Tobias Diekershoff 2018-08-13 06:42:08 +02:00 committed by GitHub
commit 1ca8d573e6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 12 deletions

View file

@ -314,15 +314,10 @@ class Contact extends BaseObject
return;
}
$archive = PConfig::get($contact['uid'], 'system', 'archive_removed_contacts');
if ($archive) {
DBA::update('contact', ['archive' => true, 'network' => 'none', 'writable' => false], ['id' => $id]);
return;
}
// Archive the contact
DBA::update('contact', ['archive' => true, 'network' => Protocol::PHANTOM], ['id' => $id]);
DBA::delete('contact', ['id' => $id]);
// Delete the rest in the background
// Delete it in the background
Worker::add(PRIORITY_LOW, 'RemoveContact', $id);
}

View file

@ -12,13 +12,14 @@ require_once 'include/dba.php';
class RemoveContact {
public static function execute($id) {
// Only delete if the contact doesn't exist (anymore)
$r = DBA::exists('contact', ['id' => $id]);
if ($r) {
// Only delete if the contact is archived
$condition = ['archive' => true, 'network' => Protocol::PHANTOM, 'id' => $id];
$r = DBA::exists('contact', $condition);
if (!DBA::isResult($r)) {
return;
}
// Now we delete all the depending table entries
// Now we delete the contact and all depending tables
DBA::delete('contact', ['id' => $id]);
}
}