Module:Favilink Utility: Difference between revisions

m
fix indentation
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("'", "\'") .. '"'
wherestr = ' AND PlainName="' .. name:gsub("'", "\'") .. '"'
elseif (searchtype == 'ObjectID') then
elseif (searchtype == 'ObjectID') then
  wherestr = ' AND BINARY ObjectID="' .. name:gsub("'", "\'") .. '"'
wherestr = ' AND BINARY ObjectID="' .. name:gsub("'", "\'") .. '"'
elseif (searchtype == '_pageName') then
elseif (searchtype == '_pageName') then
  wherestr = ' AND _pageName="' .. name:gsub("'", "\'") .. '"'
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
if searchtype == 'PlainName' then
    wherestr = ' AND Aliases HOLDS "' .. name:gsub("'", "\'") .. '"'
    wherestr = ' AND Aliases HOLDS "' .. name:gsub("'", "\'") .. '"'
  elseif searchtype == 'ObjectID' then
elseif searchtype == 'ObjectID' then
    wherestr = ' AND IDAliases HOLDS "' .. name:gsub("'", "\'") .. '"'
    wherestr = ' AND IDAliases HOLDS "' .. name:gsub("'", "\'") .. '"'
  end  
end  
 
result = cargo.query('GeneralData', fields,
  result = cargo.query('GeneralData', fields, {where=namespaces .. wherestr, default=name, limit='1'} )
{where=namespaces .. wherestr,
  if next(result) then  
default=name,
    resulttrue = 1
limit='1',
  end
orderby='_pageNamespace ASC'} )
else
if next(result) then  
  resulttrue = 1
    resulttrue = 1
end
end
 
else
if resulttrue == 1 then
resulttrue = 1
  return result
end
else
  return nil
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')
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
local name = frame
  if frame.args ~= nil then
if frame.args ~= nil then
    name = frame.args[1]
    name = frame.args[1]
  end
end


  local result = p.main(name, 'ObjectID', 'PlainName')
local result = p.main(name, 'ObjectID', 'PlainName')
  if result == nil then
if result == nil then
    return name .. '(no results)]][[Category:Pages with ID to Name errors'
    return name .. '(no results)]][[Category:Pages with ID to Name errors'
  elseif not next(result) then
elseif not next(result) then
    return name .. '(no results)]][[Category:Pages with ID to Name errors'
    return name .. '(no results)]][[Category:Pages with ID to Name errors'
  else  
else  
    return result[1]['PlainName']
    return result[1]['PlainName']
  end
end
end
end


function p.IDtopage(frame)
function p.IDtopage(frame)
  local name = frame
local name = frame
  if frame.args ~= nil then
if frame.args ~= nil then
    name = frame.args[1]
    name = frame.args[1]
  end
end
  local result = p.main(name, 'ObjectID', '_pageName=Page')
local result = p.main(name, 'ObjectID', '_pageName=Page')
  if result == nil then
if result == nil then
    return name .. '(no results)]][[Category:Pages with ID to Page errors'
    return name .. '(no results)]][[Category:Pages with ID to Page errors'
  elseif not next(result) then
elseif not next(result) then
    return name .. '(no results)]][[Category:Pages with ID to Page errors'
    return name .. '(no results)]][[Category:Pages with ID to Page errors'
  else  
else  
    return result[1]['Page']
    return result[1]['Page']
  end
end
end
end


return p
return p