Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.54 KB | None | 0 0
  1. require('mysqloo')
  2.  
  3. FruzzLink.Data = {}
  4.  
  5. FruzzLink.Data.MySQL = {}
  6. FruzzLink.Data.MySQL.DBOBJ = false
  7.  
  8. local DATABASE_HOST = "mysql.fruzzservers.com"
  9. local DATABASE_PORT = 3306
  10. local DATABASE_NAME = "nkrock_fruzz"
  11. local DATABASE_USERNAME = "nkrock_fruzz"
  12. local DATABASE_PASSWORD = "slimjim101"
  13.  
  14. function FruzzLink.Data.MySQL:User(ply, callback)
  15.     if ply:IsValid() then
  16.         self:Connect(function(db)
  17.             local query1 = db:query(string.format("INSERT INTO fz_users (name, steamID, userGroup, coins, lastvisit, playtime) VALUES(%q, %q, 'guest', 0, UNIX_TIMESTAMP(), 0)", db:escape(ply:Nick()), ply:SteamID()))
  18.             query1.onSuccess = function() self:GetLink(ply, callback) end
  19.             query1:start()
  20.         end)
  21.     end
  22. end
  23.  
  24. function FruzzLink.Data.MySQL:Connect(callbackfunc)
  25.     if !self.DBOBJ then
  26.         self.DBOBJ = mysqloo.connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME, DATABASE_PORT)
  27.         local oldCall = self.DBOBJ.onConnected
  28.         if oldCall then
  29.             self.DBOBJ.onConnected = function(db) oldCall(db) callbackfunc(db) end
  30.         else
  31.             self.DBOBJ.onConnected = function(db) callbackfunc(db) end
  32.         end
  33.  
  34.         self.DBOBJ.onConnectionFailed = function(db, err)
  35.             print(db, "connection failed", err)
  36.         end
  37.        
  38.         self.DBOBJ:connect()
  39.     else
  40.         local status = self.DBOBJ:status()
  41.         if status == 1 then
  42.             local oldCall = self.DBOBJ.onConnected
  43.             self.DBOBJ.onConnected = function(db) callbackfunc(db) oldCall(db) end
  44.         elseif status == 2 then
  45.             local oldCall = self.DBOBJ.onConnected
  46.             self.DBOBJ.onConnected = function(db) callbackfunc(db) oldCall(db) end
  47.  
  48.             self.DBOBJ:connect()
  49.         else
  50.             callbackfunc(self.DBOBJ)
  51.         end
  52.     end
  53. end
  54.  
  55. function FruzzLink.Data.MySQL:GetLink(ply, callback)
  56.     local steamid = ply:SteamID()
  57.     self:Connect(function(db)
  58.         local query1 = db:query(string.format("SELECT * FROM fz_users WHERE steamID = %q LIMIT 1", steamid))
  59.  
  60.         query1.onSuccess = function(Q)
  61.             local tbl = Q:getData()
  62.            
  63.             if #tbl == 0 then
  64.                 self:NewUser(ply, callback)
  65.             else
  66.                 callback(tbl)
  67.                 hook.Call("FruzzLinkMade", nil, ply, tbl)
  68.                
  69.                 if ply:IsValid() then
  70.                     hook.Call("FruzzLinkMadeAndValid", nil, ply, tbl)
  71.                 end
  72.                
  73.                 local rdm = tostring(math.random(0, 1000))
  74.                
  75.                 if ply and !ply:IsValid() then
  76.                     hook.Add("Think", "_FruzzLinkMadeAndValid_"..rdm, function()
  77.                         if ply:IsValid() then
  78.                             hook.Call("FruzzLinkMadeAndValid", nil, ply, tbl)
  79.                             hook.Remove("Think", "_FruzzLinkMadeAndValid_"..rdm)
  80.                         elseif ply == nil then
  81.                             hook.Remove("Think", "_FruzzLinkMadeAndValid_"..rdm)
  82.                         end
  83.                     end)
  84.                 end
  85.                
  86.             end
  87.         end
  88.         query1.onError = function(Q, E) print("QUERY BOOM: "..E) end
  89.         query1:start()
  90.     end)
  91. end
  92.  
  93. function FruzzLink.Data.MySQL:GetAllBans(callback)
  94.     self:Connect(function(db)
  95.         local query1 = db:query("SELECT * from fz_bans")
  96.         query1.onSuccess = function() callback(query1:GetData()) end
  97.         query1:start()
  98.     end)
  99. end
  100.  
  101. function FruzzLink.Data.MySQL:GetBan(steamid, callback)
  102.     self:Connect(function(db)
  103.         local query1 = db:query(string.format("SELECT * FROM fz_bans WHERE steamid=%q", steamid))
  104.         query1.onSuccess = function(Q)
  105.             callback(Q:getData())
  106.         end
  107.         query1:start()
  108.     end)
  109. end
  110.  
  111. function FruzzLink.Data.MySQL:CreateBan(ply, banner, length, reason)
  112.     print(ply:Nick(), "has been banned!")
  113.     local steamid = ply:SteamID()
  114.     local name = ply:Nick()
  115.    
  116.     local banner_name = banner:Nick()
  117.     local banner_id = banner:SteamID()
  118.    
  119.     self:Connect(function(db)
  120.         local banquery = "INSERT INTO `fz_bans` (steamid, name, reason, length, created, banning_name, banning_id, unbanned) VALUES('"..steamid.."', '"..db:escape(name).."', '"..db:escape(reason).."', '"..length.."', UNIX_TIMESTAMP(), '"..db:escape(banner_name).."', '"..banner_id.."', 0)"
  121.    
  122.         print(banquery)
  123.        
  124.         local query1 = db:query(banquery)
  125.         query1.onSuccess = function(q) print("SUCCESS!") end
  126.         query1.onFailure = function(q, e) print(e) end
  127.         query1.onAborted = function(q) print("ABORTION!") end
  128.         query1:start()
  129.        
  130.         globalthis = query1
  131.     end)
  132. end
  133.  
  134. function FruzzLink.Data.MySQL:CreateBanFromSteamID(steamid, banner, length, reason)
  135.     print(steamid, "has been banned!")
  136.    
  137.     local banner_name = banner:Nick();
  138.     local banner_id = banner:SteamID();
  139.    
  140.     self:Connect(function(db)
  141.         local query1 = db:query(string.format("INSERT INTO fz_bans (steamid, name, reason, length, created, banning_name, banning_id, unbanned) VALUES(%q, %q, %q, %q, UNIX_TIMESTAMP(), %q, %q, 0)", steamid, "Unknown", db:escape(reason), length, db:escape(banner_name), banner_id))
  142.         query1:start()
  143.     end)
  144. end
  145.  
  146. function FruzzLink.Data.MySQL:UnBan(steamid, unbanner, reason)
  147.     print(steamid, "has been unbanned!")
  148.    
  149.     local unban = {}
  150.     local uname = unbanner:Nick()
  151.     local uid = unbanner:SteamID()
  152.    
  153.     FruzzLink.Data.MySQL:GetBan(steamid, function(alldata)
  154.         if #alldata > 0 then
  155.             local high = 0
  156.            
  157.             for _, data in pairs(alldata) do
  158.                 if (data['unbanned'] == 0) and (data['created'] > high) then
  159.                     high = data['created']
  160.                     unban = data
  161.                 end
  162.             end
  163.         end
  164.     end)
  165.    
  166.     if unban then
  167.         self:Connect(function (db)
  168.             local query1 = db:query("UPDATE fz_bans SET unbanned=1, unban_name='"..uname.."', unban_id='"..uid.."', unban_reason='"..reason.."' WHERE steamid = '"..steamid.."'")
  169.             query1:start()
  170.         end)
  171.     end
  172. end
  173.  
  174. function FruzzLink.Data.MySQL:NewUser(ply, callback)
  175.     if ply:IsValid() then
  176.         ply.FirstTime = true
  177.         print(ply, "has joined for the first time!")
  178.  
  179.         self:Connect(function(db)
  180.             local query1 = db:query(string.format("INSERT INTO fz_users (name, steamID, userGroup, coins, lastvisit, playtime) VALUES(%q, %q, 'guest', 0, UNIX_TIMESTAMP(), 0)", db:escape(ply:Nick()), ply:SteamID()))
  181.             query1.onSuccess = function() self:GetLink(ply, callback) end
  182.             query1:start()
  183.         end)
  184.     end
  185. end
  186.  
  187. function FruzzLink.Data.MySQL:UpdatePlayerData(ply, col, value)
  188.     if ply.FruzzData && ply.FruzzData.Link then
  189.         ply.FruzzData.Link[col] = value
  190.     end
  191.  
  192.     self:Connect(function(db)
  193.         local query1 = db:query("UPDATE fz_users SET `"..col.."`='"..db:escape(tostring(value)).."' WHERE steamID='"..ply:SteamID().."'")
  194.         query1:start()
  195.     end)
  196. end
  197.  
  198. function FruzzLink.Data.MySQL:RunQuery(query, onsuccess)
  199.     self:Connect(function(db)
  200.         local query1 = db:query(query)
  201.         if onsuccess then
  202.             query1.onSuccess = function(q) onsuccess(q) end
  203.         end
  204.         query1.onFailure = function(q, e) print(q, e) end
  205.         query1:start()
  206.     end)
  207. end
  208.  
  209. function FruzzLink.Data.MySQL:escape(value)
  210.     return self.DBOBJ:escape(tostring(value))
  211. end
  212.  
  213.  
  214. hook.Add("PlayerInitialSpawn", "FruzzPlayerData", function(ply)
  215.     FruzzLink.Data:GetPlayerData(ply)
  216. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement