added "nowho" parameter to debug userlist and fixed memory leak in DBHelper.c
[NeonServV5.git] / src / cmd_neonserv_clvl.c
index 269d5e4f56e45371f83ce9a6a93960cd6a07956e..a541c3d108a1368669fb0348209ce69a43c3b6ae 100644 (file)
@@ -1,5 +1,5 @@
-/* cmd_neonserv_clvl.c - NeonServ v5.2
- * Copyright (C) 2011  Philipp Kreil (pk910)
+/* cmd_neonserv_clvl.c - NeonServ v5.3
+ * Copyright (C) 2011-2012  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -40,7 +40,7 @@ CMD_BIND(neonserv_cmd_clvl) {
         reply(getTextBot(), user, "NS_INVALID_ACCESS", caccess);
         return;
     }
-    if(caccess >= getChannelAccess(user, chan, 0)) {
+    if(caccess >= getChannelAccess(user, chan)) {
         if(isGodMode(user)) {
             event->flags |= CMDFLAG_OPLOG;
         } else {
@@ -56,6 +56,10 @@ CMD_BIND(neonserv_cmd_clvl) {
         struct UserNode *cuser = getUserByNick(argv[0]);
         if(!cuser) {
             cuser = createTempUser(argv[0]);
+                       if(!cuser) {
+                reply(getTextBot(), user, "NS_USER_UNKNOWN", argv[0]);
+                return;
+            }
             cuser->flags |= USERFLAG_ISTMPUSER;
         }
         if(cuser->flags & USERFLAG_ISAUTHED) {
@@ -108,9 +112,13 @@ static void neonserv_cmd_clvl_async1(struct ClientSocket *client, struct ClientS
         res = mysql_use();
         if ((row = mysql_fetch_row(res)) != NULL) {
             //clvl
-            if(atoi(row[0]) >= getChannelAccess(user, chan, 1)) {
-                reply(textclient, user, "NS_USER_OUTRANKED", nick);
-                return;
+            if(atoi(row[0]) >= getChannelAccess(user, chan)) {
+                if(isGodMode(user)) {
+                    event->flags |= CMDFLAG_OPLOG;
+                } else {
+                    reply(textclient, user, "NS_USER_OUTRANKED", nick);
+                    return;
+                }
             }
             printf_mysql_query("UPDATE `chanusers` SET `chanuser_access` = '%d' WHERE `chanuser_id` = '%s'", caccess, row[1]);
             reply(textclient, user, "NS_CLVL_DONE", nick, caccess, chan->name);