X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2FDBHelper.c;h=fec30a256e570fe7f4bb2d590b5feb24cfc3d44f;hp=643eb2f0082b643e1105840e0fe8e48d1e1aa609;hb=6aee4a2f22dbaf869edf05071a8f62cc2b8f653e;hpb=94bc6f60e77fc91edcbb6653a1c7d71c566dfed5 diff --git a/src/DBHelper.c b/src/DBHelper.c index 643eb2f..fec30a2 100644 --- a/src/DBHelper.c +++ b/src/DBHelper.c @@ -180,3 +180,46 @@ char *getBanAffectingMask(struct ChanNode *chan, char *mask) { } return NULL; } + +int renameAccount(char *oldauth, char *newauth) { + MYSQL_RES *res, *res2; + MYSQL_ROW row, row2; + printf_mysql_query("SELECT `user_id` FROM `users` WHERE `user_user` = '%s'", escape_string(oldauth)); + res = mysql_use(); + if ((row = mysql_fetch_row(res)) != NULL) { + int userid = atoi(row[0]); + printf_mysql_query("SELECT `user_id` FROM `users` WHERE `user_user` = '%s'", escape_string(newauth)); + res = mysql_use(); + if((row = mysql_fetch_row(res)) != NULL) { + //merge + int newuid = atoi(row[0]); + printf_mysql_query("SELECT `chanuser_id`, `chanuser_access`, `chanuser_flags` FROM `chanusers` WHERE `chanuser_uid` = '%d'", newuid); + res = mysql_use(); + while((row = mysql_fetch_row(res)) != NULL) { + printf_mysql_query("SELECT `chanuser_id`, `chanuser_access`, `chanuser_flags` FROM `chanusers` WHERE `chanuser_uid` = '%d'", userid); + res2 = mysql_use(); + if((row2 = mysql_fetch_row(res2)) != NULL) { + if(atoi(row[0]) > atoi(row2[0])) { + printf_mysql_query("UPDATE `chanusers` SET `chanuser_access` = '%s' WHERE `chanuser_id` = '%s'", row[0], row2[0]); + } + printf_mysql_query("DELETE FROM `chanusers` WHERE `chanuser_id` = '%s'", row[0]); + } else + printf_mysql_query("UPDATE `chanusers` SET `chanuser_uid` = '%d' WHERE `chanuser_id` = '%s'", userid, row[0]); + } + printf_mysql_query("UPDATE `channels` SET `channel_registrator` = '%d' WHERE `channel_registrator` = '%d'", userid, newuid); + printf_mysql_query("UPDATE `bans` SET `ban_owner` = '%d' WHERE `ban_owner` = '%d'", userid, newuid); + printf_mysql_query("UPDATE `events` SET `auth` = '%s' WHERE `auth` = '%s'", escape_string(newauth), escape_string(oldauth)); + printf_mysql_query("UPDATE `godlog` SET `godlog_uid` = '%d' WHERE `godlog_uid` = '%d'", userid, newuid); + printf_mysql_query("UPDATE `owner_history` SET `owner_history_to_uid` = '%d' WHERE `owner_history_to_uid` = '%d'", userid, newuid); + printf_mysql_query("UPDATE `owner_history` SET `owner_history_from_uid` = '%d' WHERE `owner_history_from_uid` = '%d'", userid, newuid); + printf_mysql_query("UPDATE `owner_history` SET `owner_history_from_uid` = '%d' WHERE `owner_history_from_uid` = '%d'", userid, newuid); + printf_mysql_query("UPDATE `noinvite` SET `uid` = '%d' WHERE `uid` = '%d'", userid, newuid); + printf_mysql_query("DELETE FROM `users` WHERE `chanuser_id` = '%d'", newuid); + } else { + //simply rename the account + printf_mysql_query("UPDATE `users` SET `user_user` = '%s' WHERE `user_id` = '%d'", escape_string(newauth), userid); + } + return 1; + } + return 0; +}