Module:Favilink Utility: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
m (fix indentation) |
||
Line 3: | Line 3: | ||
function p.main(frame, searchtype, fieldsin) | function p.main(frame, searchtype, fieldsin) | ||
local name | |||
local name | local fields = fieldsin or 'JoinKey=Page, DisplayName, PlainName, COALESCE(Image, DisplayChar)=Display' | ||
local fields = fieldsin or 'JoinKey=Page, DisplayName, PlainName, COALESCE(Image, DisplayChar)=Display' | local namespaces = '(_pageNamespace="0" OR _pageNamespace="10002")' | ||
local namespaces = '(_pageNamespace="0" OR _pageNamespace="10002")' | searchtype = searchtype or 'PlainName' | ||
searchtype = searchtype or 'PlainName' | |||
name = mw.text.trim(frame) | name = mw.text.trim(frame) | ||
local wherestr = '' | local wherestr = '' | ||
if (searchtype == 'PlainName') then | if (searchtype == 'PlainName') then | ||
wherestr = ' AND PlainName="' .. name:gsub("'", "\'") .. '"' | |||
elseif (searchtype == 'ObjectID') then | elseif (searchtype == 'ObjectID') then | ||
wherestr = ' AND BINARY ObjectID="' .. name:gsub("'", "\'") .. '"' | |||
elseif (searchtype == '_pageName') then | elseif (searchtype == '_pageName') then | ||
wherestr = ' AND _pageName="' .. name:gsub("'", "\'") .. '"' | |||
end | end | ||
local result = cargo.query('GeneralData', fields, {where=namespaces .. wherestr, default=name, limit='1'} ) | local result = cargo.query('GeneralData', fields, | ||
local resulttrue = 0 | {where=namespaces .. wherestr, | ||
default=name, | |||
limit='1', | |||
orderby='_pageNamespace ASC'} ) | |||
local resulttrue = 0 | |||
--[If there was no result, search by alias instead] | --[If there was no result, search by alias instead] | ||
if not next(result) then | if not next(result) then | ||
if searchtype == 'PlainName' then | |||
wherestr = ' AND Aliases HOLDS "' .. name:gsub("'", "\'") .. '"' | |||
elseif searchtype == 'ObjectID' then | |||
wherestr = ' AND IDAliases HOLDS "' .. name:gsub("'", "\'") .. '"' | |||
end | |||
result = cargo.query('GeneralData', fields, | |||
{where=namespaces .. wherestr, | |||
default=name, | |||
limit='1', | |||
orderby='_pageNamespace ASC'} ) | |||
else | if next(result) then | ||
resulttrue = 1 | |||
end | |||
else | |||
resulttrue = 1 | |||
end | |||
end | |||
if resulttrue == 1 then | |||
return result | |||
else | |||
return nil | |||
end | |||
end | end | ||
function p.favilink(frame, searchtype) | function p.favilink(frame, searchtype) | ||
return p.main(frame, searchtype, '_pageName=Page, DisplayName, Image, DisplayChar, PlainName, COALESCE(Image, DisplayChar)=Display') | |||
end | end | ||
function p.IDtoname(frame) | function p.IDtoname(frame) | ||
local name = frame | |||
if frame.args ~= nil then | |||
name = frame.args[1] | |||
end | |||
local result = p.main(name, 'ObjectID', 'PlainName') | |||
if result == nil then | |||
return name .. '(no results)]][[Category:Pages with ID to Name errors' | |||
elseif not next(result) then | |||
return name .. '(no results)]][[Category:Pages with ID to Name errors' | |||
else | |||
return result[1]['PlainName'] | |||
end | |||
end | end | ||
function p.IDtopage(frame) | function p.IDtopage(frame) | ||
local name = frame | |||
if frame.args ~= nil then | |||
name = frame.args[1] | |||
end | |||
local result = p.main(name, 'ObjectID', '_pageName=Page') | |||
if result == nil then | |||
return name .. '(no results)]][[Category:Pages with ID to Page errors' | |||
elseif not next(result) then | |||
return name .. '(no results)]][[Category:Pages with ID to Page errors' | |||
else | |||
return result[1]['Page'] | |||
end | |||
end | end | ||
return p | return p |