diff --git a/code/__HELPERS/bandetect.dm b/code/__HELPERS/bandetect.dm index 9da3c38632..19c0d37838 100644 --- a/code/__HELPERS/bandetect.dm +++ b/code/__HELPERS/bandetect.dm @@ -2,7 +2,7 @@ /client/proc/join_date_check(y,m,d) - var/DBQuery/query_datediff = GLOB.dbcon.NewQuery("SELECT DATEDIFF(Now(),'[y]-[m]-[d]')") + var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),'[y]-[m]-[d]')") if(!query_datediff.Execute()) return FALSE diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index f78c40fbe1..c6148bb512 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -15,7 +15,7 @@ // Run all strings to be used in an SQL query through this proc first to properly escape out injection attempts. /proc/sanitizeSQL(t) - var/sqltext = GLOB.dbcon.Quote("[t]"); + var/sqltext = SSdbcore.Quote("[t]"); return copytext(sqltext, 2, lentext(sqltext));//Quote() adds quotes around input, we already do that /proc/format_table_name(table as text) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index a7763236e6..285746cbd7 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -13,9 +13,4 @@ GLOBAL_DATUM(data_core, /datum/datacore) GLOBAL_VAR_INIT(CELLRATE, 0.002) // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) GLOBAL_VAR_INIT(CHARGELEVEL, 0.001) // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) -GLOBAL_LIST_EMPTY(powernets) - -//Database connections -//A connection is established on world creation. Ideally, the connection dies when the server restarts (After feedback logging.). -GLOBAL_DATUM_INIT(dbcon, /DBConnection, new) //Feedback database (New database) -GLOBAL_PROTECT(dbcon) \ No newline at end of file +GLOBAL_LIST_EMPTY(powernets) \ No newline at end of file diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm new file mode 100644 index 0000000000..f2864027f8 --- /dev/null +++ b/code/controllers/subsystem/dbcore.dm @@ -0,0 +1,218 @@ +SUBSYSTEM_DEF(dbcore) + name = "Database" + flags = SS_NO_INIT|SS_NO_FIRE + + var/const/FAILED_DB_CONNECTION_CUTOFF = 5 + + var/const/Default_Cursor = 0 + var/const/Client_Cursor = 1 + var/const/Server_Cursor = 2 + //conversions + var/const/TEXT_CONV = 1 + var/const/RSC_FILE_CONV = 2 + var/const/NUMBER_CONV = 3 + //column flag values: + var/const/IS_NUMERIC = 1 + var/const/IS_BINARY = 2 + var/const/IS_NOT_NULL = 4 + var/const/IS_PRIMARY_KEY = 8 + var/const/IS_UNSIGNED = 16 +// TODO: Investigate more recent type additions and see if I can handle them. - Nadrew + + var/_db_con// This variable contains a reference to the actual database connection. + var/failed_connections = 0 + +/datum/controller/subsystem/dbcore/PreInit() + _db_con = _dm_db_new_con() + +/datum/controller/subsystem/dbcore/Recover() + _db_con = SSdbcore._db_con + +/datum/controller/subsystem/dbcore/Shutdown() + if(IsConnected()) + Disconnect() + +//nu +/datum/controller/subsystem/dbcore/can_vv_get(var_name) + return var_name != "_db_con" && ..() + +/datum/controller/subsystem/dbcore/vv_edit_var(var_name, var_value) + if(var_name == "_db_con") + return FALSE + return ..() + +/datum/controller/subsystem/dbcore/proc/Connect() + if(IsConnected()) + return TRUE + + if(failed_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to connect anymore. + return FALSE + + if(!config.sql_enabled) + return FALSE + + var/user = GLOB.sqlfdbklogin + var/pass = GLOB.sqlfdbkpass + var/db = GLOB.sqlfdbkdb + var/address = GLOB.sqladdress + var/port = GLOB.sqlport + + doConnect("dbi:mysql:[db]:[address]:[port]", user, pass) + . = IsConnected() + if (!.) + log_sql("Connect() failed | [ErrorMsg()]") + ++failed_connections + +/datum/controller/subsystem/dbcore/proc/doConnect(dbi_handler, user_handler, password_handler) + if(!config.sql_enabled) + return FALSE + return _dm_db_connect(_db_con, dbi_handler, user_handler, password_handler, Default_Cursor, null) + +/datum/controller/subsystem/dbcore/proc/Disconnect() + failed_connections = 0 + return _dm_db_close(_db_con) + +/datum/controller/subsystem/dbcore/proc/IsConnected() + if(!config.sql_enabled) + return FALSE + return _dm_db_is_connected(_db_con) + +/datum/controller/subsystem/dbcore/proc/Quote(str) + return _dm_db_quote(_db_con, str) + +/datum/controller/subsystem/dbcore/proc/ErrorMsg() + return _dm_db_error_msg(_db_con) + +/datum/controller/subsystem/dbcore/proc/NewQuery(sql_query, cursor_handler = Default_Cursor) + return new /datum/DBQuery(sql_query, src, cursor_handler) + + +/datum/DBQuery + var/sql // The sql query being executed. + var/default_cursor + var/list/columns //list of DB Columns populated by Columns() + var/list/conversions + var/list/item //list of data values populated by NextRow() + + var/datum/controller/subsystem/dbcore/db_connection + var/_db_query + +/datum/DBQuery/New(sql_query, datum/controller/subsystem/dbcore/connection_handler, cursor_handler) + if(sql_query) + sql = sql_query + if(connection_handler) + db_connection = connection_handler + if(cursor_handler) + default_cursor = cursor_handler + item = list() + _db_query = _dm_db_new_query() + +/datum/DBQuery/proc/Connect(datum/controller/subsystem/dbcore/connection_handler) + db_connection = connection_handler + +/datum/DBQuery/proc/warn_execute() + . = Execute() + if(!.) + to_chat(usr, "A SQL error occured during this operation, check the server logs.") + +/datum/DBQuery/proc/Execute(sql_query = sql, cursor_handler = default_cursor, log_error = TRUE) + Close() + . = _dm_db_execute(_db_query, sql_query, db_connection._db_con, cursor_handler, null) + if(!. && log_error) + log_sql("[ErrorMsg()] | Query used: [sql]") + +/datum/DBQuery/proc/NextRow() + return _dm_db_next_row(_db_query,item,conversions) + +/datum/DBQuery/proc/RowsAffected() + return _dm_db_rows_affected(_db_query) + +/datum/DBQuery/proc/RowCount() + return _dm_db_row_count(_db_query) + +/datum/DBQuery/proc/ErrorMsg() + return _dm_db_error_msg(_db_query) + +/datum/DBQuery/proc/Columns() + if(!columns) + columns = _dm_db_columns(_db_query, /datum/DBColumn) + return columns + +/datum/DBQuery/proc/GetRowData() + var/list/columns = Columns() + var/list/results + if(columns.len) + results = list() + for(var/C in columns) + results+=C + var/datum/DBColumn/cur_col = columns[C] + results[C] = src.item[(cur_col.position+1)] + return results + +/datum/DBQuery/proc/Close() + item.Cut() + columns = null + conversions = null + return _dm_db_close(_db_query) + +/datum/DBQuery/proc/Quote(str) + return db_connection.Quote(str) + +/datum/DBQuery/proc/SetConversion(column,conversion) + if(istext(column)) + column = columns.Find(column) + if(!conversions) + conversions = list(column) + else if(conversions.len < column) + conversions.len = column + conversions[column] = conversion + + +/datum/DBColumn + var/name + var/table + var/position //1-based index into item data + var/sql_type + var/flags + var/length + var/max_length + //types + var/const/TINYINT = 1 + var/const/SMALLINT = 2 + var/const/MEDIUMINT = 3 + var/const/INTEGER = 4 + var/const/BIGINT = 5 + var/const/DECIMAL = 6 + var/const/FLOAT = 7 + var/const/DOUBLE = 8 + var/const/DATE = 9 + var/const/DATETIME = 10 + var/const/TIMESTAMP = 11 + var/const/TIME = 12 + var/const/STRING = 13 + var/const/BLOB = 14 + +/datum/DBColumn/New(name_handler, table_handler, position_handler, type_handler, flag_handler, length_handler, max_length_handler) + name = name_handler + table = table_handler + position = position_handler + sql_type = type_handler + flags = flag_handler + length = length_handler + max_length = max_length_handler + +/datum/DBColumn/proc/SqlTypeName(type_handler = sql_type) + switch(type_handler) + if(TINYINT) return "TINYINT" + if(SMALLINT) return "SMALLINT" + if(MEDIUMINT) return "MEDIUMINT" + if(INTEGER) return "INTEGER" + if(BIGINT) return "BIGINT" + if(FLOAT) return "FLOAT" + if(DOUBLE) return "DOUBLE" + if(DATE) return "DATE" + if(DATETIME) return "DATETIME" + if(TIMESTAMP) return "TIMESTAMP" + if(TIME) return "TIME" + if(STRING) return "STRING" + if(BLOB) return "BLOB" diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index d6d88b6e8f..92665c06a5 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -6,7 +6,7 @@ if(!check_rights(R_BAN)) return - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(src, "Failed to establish database connection.") return @@ -71,7 +71,7 @@ computerid = bancid ip = banip - var/DBQuery/query_add_ban_get_id = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("player")] WHERE ckey = '[ckey]'") + var/datum/DBQuery/query_add_ban_get_id = SSdbcore.NewQuery("SELECT id FROM [format_table_name("player")] WHERE ckey = '[ckey]'") if(!query_add_ban_get_id.warn_execute()) return var/validckey = 0 @@ -113,7 +113,7 @@ reason = sanitizeSQL(reason) if(maxadminbancheck) - var/DBQuery/query_check_adminban_amt = GLOB.dbcon.NewQuery("SELECT count(id) AS num FROM [format_table_name("ban")] WHERE (a_ckey = '[a_ckey]') AND (bantype = 'ADMIN_PERMABAN' OR (bantype = 'ADMIN_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned)") + var/datum/DBQuery/query_check_adminban_amt = SSdbcore.NewQuery("SELECT count(id) AS num FROM [format_table_name("ban")] WHERE (a_ckey = '[a_ckey]') AND (bantype = 'ADMIN_PERMABAN' OR (bantype = 'ADMIN_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned)") if(!query_check_adminban_amt.warn_execute()) return if(query_check_adminban_amt.NextRow()) @@ -126,7 +126,7 @@ if(!ip) ip = "0.0.0.0" var/sql = "INSERT INTO [format_table_name("ban")] (`bantime`,`server_ip`,`server_port`,`bantype`,`reason`,`job`,`duration`,`expiration_time`,`ckey`,`computerid`,`ip`,`a_ckey`,`a_computerid`,`a_ip`,`who`,`adminwho`) VALUES (Now(), INET_ATON('[world.internet_address]'), '[world.port]', '[bantype_str]', '[reason]', '[job]', [(duration)?"[duration]":"0"], Now() + INTERVAL [(duration>0) ? duration : 0] MINUTE, '[ckey]', '[computerid]', INET_ATON('[ip]'), '[a_ckey]', '[a_computerid]', INET_ATON('[a_ip]'), '[who]', '[adminwho]')" - var/DBQuery/query_add_ban = GLOB.dbcon.NewQuery(sql) + var/datum/DBQuery/query_add_ban = SSdbcore.NewQuery(sql) if(!query_add_ban.warn_execute()) return to_chat(usr, "Ban saved to database.") @@ -187,13 +187,13 @@ if(job) sql += " AND job = '[job]'" - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) return var/ban_id var/ban_number = 0 //failsafe - var/DBQuery/query_unban_get_id = GLOB.dbcon.NewQuery(sql) + var/datum/DBQuery/query_unban_get_id = SSdbcore.NewQuery(sql) if(!query_unban_get_id.warn_execute()) return while(query_unban_get_id.NextRow()) @@ -225,7 +225,7 @@ to_chat(usr, "Cancelled") return - var/DBQuery/query_edit_ban_get_details = GLOB.dbcon.NewQuery("SELECT ckey, duration, reason FROM [format_table_name("ban")] WHERE id = [banid]") + var/datum/DBQuery/query_edit_ban_get_details = SSdbcore.NewQuery("SELECT ckey, duration, reason FROM [format_table_name("ban")] WHERE id = [banid]") if(!query_edit_ban_get_details.warn_execute()) return @@ -254,7 +254,7 @@ to_chat(usr, "Cancelled") return - var/DBQuery/query_edit_ban_reason = GLOB.dbcon.NewQuery("UPDATE [format_table_name("ban")] SET reason = '[value]', edits = CONCAT(edits,'- [eckey] changed ban reason from \\\"[reason]\\\" to \\\"[value]\\\"
') WHERE id = [banid]") + var/datum/DBQuery/query_edit_ban_reason = SSdbcore.NewQuery("UPDATE [format_table_name("ban")] SET reason = '[value]', edits = CONCAT(edits,'- [eckey] changed ban reason from \\\"[reason]\\\" to \\\"[value]\\\"
') WHERE id = [banid]") if(!query_edit_ban_reason.warn_execute()) return message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s reason from [reason] to [value]",1) @@ -265,7 +265,7 @@ to_chat(usr, "Cancelled") return - var/DBQuery/query_edit_ban_duration = GLOB.dbcon.NewQuery("UPDATE [format_table_name("ban")] SET duration = [value], edits = CONCAT(edits,'- [eckey] changed ban duration from [duration] to [value]
'), expiration_time = DATE_ADD(bantime, INTERVAL [value] MINUTE) WHERE id = [banid]") + var/datum/DBQuery/query_edit_ban_duration = SSdbcore.NewQuery("UPDATE [format_table_name("ban")] SET duration = [value], edits = CONCAT(edits,'- [eckey] changed ban duration from [duration] to [value]
'), expiration_time = DATE_ADD(bantime, INTERVAL [value] MINUTE) WHERE id = [banid]") if(!query_edit_ban_duration.warn_execute()) return message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s duration from [duration] to [value]",1) @@ -287,13 +287,13 @@ var/sql = "SELECT ckey FROM [format_table_name("ban")] WHERE id = [id]" - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) return var/ban_number = 0 //failsafe var/pckey - var/DBQuery/query_unban_get_ckey = GLOB.dbcon.NewQuery(sql) + var/datum/DBQuery/query_unban_get_ckey = SSdbcore.NewQuery(sql) if(!query_unban_get_ckey.warn_execute()) return while(query_unban_get_ckey.NextRow()) @@ -316,7 +316,7 @@ var/unban_ip = src.owner:address var/sql_update = "UPDATE [format_table_name("ban")] SET unbanned = 1, unbanned_datetime = Now(), unbanned_ckey = '[unban_ckey]', unbanned_computerid = '[unban_computerid]', unbanned_ip = INET_ATON('[unban_ip]') WHERE id = [id]" - var/DBQuery/query_unban = GLOB.dbcon.NewQuery(sql_update) + var/datum/DBQuery/query_unban = SSdbcore.NewQuery(sql_update) if(!query_unban.warn_execute()) return message_admins("[key_name_admin(usr)] has lifted [pckey]'s ban.",1) @@ -339,7 +339,7 @@ if(!check_rights(R_BAN)) return - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return @@ -405,7 +405,7 @@ var/bansperpage = 15 var/pagecount = 0 page = text2num(page) - var/DBQuery/query_count_bans = GLOB.dbcon.NewQuery("SELECT COUNT(id) FROM [format_table_name("ban")] WHERE 1 [playersearch] [adminsearch]") + var/datum/DBQuery/query_count_bans = SSdbcore.NewQuery("SELECT COUNT(id) FROM [format_table_name("ban")] WHERE 1 [playersearch] [adminsearch]") if(!query_count_bans.warn_execute()) return if(query_count_bans.NextRow()) @@ -431,7 +431,7 @@ output += "OPTIONS" output += "" var/limit = " LIMIT [bansperpage * page], [bansperpage]" - var/DBQuery/query_search_bans = GLOB.dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits FROM [format_table_name("ban")] WHERE 1 [playersearch] [adminsearch] ORDER BY bantime DESC[limit]") + var/datum/DBQuery/query_search_bans = SSdbcore.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits FROM [format_table_name("ban")] WHERE 1 [playersearch] [adminsearch] ORDER BY bantime DESC[limit]") if(!query_search_bans.warn_execute()) return diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index afa1675bd2..09e3629533 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -35,7 +35,7 @@ if (!GLOB.guests_allowed) log_access("Failed Login: [key] - Guests not allowed") return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a byond account.") - if (config.panic_bunker && GLOB.dbcon && GLOB.dbcon.IsConnected()) + if (config.panic_bunker && SSdbcore && SSdbcore.IsConnected()) log_access("Failed Login: [key] - Guests not allowed during panic bunker") return list("reason"="guest", "desc"="\nReason: Sorry but the server is currently not accepting connections from never before seen players or guests. If you have played on this server with a byond account before, please log in to the byond account you have played from.") @@ -61,7 +61,7 @@ var/ckeytext = ckey(key) - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) log_world("Ban database connection failure. Key [ckeytext] not checked") GLOB.diary << "Ban database connection failure. Key [ckeytext] not checked" return @@ -74,7 +74,7 @@ if(computer_id) cidquery = " OR computerid = '[computer_id]' " - var/DBQuery/query_ban_check = GLOB.dbcon.NewQuery("SELECT ckey, a_ckey, reason, expiration_time, duration, bantime, bantype FROM [format_table_name("ban")] WHERE (ckey = '[ckeytext]' [ipquery] [cidquery]) AND (bantype = 'PERMABAN' OR bantype = 'ADMIN_PERMABAN' OR ((bantype = 'TEMPBAN' OR bantype = 'ADMIN_TEMPBAN') AND expiration_time > Now())) AND isnull(unbanned)") + var/datum/DBQuery/query_ban_check = SSdbcore.NewQuery("SELECT ckey, a_ckey, reason, expiration_time, duration, bantime, bantype FROM [format_table_name("ban")] WHERE (ckey = '[ckeytext]' [ipquery] [cidquery]) AND (bantype = 'PERMABAN' OR bantype = 'ADMIN_PERMABAN' OR ((bantype = 'TEMPBAN' OR bantype = 'ADMIN_TEMPBAN') AND expiration_time > Now())) AND isnull(unbanned)") if(!query_ban_check.Execute()) return while(query_ban_check.NextRow()) diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 4e6b14ff67..b23b4a5c36 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -125,14 +125,14 @@ GLOBAL_PROTECT(admin_ranks) previous_rights = R.rights else - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) log_world("Failed to connect to database in load_admin_ranks(). Reverting to legacy system.") GLOB.diary << "Failed to connect to database in load_admin_ranks(). Reverting to legacy system." config.admin_legacy_system = 1 load_admin_ranks() return - var/DBQuery/query_load_admin_ranks = GLOB.dbcon.NewQuery("SELECT rank, flags FROM [format_table_name("admin_ranks")]") + var/datum/DBQuery/query_load_admin_ranks = SSdbcore.NewQuery("SELECT rank, flags FROM [format_table_name("admin_ranks")]") if(!query_load_admin_ranks.Execute()) return while(query_load_admin_ranks.NextRow()) @@ -200,14 +200,14 @@ GLOBAL_PROTECT(admin_ranks) world.SetConfig("APP/admin", ckey, "role=admin") D.associate(GLOB.directory[ckey]) //find the client for a ckey if they are connected and associate them with the new admin datum else - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) log_world("Failed to connect to database in load_admins(). Reverting to legacy system.") GLOB.diary << "Failed to connect to database in load_admins(). Reverting to legacy system." config.admin_legacy_system = 1 load_admins() return - var/DBQuery/query_load_admins = GLOB.dbcon.NewQuery("SELECT ckey, rank FROM [format_table_name("admin")]") + var/datum/DBQuery/query_load_admins = SSdbcore.NewQuery("SELECT ckey, rank FROM [format_table_name("admin")]") if(!query_load_admins.Execute()) return while(query_load_admins.NextRow()) @@ -373,10 +373,10 @@ GLOBAL_PROTECT(admin_ranks) edit_admin_permissions() /datum/admins/proc/updateranktodb(ckey,newrank) - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) return var/sql_ckey = sanitizeSQL(ckey) var/sql_admin_rank = sanitizeSQL(newrank) - var/DBQuery/query_admin_rank_update = GLOB.dbcon.NewQuery("UPDATE [format_table_name("player")] SET lastadminrank = '[sql_admin_rank]' WHERE ckey = '[sql_ckey]'") + var/datum/DBQuery/query_admin_rank_update = SSdbcore.NewQuery("UPDATE [format_table_name("player")] SET lastadminrank = '[sql_admin_rank]' WHERE ckey = '[sql_ckey]'") query_admin_rank_update.Execute() diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index 5dfd8c23ff..8b431f401e 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -3,8 +3,8 @@ if(!M || !istype(M) || !M.ckey) return 0 - if(!M.client) //no cache. fallback to a DBQuery - var/DBQuery/query_jobban_check_ban = GLOB.dbcon.NewQuery("SELECT reason FROM [format_table_name("ban")] WHERE ckey = '[sanitizeSQL(M.ckey)]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned) AND job = '[sanitizeSQL(rank)]'") + if(!M.client) //no cache. fallback to a datum/DBQuery + var/datum/DBQuery/query_jobban_check_ban = SSdbcore.NewQuery("SELECT reason FROM [format_table_name("ban")] WHERE ckey = '[sanitizeSQL(M.ckey)]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned) AND job = '[sanitizeSQL(rank)]'") if(!query_jobban_check_ban.warn_execute()) return if(query_jobban_check_ban.NextRow()) @@ -24,7 +24,7 @@ /proc/jobban_buildcache(client/C) if(C && istype(C)) C.jobbancache = list() - var/DBQuery/query_jobban_build_cache = GLOB.dbcon.NewQuery("SELECT job, reason FROM [format_table_name("ban")] WHERE ckey = '[sanitizeSQL(C.ckey)]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned)") + var/datum/DBQuery/query_jobban_build_cache = SSdbcore.NewQuery("SELECT job, reason FROM [format_table_name("ban")] WHERE ckey = '[sanitizeSQL(C.ckey)]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned)") if(!query_jobban_build_cache.warn_execute()) return while(query_jobban_build_cache.NextRow()) diff --git a/code/modules/admin/create_poll.dm b/code/modules/admin/create_poll.dm index 325e68e347..92abf6d46d 100644 --- a/code/modules/admin/create_poll.dm +++ b/code/modules/admin/create_poll.dm @@ -3,16 +3,16 @@ set category = "Special Verbs" if(!check_rights(R_PERMISSIONS)) return - if(!GLOB.dbcon.IsConnected()) + if(!SSdbcore.IsConnected()) to_chat(src, "Failed to establish database connection.") return var/returned = create_poll_function() if(returned) - var/DBQuery/query_check_option = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE pollid = [returned]") + var/datum/DBQuery/query_check_option = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE pollid = [returned]") if(!query_check_option.warn_execute()) return if(query_check_option.NextRow()) - var/DBQuery/query_log_get = GLOB.dbcon.NewQuery("SELECT polltype, question, adminonly FROM [format_table_name("poll_question")] WHERE id = [returned]") + var/datum/DBQuery/query_log_get = SSdbcore.NewQuery("SELECT polltype, question, adminonly FROM [format_table_name("poll_question")] WHERE id = [returned]") if(!query_log_get.warn_execute()) return if(query_log_get.NextRow()) @@ -23,7 +23,7 @@ message_admins("[key_name_admin(usr)] has created a new server poll. Poll type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"]
Question: [question]") else to_chat(src, "Poll question created without any options, poll will be deleted.") - var/DBQuery/query_del_poll = GLOB.dbcon.NewQuery("DELETE FROM [format_table_name("poll_question")] WHERE id = [returned]") + var/datum/DBQuery/query_del_poll = SSdbcore.NewQuery("DELETE FROM [format_table_name("poll_question")] WHERE id = [returned]") if(!query_del_poll.warn_execute()) return @@ -51,7 +51,7 @@ if(!endtime) return endtime = sanitizeSQL(endtime) - var/DBQuery/query_validate_time = GLOB.dbcon.NewQuery("SELECT STR_TO_DATE('[endtime]','%Y-%c-%d %T')") + var/datum/DBQuery/query_validate_time = SSdbcore.NewQuery("SELECT STR_TO_DATE('[endtime]','%Y-%c-%d %T')") if(!query_validate_time.warn_execute()) return if(query_validate_time.NextRow()) @@ -59,7 +59,7 @@ if(!endtime) to_chat(src, "Datetime entered is invalid.") return - var/DBQuery/query_time_later = GLOB.dbcon.NewQuery("SELECT TIMESTAMP('[endtime]') < NOW()") + var/datum/DBQuery/query_time_later = SSdbcore.NewQuery("SELECT TIMESTAMP('[endtime]') < NOW()") if(!query_time_later.warn_execute()) return if(query_time_later.NextRow()) @@ -88,7 +88,7 @@ if(!question) return question = sanitizeSQL(question) - var/DBQuery/query_polladd_question = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("poll_question")] (polltype, starttime, endtime, question, adminonly, multiplechoiceoptions, createdby_ckey, createdby_ip, dontshow) VALUES ('[polltype]', '[starttime]', '[endtime]', '[question]', '[adminonly]', '[choice_amount]', '[sql_ckey]', INET_ATON('[address]'), '[dontshow]')") + var/datum/DBQuery/query_polladd_question = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_question")] (polltype, starttime, endtime, question, adminonly, multiplechoiceoptions, createdby_ckey, createdby_ip, dontshow) VALUES ('[polltype]', '[starttime]', '[endtime]', '[question]', '[adminonly]', '[choice_amount]', '[sql_ckey]', INET_ATON('[address]'), '[dontshow]')") if(!query_polladd_question.warn_execute()) return if(polltype == POLLTYPE_TEXT) @@ -96,7 +96,7 @@ message_admins("[key_name_admin(usr)] has created a new server poll. Poll type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"]
Question: [question]") return var/pollid = 0 - var/DBQuery/query_get_id = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE question = '[question]' AND starttime = '[starttime]' AND endtime = '[endtime]' AND createdby_ckey = '[sql_ckey]' AND createdby_ip = INET_ATON('[address]')") + var/datum/DBQuery/query_get_id = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE question = '[question]' AND starttime = '[starttime]' AND endtime = '[endtime]' AND createdby_ckey = '[sql_ckey]' AND createdby_ip = INET_ATON('[address]')") if(!query_get_id.warn_execute()) return if(query_get_id.NextRow()) @@ -146,7 +146,7 @@ descmax = sanitizeSQL(descmax) else if(descmax == null) return pollid - var/DBQuery/query_polladd_option = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("poll_option")] (pollid, text, percentagecalc, minval, maxval, descmin, descmid, descmax) VALUES ('[pollid]', '[option]', '[percentagecalc]', '[minval]', '[maxval]', '[descmin]', '[descmid]', '[descmax]')") + var/datum/DBQuery/query_polladd_option = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_option")] (pollid, text, percentagecalc, minval, maxval, descmin, descmid, descmax) VALUES ('[pollid]', '[option]', '[percentagecalc]', '[minval]', '[maxval]', '[descmin]', '[descmid]', '[descmax]')") if(!query_polladd_option.warn_execute()) return pollid switch(alert(" ",,"Add option","Finish", "Cancel")) diff --git a/code/modules/admin/ipintel.dm b/code/modules/admin/ipintel.dm index 7d61e69624..0857f28d11 100644 --- a/code/modules/admin/ipintel.dm +++ b/code/modules/admin/ipintel.dm @@ -33,8 +33,8 @@ cachedintel.cache = TRUE return cachedintel - if(GLOB.dbcon.Connect()) - var/DBQuery/query_get_ip_intel = GLOB.dbcon.NewQuery({" + if(SSdbcore.Connect()) + var/datum/DBQuery/query_get_ip_intel = SSdbcore.NewQuery({" SELECT date, intel, TIMESTAMPDIFF(MINUTE,date,NOW()) FROM [format_table_name("ipintel")] WHERE @@ -62,8 +62,8 @@ res.intel = ip_intel_query(ip) if (updatecache && res.intel >= 0) SSipintel.cache[ip] = res - if(GLOB.dbcon.Connect()) - var/DBQuery/query_add_ip_intel = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("ipintel")] (ip, intel) VALUES (INET_ATON('[ip]'), [res.intel]) ON DUPLICATE KEY UPDATE intel = VALUES(intel), date = NOW()") + if(SSdbcore.Connect()) + var/datum/DBQuery/query_add_ip_intel = SSdbcore.NewQuery("INSERT INTO [format_table_name("ipintel")] (ip, intel) VALUES (INET_ATON('[ip]'), [res.intel]) ON DUPLICATE KEY UPDATE intel = VALUES(intel), date = NOW()") query_add_ip_intel.Execute() diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index 8c0b0120fa..9db7f62441 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -60,7 +60,7 @@ if (!check_rights(R_PERMISSIONS)) return - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return @@ -75,7 +75,7 @@ if(!istext(adm_ckey) || !istext(new_rank)) return - var/DBQuery/query_get_admin = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("admin")] WHERE ckey = '[adm_ckey]'") + var/datum/DBQuery/query_get_admin = SSdbcore.NewQuery("SELECT id FROM [format_table_name("admin")] WHERE ckey = '[adm_ckey]'") if(!query_get_admin.warn_execute()) return @@ -86,19 +86,19 @@ admin_id = text2num(query_get_admin.item[1]) if(new_admin) - var/DBQuery/query_add_admin = GLOB.dbcon.NewQuery("INSERT INTO `[format_table_name("admin")]` (`id`, `ckey`, `rank`, `level`, `flags`) VALUES (null, '[adm_ckey]', '[new_rank]', -1, 0)") + var/datum/DBQuery/query_add_admin = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin")]` (`id`, `ckey`, `rank`, `level`, `flags`) VALUES (null, '[adm_ckey]', '[new_rank]', -1, 0)") if(!query_add_admin.warn_execute()) return - var/DBQuery/query_add_admin_log = GLOB.dbcon.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new admin [adm_ckey] to rank [new_rank]');") + var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new admin [adm_ckey] to rank [new_rank]');") if(!query_add_admin_log.warn_execute()) return to_chat(usr, "New admin added.") else if(!isnull(admin_id) && isnum(admin_id)) - var/DBQuery/query_change_admin = GLOB.dbcon.NewQuery("UPDATE `[format_table_name("admin")]` SET rank = '[new_rank]' WHERE id = [admin_id]") + var/datum/DBQuery/query_change_admin = SSdbcore.NewQuery("UPDATE `[format_table_name("admin")]` SET rank = '[new_rank]' WHERE id = [admin_id]") if(!query_change_admin.warn_execute()) return - var/DBQuery/query_change_admin_log = GLOB.dbcon.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edited the rank of [adm_ckey] to [new_rank]');") + var/datum/DBQuery/query_change_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edited the rank of [adm_ckey] to [new_rank]');") if(!query_change_admin_log.warn_execute()) return to_chat(usr, "Admin rank changed.") @@ -112,14 +112,14 @@ if(check_rights(R_PERMISSIONS)) return - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return if(!adm_ckey || !istext(adm_ckey) || !isnum(new_permission)) return - var/DBQuery/query_get_perms = GLOB.dbcon.NewQuery("SELECT id, flags FROM [format_table_name("admin")] WHERE ckey = '[adm_ckey]'") + var/datum/DBQuery/query_get_perms = SSdbcore.NewQuery("SELECT id, flags FROM [format_table_name("admin")] WHERE ckey = '[adm_ckey]'") if(!query_get_perms.warn_execute()) return @@ -130,8 +130,8 @@ if(!admin_id) return - var/DBQuery/query_change_perms = GLOB.dbcon.NewQuery("UPDATE `[format_table_name("admin")]` SET flags = [new_permission] WHERE id = [admin_id]") + var/datum/DBQuery/query_change_perms = SSdbcore.NewQuery("UPDATE `[format_table_name("admin")]` SET flags = [new_permission] WHERE id = [admin_id]") if(!query_change_perms.warn_execute()) return - var/DBQuery/query_change_perms_log = GLOB.dbcon.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edit permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]');") + var/datum/DBQuery/query_change_perms_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edit permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]');") query_change_perms_log.warn_execute() diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm index bcb2013867..26430f7daa 100644 --- a/code/modules/admin/sql_message_system.dm +++ b/code/modules/admin/sql_message_system.dm @@ -1,5 +1,5 @@ /proc/create_message(type, target_ckey, admin_ckey, text, timestamp, server, secret, logged = 1, browse) - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return if(!type) @@ -9,7 +9,7 @@ if(!new_ckey) return new_ckey = sanitizeSQL(new_ckey) - var/DBQuery/query_find_ckey = GLOB.dbcon.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ckey = '[new_ckey]'") + var/datum/DBQuery/query_find_ckey = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ckey = '[new_ckey]'") if(!query_find_ckey.warn_execute()) return if(!query_find_ckey.NextRow()) @@ -44,7 +44,7 @@ secret = 0 else return - var/DBQuery/query_create_message = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("messages")] (type, targetckey, adminckey, text, timestamp, server, secret) VALUES ('[type]', '[target_ckey]', '[admin_ckey]', '[text]', '[timestamp]', '[server]', '[secret]')") + var/datum/DBQuery/query_create_message = SSdbcore.NewQuery("INSERT INTO [format_table_name("messages")] (type, targetckey, adminckey, text, timestamp, server, secret) VALUES ('[type]', '[target_ckey]', '[admin_ckey]', '[text]', '[timestamp]', '[server]', '[secret]')") if(!query_create_message.warn_execute()) return if(logged) @@ -56,7 +56,7 @@ browse_messages(target_ckey = target_ckey) /proc/delete_message(message_id, logged = 1, browse) - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return message_id = text2num(message_id) @@ -65,14 +65,14 @@ var/type var/target_ckey var/text - var/DBQuery/query_find_del_message = GLOB.dbcon.NewQuery("SELECT type, targetckey, adminckey, text FROM [format_table_name("messages")] WHERE id = [message_id]") + var/datum/DBQuery/query_find_del_message = SSdbcore.NewQuery("SELECT type, targetckey, adminckey, text FROM [format_table_name("messages")] WHERE id = [message_id]") if(!query_find_del_message.warn_execute()) return if(query_find_del_message.NextRow()) type = query_find_del_message.item[1] target_ckey = query_find_del_message.item[2] text = query_find_del_message.item[4] - var/DBQuery/query_del_message = GLOB.dbcon.NewQuery("DELETE FROM [format_table_name("messages")] WHERE id = [message_id]") + var/datum/DBQuery/query_del_message = SSdbcore.NewQuery("DELETE FROM [format_table_name("messages")] WHERE id = [message_id]") if(!query_del_message.warn_execute()) return if(logged) @@ -84,13 +84,13 @@ browse_messages(target_ckey = target_ckey) /proc/edit_message(message_id, browse) - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return message_id = text2num(message_id) if(!message_id) return - var/DBQuery/query_find_edit_message = GLOB.dbcon.NewQuery("SELECT type, targetckey, adminckey, text FROM [format_table_name("messages")] WHERE id = [message_id]") + var/datum/DBQuery/query_find_edit_message = SSdbcore.NewQuery("SELECT type, targetckey, adminckey, text FROM [format_table_name("messages")] WHERE id = [message_id]") if(!query_find_edit_message.warn_execute()) return if(query_find_edit_message.NextRow()) @@ -104,7 +104,7 @@ return new_text = sanitizeSQL(new_text) var/edit_text = sanitizeSQL("Edited by [editor_ckey] on [SQLtime()] from
[old_text]
to
[new_text]
") - var/DBQuery/query_edit_message = GLOB.dbcon.NewQuery("UPDATE [format_table_name("messages")] SET text = '[new_text]', lasteditor = '[editor_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE id = [message_id]") + var/datum/DBQuery/query_edit_message = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET text = '[new_text]', lasteditor = '[editor_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE id = [message_id]") if(!query_edit_message.warn_execute()) return log_admin_private("[key_name(usr)] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""] made by [admin_ckey] from [old_text] to [new_text]") @@ -115,13 +115,13 @@ browse_messages(target_ckey = target_ckey) /proc/toggle_message_secrecy(message_id) - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return message_id = text2num(message_id) if(!message_id) return - var/DBQuery/query_find_message_secret = GLOB.dbcon.NewQuery("SELECT type, targetckey, adminckey, secret FROM [format_table_name("messages")] WHERE id = [message_id]") + var/datum/DBQuery/query_find_message_secret = SSdbcore.NewQuery("SELECT type, targetckey, adminckey, secret FROM [format_table_name("messages")] WHERE id = [message_id]") if(!query_find_message_secret.warn_execute()) return if(query_find_message_secret.NextRow()) @@ -131,7 +131,7 @@ var/secret = text2num(query_find_message_secret.item[4]) var/editor_ckey = sanitizeSQL(usr.ckey) var/edit_text = "Made [secret ? "not secret" : "secret"] by [editor_ckey] on [SQLtime()]
" - var/DBQuery/query_message_secret = GLOB.dbcon.NewQuery("UPDATE [format_table_name("messages")] SET secret = NOT secret, lasteditor = '[editor_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE id = [message_id]") + var/datum/DBQuery/query_message_secret = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET secret = NOT secret, lasteditor = '[editor_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE id = [message_id]") if(!query_message_secret.warn_execute()) return log_admin_private("[key_name(usr)] has toggled [target_ckey]'s [type] made by [admin_ckey] to [secret ? "not secret" : "secret"]") @@ -139,7 +139,7 @@ browse_messages(target_ckey = target_ckey) /proc/browse_messages(type, target_ckey, index, linkless = 0, filter) - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return var/output @@ -166,7 +166,7 @@ else output += "|\[Filter offline clients\]" output += ruler - var/DBQuery/query_get_type_messages = GLOB.dbcon.NewQuery("SELECT id, targetckey, adminckey, text, timestamp, server, lasteditor FROM [format_table_name("messages")] WHERE type = '[type]'") + var/datum/DBQuery/query_get_type_messages = SSdbcore.NewQuery("SELECT id, targetckey, adminckey, text, timestamp, server, lasteditor FROM [format_table_name("messages")] WHERE type = '[type]'") if(!query_get_type_messages.warn_execute()) return while(query_get_type_messages.NextRow()) @@ -190,7 +190,7 @@ output += "
[text]
" if(target_ckey) target_ckey = sanitizeSQL(target_ckey) - var/DBQuery/query_get_messages = GLOB.dbcon.NewQuery("SELECT type, secret, id, adminckey, text, timestamp, server, lasteditor FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = '[target_ckey]' ORDER BY timestamp DESC") + var/datum/DBQuery/query_get_messages = SSdbcore.NewQuery("SELECT type, secret, id, adminckey, text, timestamp, server, lasteditor FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = '[target_ckey]' ORDER BY timestamp DESC") if(!query_get_messages.warn_execute()) return var/messagedata @@ -265,7 +265,7 @@ search = "^\[^\[:alpha:\]\]" else search = "^[index]" - var/DBQuery/query_list_messages = GLOB.dbcon.NewQuery("SELECT DISTINCT targetckey FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey REGEXP '[search]' ORDER BY targetckey") + var/datum/DBQuery/query_list_messages = SSdbcore.NewQuery("SELECT DISTINCT targetckey FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey REGEXP '[search]' ORDER BY targetckey") if(!query_list_messages.warn_execute()) return while(query_list_messages.NextRow()) @@ -277,7 +277,7 @@ usr << browse(output, "window=browse_messages;size=900x500") proc/get_message_output(type, target_ckey) - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return if(!type) @@ -288,7 +288,7 @@ proc/get_message_output(type, target_ckey) var/query = "SELECT id, adminckey, text, timestamp, lasteditor FROM [format_table_name("messages")] WHERE type = '[type]'" if(type == "message" || type == "watchlist entry") query += " AND targetckey = '[target_ckey]'" - var/DBQuery/query_get_message_output = GLOB.dbcon.NewQuery(query) + var/datum/DBQuery/query_get_message_output = SSdbcore.NewQuery(query) if(!query_get_message_output.warn_execute()) return while(query_get_message_output.NextRow()) @@ -301,7 +301,7 @@ proc/get_message_output(type, target_ckey) if("message") output += "Admin message left by [admin_ckey] on [timestamp]" output += "
[text]
" - var/DBQuery/query_message_read = GLOB.dbcon.NewQuery("UPDATE [format_table_name("messages")] SET type = 'message sent' WHERE id = [message_id]") + var/datum/DBQuery/query_message_read = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET type = 'message sent' WHERE id = [message_id]") if(!query_message_read.warn_execute()) return if("watchlist entry") @@ -333,7 +333,7 @@ proc/get_message_output(type, target_ckey) var/timestamp = note.group[1] notetext = note.group[2] var/admin_ckey = note.group[3] - var/DBQuery/query_convert_time = GLOB.dbcon.NewQuery("SELECT ADDTIME(STR_TO_DATE('[timestamp]','%d-%b-%Y'), '0')") + var/datum/DBQuery/query_convert_time = SSdbcore.NewQuery("SELECT ADDTIME(STR_TO_DATE('[timestamp]','%d-%b-%Y'), '0')") if(!query_convert_time.Execute()) return if(query_convert_time.NextRow()) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index ef24d1df1a..609c763fbc 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1124,7 +1124,7 @@ else if(href_list["messageedits"]) var/message_id = sanitizeSQL("[href_list["messageedits"]]") - var/DBQuery/query_get_message_edits = GLOB.dbcon.NewQuery("SELECT edits FROM [format_table_name("messages")] WHERE id = '[message_id]'") + var/datum/DBQuery/query_get_message_edits = SSdbcore.NewQuery("SELECT edits FROM [format_table_name("messages")] WHERE id = '[message_id]'") if(!query_get_message_edits.warn_execute()) return if(query_get_message_edits.NextRow()) diff --git a/code/modules/admin/verbs/panicbunker.dm b/code/modules/admin/verbs/panicbunker.dm index cd0a4c50ba..b0c1aac982 100644 --- a/code/modules/admin/verbs/panicbunker.dm +++ b/code/modules/admin/verbs/panicbunker.dm @@ -9,7 +9,7 @@ log_admin("[key_name(usr)] has toggled the Panic Bunker, it is now [(config.panic_bunker?"on":"off")]") message_admins("[key_name_admin(usr)] has toggled the Panic Bunker, it is now [(config.panic_bunker?"enabled":"disabled")].") - if (config.panic_bunker && (!GLOB.dbcon || !GLOB.dbcon.IsConnected())) + if (config.panic_bunker && (!SSdbcore || !SSdbcore.IsConnected())) message_admins("The Database is not connected! Panic bunker will not work until the connection is reestablished.") feedback_add_details("admin_toggle","Toggle Panic Bunker|[config.panic_bunker]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/reestablish_db_connection.dm b/code/modules/admin/verbs/reestablish_db_connection.dm index 20b6a9e848..3b134eaff0 100644 --- a/code/modules/admin/verbs/reestablish_db_connection.dm +++ b/code/modules/admin/verbs/reestablish_db_connection.dm @@ -5,7 +5,7 @@ to_chat(usr, "The Database is not enabled!") return - if (GLOB.dbcon && GLOB.dbcon.IsConnected()) + if (SSdbcore && SSdbcore.IsConnected()) if (!check_rights(R_DEBUG,0)) alert("The database is already connected! (Only those with +debug can force a reconnection)", "The database is already connected!") return @@ -14,7 +14,7 @@ if (reconnect != "Force Reconnect") return - GLOB.dbcon.Disconnect() + SSdbcore.Disconnect() log_admin("[key_name(usr)] has forced the database to disconnect") message_admins("[key_name_admin(usr)] has forced the database to disconnect!") feedback_add_details("admin_verb","Force Reestablished Database Connection") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -23,8 +23,8 @@ message_admins("[key_name_admin(usr)] is attempting to re-established the DB Connection") feedback_add_details("admin_verb","Reestablished Database Connection") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - GLOB.dbcon.failed_connections = 0 - if(!GLOB.dbcon.Connect()) - message_admins("Database connection failed: " + GLOB.dbcon.ErrorMsg()) + SSdbcore.failed_connections = 0 + if(!SSdbcore.Connect()) + message_admins("Database connection failed: " + SSdbcore.ErrorMsg()) else message_admins("Database connection re-established") \ No newline at end of file diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 31821fd5aa..c63c1a5e55 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -312,7 +312,7 @@ GLOBAL_LIST(external_rsc_urls) else if (isnum(player_age) && player_age < config.notify_new_player_age) message_admins("New user: [key_name_admin(src)] just connected with an age of [player_age] day[(player_age==1?"":"s")]") - if(!IsGuestKey(key) && GLOB.dbcon.IsConnected()) + if(!IsGuestKey(key) && SSdbcore.IsConnected()) findJoinDate() sync_client_with_db(tdata) @@ -375,12 +375,12 @@ GLOBAL_LIST(external_rsc_urls) if (IsGuestKey(src.key)) return - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) return var/sql_ckey = sanitizeSQL(src.ckey) - var/DBQuery/query_get_client_age = GLOB.dbcon.NewQuery("SELECT id, datediff(Now(),firstseen) as age FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'") + var/datum/DBQuery/query_get_client_age = SSdbcore.NewQuery("SELECT id, datediff(Now(),firstseen) as age FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'") if(!query_get_client_age.Execute()) return @@ -396,18 +396,18 @@ GLOBAL_LIST(external_rsc_urls) if (IsGuestKey(src.key)) return - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) return var/sql_ckey = sanitizeSQL(ckey) - var/DBQuery/query_get_ip = GLOB.dbcon.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ip = INET_ATON('[address]') AND ckey != '[sql_ckey]'") + var/datum/DBQuery/query_get_ip = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ip = INET_ATON('[address]') AND ckey != '[sql_ckey]'") query_get_ip.Execute() related_accounts_ip = "" while(query_get_ip.NextRow()) related_accounts_ip += "[query_get_ip.item[1]], " - var/DBQuery/query_get_cid = GLOB.dbcon.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE computerid = '[computer_id]' AND ckey != '[sql_ckey]'") + var/datum/DBQuery/query_get_cid = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE computerid = '[computer_id]' AND ckey != '[sql_ckey]'") if(!query_get_cid.Execute()) return related_accounts_cid = "" @@ -426,13 +426,13 @@ GLOBAL_LIST(external_rsc_urls) var/sql_admin_rank = sanitizeSQL(admin_rank) - var/DBQuery/query_log_player = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("player")] (id, ckey, firstseen, lastseen, ip, computerid, lastadminrank) VALUES (null, '[sql_ckey]', Now(), Now(), INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]') ON DUPLICATE KEY UPDATE lastseen = VALUES(lastseen), ip = VALUES(ip), computerid = VALUES(computerid), lastadminrank = VALUES(lastadminrank)") + var/datum/DBQuery/query_log_player = SSdbcore.NewQuery("INSERT INTO [format_table_name("player")] (id, ckey, firstseen, lastseen, ip, computerid, lastadminrank) VALUES (null, '[sql_ckey]', Now(), Now(), INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]') ON DUPLICATE KEY UPDATE lastseen = VALUES(lastseen), ip = VALUES(ip), computerid = VALUES(computerid), lastadminrank = VALUES(lastadminrank)") if(!query_log_player.Execute()) return //Logging player access - var/DBQuery/query_log_connection = GLOB.dbcon.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),INET_ATON('[world.internet_address]'),'[world.port]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')") + var/datum/DBQuery/query_log_connection = SSdbcore.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),INET_ATON('[world.internet_address]'),'[world.port]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')") query_log_connection.Execute() /client/proc/check_randomizer(topic) @@ -488,7 +488,7 @@ GLOBAL_LIST(external_rsc_urls) cidcheck -= ckey else var/sql_ckey = sanitizeSQL(ckey) - var/DBQuery/query_cidcheck = GLOB.dbcon.NewQuery("SELECT computerid FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'") + var/datum/DBQuery/query_cidcheck = SSdbcore.NewQuery("SELECT computerid FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'") query_cidcheck.Execute() var/lastcid @@ -516,13 +516,13 @@ GLOBAL_LIST(external_rsc_urls) var/const/adminckey = "CID-Error" var/sql_ckey = sanitizeSQL(ckey) //check to see if we noted them in the last day. - var/DBQuery/query_get_notes = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("messages")] WHERE type = 'note' AND targetckey = '[sql_ckey]' AND adminckey = '[adminckey]' AND timestamp + INTERVAL 1 DAY < NOW()") + var/datum/DBQuery/query_get_notes = SSdbcore.NewQuery("SELECT id FROM [format_table_name("messages")] WHERE type = 'note' AND targetckey = '[sql_ckey]' AND adminckey = '[adminckey]' AND timestamp + INTERVAL 1 DAY < NOW()") if(!query_get_notes.Execute()) return if(query_get_notes.NextRow()) return //regardless of above, make sure their last note is not from us, as no point in repeating the same note over and over. - query_get_notes = GLOB.dbcon.NewQuery("SELECT adminckey FROM [format_table_name("messages")] WHERE targetckey = '[sql_ckey]' ORDER BY timestamp DESC LIMIT 1") + query_get_notes = SSdbcore.NewQuery("SELECT adminckey FROM [format_table_name("messages")] WHERE targetckey = '[sql_ckey]' ORDER BY timestamp DESC LIMIT 1") if(!query_get_notes.Execute()) return if(query_get_notes.NextRow()) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 786da51f78..5b15887ee2 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -790,7 +790,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(href_list["jobbancheck"]) var/job = sanitizeSQL(href_list["jobbancheck"]) var/sql_ckey = sanitizeSQL(user.ckey) - var/DBQuery/query_get_jobban = GLOB.dbcon.NewQuery("SELECT reason, bantime, duration, expiration_time, a_ckey FROM [format_table_name("ban")] WHERE ckey = '[sql_ckey]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned) AND job = '[job]'") + var/datum/DBQuery/query_get_jobban = SSdbcore.NewQuery("SELECT reason, bantime, duration, expiration_time, a_ckey FROM [format_table_name("ban")] WHERE ckey = '[sql_ckey]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned) AND job = '[job]'") if(!query_get_jobban.warn_execute()) return if(query_get_jobban.NextRow()) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index c49b013f4a..dc443cf265 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -43,7 +43,7 @@ dat += "Filter by Author: [author]
" dat += "\[Start Search\]
" if(1) - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance.
" else if(!SQLquery) dat += "ERROR: Malformed search request. Please contact your system administrator for assistance.
" @@ -51,7 +51,7 @@ dat += "" dat += "" - var/DBQuery/query_library_list_books = GLOB.dbcon.NewQuery(SQLquery) + var/datum/DBQuery/query_library_list_books = SSdbcore.NewQuery(SQLquery) if(!query_library_list_books.Execute()) dat += "ERROR: Unable to retrieve book listings. Please contact your system administrator for assistance.
" while(query_library_list_books.NextRow()) @@ -134,10 +134,10 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums /proc/load_library_db_to_cache() if(GLOB.cachedbooks) return - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) return GLOB.cachedbooks = list() - var/DBQuery/query_library_cache = GLOB.dbcon.NewQuery("SELECT id, author, title, category FROM [format_table_name("library")] WHERE isnull(deleted)") + var/datum/DBQuery/query_library_cache = SSdbcore.NewQuery("SELECT id, author, title, category FROM [format_table_name("library")] WHERE isnull(deleted)") if(!query_library_cache.Execute()) return while(query_library_cache.NextRow()) @@ -411,7 +411,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if(scanner.cache) var/choice = input("Are you certain you wish to upload this title to the Archive?") in list("Confirm", "Abort") if(choice == "Confirm") - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) alert("Connection to Archive has been severed. Aborting.") else @@ -419,7 +419,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums var/sqlauthor = sanitizeSQL(scanner.cache.author) var/sqlcontent = sanitizeSQL(scanner.cache.dat) var/sqlcategory = sanitizeSQL(upload_category) - var/DBQuery/query_library_upload = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("library")] (author, title, content, category, ckey, datetime) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]', '[usr.ckey]', Now())") + var/datum/DBQuery/query_library_upload = SSdbcore.NewQuery("INSERT INTO [format_table_name("library")] (author, title, content, category, ckey, datetime) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]', '[usr.ckey]', Now())") if(!query_library_upload.Execute()) alert("Database error encountered uploading to Archive") return @@ -449,13 +449,13 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if(href_list["targetid"]) var/sqlid = sanitizeSQL(href_list["targetid"]) - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) alert("Connection to Archive has been severed. Aborting.") if(cooldown > world.time) say("Printer unavailable. Please allow a short time before attempting to print.") else cooldown = world.time + PRINTER_COOLDOWN - var/DBQuery/query_library_print = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("library")] WHERE id=[sqlid] AND isnull(deleted)") + var/datum/DBQuery/query_library_print = SSdbcore.NewQuery("SELECT * FROM [format_table_name("library")] WHERE id=[sqlid] AND isnull(deleted)") if(!query_library_print.Execute()) say("PRINTER ERROR! Failed to print document (0x0000000F)") return diff --git a/code/modules/library/random_books.dm b/code/modules/library/random_books.dm index f685c92db7..aacdb0bc4f 100644 --- a/code/modules/library/random_books.dm +++ b/code/modules/library/random_books.dm @@ -36,7 +36,7 @@ . = list() if(!isnum(amount) || amount<1) return - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) if(fail_loud || prob(5)) var/obj/item/weapon/paper/P = new(location) P.info = "There once was a book from Nantucket
But the database failed us, so f*$! it.
I tried to be good to you
Now this is an I.O.U
If you're feeling entitled, well, stuff it!

