Monday, November 08, 2010 at 12:05 AM.

	<<12/21/02; 3:49:25 PM by JES
		<<Added support for serial number renewals.
	<<2/14/02; 5:49:37 PM by JES
		<<Only update radio.root, if is defined.
	<<1/6/02; 2:23:49 AM by JES
		<<Don't publish the whole month every night. This is now handled by the callback script at radio.upstream.callbacks.upstream.updateWeblogArchivePages.
	<<12/28/01; 1:01:20 PM by JES
		<<When doing the nightly build of the month's weblog pages, build the pages for the month that includes yesterday. This fixes a problem where calendars on pages in the previous wouldn't link to the last day of that month.
	<<12/16/01; 9:06:00 AM by DW
		<<Add nightly build of the month's weblog pages.
	<<12/8/01; 2:43:40 PM by DW
		<<Big corner-turn:
			<<1. Moved from radio.thread.agents.nightlyUpdates, which was coded in such a way that it couldn't be updated without crashing Radio.
			<<2. We delete radio.thread.agents.nightlyUpdates, if it exists, so we can leave its troubled past behind.
			<<3. We do the root update in a separate thread, so this script can be updated.
	<<12/8/01; 2:25:01 PM by DW
		<<Only do the updates once per day. Six times is five times too many. ;->
	<<12/2/01; 12:33:02 AM by JES
		<<After doing a root update, rebuild the menubar.
	<<12/1/01; 7:43:23 PM by DW
		<<Created. If it's time to do the nightly update, or it's been more than 24 hours since we updated, do it now.

<< = date.yesterday ( //debugging

if defined (radio.thread.agents.nightlyUpdates) { //12/8/01; 2:47:34 PM by DW
	delete (@radio.thread.agents.nightlyUpdates)};

if not tcp.isOffline () {
	local (now = ());
	local (flupdate = false);
	local (day, month, year, hour, minute, second);
	date.get (now, @day, @month, @year, @hour, @minute, @second);
	if (hour == 0) and (minute == {
		local (lastday, lastmonth, lastyear, lasthour, lastminute, lastsecond);
		date.get (, @lastday, @lastmonth, @lastyear, @lasthour, @lastminute, @lastsecond);
		if lastday != day { //only do the updates once per day
			flupdate = true}}
	else {
		if date.yesterday (now) > { //it's been more than 24 hours
			flupdate = true}};
	bundle { //expiration check
		if flupdate {
			if defined ( {
				local (whenExpires = date (;
				if whenExpires < now {
					flupdate = false}}}};
	if flupdate { = now;
		if { //Update Radio.root
			if defined ( { //2/14/02 JES: Only update radio.root if we have a usernum.
				local (adrscript = @system.temp.rootUpdate);
				adrscript^ = radio.utilities.rootUpdate;
				thread.callScript (adrscript, {@root})}};
			<<radio.weblog.publishMonth (date.yesterday (now))
		if {
			try {radio.hotlist.reload ()}};
		if {
			try {radio.utilities.readGlobalGlossary ()}}}}

This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.