Module:Upcoming Birthdays: Difference between revisions

From NOISZ Wiki
mNo edit summary
No edit summary
Tag: Manual revert
 
(10 intermediate revisions by the same user not shown)
Line 11: Line 11:




function p.main()
function p.main(frame)


birthdays = {}
birthdays = {}
birthdays[1] = {'[[Hikari Aoki]]',os.difftime(os.time{year=currentYear,month=01,day=22},currentDay),'January 22nd'}
birthdays[1] = {'Hikari Aoki',os.difftime(os.time{year=currentYear,month=01,day=22},currentDay),'January 22nd'}
birthdays[2] = {'[[Sera Hoshikawa]]',os.difftime(os.time{year=currentYear,month=03,day=14},currentDay),'March 14th'}  
birthdays[2] = {'Sera Hoshikawa',os.difftime(os.time{year=currentYear,month=03,day=14},currentDay),'March 14th'}  
birthdays[3] = {'[[Grace Kamenashi]]',os.difftime(os.time{year=currentYear,month=04,day=01},currentDay),'April 1st'}
birthdays[3] = {'Grace Kamenashi',os.difftime(os.time{year=currentYear,month=04,day=01},currentDay),'April 1st'}
birthdays[4] = {'[[Arietta Antiphon]]',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
birthdays[4] = {'Arietta Antiphon',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
birthdays[5] = {'[[Joker]]',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
birthdays[5] = {'Joker',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
birthdays[6] = {'[[Asuka Fujita]]',os.difftime(os.time{year=currentYear,month=07,day=30},currentDay),'July 30th'}
birthdays[6] = {'Asuka Fujita',os.difftime(os.time{year=currentYear,month=07,day=30},currentDay),'July 30th'}
birthdays[7] = {'[[Sumire Hitori]]',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
birthdays[7] = {'Sumire Hitori',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
birthdays[8] = {'[[Hitori]]',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
birthdays[8] = {'Hitori',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
birthdays[9] = {'[[Hakuno Nekoda]]',os.difftime(os.time{year=currentYear,month=12,day=25},currentDay),'December 25th'}
birthdays[9] = {'Hakuno Nekoda',os.difftime(os.time{year=currentYear,month=12,day=25},currentDay),'December 25th'}
birthdays[10] = {'[[Shion Nekoda]]',os.difftime(os.time{year=currentYear,month=12,day=29},currentDay),'December 29th'}
birthdays[10] = {'Shion Nekoda',os.difftime(os.time{year=currentYear,month=12,day=29},currentDay),'December 29th'}
birthdays[11] = {'[[Hikari Aoki]]',os.difftime(os.time{year=currentYear+1,month=01,day=22},currentDay),'January 22nd'}
birthdays[11] = {'Hikari Aoki',os.difftime(os.time{year=currentYear+1,month=01,day=22},currentDay),'January 22nd'}
birthdays[12] = {'[[Sera Hoshikawa]]',os.difftime(os.time{year=currentYear+1,month=03,day=14},currentDay),'March 14th'}
birthdays[12] = {'Sera Hoshikawa',os.difftime(os.time{year=currentYear+1,month=03,day=14},currentDay),'March 14th'}
birthdays[13] = {'[[Grace Kamenashi]]',os.difftime(os.time{year=currentYear+1,month=04,day=01},currentDay),'April 1st'}
birthdays[13] = {'Grace Kamenashi',os.difftime(os.time{year=currentYear+1,month=04,day=01},currentDay),'April 1st'}
table.sort(birthdays, sortBirthdays)
table.sort(birthdays, sortBirthdays)
local numBirthdays = 0
local numBirthdays = 0
local birthdayString = ''
local birthdayString = ''
local galleryChars = {}
for k, v in pairs(birthdays) do
for k, v in pairs(birthdays) do
if (v[2] > 0 and numBirthdays < 3 and v[2] < 2592000) or (numBirthdays < 2 and v[2] > 0) then  
if v[2] > 0 and numBirthdays < 3 and v[2] then  
numBirthdays = numBirthdays + 1
numBirthdays = numBirthdays + 1
birthdayString = birthdayString .. v[3] .. ' - ' .. v[1] .. ' (' ..math.ceil(v[2]/86400) .. ' days) <br/>'
galleryChars[numBirthdays] = v[1]
birthdayString = birthdayString .. v[3] .. ' - [[' .. v[1] .. ']] (' ..math.ceil(v[2]/86400) .. ' days) <br/>'
end
end
end
end
return string.sub(birthdayString,1,string.len(birthdayString)-8)
return frame:expandTemplate{ title ='SL Story Gallery', args = {spacerheight='0px', char1 = galleryChars[1], char2 = galleryChars[2], char3 = galleryChars[3]}} .. birthdayString
end
end
return p
return p

Latest revision as of 12:51, 22 December 2025

For use on the Main Page.

The Upcoming Birthdays Module sorts through a list of predefined character birthdays, and returns the three birthdays that are soonest. They're part of a list with their month and day defined as they are, and their year defined as whatever the current year is, and the difference in time between that birthday and the current time:

	birthdays = {}
	birthdays[1] = {'Hikari Aoki',os.difftime(os.time{year=currentYear,month=01,day=22},currentDay),'January 22nd'}
	birthdays[2] = {'Sera Hoshikawa',os.difftime(os.time{year=currentYear,month=03,day=14},currentDay),'March 14th'} 
	birthdays[3] = {'Grace Kamenashi',os.difftime(os.time{year=currentYear,month=04,day=01},currentDay),'April 1st'}
	birthdays[4] = {'Arietta Antiphon',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
	birthdays[5] = {'Joker',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
	birthdays[6] = {'Asuka Fujita',os.difftime(os.time{year=currentYear,month=07,day=30},currentDay),'July 30th'}
	birthdays[7] = {'Sumire Hitori',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
	birthdays[8] = {'Hitori',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
	birthdays[9] = {'Hakuno Nekoda',os.difftime(os.time{year=currentYear,month=12,day=25},currentDay),'December 25th'}
	birthdays[10] = {'Shion Nekoda',os.difftime(os.time{year=currentYear,month=12,day=29},currentDay),'December 29th'}
	birthdays[11] = {'Hikari Aoki',os.difftime(os.time{year=currentYear+1,month=01,day=22},currentDay),'January 22nd'}
	birthdays[12] = {'Sera Hoshikawa',os.difftime(os.time{year=currentYear+1,month=03,day=14},currentDay),'March 14th'}
	birthdays[13] = {'Grace Kamenashi',os.difftime(os.time{year=currentYear+1,month=04,day=01},currentDay),'April 1st'}

New birthdays can be put in using this general format. Hikari, Sera and Grace have their birthdays defined for the next year to cover the period between Shion's birthday and the new year.

The module takes this list and sorts through it. The soonest three are the ones at the top of the list:

table.sort(birthdays, sortBirthdays)
	local numBirthdays = 0
	local birthdayString = ''
	local galleryChars = {}
for k, v in pairs(birthdays) do
		if v[2] > 0 and numBirthdays < 3 and v[2] then 
			numBirthdays = numBirthdays + 1
			galleryChars[numBirthdays] = v[1]
			birthdayString = birthdayString .. v[3] .. ' - [[' .. v[1] .. ']] (' ..math.ceil(v[2]/86400) .. ' days) <br/>'
		end
	end

And are the ones returned in the form of the SL Story Gallery template:

	return frame:expandTemplate{ title ='SL Story Gallery', args = {spacerheight='0px', char1 = galleryChars[1], char2 = galleryChars[2], char3 = galleryChars[3]}} .. birthdayString

local capiunto = require 'capiunto'
local lang = mw.language.getContentLanguage()
local currentYear = lang:formatDate("Y")
local currentDay = os.time()

local p = {}

local function sortBirthdays( a, b )
    return a[2] < b[2] and b[2] > 0;
end


function p.main(frame)

	birthdays = {}
	birthdays[1] = {'Hikari Aoki',os.difftime(os.time{year=currentYear,month=01,day=22},currentDay),'January 22nd'}
	birthdays[2] = {'Sera Hoshikawa',os.difftime(os.time{year=currentYear,month=03,day=14},currentDay),'March 14th'} 
	birthdays[3] = {'Grace Kamenashi',os.difftime(os.time{year=currentYear,month=04,day=01},currentDay),'April 1st'}
	birthdays[4] = {'Arietta Antiphon',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
	birthdays[5] = {'Joker',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
	birthdays[6] = {'Asuka Fujita',os.difftime(os.time{year=currentYear,month=07,day=30},currentDay),'July 30th'}
	birthdays[7] = {'Sumire Hitori',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
	birthdays[8] = {'Hitori',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
	birthdays[9] = {'Hakuno Nekoda',os.difftime(os.time{year=currentYear,month=12,day=25},currentDay),'December 25th'}
	birthdays[10] = {'Shion Nekoda',os.difftime(os.time{year=currentYear,month=12,day=29},currentDay),'December 29th'}
	birthdays[11] = {'Hikari Aoki',os.difftime(os.time{year=currentYear+1,month=01,day=22},currentDay),'January 22nd'}
	birthdays[12] = {'Sera Hoshikawa',os.difftime(os.time{year=currentYear+1,month=03,day=14},currentDay),'March 14th'}
	birthdays[13] = {'Grace Kamenashi',os.difftime(os.time{year=currentYear+1,month=04,day=01},currentDay),'April 1st'}
	table.sort(birthdays, sortBirthdays)
	local numBirthdays = 0
	local birthdayString = ''
	local galleryChars = {}
	for k, v in pairs(birthdays) do
		if v[2] > 0 and numBirthdays < 3 and v[2] then 
			numBirthdays = numBirthdays + 1
			galleryChars[numBirthdays] = v[1]
			birthdayString = birthdayString .. v[3] .. ' - [[' .. v[1] .. ']] (' ..math.ceil(v[2]/86400) .. ' days) <br/>'
		end
	end

	
	return frame:expandTemplate{ title ='SL Story Gallery', args = {spacerheight='0px', char1 = galleryChars[1], char2 = galleryChars[2], char3 = galleryChars[3]}} .. birthdayString
end
return p