~" @@ -45,7 +45,7 @@ if(prob(25)) category = null var/c = category? " AND category='[sanitizeSQL(category)]'" :"" - var/DBQuery/query_get_random_books = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("library")] WHERE isnull(deleted)[c] GROUP BY title ORDER BY rand() LIMIT [amount];") // isdeleted copyright (c) not me + var/datum/DBQuery/query_get_random_books = SSdbcore.NewQuery("SELECT * FROM [format_table_name("library")] WHERE isnull(deleted)[c] GROUP BY title ORDER BY rand() LIMIT [amount];") // isdeleted copyright (c) not me if(query_get_random_books.Execute()) while(query_get_random_books.NextRow()) var/obj/item/weapon/book/B = new(location) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 7f6a4abc1c..72f83bf546 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -48,11 +48,11 @@ output += "

Observe

" if(!IsGuestKey(src.key)) - if (GLOB.dbcon.Connect()) + if (SSdbcore.Connect()) var/isadmin = 0 if(src.client && src.client.holder) isadmin = 1 - var/DBQuery/query_get_new_polls = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE [(isadmin ? "" : "adminonly = false AND")] Now() BETWEEN starttime AND endtime AND id NOT IN (SELECT pollid FROM [format_table_name("poll_vote")] WHERE ckey = \"[ckey]\") AND id NOT IN (SELECT pollid FROM [format_table_name("poll_textreply")] WHERE ckey = \"[ckey]\")") + var/datum/DBQuery/query_get_new_polls = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE [(isadmin ? "" : "adminonly = false AND")] Now() BETWEEN starttime AND endtime AND id NOT IN (SELECT pollid FROM [format_table_name("poll_vote")] WHERE ckey = \"[ckey]\") AND id NOT IN (SELECT pollid FROM [format_table_name("poll_textreply")] WHERE ckey = \"[ckey]\")") if(!query_get_new_polls.Execute()) return var/newpoll = 0 diff --git a/code/modules/mob/dead/new_player/poll.dm b/code/modules/mob/dead/new_player/poll.dm index a469e2907a..43e48d2bf9 100644 --- a/code/modules/mob/dead/new_player/poll.dm +++ b/code/modules/mob/dead/new_player/poll.dm @@ -3,10 +3,10 @@ var/optiontext /mob/dead/new_player/proc/handle_player_polling() - if(!GLOB.dbcon.IsConnected()) + if(!SSdbcore.IsConnected()) to_chat(usr, "Failed to establish database connection.") return - var/DBQuery/query_poll_get = GLOB.dbcon.NewQuery("SELECT id, question FROM [format_table_name("poll_question")] WHERE Now() BETWEEN starttime AND endtime [(client.holder ? "" : "AND adminonly = false")]") + var/datum/DBQuery/query_poll_get = SSdbcore.NewQuery("SELECT id, question FROM [format_table_name("poll_question")] WHERE Now() BETWEEN starttime AND endtime [(client.holder ? "" : "AND adminonly = false")]") if(!query_poll_get.warn_execute()) return var/output = "
Player polls
AUTHORTITLECATEGORYSS13BN
" @@ -22,10 +22,10 @@ /mob/dead/new_player/proc/poll_player(pollid) if(!pollid) return - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return - var/DBQuery/query_poll_get_details = GLOB.dbcon.NewQuery("SELECT starttime, endtime, question, polltype, multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]") + var/datum/DBQuery/query_poll_get_details = SSdbcore.NewQuery("SELECT starttime, endtime, question, polltype, multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]") if(!query_poll_get_details.warn_execute()) return var/pollstarttime = "" @@ -41,14 +41,14 @@ multiplechoiceoptions = text2num(query_poll_get_details.item[5]) switch(polltype) if(POLLTYPE_OPTION) - var/DBQuery/query_option_get_votes = GLOB.dbcon.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") + var/datum/DBQuery/query_option_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_option_get_votes.warn_execute()) return var/votedoptionid = 0 if(query_option_get_votes.NextRow()) votedoptionid = text2num(query_option_get_votes.item[1]) var/list/datum/polloption/options = list() - var/DBQuery/query_option_options = GLOB.dbcon.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") + var/datum/DBQuery/query_option_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_option_options.warn_execute()) return while(query_option_options.NextRow()) @@ -82,7 +82,7 @@ src << browse(null ,"window=playerpolllist") src << browse(output,"window=playerpoll;size=500x250") if(POLLTYPE_TEXT) - var/DBQuery/query_text_get_votes = GLOB.dbcon.NewQuery("SELECT replytext FROM [format_table_name("poll_textreply")] WHERE pollid = [pollid] AND ckey = '[ckey]'") + var/datum/DBQuery/query_text_get_votes = SSdbcore.NewQuery("SELECT replytext FROM [format_table_name("poll_textreply")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_text_get_votes.warn_execute()) return var/vote_text = "" @@ -111,7 +111,7 @@ src << browse(null ,"window=playerpolllist") src << browse(output,"window=playerpoll;size=500x500") if(POLLTYPE_RATING) - var/DBQuery/query_rating_get_votes = GLOB.dbcon.NewQuery("SELECT o.text, v.rating FROM [format_table_name("poll_option")] o, [format_table_name("poll_vote")] v WHERE o.pollid = [pollid] AND v.ckey = '[ckey]' AND o.id = v.optionid") + var/datum/DBQuery/query_rating_get_votes = SSdbcore.NewQuery("SELECT o.text, v.rating FROM [format_table_name("poll_option")] o, [format_table_name("poll_vote")] v WHERE o.pollid = [pollid] AND v.ckey = '[ckey]' AND o.id = v.optionid") if(!query_rating_get_votes.warn_execute()) return var/output = "
Player poll
" @@ -129,7 +129,7 @@ output += "" var/minid = 999999 var/maxid = 0 - var/DBQuery/query_rating_options = GLOB.dbcon.NewQuery("SELECT id, text, minval, maxval, descmin, descmid, descmax FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") + var/datum/DBQuery/query_rating_options = SSdbcore.NewQuery("SELECT id, text, minval, maxval, descmin, descmid, descmax FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_rating_options.warn_execute()) return while(query_rating_options.NextRow()) @@ -163,7 +163,7 @@ src << browse(null ,"window=playerpolllist") src << browse(output,"window=playerpoll;size=500x500") if(POLLTYPE_MULTI) - var/DBQuery/query_multi_get_votes = GLOB.dbcon.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") + var/datum/DBQuery/query_multi_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_multi_get_votes.warn_execute()) return var/list/votedfor = list() @@ -172,7 +172,7 @@ var/list/datum/polloption/options = list() var/maxoptionid = 0 var/minoptionid = 0 - var/DBQuery/query_multi_options = GLOB.dbcon.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") + var/datum/DBQuery/query_multi_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_multi_options.warn_execute()) return while(query_multi_options.NextRow()) @@ -214,7 +214,7 @@ var/datum/asset/irv_assets = get_asset_datum(/datum/asset/simple/IRV) irv_assets.send(src) - var/DBQuery/query_irv_get_votes = GLOB.dbcon.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") + var/datum/DBQuery/query_irv_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_irv_get_votes.warn_execute()) return @@ -224,7 +224,7 @@ var/list/datum/polloption/options = list() - var/DBQuery/query_irv_options = GLOB.dbcon.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") + var/datum/DBQuery/query_irv_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_irv_options.warn_execute()) return while(query_irv_options.NextRow()) @@ -327,10 +327,10 @@ var/table = "poll_vote" if (text) table = "poll_textreply" - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return - var/DBQuery/query_hasvoted = GLOB.dbcon.NewQuery("SELECT id FROM `[format_table_name(table)]` WHERE pollid = [pollid] AND ckey = '[ckey]'") + var/datum/DBQuery/query_hasvoted = SSdbcore.NewQuery("SELECT id FROM `[format_table_name(table)]` WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_hasvoted.warn_execute()) return if(query_hasvoted.NextRow()) @@ -355,14 +355,14 @@ return 1 /mob/dead/new_player/proc/vote_valid_check(pollid, holder, type) - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) to_chat(src, "Failed to establish database connection.") return 0 pollid = text2num(pollid) if (!pollid || pollid < 0) return 0 //validate the poll is actually the right type of poll and its still active - var/DBQuery/query_validate_poll = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE id = [pollid] AND Now() BETWEEN starttime AND endtime AND polltype = '[type]' [(holder ? "" : "AND adminonly = false")]") + var/datum/DBQuery/query_validate_poll = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE id = [pollid] AND Now() BETWEEN starttime AND endtime AND polltype = '[type]' [(holder ? "" : "AND adminonly = false")]") if(!query_validate_poll.warn_execute()) return 0 if (!query_validate_poll.NextRow()) @@ -370,7 +370,7 @@ return 1 /mob/dead/new_player/proc/vote_on_irv_poll(pollid, list/votelist) - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) to_chat(src, "Failed to establish database connection.") return 0 if (!vote_rig_check()) @@ -395,7 +395,7 @@ return 0 //lets collect the options - var/DBQuery/query_irv_id = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") + var/datum/DBQuery/query_irv_id = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_irv_id.warn_execute()) return 0 var/list/optionlist = list() @@ -426,12 +426,12 @@ sqlrowlist += "(Now(), [pollid], [vote], '[sanitizeSQL(ckey)]', INET_ATON('[sanitizeSQL(address)]'), '[sanitizeSQL(rank)]')" //now lets delete their old votes (if any) - var/DBQuery/query_irv_del_old = GLOB.dbcon.NewQuery("DELETE FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") + var/datum/DBQuery/query_irv_del_old = SSdbcore.NewQuery("DELETE FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_irv_del_old.warn_execute()) return 0 //now to add the new ones. - var/DBQuery/query_irv_vote = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES [sqlrowlist]") + var/datum/DBQuery/query_irv_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES [sqlrowlist]") if(!query_irv_vote.warn_execute()) return 0 src << browse(null,"window=playerpoll") @@ -439,7 +439,7 @@ /mob/dead/new_player/proc/vote_on_poll(pollid, optionid) - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) to_chat(src, "Failed to establish database connection.") return 0 if (!vote_rig_check()) @@ -452,14 +452,14 @@ var/adminrank = sanitizeSQL(poll_check_voted(pollid)) if(!adminrank) return - var/DBQuery/query_option_vote = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]')") + var/datum/DBQuery/query_option_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]')") if(!query_option_vote.warn_execute()) return usr << browse(null,"window=playerpoll") return 1 /mob/dead/new_player/proc/log_text_poll_reply(pollid, replytext) - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) to_chat(src, "Failed to establish database connection.") return 0 if (!vote_rig_check()) @@ -479,14 +479,14 @@ if(!(length(replytext) > 0) || !(length(replytext) <= 8000)) to_chat(usr, "The text you entered was invalid or too long. Please correct the text and submit again.") return - var/DBQuery/query_text_vote = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("poll_textreply")] (datetime ,pollid ,ckey ,ip ,replytext ,adminrank) VALUES (Now(), [pollid], '[ckey]', INET_ATON('[client.address]'), '[replytext]', '[adminrank]')") + var/datum/DBQuery/query_text_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_textreply")] (datetime ,pollid ,ckey ,ip ,replytext ,adminrank) VALUES (Now(), [pollid], '[ckey]', INET_ATON('[client.address]'), '[replytext]', '[adminrank]')") if(!query_text_vote.warn_execute()) return usr << browse(null,"window=playerpoll") return 1 /mob/dead/new_player/proc/vote_on_numval_poll(pollid, optionid, rating) - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) to_chat(src, "Failed to establish database connection.") return 0 if (!vote_rig_check()) @@ -496,7 +496,7 @@ //validate the poll if (!vote_valid_check(pollid, client.holder, POLLTYPE_RATING)) return 0 - var/DBQuery/query_numval_hasvoted = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE optionid = [optionid] AND ckey = '[ckey]'") + var/datum/DBQuery/query_numval_hasvoted = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE optionid = [optionid] AND ckey = '[ckey]'") if(!query_numval_hasvoted.warn_execute()) return if(query_numval_hasvoted.NextRow()) @@ -506,14 +506,14 @@ if(client.holder) adminrank = client.holder.rank.name adminrank = sanitizeSQL(adminrank) - var/DBQuery/query_numval_vote = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime ,pollid ,optionid ,ckey ,ip ,adminrank, rating) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]', [(isnull(rating)) ? "null" : rating])") + var/datum/DBQuery/query_numval_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime ,pollid ,optionid ,ckey ,ip ,adminrank, rating) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]', [(isnull(rating)) ? "null" : rating])") if(!query_numval_vote.warn_execute()) return usr << browse(null,"window=playerpoll") return 1 /mob/dead/new_player/proc/vote_on_multi_poll(pollid, optionid) - if (!GLOB.dbcon.Connect()) + if (!SSdbcore.Connect()) to_chat(src, "Failed to establish database connection.") return 0 if (!vote_rig_check()) @@ -523,13 +523,13 @@ //validate the poll if (!vote_valid_check(pollid, client.holder, POLLTYPE_MULTI)) return 0 - var/DBQuery/query_multi_choicelen = GLOB.dbcon.NewQuery("SELECT multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]") + var/datum/DBQuery/query_multi_choicelen = SSdbcore.NewQuery("SELECT multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]") if(!query_multi_choicelen.warn_execute()) return 1 var/i if(query_multi_choicelen.NextRow()) i = text2num(query_multi_choicelen.item[1]) - var/DBQuery/query_multi_hasvoted = GLOB.dbcon.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") + var/datum/DBQuery/query_multi_hasvoted = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_multi_hasvoted.warn_execute()) return 1 while(i) @@ -543,7 +543,7 @@ if(client.holder) adminrank = client.holder.rank.name adminrank = sanitizeSQL(adminrank) - var/DBQuery/query_multi_vote = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]')") + var/datum/DBQuery/query_multi_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]')") if(!query_multi_vote.warn_execute()) return 1 usr << browse(null,"window=playerpoll") diff --git a/code/orphaned_procs/statistics.dm b/code/orphaned_procs/statistics.dm index b429e78004..d6cdcda6c1 100644 --- a/code/orphaned_procs/statistics.dm +++ b/code/orphaned_procs/statistics.dm @@ -62,10 +62,10 @@ GLOBAL_DATUM_INIT(blackbox, /datum/feedback, new) if (!feedback) return round_end_data_gathering() //round_end time logging and some other data processing - if (!GLOB.dbcon.Connect()) return + if (!SSdbcore.Connect()) return var/round_id - var/DBQuery/query_feedback_max_id = GLOB.dbcon.NewQuery("SELECT MAX(round_id) AS round_id FROM [format_table_name("feedback")]") + var/datum/DBQuery/query_feedback_max_id = SSdbcore.NewQuery("SELECT MAX(round_id) AS round_id FROM [format_table_name("feedback")]") if(!query_feedback_max_id.Execute()) return while (query_feedback_max_id.NextRow()) @@ -86,7 +86,7 @@ GLOBAL_DATUM_INIT(blackbox, /datum/feedback, new) if (sqlrowlist == "") return - var/DBQuery/query_feedback_save = GLOB.dbcon.NewQuery("INSERT DELAYED IGNORE INTO [format_table_name("feedback")] VALUES " + sqlrowlist) + var/datum/DBQuery/query_feedback_save = SSdbcore.NewQuery("INSERT DELAYED IGNORE INTO [format_table_name("feedback")] VALUES " + sqlrowlist) query_feedback_save.Execute() @@ -209,20 +209,20 @@ GLOBAL_DATUM_INIT(blackbox, /datum/feedback, new) /proc/sql_poll_population() if(!config.sql_enabled) return - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) return var/playercount = 0 for(var/mob/M in GLOB.player_list) if(M.client) playercount += 1 var/admincount = GLOB.admins.len - var/DBQuery/query_record_playercount = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON('[world.internet_address]'), '[world.port]')") + var/datum/DBQuery/query_record_playercount = SSdbcore.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON('[world.internet_address]'), '[world.port]')") query_record_playercount.Execute() /proc/sql_report_death(mob/living/L) if(!config.sql_enabled) return - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) return if(!L || !L.key || !L.mind) return @@ -249,5 +249,5 @@ GLOBAL_DATUM_INIT(blackbox, /datum/feedback, new) var/sqlstamina = sanitizeSQL(L.getStaminaLoss()) var/coord = sanitizeSQL("[L.x], [L.y], [L.z]") var/map = sanitizeSQL(SSmapping.config.map_name) - var/DBQuery/query_report_death = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, coord, mapname, server_ip, server_port) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[SQLtime()]', '[laname]', '[lakey]', '[sqlgender]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[coord]', '[map]', INET_ATON('[world.internet_address]'), '[world.port]')") + var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, coord, mapname, server_ip, server_port) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[SQLtime()]', '[laname]', '[lakey]', '[sqlgender]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[coord]', '[map]', INET_ATON('[world.internet_address]'), '[world.port]')") query_report_death.Execute() diff --git a/code/world.dm b/code/world.dm index 7b85142c97..ddc7e65771 100644 --- a/code/world.dm +++ b/code/world.dm @@ -50,7 +50,7 @@ GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 if(config.sql_enabled) - if(!GLOB.dbcon.Connect()) + if(!SSdbcore.Connect()) log_world("Your server failed to establish a connection with the database.") else log_world("Database connection established.") diff --git a/tgstation.dme b/tgstation.dme index 97e665b378..f737ee66d5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -187,6 +187,7 @@ #include "code\controllers\subsystem\atoms.dm" #include "code\controllers\subsystem\augury.dm" #include "code\controllers\subsystem\communications.dm" +#include "code\controllers\subsystem\dbcore.dm" #include "code\controllers\subsystem\disease.dm" #include "code\controllers\subsystem\events.dm" #include "code\controllers\subsystem\fire_burning.dm" diff --git a/tgstation.dme.rej b/tgstation.dme.rej new file mode 100644 index 0000000000..512553a749 --- /dev/null +++ b/tgstation.dme.rej @@ -0,0 +1,9 @@ +diff a/tgstation.dme b/tgstation.dme (rejected hunks) +@@ -2076,7 +2077,6 @@ + #include "code\modules\zombie\items.dm" + #include "code\modules\zombie\organs.dm" + #include "code\orphaned_procs\AStar.dm" +-#include "code\orphaned_procs\dbcore.dm" + #include "code\orphaned_procs\priority_announce.dm" + #include "code\orphaned_procs\statistics.dm" + #include "interface\interface.dm"