summaryrefslogtreecommitdiff
path: root/synchronizeranks.py
diff options
context:
space:
mode:
Diffstat (limited to 'synchronizeranks.py')
-rw-r--r--synchronizeranks.py84
1 files changed, 68 insertions, 16 deletions
diff --git a/synchronizeranks.py b/synchronizeranks.py
index 97439e0..4509185 100644
--- a/synchronizeranks.py
+++ b/synchronizeranks.py
@@ -3,6 +3,14 @@ from secrets import *
import mysqlhack
from com.ziclix.python.sql import zxJDBC
+"""
+WORK IN PROGRESS
+"""
+
+#-----------------------Config--------------------------
+
+config_file = "website-roles"
+
ranks = {
"member" : 3,
"builder" : 7,
@@ -13,33 +21,42 @@ ranks = {
"admin" : 5
}
+ranks = open_json_file(config_file, ranks)
+
+def save_ranks():
+ save_json_file(config_file, ranks)
+
+#-----------------------Event---------------------------
@hook.event("player.PlayerJoinEvent", "normal")
def on_player_join(event):
user = event.getPlayer()
uuid = uid(player).replace("-", "")
- role = get_role(uuid)
- if role in [1, 2, 6]: #Disabled/Banned/Superadmin
- return
- if role:
- for rank in ranks:
- if user.hasPermission("group." + rank):
- if role != ranks[rank]:
- set_role(uuid, ranks[rank])
- return
- if not user.hasPlayedBefore():
- return
- if role == None:
- msg(user, "&cYou haven't registed yet! Make sure to do so on redstoner.com")
+ sql_instruction
+
+ def callback_thing(role, args):
+
+ if role in [1, 2, 6]: #Disabled/Banned/Superadmin
+ return
+ if role != None:
+ for rank in ranks:
+ if user.hasPermission("group." + rank):
+ if role != ranks[rank]:
+ set_role(uuid, ranks[rank])
+ elif user.hasPlayedBefore():
+ msg(user, "&cYou haven't registed yet! Make sure to do so on redstoner.com")
def get_role(uuid):
- return execute_query("SELECT `role_id` FROM users WHERE `uuid` = ? LIMIT 1", uuid)[0][17]
+ results = execute_query("SELECT `role_id` FROM users WHERE `uuid` = ? LIMIT 1;", uuid)
+ return results[0][0]
+ # Returns a table with 1 row (LIMIT 1) and 1 column (SELECT `role_id`), so we're looking for the first row of the first column.
def set_role(uuid, role_id):
- execute_update("UPDATE users SET `role_id` = %d WHERE `uuid` = ?" % role_id, uuid)
+ execute_update("UPDATE users SET `role_id` = ? WHERE `uuid` = ?;", (role_id, uuid,))
+ # %d is like %s for integers (unlogically, you'd expect something like %i), though %s also works here.
def execute_query(query, uuid):
@@ -56,5 +73,40 @@ def execute_update(update, uuid):
conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver")
curs = conn.cursor()
curs.execute(update, (uuid,))
+ conn.commit()
curs.close()
- conn.close() \ No newline at end of file
+ conn.close()
+
+def get_role(uuid):
+ sql_instruction()
+
+#--------------------------------Queries / Updates----------------------------
+
+def sql_instruction(instruction, args, fetch = True, callback_func = ignored_func, callback_args = tuple()):
+ thread = threading.Thread(target = curs_instruction, args = (instruction_executor, instruction, fetch, callback_func, callback_args))
+ thread.start()
+
+
+def curs_instruction(func, instruction, fetch, callback_func, callback_args):
+ conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver")
+ curs = conn.getCursor()
+
+ if fetch:
+ returned = func(curs, instruction, fetch)
+ curs.close()
+ conn.close()
+ callback_func(returned, callback_args)
+
+ else:
+ func(curs, instruction, fetch)
+ conn.commit()
+ curs.close()
+ conn.close()
+
+
+def instruction_executor(curs, instruction, fetch):
+ curs.execute(instruction)
+ return curs.fetchall() if fetch else None
+
+def ignored_func(*args):
+ pass \ No newline at end of file