mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-09 16:07:40 +00:00
grr
This commit is contained in:
@@ -4,9 +4,13 @@
|
||||
|
||||
/mob/dead/new_player/proc/handle_player_polling()
|
||||
if(!SSdbcore.IsConnected())
|
||||
to_chat(usr, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(usr, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return
|
||||
var/datum/db_query/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")]")
|
||||
var/datum/db_query/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())
|
||||
qdel(query_poll_get)
|
||||
return
|
||||
@@ -27,9 +31,15 @@
|
||||
if(!pollid)
|
||||
return
|
||||
if (!SSdbcore.Connect())
|
||||
to_chat(usr, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(usr, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return
|
||||
var/datum/db_query/query_poll_get_details = SSdbcore.NewQuery("SELECT starttime, endtime, question, polltype, multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]")
|
||||
var/datum/db_query/query_poll_get_details = SSdbcore.NewQuery({"
|
||||
SELECT starttime, endtime, question, polltype, multiplechoiceoptions
|
||||
FROM [format_table_name("poll_question")]
|
||||
WHERE id = :id
|
||||
"}, list(
|
||||
"id" = pollid
|
||||
))
|
||||
if(!query_poll_get_details.warn_execute())
|
||||
qdel(query_poll_get_details)
|
||||
return
|
||||
@@ -47,7 +57,14 @@
|
||||
qdel(query_poll_get_details)
|
||||
switch(polltype)
|
||||
if(POLLTYPE_OPTION)
|
||||
var/datum/db_query/query_option_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
|
||||
var/datum/db_query/query_option_get_votes = SSdbcore.NewQuery({"
|
||||
SELECT optionid
|
||||
FROM [format_table_name("poll_vote")]
|
||||
WHERE pollid = :id AND ckey = :ckey
|
||||
"}, list(
|
||||
"id" = pollid,
|
||||
"ckey" = ckey
|
||||
))
|
||||
if(!query_option_get_votes.warn_execute())
|
||||
qdel(query_option_get_votes)
|
||||
return
|
||||
@@ -56,7 +73,13 @@
|
||||
votedoptionid = text2num(query_option_get_votes.item[1])
|
||||
qdel(query_option_get_votes)
|
||||
var/list/datum/polloption/options = list()
|
||||
var/datum/db_query/query_option_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
|
||||
var/datum/db_query/query_option_options = SSdbcore.NewQuery({"
|
||||
SELECT id, text
|
||||
FROM [format_table_name("poll_option")]
|
||||
WHERE pollid = :id
|
||||
"}, list(
|
||||
"id" = pollid
|
||||
))
|
||||
if(!query_option_options.warn_execute())
|
||||
qdel(query_option_options)
|
||||
return
|
||||
@@ -92,7 +115,14 @@
|
||||
src << browse(null ,"window=playerpolllist")
|
||||
src << browse(output,"window=playerpoll;size=500x250")
|
||||
if(POLLTYPE_TEXT)
|
||||
var/datum/db_query/query_text_get_votes = SSdbcore.NewQuery("SELECT replytext FROM [format_table_name("poll_textreply")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
|
||||
var/datum/db_query/query_text_get_votes = SSdbcore.NewQuery({"
|
||||
SELECT replytext
|
||||
FROM [format_table_name("poll_textreply")]
|
||||
WHERE pollid = :id AND ckey = :ckey
|
||||
"}, list(
|
||||
"id" = pollid,
|
||||
"ckey" = ckey
|
||||
))
|
||||
if(!query_text_get_votes.warn_execute())
|
||||
qdel(query_text_get_votes)
|
||||
return
|
||||
@@ -120,7 +150,13 @@
|
||||
src << browse(null ,"window=playerpolllist")
|
||||
src << browse(output,"window=playerpoll;size=500x500")
|
||||
if(POLLTYPE_RATING)
|
||||
var/datum/db_query/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")
|
||||
var/datum/db_query/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 = :id AND v.ckey = :ckey AND o.id = v.optionid
|
||||
"}, list(
|
||||
"id" = pollid,
|
||||
"ckey" = ckey
|
||||
))
|
||||
if(!query_rating_get_votes.warn_execute())
|
||||
qdel(query_rating_get_votes)
|
||||
return
|
||||
@@ -140,7 +176,13 @@
|
||||
output += "<input type='hidden' name='votetype' value=[POLLTYPE_RATING]>"
|
||||
var/minid = 999999
|
||||
var/maxid = 0
|
||||
var/datum/db_query/query_rating_options = SSdbcore.NewQuery("SELECT id, text, minval, maxval, descmin, descmid, descmax FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
|
||||
var/datum/db_query/query_rating_options = SSdbcore.NewQuery({"
|
||||
SELECT id, text, minval, maxval, descmin, descmid, descmax
|
||||
FROM [format_table_name("poll_option")]
|
||||
WHERE pollid = :id
|
||||
"}, list(
|
||||
"id" = pollid
|
||||
))
|
||||
if(!query_rating_options.warn_execute())
|
||||
qdel(query_rating_options)
|
||||
return
|
||||
@@ -177,7 +219,14 @@
|
||||
src << browse(null ,"window=playerpolllist")
|
||||
src << browse(output,"window=playerpoll;size=500x500")
|
||||
if(POLLTYPE_MULTI)
|
||||
var/datum/db_query/query_multi_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
|
||||
var/datum/db_query/query_multi_get_votes = SSdbcore.NewQuery({"
|
||||
SELECT optionid
|
||||
FROM [format_table_name("poll_vote")]
|
||||
WHERE pollid = :id AND ckey = :ckey
|
||||
"}, list(
|
||||
"id" = pollid,
|
||||
"ckey" = ckey
|
||||
))
|
||||
if(!query_multi_get_votes.warn_execute())
|
||||
qdel(query_multi_get_votes)
|
||||
return
|
||||
@@ -188,7 +237,13 @@
|
||||
var/list/datum/polloption/options = list()
|
||||
var/maxoptionid = 0
|
||||
var/minoptionid = 0
|
||||
var/datum/db_query/query_multi_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
|
||||
var/datum/db_query/query_multi_options = SSdbcore.NewQuery({"
|
||||
SELECT id, text
|
||||
FROM [format_table_name("poll_option")]
|
||||
WHERE pollid = :id
|
||||
"}, list(
|
||||
"id" = pollid
|
||||
))
|
||||
if(!query_multi_options.warn_execute())
|
||||
qdel(query_multi_options)
|
||||
return
|
||||
@@ -232,7 +287,14 @@
|
||||
var/datum/asset/irv_assets = get_asset_datum(/datum/asset/group/irv)
|
||||
irv_assets.send(src)
|
||||
|
||||
var/datum/db_query/query_irv_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
|
||||
var/datum/db_query/query_irv_get_votes = SSdbcore.NewQuery({"
|
||||
SELECT optionid
|
||||
FROM [format_table_name("poll_vote")]
|
||||
WHERE pollid = :id AND ckey = :ckey
|
||||
"}, list(
|
||||
"id" = pollid,
|
||||
"ckey" = ckey
|
||||
))
|
||||
if(!query_irv_get_votes.warn_execute())
|
||||
qdel(query_irv_get_votes)
|
||||
return
|
||||
@@ -244,7 +306,13 @@
|
||||
|
||||
var/list/datum/polloption/options = list()
|
||||
|
||||
var/datum/db_query/query_irv_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
|
||||
var/datum/db_query/query_irv_options = SSdbcore.NewQuery({"
|
||||
SELECT id, text
|
||||
FROM [format_table_name("poll_option")]
|
||||
WHERE pollid = :id
|
||||
"}, list(
|
||||
"id" = pollid
|
||||
))
|
||||
if(!query_irv_options.warn_execute())
|
||||
qdel(query_irv_options)
|
||||
return
|
||||
@@ -352,16 +420,23 @@
|
||||
if (text)
|
||||
table = "poll_textreply"
|
||||
if (!SSdbcore.Connect())
|
||||
to_chat(usr, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(usr, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return
|
||||
var/datum/db_query/query_hasvoted = SSdbcore.NewQuery("SELECT id FROM `[format_table_name(table)]` WHERE pollid = [pollid] AND ckey = '[ckey]'")
|
||||
var/datum/db_query/query_hasvoted = SSdbcore.NewQuery({"
|
||||
SELECT id
|
||||
FROM `[format_table_name(table)]`
|
||||
WHERE pollid = :id AND ckey = :ckey
|
||||
"}, list(
|
||||
"id" = pollid,
|
||||
"ckey" = ckey
|
||||
))
|
||||
if(!query_hasvoted.warn_execute())
|
||||
qdel(query_hasvoted)
|
||||
return
|
||||
if(query_hasvoted.NextRow())
|
||||
qdel(query_hasvoted)
|
||||
if(!silent)
|
||||
to_chat(usr, "<span class='danger'>You've already replied to this poll.</span>")
|
||||
to_chat(usr, "<span class='danger'>You've already replied to this poll.</span>", confidential = TRUE)
|
||||
return TRUE
|
||||
qdel(query_hasvoted)
|
||||
return FALSE
|
||||
@@ -376,24 +451,31 @@
|
||||
/mob/dead/new_player/proc/vote_rig_check()
|
||||
if (usr != src)
|
||||
if (!usr || !src)
|
||||
return 0
|
||||
return FALSE
|
||||
//we gots ourselfs a dirty cheater on our hands!
|
||||
log_game("[key_name(usr)] attempted to rig the vote by voting as [key]")
|
||||
message_admins("[key_name_admin(usr)] attempted to rig the vote by voting as [key]")
|
||||
to_chat(usr, "<span class='danger'>You don't seem to be [key].</span>")
|
||||
to_chat(src, "<span class='danger'>Something went horribly wrong processing your vote. Please contact an administrator, they should have gotten a message about this</span>")
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/mob/dead/new_player/proc/vote_valid_check(pollid, holder, type)
|
||||
if (!SSdbcore.Connect())
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
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/datum/db_query/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")]")
|
||||
var/datum/db_query/query_validate_poll = SSdbcore.NewQuery({"
|
||||
SELECT id
|
||||
FROM [format_table_name("poll_question")]
|
||||
WHERE id = :id AND Now() BETWEEN starttime AND endtime AND polltype = :type [(holder ? "" : "AND adminonly = false")]
|
||||
"}, list(
|
||||
"id" = pollid,
|
||||
"type" = type
|
||||
))
|
||||
if(!query_validate_poll.warn_execute())
|
||||
qdel(query_validate_poll)
|
||||
return 0
|
||||
@@ -405,7 +487,7 @@
|
||||
|
||||
/mob/dead/new_player/proc/vote_on_irv_poll(pollid, list/votelist)
|
||||
if (!SSdbcore.Connect())
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return 0
|
||||
if (!vote_rig_check())
|
||||
return 0
|
||||
@@ -429,7 +511,13 @@
|
||||
return 0
|
||||
|
||||
//lets collect the options
|
||||
var/datum/db_query/query_irv_id = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
|
||||
var/datum/db_query/query_irv_id = SSdbcore.NewQuery({"
|
||||
SELECT id
|
||||
FROM [format_table_name("poll_option")]
|
||||
WHERE pollid = :id
|
||||
"}, list(
|
||||
"id" = pollid
|
||||
))
|
||||
if(!query_irv_id.warn_execute())
|
||||
qdel(query_irv_id)
|
||||
return 0
|
||||
@@ -462,8 +550,12 @@
|
||||
__unique_N++
|
||||
if (sqlrowlist != "")
|
||||
sqlrowlist += ", " //a comma (,) at the start of the first row to insert will trigger a SQL error
|
||||
sqlrowlist += "(Now(), :pollid, :vote[__unique_N], :ckey, INET_ATON(:address), :rank)"
|
||||
sql_args["vote[__unique_N]"] = vote
|
||||
sqlrowlist += "(Now(), :pollid, :vote_[__unique_N], :ckey, INET_ATON(:address), :rank)"
|
||||
sql_args["vote_[__unique_N]"] = vote
|
||||
// this should THEORATICALY do something like
|
||||
// Now() - Time
|
||||
// pollid - Constant, this is a multiple choice vote.
|
||||
// vote[__unique_N] - The data SPECIFIC to the vote number, but still bound to pollid
|
||||
|
||||
//now lets delete their old votes (if any)
|
||||
var/datum/db_query/query_irv_del_old = SSdbcore.NewQuery({"
|
||||
@@ -491,7 +583,7 @@
|
||||
|
||||
/mob/dead/new_player/proc/vote_on_poll(pollid, optionid)
|
||||
if (!SSdbcore.Connect())
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return 0
|
||||
if (!vote_rig_check())
|
||||
return 0
|
||||
@@ -509,7 +601,13 @@
|
||||
var/datum/db_query/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(:address), :adminrank)
|
||||
"}, list("pollid" = pollid, "optionid" = optionid, "ckey" = ckey, "address" = client.address, "adminrank" = adminrank))
|
||||
"}, list(
|
||||
"pollid" = pollid,
|
||||
"optionid" = optionid,
|
||||
"ckey" = ckey,
|
||||
"address" = client.address,
|
||||
"adminrank" = adminrank
|
||||
))
|
||||
if(!query_option_vote.warn_execute())
|
||||
qdel(query_option_vote)
|
||||
return
|
||||
@@ -520,7 +618,7 @@
|
||||
|
||||
/mob/dead/new_player/proc/log_text_poll_reply(pollid, replytext)
|
||||
if (!SSdbcore.Connect())
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return 0
|
||||
if (!vote_rig_check())
|
||||
return 0
|
||||
@@ -562,7 +660,7 @@
|
||||
|
||||
/mob/dead/new_player/proc/vote_on_numval_poll(pollid, optionid, rating)
|
||||
if (!SSdbcore.Connect())
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return 0
|
||||
if (!vote_rig_check())
|
||||
return 0
|
||||
@@ -571,7 +669,14 @@
|
||||
//validate the poll
|
||||
if (!vote_valid_check(pollid, client.holder, POLLTYPE_RATING))
|
||||
return 0
|
||||
var/datum/db_query/query_numval_hasvoted = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE optionid = [optionid] AND ckey = '[ckey]'")
|
||||
var/datum/db_query/query_numval_hasvoted = SSdbcore.NewQuery({"
|
||||
SELECT id
|
||||
FROM [format_table_name("poll_vote")]
|
||||
WHERE optionid = :id AND ckey = :ckey
|
||||
"}, list(
|
||||
"id" = optionid,
|
||||
"ckey" = ckey
|
||||
))
|
||||
if(!query_numval_hasvoted.warn_execute())
|
||||
qdel(query_numval_hasvoted)
|
||||
return
|
||||
@@ -597,7 +702,7 @@
|
||||
|
||||
/mob/dead/new_player/proc/vote_on_multi_poll(pollid, optionid)
|
||||
if (!SSdbcore.Connect())
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return 0
|
||||
if (!vote_rig_check())
|
||||
return 0
|
||||
@@ -606,7 +711,12 @@
|
||||
//validate the poll
|
||||
if (!vote_valid_check(pollid, client.holder, POLLTYPE_MULTI))
|
||||
return 0
|
||||
var/datum/db_query/query_multi_choicelen = SSdbcore.NewQuery("SELECT multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]")
|
||||
var/datum/db_query/query_multi_choicelen = SSdbcore.NewQuery({"
|
||||
SELECT multiplechoiceoptions
|
||||
FROM [format_table_name("poll_question")] WHERE id = :id
|
||||
"}, list(
|
||||
"id" = pollid
|
||||
))
|
||||
if(!query_multi_choicelen.warn_execute())
|
||||
qdel(query_multi_choicelen)
|
||||
return 1
|
||||
@@ -614,7 +724,14 @@
|
||||
if(query_multi_choicelen.NextRow())
|
||||
i = text2num(query_multi_choicelen.item[1])
|
||||
qdel(query_multi_choicelen)
|
||||
var/datum/db_query/query_multi_hasvoted = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
|
||||
var/datum/db_query/query_multi_hasvoted = SSdbcore.NewQuery({"
|
||||
SELECT id
|
||||
FROM [format_table_name("poll_vote")]
|
||||
WHERE pollid = :id AND ckey = :ckey
|
||||
"}, list(
|
||||
"id" = pollid,
|
||||
"ckey" = ckey
|
||||
))
|
||||
if(!query_multi_hasvoted.warn_execute())
|
||||
qdel(query_multi_hasvoted)
|
||||
return 1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
if(!check_rights(0))
|
||||
return
|
||||
if(!SSdbcore.IsConnected())
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return
|
||||
var/memotask = input(usr,"Choose task.","Memo") in list("Show","Write","Edit","Remove")
|
||||
if(!memotask)
|
||||
@@ -17,7 +17,7 @@
|
||||
if(!is_mentor())
|
||||
return
|
||||
if(!SSdbcore.IsConnected())
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return
|
||||
mentor_memo_output("Show")
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
if(!task)
|
||||
return
|
||||
if(!SSdbcore.IsConnected())
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>", confidential = TRUE)
|
||||
return
|
||||
switch(task)
|
||||
if("Write")
|
||||
|
||||
Reference in New Issue
Block a user