start on channel_remove(), add some generic channel queries to the API layers

This commit is contained in:
friendica 2013-02-16 15:51:55 -08:00
parent 663f09e01b
commit a21e6cffa1
5 changed files with 59 additions and 35 deletions

View File

@ -147,6 +147,8 @@ define ( 'PAGE_HIDDEN', 0x0001 );
define ( 'PAGE_AUTOCONNECT', 0x0002 ); define ( 'PAGE_AUTOCONNECT', 0x0002 );
define ( 'PAGE_APPLICATION', 0x0004 ); define ( 'PAGE_APPLICATION', 0x0004 );
define ( 'PAGE_REMOVED', 0x8000 );
//define ( 'PAGE_FREELOVE', 3 ); //define ( 'PAGE_FREELOVE', 3 );
//define ( 'PAGE_BLOG', 4 ); //define ( 'PAGE_BLOG', 4 );
//define ( 'PAGE_PRVGROUP', 5 ); //define ( 'PAGE_PRVGROUP', 5 );

View File

@ -20,8 +20,23 @@ function abook_self($channel_id) {
} }
function channelx_by_nick($nick) { function channelx_by_nick($nick) {
return q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' LIMIT 1", return q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' and not ( channel_pageflags & %d ) LIMIT 1",
dbesc($nick) dbesc($nick),
intval(PAGE_REMOVED)
);
}
function channelx_by_hash($hash) {
return q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_hash = '%s' and not ( channel_pageflags & %d ) LIMIT 1",
dbesc($hash),
intval(PAGE_REMOVED)
);
}
function channelx_by_n($id) {
return q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_id = %d and not ( channel_pageflags & %d ) LIMIT 1",
dbesc($id),
intval(PAGE_REMOVED)
); );
} }
@ -89,47 +104,53 @@ function abook_toggle_flag($abook,$flag) {
// authorisation to do this. // authorisation to do this.
function user_remove($uid) { function user_remove($uid) {
if(! $uid)
}
function channel_remove($channel_id) {
if(! $channel_id)
return; return;
$a = get_app(); $a = get_app();
logger('Removing user: ' . $uid); logger('Removing channel: ' . $channel_id);
$r = q("select * from user where uid = %d limit 1", intval($uid)); $r = q("select * from channel where channel_id = %d limit 1", intval($channel_id));
call_hooks('remove_user',$r[0]); call_hooks('channel_remove',$r[0]);
// save username (actually the nickname as it is guaranteed // FIXME notify the directory
// unique), so it cannot be re-registered in the future.
q("insert into userd ( username ) values ( '%s' )", // FIXME notify all contacts
$r[0]['nickname']
q("DELETE FROM `group` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `group_member` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `event` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `item` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `item_id` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `mail` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `notify` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `photo` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `attach` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `profile` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `pconfig` WHERE `uid` = %d", intval($channel_id));
q("DELETE FROM `spam` WHERE `uid` = %d", intval($channel_id));
// We also need a timestamp in the channel DB so we know when to remove the entry.
$r = q("update channel set channel_pageflags = (channel_pageflags | %d) where channel_id = %d limit 1",
intval(PAGE_REMOVED),
intval($channel_id)
); );
q("DELETE FROM `contact` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `gcign` WHERE `uid` = %d", intval($uid)); if($channel_id == local_user()) {
q("DELETE FROM `group` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `group_member` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `intro` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `event` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `item` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `item_id` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `mail` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `mailacct` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `manage` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `notify` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `photo` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `attach` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `profile` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `profile_check` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `pconfig` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `search` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `spam` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `user` WHERE `uid` = %d", intval($uid));
if($uid == local_user()) {
unset($_SESSION['authenticated']); unset($_SESSION['authenticated']);
unset($_SESSION['uid']); unset($_SESSION['uid']);
goaway($a->get_baseurl()); goaway($a->get_baseurl());
} }
} }

View File

@ -114,7 +114,7 @@ function new_contact($uid,$url,$channel,$interactive = false) {
$hash = $a->observer['xchan_hash']; $hash = $a->observer['xchan_hash'];
} }
else { else {
$r = q("select * from channel where uid = %d limit 1", $r = q("select * from channel where channel_id = %d limit 1",
intval($uid) intval($uid)
); );
if(! $r) { if(! $r) {

View File

@ -138,9 +138,10 @@ function change_channel($change_channel) {
$ret = false; $ret = false;
if($change_channel) { if($change_channel) {
$r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel_id = %d and channel_account_id = %d limit 1", $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel_id = %d and channel_account_id = %d and not ( channel_pageflags & %d) limit 1",
intval($change_channel), intval($change_channel),
intval(get_account_id()) intval(get_account_id()),
intval(PAGE_REMOVED)
); );
if($r) { if($r) {
$hash = $r[0]['channel_hash']; $hash = $r[0]['channel_hash'];

View File

@ -1 +1 @@
2013-02-15.225 2013-02-16.226