diff options
Diffstat (limited to 'include/Contact.php')
-rw-r--r-- | include/Contact.php | 100 |
1 files changed, 20 insertions, 80 deletions
diff --git a/include/Contact.php b/include/Contact.php index 787612c83..8d50b1e5b 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -162,7 +162,7 @@ function user_remove($uid) { } -function account_remove($account_id,$local = true) { +function account_remove($account_id,$local = true,$unset_session=true) { logger('account_remove: ' . $account_id); @@ -185,6 +185,7 @@ function account_remove($account_id,$local = true) { $r = q("select * from account where account_id = %d limit 1", intval($account_id) ); + $account_email=$r[0]['account_email']; if(! $r) { logger('account_remove: No account with id: ' . $account_id); @@ -196,7 +197,7 @@ function account_remove($account_id,$local = true) { ); if($x) { foreach($x as $xx) { - channel_remove($xx['channel_id'],$local); + channel_remove($xx['channel_id'],$local,false); } } @@ -204,11 +205,17 @@ function account_remove($account_id,$local = true) { intval($account_id) ); + if ($unset_session) { + unset($_SESSION['authenticated']); + unset($_SESSION['uid']); + notice( sprintf(t("User '%s' deleted"),$account_email) . EOL); + goaway(get_app()->get_baseurl()); + } return $r; } -function channel_remove($channel_id, $local = true) { +function channel_remove($channel_id, $local = true, $unset_session=true) { if(! $channel_id) return; @@ -238,12 +245,12 @@ function channel_remove($channel_id, $local = true) { intval($channel_id) ); - $r = q("update hubloc set hubloc_flags = hubloc_flags | %d where hubloc_hash = '%s'", + $r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_hash = '%s'", intval(HUBLOC_FLAGS_DELETED), dbesc($channel['channel_hash']) ); - $r = q("update xchan set xchan_flags = xchan_flags | %d where xchan_hash = '%s'", + $r = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'", intval(XCHAN_FLAGS_DELETED), dbesc($channel['channel_hash']) ); @@ -267,7 +274,7 @@ function channel_remove($channel_id, $local = true) { q("DELETE FROM `spam` WHERE `uid` = %d", intval($channel_id)); - q("delete from abook where abook_xchan = '%s' and abook_flags & %d limit 1", + q("delete from abook where abook_xchan = '%s' and (abook_flags & %d) limit 1", dbesc($channel['channel_hash']), dbesc(ABOOK_FLAG_SELF) ); @@ -278,13 +285,13 @@ function channel_remove($channel_id, $local = true) { intval($channel_id) ); - $r = q("update hubloc set hubloc_flags = hubloc_flags | %d where hubloc_hash = '%s' and hubloc_url = '%s' ", + $r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_hash = '%s' and hubloc_url = '%s' ", intval(HUBLOC_FLAGS_DELETED), dbesc($channel['channel_hash']), dbesc(z_root()) ); - $r = q("update xchan set xchan_flags = xchan_flags | %d where xchan_hash = '%s' ", + $r = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s' ", intval(XCHAN_FLAGS_DELETED), dbesc($channel['channel_hash']) ); @@ -292,7 +299,7 @@ function channel_remove($channel_id, $local = true) { proc_run('php','include/directory.php',$channel_id); - if($channel_id == local_user()) { + if($channel_id == local_user() && $unset_session) { unset($_SESSION['authenticated']); unset($_SESSION['uid']); goaway($a->get_baseurl()); @@ -316,7 +323,7 @@ function mark_orphan_hubsxchans() { return; $r = q("update hubloc set hubloc_status = (hubloc_status | %d) where not (hubloc_status & %d) - and hubloc_connected < utc_timestamp() - interval 36 day", + and hubloc_network = 'zot' and hubloc_connected < utc_timestamp() - interval 36 day", intval(HUBLOC_OFFLINE), intval(HUBLOC_OFFLINE) ); @@ -428,12 +435,12 @@ function remove_all_xchan_resources($xchan, $channel_id = 0) { // directory servers need to keep the record around for sync purposes - mark it deleted - $r = q("update hubloc set hubloc_flags = hubloc_flags | %d where hubloc_hash = '%s'", + $r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_hash = '%s'", intval(HUBLOC_FLAGS_DELETED), dbesc($xchan) ); - $r = q("update xchan set xchan_flags = xchan_flags | %d where xchan_hash = '%s'", + $r = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'", intval(XCHAN_FLAGS_DELETED), dbesc($xchan) ); @@ -477,7 +484,7 @@ function contact_remove($channel_id, $abook_id) { ); if($r) { foreach($r as $rr) { - drop_item($rr,false); + drop_item($rr['id'],false); } } @@ -506,73 +513,6 @@ function contact_remove($channel_id, $abook_id) { } -// sends an unfriend message. Does not remove the contact - -function terminate_friendship($user,$self,$contact) { - - - $a = get_app(); - - require_once('include/datetime.php'); - - if($contact['network'] === NETWORK_DFRN) { - require_once('include/items.php'); - dfrn_deliver($user,$contact,'placeholder', 1); - } - -} - - -// Contact has refused to recognise us as a friend. We will start a countdown. -// If they still don't recognise us in 32 days, the relationship is over, -// and we won't waste any more time trying to communicate with them. -// 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']) - return; - - if($contact['term_date'] == '0000-00-00 00:00:00') { - q("UPDATE `contact` SET `term_date` = '%s' WHERE `id` = %d LIMIT 1", - dbesc(datetime_convert()), - intval($contact['id']) - ); - } - 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 - - $expiry = $contact['term_date'] . ' + 32 days '; - if(datetime_convert() > datetime_convert('UTC','UTC',$expiry)) { - - // relationship is really truly dead. - // 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 limit 1", - intval($contact['id']) - ); - - //contact_remove($contact['id']); - - } - } - -}} - -if(! function_exists('unmark_for_death')) { -function unmark_for_death($contact) { - // It's a miracle. Our dead contact has inexplicably come back to life. - q("UPDATE `contact` SET `term_date` = '%s' WHERE `id` = %d LIMIT 1", - dbesc('0000-00-00 00:00:00'), - intval($contact['id']) - ); -}} function random_profile() { $r = q("select xchan_url from xchan left join hubloc on hubloc_hash = xchan_hash where hubloc_connected > UTC_TIMESTAMP() - interval 30 day order by rand() limit 1"); |