יחידה:אישיות ביטחונית

מתוך ויקיפדיה, האנציקלופדיה החופשית

ניתן ליצור תיעוד על היחידה הזאת בדף יחידה:אישיות ביטחונית/תיעוד

local p ={}

local function getStatmentQIds(entityId, pId)
	local res = {}
	local statements = mw.wikibase.getBestStatements( entityId, pId )
	for _, v in pairs(statements) do
		local vId = v and v.mainsnak and v.mainsnak.datavalue and v.mainsnak.datavalue.value.id
		if vId then
			res[vId] = 1
		end
	end
	return res
end

-- return classification for the page as policeman, armyman or none
-- it uses either parameter, or P106 or P241 in this order.
function p.class(frame)
	local templateArgs = frame:getParent().args
	local class = templateArgs['סיווג']
	if class  then
		return class
	end
	local entityId = templateArgs['qid'] or mw.wikibase.getEntityIdForCurrentPage()
	if entityId == nil then
		return 
	end
	
	local occupation = getStatmentQIds( entityId, 'P106' )
	local IsArmyPerson = occupation['Q189290'] or occupation['Q47064']
	local IsPolicePerson = occupation['Q384593'] or occupation['Q361593']
	
	if IsArmyPerson==false and IsPolicePerson==false then
		local branch = getStatmentQIds( entityId, 'P241' )
		for k, _ in pairs(branch) do
			local UnitInstance = getStatmentQIds(k, 'P31')
			IsPolicePerson = UnitInstance['Q35535']
			IsArmyPerson  = UnitInstance['Q61883'] or UnitInstance['Q4508'] or UnitInstance['Q37726'] or UnitInstance['Q772547'] 
		end
	end
	if IsArmyPerson and not IsPolicePerson then
		return 'חייל'
	end
	if not IsArmyPerson and IsPolicePerson then
		return 'שוטר'
	end
	-- in case of missing or ambig classification return none
end

return p