X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2FDBHelper.c;h=56bd924e41f2bb2c2e22add62265ad505ef0f2c4;hb=0def65a9df6d9a295c064cba58af229b326f39fe;hp=4f3dd757262d0150e93a3966731b163d6712ee92;hpb=55831bf424312a6908ca07a904f288fba0919a9a;p=NeonServV5.git diff --git a/src/DBHelper.c b/src/DBHelper.c index 4f3dd75..56bd924 100644 --- a/src/DBHelper.c +++ b/src/DBHelper.c @@ -24,6 +24,7 @@ #include "tools.h" #include "IRCEvents.h" #include "HandleInfoHandler.h" +#include "ClientSocket.h" void _loadUserSettings(struct UserNode *user) { SYNCHRONIZE(cache_sync); @@ -286,7 +287,7 @@ static int event_user_registered(struct UserNode *old_user, struct UserNode *new } cache->new_user = new_user; cache->oldauth = strdup(oldauth); - lookup_authname(newauth, event_user_registered_auth_lookup, cache); + lookup_authname(newauth, 0, event_user_registered_auth_lookup, cache); } return 1; } @@ -299,9 +300,49 @@ static AUTHLOOKUP_CALLBACK(event_user_registered_auth_lookup) { cache->new_user->flags |= USERFLAG_ISAUTHED; } free(cache->oldauth); + free(cache); +} + +void deleteUser(int userid) { + //simply delete the user + MYSQL_RES *res, *res2; + MYSQL_ROW row, row2; + printf_mysql_query("SELECT a.`chanuser_access`, a.`chanuser_cid`, (SELECT COUNT(*) FROM `chanusers` AS b WHERE b.`chanuser_cid` = a.`chanuser_cid` AND b.`chanuser_access` = 500) FROM `chanusers` AS a WHERE a.`chanuser_uid` = '%d'", userid); + res = mysql_use(); + while((row = mysql_fetch_row(res))) { + if(!strcmp(row[0], "500") && !strcmp(row[2], "1")) { + //unregister channel + printf_mysql_query("SELECT `botid`, `channel_name` FROM `bot_channels` LEFT JOIN `channels` ON `chanid` = `channel_id` WHERE `chanid` = '%s' AND `suspended` = '0'", row[1]); + res2 = mysql_use(); + while((row2 = mysql_fetch_row(res2))) { + struct ClientSocket *bot; + int clientid = atoi(row2[0]); + for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { + if(bot->clientid == clientid) + putsock(bot, "PART %s :Channel unregistered.", row2[1]); + } + } + printf_mysql_query("DELETE FROM `bot_channels` WHERE `chanid` = '%s'", row[1]); + } + } + printf_mysql_query("DELETE FROM `chanusers` WHERE `chanuser_uid` = '%d'", userid); + printf_mysql_query("UPDATE `bans` SET `ban_owner` = 0 WHERE `ban_owner` = '%d'", userid); + printf_mysql_query("UPDATE `donotregister` SET `dnr_user` = 0 WHERE `dnr_user` = '%d'", userid); + printf_mysql_query("UPDATE `bans` SET `ban_owner` = 0 WHERE `ban_owner` = '%d'", userid); + printf_mysql_query("UPDATE `godlog` SET `godlog_uid` = 0 WHERE `godlog_uid` = '%d'", userid); + printf_mysql_query("DELETE FROM `noinvite` WHERE `uid` = '%d'", userid); + printf_mysql_query("UPDATE `owner_history` SET `owner_history_to_uid` = 0 WHERE `owner_history_to_uid` = '%d'", userid); + printf_mysql_query("UPDATE `owner_history` SET `owner_history_from_uid` = 0 WHERE `owner_history_from_uid` = '%d'", userid); + printf_mysql_query("UPDATE `channels` SET `channel_registrator` = 0 WHERE `channel_registrator` = '%d'", userid); + printf_mysql_query("DELETE FROM `users` WHERE `user_id` = '%d'", userid); + struct UserNode *user; + for(user = getAllUsers(NULL); user; user = getAllUsers(user)) { + if(user->flags & USERFLAG_HAS_USERID) + user->flags &= ~USERFLAG_HAS_USERID; + } } void init_DBHelper() { - bind_registered(event_user_registered); + bind_registered(event_user_registered, 0); }