Aller au contenu

Module:Infobox/Footballeur

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 25 mars 2016 à 11:46 et modifiée en dernier par H4stings (discuter | contributions) (hop. les prêts apparaissent bien maintenant - reste plus qu'à renseigner dans wikidata :)). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]

Cette page définit un module d'infobox. Pour les conseils sur l'usage de ce module, voyez Modèle:Infobox Footballeur.


local p = {}
local wd = require "Module:Interface Wikidata".fromLua
local countrymod = require "Module:Country data"
local frame = mw.getCurrentFrame()

function p._teams(teamtype, headers)

	-- récup des données
	local claims = wd.getClaims{
		rank = 'valid',
		property = 'P54',
		sorttype = 'chronological',
		condition = function(claim)
			local v = wd.getmainid(claim)
			return wd.isInstance(teamtype, v, 1)
			end,
	}
	if not claims then
		return nil
	end
	
	-- Création de la table et des en-têtes
	local tab = mw.html.create("tr")
	headers = headers or {"Saisons", "Clubs", "M (B.)"}

	for i, j in pairs(headers) do
		tab:tag("th"):wikitext(j):done()
	end
	tab:done()

	-- Intégration des données
	local function cleanLabel(id)
		local label = wd.getLabel(id)
		if not label then
			return nil
		end
		local patterns = {
			["Équipe de?s?'?u? ?"] = "",
			["des moins de"] = "-",
			["de soccer"] = "",
			["de football"] = "",
			[" [Ff]ootball [Cc]lub$"] = " FC",
			[" [Aa]ssociation [Ff]ootball [Cc]lub$"] = " AFC",
			["Club [Aa]tlético"] = "CA",
		}
		for i, j in pairs(patterns) do
			label = mw.ustring.gsub(label, i, j)	
		end
		return label
	end

	for i, j in pairs(claims) do
		local teamid = wd.getmainid(j)
		
		local period = wd.statementDate(j, {precision = 'year', textformat = 'infobox', linktopic = 'football'})
		local matches = wd.getFormattedQualifiers(j, {'P1350'})
		local goals = wd.getFormattedQualifiers(j, {'P1351'})
		local condition = wd.getFormattedQualifiers(j, {'P1642'})
		
		local teamname = wd.formatEntity(teamid, {labelformat = function(id) return cleanLabel(teamid) end} )
		local atdate = wd.getFormattedQualifiers(j, {'P580'}, {displayformat = 'raw'})  -- date en forme -- pour adapter le drapeau en fonction de la date
		local teamcountry = wd.formatStatements{entity = teamid, property = 'P17', displayformat = 'raw'} -- pays de l'équipe pour le drapeau
		if teamcountry == "Q145" then -- si Royaume-Uni, on vérifie si le club n'est pas lié aux championnats d'Angleterre, d'Ecosse ou du pays de Galles
			local championnat = wd.formatStatements{entity = teamid, property = 'P118', displayformat = 'raw', numval = 1}
			local liste_championnat = { Q9448="Q21", Q19510="Q21", Q19565="Q21", Q48837="Q21", Q58916="Q21", Q950844="Q21", Q58915="Q21", Q59041="Q21", Q187304="Q22", Q14468438="Q22", Q177138="Q22", Q1473324="Q22", Q2261407="Q22", Q218555="Q25", Q2557436="Q25", Q2541996="Q25" }
			if liste_championnat[championnat] then
			    teamcountry = liste_championnat[championnat]
			end
			-- pareil pour les sélections
			local liste_selections = { Q47762="Q21", Q1110944="Q21", Q204238="Q21", Q1342578="Q21", Q1049176="Q21", Q2358861="Q21", Q1049171="Q21", Q2752922="Q21", Q2752922="Q21", Q204204="Q21", Q34044="Q22", Q4127960="Q22", Q1812121="Q22", Q917512="Q22", Q3589864="Q22", Q7435696="Q22", Q180857="Q25", Q946297="Q25", Q3590810="Q25", Q3590809="Q25", Q980162="Q25" }
			if liste_selections[teamid] then
			    teamcountry = liste_selections[teamid]
		    end
		end	
		local flag = countrymod.standarddisplay(teamcountry, {label = '-', date = atdate or 'default'}) or ''
		local formattedteam = flag .. ' ' .. teamname
		if condition then
			if string.find (condition, 'prêt') then
				formattedteam = frame:expandTemplate{ title = 'prêt'} .. ' ' .. formattedteam
			else
				formattedteam = formattedteam .. ' <small>(' .. condition .. ')</small>'
			end
		end
		local stats = matches
		if stats and goals then
			goals = mw.text.trim(goals) -- bug d'affichage dans Module:Wikidata apparemment
				stats = stats .. "(" .. goals .. ")"
		end
		tab:tag('tr')
			:tag('td'):addClass('data'):wikitext(period):done()
			:tag('td'):addClass('data'):wikitext(formattedteam):done()
			:tag('td'):addClass('data'):wikitext(stats):done()
			:done()
	end
	tab:done()
	return tostring(tab)
end

function p.teams(frame) -- pour les clubs = Q476028 (ou plus largement Q847017 pour un club sportif ?)
	return p._teams('Q476028')
end

function p.selections(frame) -- pour les sélections géographiques
	return p._teams('Q6979593')
end

return p