Commit 208f5da5 authored by Maximilian Grüttemeier's avatar Maximilian Grüttemeier
Browse files

Bugfix and Functionality

- Fixed that the ban panel could not display the ban group
- Fixed that the user could not request the whole ban table
- Added Searching functionality to the ban panel
- Added Reloading ability to ban panel
parent 9c6d2ee5
Loading
Loading
Loading
Loading
+73 −12
Original line number Diff line number Diff line
@@ -50,9 +50,7 @@ MSync.modules[info.ModuleIdentifier].init = function()

    MSync.modules[info.ModuleIdentifier].displayTable = function(panel, tbl, maxResults, page)
        panel:Clear()
        print("displayTable")
        local table = MSync.modules[info.ModuleIdentifier].getTablePage(tbl, maxResults, page)
        PrintTable(table)
        local length = 0
        for k,v in pairs(table) do
            if v['length'] == 0 then
@@ -115,6 +113,40 @@ MSync.modules[info.ModuleIdentifier].init = function()
        return tempTable
    end

    MSync.modules[info.ModuleIdentifier].searchTable = function(tbl, term)
        local searchTerm = ""
    
        if type(term) == 'string' then
            searchTerm = term:lower()
        else
            searchTerm = tostring(term):lower()
        end
    
        local tempTbl = {}
        local matches = false
    
        for k, v in pairs(tbl) do
            matches = false
            for k2, v2 in pairs(v) do
                if type(v2) == 'string' then
                    if string.match(v2:lower(), ".*"..searchTerm..".*") then
                        matches = true
                    end
                else
                    if string.match(tostring( v2 ):lower(), ".*"..searchTerm..".*") then
                        matches = true
                    end
                end
            end
    
            if matches then
                tempTbl[k] = v
            end
        end
    
        return tempTbl
    end

    MSync.modules[info.ModuleIdentifier].banPanel = function( tbl )
        local panel = vgui.Create( "DFrame" )
        panel:SetSize( 350, 500 )
@@ -812,7 +844,7 @@ MSync.modules[info.ModuleIdentifier].clientPanel = function()
                unbandate_textentry:SetText( "Never" )
                remainingtime_textentry:SetText( "Forever" )
            end
            bangroup_textentry:SetText( '--NOT IMPLEMENTED YET--' )
            bangroup_textentry:SetText( tbl["servergroup"] )
            banreasonreason_text:SetText( tbl["reason"] )
        end

@@ -856,7 +888,7 @@ MSync.modules[info.ModuleIdentifier].clientPanel = function()
        local steamid64_text = vgui.Create( "DLabel", panel )
        steamid64_text:SetPos( 15, 85 )
        steamid64_text:SetColor( Color( 255, 255, 255 ) )
        --steamid64_text:SetText( "SteamID64:" )
        steamid64_text:SetText( "SteamID64:" )
        steamid64_text:SetSize(380, 15)

        local steamid64_textentry = vgui.Create( "DTextEntry", panel )
@@ -1003,7 +1035,11 @@ MSync.modules[info.ModuleIdentifier].clientPanel = function()
            steamid_textentry:SetText( tbl["steamid"] )
            steamid64_textentry:SetText( tbl["steamid64"] )
            banlength_textentry:SetText( tbl["length"] )
            banallservers_textentry:SetValue( "--NOT IMPLEMENTED--" )
            if tbl["servergroup"] == "allservers" then
                banallservers_textentry:SetValue( "true" )
            else
                banallservers_textentry:SetValue( "false" )
            end
            banreason_textentry:SetText( tbl["reason"] )
        end
    end
