Saturday, April 09, 2011 at 1:07 AM.

radio2Suite.background.everyMinute

on everyMinute () {
	<<Changes
		<<4/8/11; 4:39:33 PM by DW
			<<Maintenence flag to turn off static rendering for the radio2 user in River2.
		<<3/15/11; 10:45:47 AM by DW
			<<Maintenence flag to remove feed-level cloud elements.
		<<3/7/11; 2:51:00 PM by DW
			<<Maintenence flag to set the default cookieDomain in members.root to the domain that is running the Radio2 site.
		<<3/7/11; 10:27:22 AM by DW
			<<Maintenence flag to initially populate members.root from the Radio2 users.
		<<3/7/11; 9:10:12 AM by DW
			<<Maintenence flag to temporarily disable the API, which uses Basic Authentication and hasn't been tested in a long time. Before bringing it back must do a complete run-through.
		<<3/3/11; 11:32:58 AM by DW
			<<Maintenence flag to set whenLastGet for each user to yesterday at this time.
		<<3/3/11; 10:57:06 AM by DW
			<<Don't build the community OPML here, we'll do it from the everyHour script.
		<<3/2/11; 9:28:04 PM by DW
			<<Maintain the community OPML reading list.
		<<3/2/11; 9:46:14 AM by DW
			<<Maintenence flag that eliminates empty or nil enclosures in posts.
		<<2/24/11; 12:09:30 PM by DW
			<<Do a get-count for each user who is ready
		<<2/23/11; 10:43:36 PM by DW
			<<Maintenence flag to get rid of extraneous "tweetBoxx" in data table.
		<<2/22/11; 10:38:08 PM by DW
			<<Maintenence flag to rebuild the user's whole archive. We just made the archive actually work. :-)
		<<2/21/11; 11:25:41 AM by DW
			<<Add maintenence flags section, and add code that fixes all the links we have with UTM_ codes in the URLs. These are really ugly monstrosities. 
		<<1/11/11; 12:12:35 PM by DW
			<<If the user's feeds table is empty, create a feed with the default name.
		<<12/14/10; 8:26:15 PM by DW
			<<Created. 
	local (adrdata = radio2Suite.init (), now = clock.now ());
	adrdata^.stats.ctEveryMinutes++;
	adrdata^.stats.whenLastEveryMinute = now;
	bundle { //do nothing on DW's desktop machine
		if defined (user.prefs.fldevmachine) {
			if user.prefs.fldevmachine {
				return}}};
	bundle { //maintenence flags
		if not defined (adrdata^.prefs.flags.turnOffStaticRiver2User) { //4/8/11 by DW
			try {config.river2.users.radio2.prefs.static.enabled = false};
			adrdata^.prefs.flags.turnOffStaticRiver2User = now};
		if not defined (adrdata^.prefs.flags.removeFeedLevelClouds) { //3/15/11 by DW
			radio2Suite.utilities.removeFeedLevelClouds ();
			adrdata^.prefs.flags.removeFeedLevelClouds = now};
		if not defined (adrdata^.prefs.flags.setCookieDomain) { //3/7/11 by DW
			radio2Suite.utilities.setCookieDomain ();
			adrdata^.prefs.flags.setCookieDomain = now};
		if not defined (adrdata^.prefs.flags.initMembersRoot) { //3/7/11 by DW
			radio2Suite.utilities.initMembersRoot ();
			adrdata^.prefs.flags.initMembersRoot = now};
		if not defined (adrdata^.prefs.flags.disableApi) { //3/7/11 by DW
			local (adruser);
			for adruser in @adrdata^.users {
				radio2Suite.initUser (adruser);
				adruser^.stats.counts.whenLastGet = date.yesterday (now)};
			try {delete (@radio2Website.api)}; //it's been renamed to #api
			adrdata^.prefs.flags.disableApi = now};
		if not defined (adrdata^.prefs.flags.nukeDateZeros) { //3/3/11 by DW
			local (adruser);
			for adruser in @adrdata^.users {
				radio2Suite.initUser (adruser);
				adruser^.stats.counts.whenLastGet = date.yesterday (now)};
			adrdata^.prefs.flags.nukeDateZeros = now};
		if not defined (adrdata^.prefs.flags.nilEnclosuresBad) { //3/2/11 by DW
			local (adruser, adrfeed);
			<<scratchpad.ctNilEnclosures = 0
			on visit (adrpost) {
				if defined (adrpost^.enclosure) {
					if (adrpost^.enclosure == nil) or (adrpost^.enclosure == "") {
						<<scratchpad.ctNilEnclosures++
						delete (@adrpost^.enclosure)}};
				return (true)};
			for adruser in @adrdata^.users {
				for adrfeed in @adruser^.feeds {
					mainresponder.calendar.visitReverseChronologic (@adrfeed^.calendar, @visit)}};
			adrdata^.prefs.flags.nilEnclosuresBad = now};
		if not defined (adrdata^.prefs.flags.removeUrlGarbage) {
			local (adruser, adrfeed);
			<<scratchpad.ctUrlsWithGarbage = 0
			on visit (adrpost) {
				if defined (adrpost^.link) {
					local (newlink = string.removeUrlGarbage (adrpost^.link));
					if newlink != adrpost^.link {
						adrpost^.link = newlink}};
						<<scratchpad.ctUrlsWithGarbage++
				return (true)};
			for adruser in @adrdata^.users {
				for adrfeed in @adruser^.feeds {
					mainresponder.calendar.visitReverseChronologic (@adrfeed^.calendar, @visit)}};
			adrdata^.prefs.flags.removeUrlGarbage = now};
		if not defined (adrdata^.prefs.flags.rebuildFullArchive) { //2/22/11 by DW
			thread.callscript (@radio2Suite.utilities.rebuildArchive, {});
			adrdata^.prefs.flags.rebuildFullArchive = now};
		if defined (radio2Suite.data.tweetBoxx) { //2/23/11 by DW
			delete (@radio2Suite.data.tweetBoxx)}};
	bundle { //do a get-count for each user who is ready, 2/24/11 by DW
		local (adruser, ctsecsbetwgets = 60 * adrdata^.prefs.ctMinutesBetwCountGets);
		for adruser in @adrdata^.users {
			if adruser^.prefs.shortener.enabled {
				if number (now - adruser^.stats.counts.whenLastGet) >= ctsecsbetwgets {
					try {
						radio2Suite.shortener.getCounts (adruser)}}}}};
	bundle { //init all the feeds
		local (adruser, adrfeed);
		for adruser in @adrdata^.users {
			radio2Suite.initUser (adruser);
			
			if sizeof (adruser^.feeds) == 0 { //1/11/11 by DW
				new (tabletype, @adruser^.feeds.[radio2Suite.data.strings.defaultFeedName])};
			
			for adrfeed in @adruser^.feeds {
				radio2Suite.initFeed (adrfeed)}}}};
	<<bundle //build community OPML -- 3/3/11 by DW -- disabled
		<<local (flbuild = false)
		<<if adrdata^.stats.ctCommunityOpmlBuilds == 0
			<<flbuild = true
		<<else
			<<if number (now - adrdata^.stats.whenLastCommunityOpmlBuild) >= (60 * 40) //build every 40 minutes
				<<flbuild = true
		<<if flbuild
			<<radio2Suite.buildCommunityOpml ()
bundle { //test code
	everyMinute ()}



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.