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