@@ -1063,9 +1099,9 @@ MSync.modules[info.ModuleIdentifier].clientPanel = function()
            if optStr == "Unban" then
                MSync.modules[info.ModuleIdentifier].unban(line:GetColumnText( 1 ))
            elseif optStr == "Edit" then
                MSync.modules[info.ModuleIdentifier].editBanPanel(tempTable[line:GetColumnText( 1 )])
                MSync.modules[info.ModuleIdentifier].editBanPanel(MSync.modules[info.ModuleIdentifier].banTable[line:GetColumnText( 1 )])
            elseif optStr == "Advanced Info" then
                MSync.modules[info.ModuleIdentifier].advancedInfoPanel(tempTable[line:GetColumnText( 1 )])
                MSync.modules[info.ModuleIdentifier].advancedInfoPanel(MSync.modules[info.ModuleIdentifier].banTable[line:GetColumnText( 1 )])
            end
        end
    end
@@ -1093,7 +1129,7 @@ MSync.modules[info.ModuleIdentifier].clientPanel = function()
        end

        if value then
            tempTable = MSync.modules[info.ModuleIdentifier].sortTable(MSync.modules[info.ModuleIdentifier].banTable, sortby.Column, sortby.Descending)
            tempTable = MSync.modules[info.ModuleIdentifier].sortTable(tempTable, sortby.Column, sortby.Descending)
            MSync.modules[info.ModuleIdentifier].displayTable(ban_table, tempTable, 20, 0)
            checkPage()
        end
@@ -1107,20 +1143,44 @@ MSync.modules[info.ModuleIdentifier].clientPanel = function()
            sortby.Descending = true
            listascdesc_button:SetText( "List: Asc" )
        end
        tempTable = MSync.modules[info.ModuleIdentifier].sortTable(MSync.modules[info.ModuleIdentifier].banTable, sortby.Column, sortby.Descending)
        tempTable = MSync.modules[info.ModuleIdentifier].sortTable(tempTable, sortby.Column, sortby.Descending)
        MSync.modules[info.ModuleIdentifier].displayTable(ban_table, tempTable, 20, 0)
        checkPage()
    end

    search_button.DoClick = function()
        if search_textentry:GetValue() then
            -- ASK SERVER FOR MATCHING DATA
            tempTable = {}
            tempTable = MSync.modules[info.ModuleIdentifier].searchTable(MSync.modules[info.ModuleIdentifier].banTable, search_textentry:GetValue())
            tempTable = MSync.modules[info.ModuleIdentifier].sortTable(tempTable, sortby.Column, sortby.Descending)
            MSync.modules[info.ModuleIdentifier].displayTable(ban_table, tempTable, 20, 0)
            checkPage()
        else
            tempTable = MSync.modules[info.ModuleIdentifier].sortTable(MSync.modules[info.ModuleIdentifier].banTable, sortby.Column, sortby.Descending)
            MSync.modules[info.ModuleIdentifier].displayTable(ban_table, tempTable, 20, 0)
            checkPage()
        end
        --MSync.modules[info.ModuleIdentifier].findMatchingData(tbl, term)
    end

    sync_button.DoClick = function()
        -- DISABLE PANEL AND RE-ENABLE WHEN DATA RETURNED
        MSync.modules[info.ModuleIdentifier].getBanTable()
        timer.Create("msync.mbsync.waitForBanTable", 3, 0, function() 
            if MSync.modules[info.ModuleIdentifier].temporary["unfinished"] then return end
    
            tempTable = MSync.modules[info.ModuleIdentifier].sortTable(MSync.modules[info.ModuleIdentifier].banTable, sortby.Column, sortby.Descending)
            pages = MSync.modules[info.ModuleIdentifier].getTablePages(tempTable, 20)
            tablePage = 0
    
            pageof_text:SetText( (tablePage+1).."/"..pages )
    
            if pages > 1 then
                nextpage_button:SetDisabled(false)
                lastpage_button:SetDisabled(false)
            end
    
            MSync.modules[info.ModuleIdentifier].displayTable(ban_table, tempTable, 20, tablePage)
            timer.Remove("msync.mbsync.waitForBanTable")
        end)
    end

    firstpage_button.DoClick = function()
@@ -1280,6 +1340,7 @@ MSync.modules[info.ModuleIdentifier].net = function()
                tempTable[v['banId']]['length']         = v['length']
                tempTable[v['banId']]['reason']         = v['reason']
                tempTable[v['banId']]['timestamp']      = v['timestamp']
                tempTable[v['banId']]['servergroup']    = v['servergroup']
            end
            MSync.modules[info.ModuleIdentifier].banTable = tempTable
        end
