X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2FContact.php;h=d0f4023447f1448962d7f1ffd0bbabfcff3e97ab;hb=250f978872daeb3cfe02b2ac63ffd2d893a53aa0;hp=23b5bbe5b82be3d8207c9dbf87f70c240736b5f3;hpb=bae9f0852f89908b9635d320eb9bb86ba1bd19a5;p=friendica.git diff --git a/include/Contact.php b/include/Contact.php index 23b5bbe5b8..d0f4023447 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -22,6 +22,7 @@ function user_remove($uid) { $r[0]['nickname'] ); + /// @todo Should be done in a background job since this likely will run into a time out // don't delete yet, will be done later when contacts have deleted my stuff // q("DELETE FROM `contact` WHERE `uid` = %d", intval($uid)); q("DELETE FROM `gcign` WHERE `uid` = %d", intval($uid)); @@ -74,25 +75,10 @@ function contact_remove($id) { return; } - q("DELETE FROM `contact` WHERE `id` = %d", - intval($id) - ); - q("DELETE FROM `item` WHERE `contact-id` = %d ", - intval($id) - ); - q("DELETE FROM `photo` WHERE `contact-id` = %d ", - intval($id) - ); - q("DELETE FROM `mail` WHERE `contact-id` = %d ", - intval($id) - ); - q("DELETE FROM `event` WHERE `cid` = %d ", - intval($id) - ); - q("DELETE FROM `queue` WHERE `cid` = %d ", - intval($id) - ); + q("DELETE FROM `contact` WHERE `id` = %d", intval($id)); + // Delete the rest in the background + proc_run(PRIORITY_LOW, 'include/remove_contact.php', $id); } @@ -145,7 +131,6 @@ function terminate_friendship($user,$self,$contact) { // This provides for the possibility that their database is temporarily messed // up or some other transient event and that there's a possibility we could recover from it. -if(! function_exists('mark_for_death')) { function mark_for_death($contact) { if($contact['archive']) @@ -156,14 +141,24 @@ function mark_for_death($contact) { dbesc(datetime_convert()), intval($contact['id']) ); - } - else { + + if ($contact['url'] != '') { + q("UPDATE `contact` SET `term-date` = '%s' + WHERE `nurl` = '%s' AND `term-date` <= '1000-00-00'", + dbesc(datetime_convert()), + dbesc(normalise_link($contact['url'])) + ); + } + } else { /// @todo /// We really should send a notification to the owner after 2-3 weeks /// so they won't be surprised when the contact vanishes and can take /// remedial action if this was a serious mistake or glitch + /// @todo + /// Check for contact vitality via probing + $expiry = $contact['term-date'] . ' + 32 days '; if(datetime_convert() > datetime_convert('UTC','UTC',$expiry)) { @@ -171,26 +166,45 @@ function mark_for_death($contact) { // archive them rather than delete // though if the owner tries to unarchive them we'll start the whole process over again - q("update contact set `archive` = 1 where id = %d", + q("UPDATE `contact` SET `archive` = 1 WHERE `id` = %d", intval($contact['id']) ); - q("UPDATE `item` SET `private` = 2 WHERE `contact-id` = %d AND `uid` = %d", intval($contact['id']), intval($contact['uid'])); - - //contact_remove($contact['id']); + if ($contact['url'] != '') { + q("UPDATE `contact` SET `archive` = 1 WHERE `nurl` = '%s'", + dbesc(normalise_link($contact['url'])) + ); + } } } -}} +} -if(! function_exists('unmark_for_death')) { function unmark_for_death($contact) { + + $r = q("SELECT `term-date` FROM `contact` WHERE `id` = %d AND `term-date` > '%s'", + intval($contact['id']), + dbesc('1000-00-00 00:00:00') + ); + + // We don't need to update, we never marked this contact as dead + if (!dbm::is_result($r)) { + return; + } + // It's a miracle. Our dead contact has inexplicably come back to life. q("UPDATE `contact` SET `term-date` = '%s' WHERE `id` = %d", dbesc('0000-00-00 00:00:00'), intval($contact['id']) ); -}} + + if ($contact['url'] != '') { + q("UPDATE `contact` SET `term-date` = '%s' WHERE `nurl` = '%s'", + dbesc('0000-00-00 00:00:00'), + dbesc(normalise_link($contact['url'])) + ); + } +} /** * @brief Get contact data for a given profile link