Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.thread.agents.everyNightUpdate
<<Changes
<<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 user.radio.prefs.usernum 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.
<<user.radio.stats.dateLastUpdate = date.yesterday (user.radio.stats.dateLastUpdate) //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 = clock.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 == user.radio.settings.minuteToDoNightlyTasks) {
local (lastday, lastmonth, lastyear, lasthour, lastminute, lastsecond);
date.get (user.radio.stats.dateLastUpdate, @lastday, @lastmonth, @lastyear, @lasthour, @lastminute, @lastsecond);
if lastday != day { //only do the updates once per day
flupdate = true}}
else {
if date.yesterday (now) > user.radio.stats.dateLastUpdate { //it's been more than 24 hours
flupdate = true}};
bundle { //expiration check
if flupdate {
if defined (user.radio.settings.whenSNExpires) {
local (whenExpires = date (user.radio.settings.whenSNExpires));
if whenExpires < now {
flupdate = false}}}};
if flupdate {
user.radio.stats.dateLastUpdate = now;
if user.radio.prefs.flUpdateDatabaseNightly { //Update Radio.root
if defined (user.radio.prefs.usernum) { //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})}};
<<if user.radio.prefs.flBuildWeblogMonthNightly
<<radio.weblog.publishMonth (date.yesterday (now))
if user.radio.prefs.flReloadHotlistNightly {
try {radio.hotlist.reload ()}};
if user.radio.prefs.glossary.flReadNightly {
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.