· 7 years ago · Dec 12, 2018, 02:36 PM
1------------------------------------------------------------------------------------
2-- COMMUNITY CONTRIBUTION FOR CIT2.NET
3-- PURPOSE: Feedback for the updates
4-- DEVELOPERS: Nikos, Zelda - ( Server side )
5------------------------------------------------------------------------------------
6
7local con = dbConnect("mysql", "dbname=;host=", "", "")
8-- local con = dbConnect("sqlite", "//feedbacks.db")
9dbExec(con, "CREATE TABLE IF NOT EXISTS feedbacks (update_post TEXT, message TEXT)")
10
11function processUpdates(data)
12 local cache = {}
13 local ent = split(updates, "-") or {}
14 for i, v in ipairs(split(updates, "\n-") or {}) do
15 table.insert(cache, ""..i..". "..v)
16 end
17 return cache
18end
19
20function getUpdatesList(player)
21 if (isGuestAccount(getPlayerAccount(player))) then
22 return false
23 end
24 if (exports.CITchecking:getPlayerTimeSinceLastOccurence(player, "feedback") < 3000) then
25 return false
26 end
27 local conversion = processUpdates(exports.CITupdatesInfo:getUpdates()) or {}
28 exports.CITchecking:setPlayerOccurenceTime(player, "feedback")
29 if (#conversion == 0) then
30 outputChatBox("The feedback list is not loaded yet, retry later.", player, 255, 0, 0)
31 else
32 triggerClientEvent(player, "CITfeedback.sendFeedbackList", player, conversion)
33 end
34end
35addCommandHandler("feedback", getUpdatesList)
36
37function sendFeedback(message, update)
38 if (isGuestAccount(getPlayerAccount(client))) then
39 return false
40 end
41 local name = getPlayerName(client)
42 local accname = getAccountName(getPlayerAccount(client))
43 local results = dbPoll(dbQuery(con, "SELECT * FROM feedbacks WHERE update_post=?", update) ,-1)
44 if (#results == 0) then
45 local cc = "- "..name.." ("..accname..")\n"..message..""
46 dbExec(con,"INSERT INTO feedbacks VALUES (?, ?)", update, cc, accname)
47 exports.CIThelp:dm("Feedback sended", client, 0, 255, 0)
48 else
49 if (string.find(results[1]["message"], "("..accname..")")) then
50 exports.CIThelp:dm("You have already made a comment to this update.", client, 255, 0, 0)
51 return false
52 end
53 local cc = ""..results[1]["message"].."\n- "..name.." ("..accname..")\n"..message..""
54 dbExec(con, "UPDATE feedbacks SET message=? WHERE update_post=?", cc, update)
55 exports.CIThelp:dm("Feedback sended", client, 0, 255, 0)
56 end
57end
58addEvent("CITfeedback.sendFeedback", true )
59addEventHandler("CITfeedback.sendFeedback", root, sendFeedback)
60
61function getGridData(update)
62 local result = dbPoll( dbQuery(con, "SELECT * FROM feedbacks WHERE update_post=?", update) , -1)
63 if (type(result) == "table" and #result ~= 0) then
64 triggerClientEvent(client, "CITfeedback.sendGridData", client, result[1]["message"])
65 else
66 triggerClientEvent(client, "CITfeedback.sendGridData", client, "No comments yet.")
67 end
68end
69addEvent("CITfeedback.getGridData", true )
70addEventHandler("CITfeedback.getGridData", root, getGridData)
71
72function cleanDB(player)
73 if exports.CITadmin:getPlayerAdminLevel(player) == 5 then
74 dbExec(con, "DELETE FROM feedbacks")
75 exports.CIThelp:dm("Feedback cleaned", player, 255, 255, 0)
76 end
77end
78addCommandHandler("cleancomments", cleanDB)