+60 −31
Original line number Diff line number Diff line
@@ -284,7 +284,7 @@ MSync.modules[info.ModuleIdentifier].init = function( transaction )
        Description: Function to get all bans
        Returns: nothing
    ]]
    MSync.modules[info.ModuleIdentifier].getBans = function(ply)
    MSync.modules[info.ModuleIdentifier].getBans = function(ply, fullTable)
        local getBansQ = MSync.DBServer:prepare( [[
            SELECT 
                tbl_mbsync.p_id, 
@@ -315,19 +315,22 @@ MSync.modules[info.ModuleIdentifier].init = function( transaction )
        
        

        function getBansQ.onData( q, data, ply )
        getBansQ.onSuccess = function( q, data )
            
            local banTable = {}

            print("[MBSync] Recieved all ban data")

            --PrintTable(data)
            if fullTable then
                for k,v in pairs(data) do

                    banTable[v.p_id] = {
                        banId = v.p_id,
                        reason = v.reason,
                    banDate = os.date( "%H:%M:%S - %d/%m/%Y" , v.date_unix ),
                    banlength = v.length_unix,
                    bannedUser = {
                        timestamp = v.date_unix,
                        length = v.length_unix,
                        servergroup = v["group_name"],
                        banned = {
                            steamid = v['banned.steamid'],
                            steamid64 = v['banned.steamid64'],
                            nickname = v['banned.nickname']
@@ -345,8 +348,33 @@ MSync.modules[info.ModuleIdentifier].init = function( transaction )
                    }

                end
            else
                for k,v in pairs(data) do
                    if not v['unban_admin.steamid'] and not ((v.date_unix+v.length_unix) < os.time()) then
                        banTable[v["banned.steamid64"]] = {
                            banId = v.p_id,
                            reason = v.reason,
                            timestamp = v.date_unix,
                            length = v.length_unix,
                            servergroup = v["group_name"],
                            banned = {
                                steamid = v["banned.steamid"],
                                nickname = v["banned.nickname"],
                                steamid64 = v["banned.steamid64"]
                            },
                            adminNickname = v["admin.nickname"]
                        }
                    end
                end
            end

            MSync.modules[info.ModuleIdentifier].sendSettings(ply, banTable)
            --MSync.modules[info.ModuleIdentifier].sendSettings(ply, banTable)

            MSync.modules[info.ModuleIdentifier].sendCount(ply, math.Round(table.Count(banTable) / 10))
            local tempTable = MSync.modules[info.ModuleIdentifier].splitTable(banTable)
            for k,v in pairs(tempTable) do
                MSync.modules[info.ModuleIdentifier].sendPart(ply, v)
            end

        end

@@ -758,12 +786,13 @@ MSync.modules[info.ModuleIdentifier].net = function()
    ]]
    util.AddNetworkString("msync."..info.ModuleIdentifier..".getBanTable")
    net.Receive("msync."..info.ModuleIdentifier..".getBanTable", function(len, ply)
        MSync.modules[info.ModuleIdentifier].sendCount(ply, math.Round(table.Count(MSync.modules[info.ModuleIdentifier].banTable) / 10))

        local tempTable = MSync.modules[info.ModuleIdentifier].splitTable(MSync.modules[info.ModuleIdentifier].banTable)
        PrintTable(tempTable)
        for k,v in pairs(tempTable) do
            MSync.modules[info.ModuleIdentifier].sendPart(ply, v)
        local fullTable = net.ReadBool()
        if fullTable then 
            if not ply:query("msync.openAdminGUI") then return end
            MSync.modules[info.ModuleIdentifier].getBans(ply, fullTable)
        else
            if not ply:query("msync."..(info.ModuleIdentifier)..".openBanTable") then return end
            MSync.modules[info.ModuleIdentifier].getBans(ply, false)
        end
    end )