Aller au contenu

Module:Liste-rcu

Une page de Wikipédia, l'encyclopédie libre.

 Documentation[créer] [purger]
local p = {}
local args = require('Module:Arguments')
local function interaction(data)
    local result = ""
    local users = {}
    local currentLetter = 65 -- Code ASCII pour 'A'

    -- Assigner une lettre à chaque utilisateur
    for key, value in pairs(data) do
        if value ~= "oui" then
            users[value] = string.char(currentLetter)
            currentLetter = currentLetter + 1
        end
    end
    local alreadyDone = {}
    for key1, value1 in pairs(data) do
        for key2, value2 in pairs(data) do
            if value1 ~= "oui" and value2 ~= "oui" and key1 ~= key2 then
                local pair = value1 .. "-" .. value2
                local pairReverse = value2 .. "-" .. value1
                if not alreadyDone[pair] and not alreadyDone[pairReverse] then
                    result = result ..
                                 mw.ustring
                                     .format(
                            "\n[https://interaction-timeline.toolforge.org/?wiki=frwiki&user=%s&user=%s %s%s]",
                            mw.uri.encode(value1, "QUERY"), mw.uri.encode(value2, "QUERY"), users[value1], users[value2])

                    alreadyDone[pair] = true
                end
            end
        end
    end
    return result
end
local function sigma(data)
    return mw.ustring.format(
        "[https://sigma.toolforge.org/editorinteract.py?users=%s&users=%s&users=%s&users=%s&users=%s&users=%s&startdate=&enddate=&ns=&server=frwiki sigma] ",
        mw.uri.encode(data[1] or "", "QUERY"), mw.uri.encode(data[2] or "", "QUERY"),
        mw.uri.encode(data[3] or "", "QUERY"), mw.uri.encode(data[4] or "", "QUERY"),
        mw.uri.encode(data[5] or "", "QUERY"), mw.uri.encode(data[6] or "", "QUERY"),
        mw.uri.encode(data[7] or "", "QUERY"))

end
local function socksfinder(data)
    local result = "[https://socksfinder.toolforge.org/query?users="
    for key, value in pairs(data) do
        if key ~= "inter" then
            result = result .. mw.uri.encode(value, "QUERY") .. ","
        end
    end
    result = mw.ustring.sub(result, 1, -2) .. "&order=count_decreasing&cooccurrences=true socksfinder]"
   
    return result
end
local function intersectcontribs(data)
    local result = "[https://intersect-contribs.toolforge.org/index.php?project=frwiki&namespaceFilter=all&users%5B%5D="
    local temp = {}
    for key, value in pairs(data) do
        if key ~= "inter" then
            table.insert(temp, mw.uri.encode(value, "QUERY"))
        end
    end
    result = result .. table.concat(temp, "&users%5B%5D=") .. " intersect-contribs]"
    return result
end
local function timecard(data)
    local result = "[https://spi-tools.toolforge.org/spi/timecard/SPI?users="
    local temp = {}
    for key, value in pairs(data) do
        if key ~= "inter" then
            table.insert(temp, mw.uri.encode(value, "QUERY"))
        end
    end
    result = result .. table.concat(temp, "&users=") .. " timecard]"
    return result
end

function p.render(frame)
    local result = "Erreur dans l'utilisation du Modèle:Liste-rcu. Indiquez au moins un nom d'utilisateur "

    local data = args.getArgs(frame)
    local length = 0

    -- Vérifier si des paramètres ont été fournis
    for key, value in pairs(data) do
        if key ~= "inter" then
            length = length + 1
        end
    end

    -- Si aucun paramètre n'est fourni, retourner le message d'erreur
    if length == 0 then
        return result
    end

    if type(data) == "table" then
        if data.inter == "oui" then
            if length > 1 then
                result = ""
                for key, value in pairs(data) do
                    if key ~= "inter" then
                        result = result .. mw.ustring.format(
                            "[[Spécial:Contributions/%s|%s]]\t",
                            mw.uri.encode(value, "QUERY"),
                            value
                        )
                    end
                end
                result = result .. "\n\n" .. sigma(data)
                result = result .. "\n" .. socksfinder(data)
                result = result .. "\n" .. intersectcontribs(data)
                result = result .. "\n" .. timecard(data)
                result = result .. interaction(data)
            end
        else
            result = ""
            for key, value in pairs(data) do
                if key ~= "inter" then
                    result = result .. "\n\n* " .. frame:expandTemplate{
                        title = 'u-rcu',
                        args = {value}
                    }
                end
            end
            if length > 1 then
                result = result .. "\n\n" .. sigma(data)
                result = result .. "\n" .. socksfinder(data)
                result = result .. "\n" .. intersectcontribs(data)
                result = result .. "\n" .. timecard(data)
                result = result .. interaction(data)
            end
        end
    end
    return result
end

return p