From c78d0f651bd1250ad2de34005edd782e11218e7a Mon Sep 17 00:00:00 2001 From: Dico200 Date: Mon, 30 May 2016 01:11:34 +0200 Subject: Hotfix for chatalias --- chatalias.py | 48 ++++++++++++++++++++++++------------------------ helpers.py | 14 +++++++++----- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/chatalias.py b/chatalias.py index bc21e13..9db8fdb 100644 --- a/chatalias.py +++ b/chatalias.py @@ -120,23 +120,26 @@ def on_join(event): @hook.event("player.AsyncPlayerChatEvent", "high") def on_player_chat(event): - if enabled: - if event.isCancelled(): - return - player = event.getPlayer() - if not hasPerm(player, permission_USE): - return - msg_limit = int(get_permission_content(player, permission_LENGTH)) - for alias, value in data[str(uid(player))].items(): - if player.hasPermission("essentials.chat.color"): - event.setMessage(event.getMessage().replace(colorify(alias), colorify(value))) - else: - event.setMessage(event.getMessage().replace(alias, value)) - if not player.hasPermission(permission_ALL) and len(event.getMessage()) > msg_limit: - event.setCancelled(True) - plugin_header(player, "Alias") - msg(player, "The message you wanted to generate would exceed the length limit limit of %d. Please make it shorter!" % msg_limit) + try: + if enabled: + if event.isCancelled(): + return + player = event.getPlayer() + if not hasPerm(player, permission_USE): return + msg_limit = int(get_permission_content(player, permission_LENGTH)) + for alias, value in data[uid(player)].iteritems(): + if player.hasPermission("essentials.chat.color"): + event.setMessage(event.getMessage().replace(colorify(alias), colorify(value))) + else: + event.setMessage(event.getMessage().replace(alias, value)) + if not player.hasPermission(permission_ALL) and len(event.getMessage()) > msg_limit: + event.setCancelled(True) + plugin_header(player, "Alias") + msg(player, "The message you wanted to generate would exceed the length limit limit of %d. Please make it shorter!" % msg_limit) + return + except: + error(trace()) def hasPerm(player, permission): @@ -316,14 +319,12 @@ def load_data_thread(uuid): curs = conn.cursor() curs.execute("SELECT `alias` FROM `chatalias` WHERE `uuid` = ?;", (uuid, )) results = curs.fetchall() + curs.close() + conn.close() if len(results) == 0: value = dict(global_aliases) - curs.execute("INSERT INTO `chatalias` VALUES (?,?);", (uuid, json_dumps(results), )) - conn.commit() else: value = json_loads(results[0][0]) - curs.close() - conn.close() data[uuid] = value @@ -341,10 +342,9 @@ def save_data(uuid): def save_data_thread(uuid): conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver") curs = conn.cursor() - try: - curs.execute("UPDATE `chatalias` SET `alias` = ? WHERE `uuid` = ?;", (json_dumps(data[uuid]), uuid, )) - except: - error(trace()) + value = json_dumps(data[uuid]) + curs.execute("INSERT INTO `chatalias` VALUES (?, ?) ON DUPLICATE KEY UPDATE `alias` = ?;", + (uuid, value, value)) conn.commit() curs.close() conn.close() diff --git a/helpers.py b/helpers.py index d6e46bd..da0d423 100755 --- a/helpers.py +++ b/helpers.py @@ -279,11 +279,15 @@ def is_ip(tocheck): # Allows the use of e.g. numeric permission nodes like "permission.amount.5" and similar. # To get the data fetch the player and the start of the permission node, looking like "permission.amount." -def get_permission_content(player, permnode): - perms = player.getEffectivePermissions() - for perm in perms: - if str(perm.getPermission()).startswith(permnode): - return str(perm.getPermission())[len(permnode):] +def get_permission_content(player, permnode, default_value = None): + try: + perms = player.getEffectivePermissions() + for perm in perms: + if str(perm.getPermission()).startswith(permnode): + return str(perm.getPermission())[len(permnode):] + return default_value + except: + error(trace()) def array_to_list(array): -- cgit v1.2.3