return;
}
- $archive = PConfig::get($contact['uid'], 'system', 'archive_removed_contacts');
- if ($archive) {
- DBA::update('contact', ['archive' => true, 'network' => 'none', 'writable' => false], ['id' => $id]);
- return;
- }
-
- DBA::delete('contact', ['id' => $id]);
+ // Archive the contact
+ DBA::update('contact', ['archive' => true, 'network' => Protocol::PHANTOM], ['id' => $id]);
- // Delete the rest in the background
+ // Delete it in the background
Worker::add(PRIORITY_LOW, 'RemoveContact', $id);
}
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]);
}
}