Halo Esports Wiki

We are currently performing extensive maintenance to this wiki and as a result there will likely be errors. Please be patient while we work to fix all problems.

READ MORE

Halo Esports Wiki
Advertisement
Halo Esports Wiki

Documentation for this module may be created at Module:PageUtil/doc

local util_cargo = require("Module:CargoUtil")
local util_map = require("Module:MapUtil")
local util_table = require('Module:TableUtil')
local util_text = require('Module:TextUtil')
local util_title = require("Module:TitleUtil")
local util_vars = require('Module:VarsUtil')

local p = {}
local h = {}

function p.whatRedirectsHereAndSelf(title)
	title = title or mw.title.getCurrentTitle().text
	return h.runPagedataQuery(h.pagedataQuery(h.getWhatRedirectsHereWhere(title, false)))
end

function p.whatRedirectsHere(title)
	title = title or mw.title.getCurrentTitle().text
	return h.runPagedataQuery(h.pagedataQuery(h.getWhatRedirectsHereWhere(title, true)))
end

function p.getListOfPages(where)
	return h.runPagedataQuery(h.pagedataQuery(where))
end

function h.runPagedataQuery(query)
	return util_cargo.getOrderedList(query, '_pageName')
end

function h.pagedataQuery(where)
	local ret = {
		tables = '_pageData',
		fields = '_pageData._pageName',
		where = where
	}
	return ret
end

function h.getWhatRedirectsHereWhere(title, excludeself)
	local tbl = {
		('_pageNameOrRedirect="%s"'):format(title),
		excludeself and ('_isRedirect="1"')
	}
	return util_cargo.concatWhere(tbl)
end

function p.getSubpageList(title, nottag)
	local basepage = util_title.titleparts(title, 1, 1)
	return h.runPagedataQuery(h.getSubpageQuery(basepage,nottag))
end

function h.getSubpageQuery(basepage, nottag)
	local tbl = {
		tables = 'IgnorePagedata=IP',
		join = '_pageData._pageName=IP._pageName',
		where = h.getSubpageWhere(basepage, nottag),
		groupBy = '_pageData._pageName',
	}
	local ret = util_cargo.concatQueriesAnd(h.pagedataQuery(), tbl)
	return ret
end

function h.getSubpageWhere(basepage, nottag)
	local tbl = {
		('(_pageData._pageName LIKE "%s/%%" OR _pageData._pageName="%s")'):format(basepage, basepage),
		util_cargo.whereFromArg('(IP.TypeOfIgnore != "%s" OR IP.TypeOfIgnore IS NULL)', nottag)
	}
	return util_cargo.concatWhere(tbl)
end

function p.whichPagesExist(tbl)
	return p.getListOfPages(
		util_table.concat(tbl, ' OR ', h.pageToWhere)
	)
end

function h.pageToWhere(str)
	return ('_pageName="%s"'):format(str)
end

return p
Advertisement