Sunday, April 10, 2011 at 1:07 AM.
radio2Suite.initUser
on initUser (adruser) { <<Changes <<4/9/11; 11:22:15 AM by DW <<Init user-level callbacks table, with a single callback on building a feed for the user. <<4/6/11; 4:35:17 PM by DW <<Init user-level ctLogins stat. <<3/24/11; 8:58:09 AM by DW <<Init stats.ctShortenedUrlErrors, stats.ctGetCountErrors. <<3/22/11; 10:43:35 AM by DW <<Make sure there's a River2 user for this Radio2 user. <<3/12/11; 1:05:03 PM by DW <<Callbacks. Now you can manage your own data in each user's table. <<3/10/11; 9:01:51 AM by DW <<html template prefs. <<3/9/11; 7:54:40 AM by DW <<Init home page prompt and podcast button pref. <<3/6/11; 2:26:09 PM by DW <<Init customDomain for shortener prefs. <<3/3/11; 11:28:38 AM by DW <<Initialize whenLastGet to yesterday at this time instead of date (0). <<3/2/11; 8:37:54 PM by DW <<Init adruser^.stats.ctTop40HtmlBuilds. <<2/24/11; 11:14:06 AM by DW <<Init adruser^.stats.ctStaticFileWrites and adruser^.stats.ctJavaScriptBuilds. <<2/23/11; 11:51:27 PM by DW <<Init flTitleCleanup pref. <<2/20/11; 11:50:10 AM by DW <<Init shortener, counts prefs, stats. <<1/4/11; 11:35:03 AM by DW <<Turned into initUser. <<12/14/10; 11:12:24 AM by DW <<Created. if not defined (adruser^) { new (tabletype, adruser)}; if not defined (adruser^.feeds) { new (tabletype, @adruser^.feeds)}; bundle { //prefs if not defined (adruser^.prefs) { new (tabletype, @adruser^.prefs)}; if not defined (adruser^.prefs.enabled) { adruser^.prefs.enabled = false}; if not defined (adruser^.prefs.flPublishEnabled) { //12/25/10 by DW adruser^.prefs.flPublishEnabled = true}; //makes it easy to test if not defined (adruser^.prefs.flTitleCleanup) { //2/23/11 by DW adruser^.prefs.flTitleCleanup = true}; if not defined (adruser^.prefs.homePagePrompt) { //3/9/11 by DW adruser^.prefs.homePagePrompt = ""}; if not defined (adruser^.prefs.flPodcastButtonOnHomePage) { //3/9/11 by DW adruser^.prefs.flPodcastButtonOnHomePage = false}; if not defined (adruser^.prefs.htmlArchiveTemplate) { //3/10/11 by DW adruser^.prefs.htmlArchiveTemplate = string (radio2Suite.data.html.archiveTemplate)}; if not defined (adruser^.prefs.countsPageTemplate) { //3/10/11 by DW adruser^.prefs.countsPageTemplate = string (radio2Suite.data.html.staticCountsPageTemplate)}; bundle { //security if not defined (adruser^.prefs.security) { new (tabletype, @adruser^.prefs.security)}; if not defined (adruser^.prefs.security.enabled) { adruser^.prefs.security.enabled = true}; <<if not defined (adruser^.prefs.security.username) <<adruser^.prefs.security.username = "admin" if not defined (adruser^.prefs.security.password) { adruser^.prefs.security.password = string.getrandompassword (8)}}; bundle { //s3bucket if not defined (adruser^.prefs.s3bucket) { new (tabletype, @adruser^.prefs.s3bucket)}; if not defined (adruser^.prefs.s3bucket.enabled) { adruser^.prefs.s3bucket.enabled = false}; if not defined (adruser^.prefs.s3bucket.path) { adruser^.prefs.s3bucket.path = ""}; if not defined (adruser^.prefs.s3bucket.url) { adruser^.prefs.s3bucket.url = ""}}; bundle { //shortener, 2/17/11 by DW if not defined (adruser^.prefs.shortener) { new (tabletype, @adruser^.prefs.shortener)}; if not defined (adruser^.prefs.shortener.enabled) { adruser^.prefs.shortener.enabled = false}; if not defined (adruser^.prefs.shortener.email) { adruser^.prefs.shortener.email = ""}; if not defined (adruser^.prefs.shortener.partnerID) { adruser^.prefs.shortener.partnerID = ""}; if not defined (adruser^.prefs.shortener.password) { adruser^.prefs.shortener.password = ""}; if not defined (adruser^.prefs.shortener.customDomain) { //3/6/11 by DW adruser^.prefs.shortener.customDomain = ""}}; bundle { //counts, 2/20/11 by DW if not defined (adruser^.prefs.counts) { new (tabletype, @adruser^.prefs.counts)}; if not defined (adruser^.prefs.counts.maxcount) { adruser^.prefs.counts.maxcount = 40}}}; bundle { //stats if not defined (adruser^.stats) { new (tabletype, @adruser^.stats)}; if not defined (adruser^.stats.ctShortenedUrls) { //2/20/11 by DW adruser^.stats.ctShortenedUrls = 0}; if not defined (adruser^.stats.ctShortenedUrlErrors) { //3/24/11 by DW adruser^.stats.ctShortenedUrlErrors = 0}; if not defined (adruser^.stats.ctGetCountErrors) { //3/24/11 by DW adruser^.stats.ctGetCountErrors = 0}; if not defined (adruser^.stats.ctStaticFileWrites) { //2/24/11 by DW adruser^.stats.ctStaticFileWrites = 0}; if not defined (adruser^.stats.ctJavaScriptBuilds) { //2/24/11 by DW adruser^.stats.ctJavaScriptBuilds = 0}; if not defined (adruser^.stats.ctTop40HtmlBuilds) { //3/2/11 by DW adruser^.stats.ctTop40HtmlBuilds = 0}; if not defined (adruser^.stats.ctLogins) { //4/6/11 by DW adruser^.stats.ctLogins = 0}; if not defined (adruser^.stats.lastFeedSelected) { if sizeof (adruser^.feeds) == 0 { adruser^.stats.lastFeedSelected = ""} else { adruser^.stats.lastFeedSelected = nameof (adruser^.feeds [1])}}; bundle { //ctInits if defined (adruser^.stats.ctInits) { adruser^.stats.ctInits++} else { adruser^.stats.ctInits = 0}}; bundle { //counts, 2/20/11 by DW if not defined (adruser^.stats.counts) { new (tabletype, @adruser^.stats.counts)}; if not defined (adruser^.stats.counts.ct) { adruser^.stats.counts.ct = 0}; if not defined (adruser^.stats.counts.whenLastGet) { //3/3/11 by DW adruser^.stats.counts.whenLastGet = date.yesterday (clock.now ())}}}; bundle { //callbacks, 4/9/11 by DW if not defined (adruser^.callbacks) { new (tabletype, @adruser^.callbacks)}; if not defined (adruser^.callbacks.buildRss) { new (tabletype, @adruser^.callbacks.buildRss)}}; bundle { //call the callbacks, 3/12/11 by DW local (adrdata = @config.radio2, adrscript); for adrscript in @adrdata^.callbacks.initUser { while typeof (adrscript^) == addresstype { adrscript = adrscript^}; try { adrscript^ (adruser)}}}; bundle { //make sure there's a River2 user for this Radio2 user, 3/22/11 by DW radio2Suite.utilities.initRiver2User (adruser)}; return (adruser)}; bundle { //test code initUser (@config.radio2.users.dave)}
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.