Tuesday, April 12, 2011 at 1:05 AM.
scripting2Suite.initUser
on initUser (username, flCreateNewUser=false) { <<Changes <<4/11/11; 6:49:48 PM by DW <<Add buildRss user-level callback. (I'm saving my main feed to S3 to try to take pressure off my Windows server.) <<3/17/11; 9:43:58 AM by DW <<A nice default header image for new blogs. <<3/16/11; 4:09:44 PM by DW <<Most blogs are stored in a sub-directory of the main directory. However some, like Scripting News, are at the top level of the directory. flBlogInRootDirectory is the pref that determines if it's a special blog. <<3/8/11; 6:23:05 PM by DW <<Init S3 prefs, stats. <<7/25/10; 8:30:04 PM by DW <<Disqus comment default is true, group is "scripting2." <<7/18/10; 8:40:49 PM by DW <<Init callbacks table, starting with beforeBuildHomePage. <<7/4/10; 5:22:50 PM by DW <<Init prefs for Disqus comments. <<6/27/10; 7:52:48 AM by DW <<Init adrdata^.stats.flBuildToc to true. At the top of the next minute we'll set it false and rebuild the TOC. When the blog is newly created, it needs a fresh build. Also once a day (the calendar changes). <<6/12/10; 8:39:57 AM by DW <<Init adrdata^.stats.whenLastBuildAfterSave. <<6/9/10; 5:56:46 AM by DW <<Add optional parameter flCreateNewUser, default false. <<5/29/10; 8:02:07 AM by DW <<Created. local (adrdata = scripting2Suite.init ()); local (basefolder = adrdata^.prefs.basefolder); adrdata = @adrdata^.server.users.[username]; if not defined (adrdata^) { if flCreateNewUser { new (tabletype, adrdata)} else { scripterror ("Can't process the request because there is no user named \"" + username + ".\"")}}; if not defined (adrdata^.calendar) { new (tabletype, @adrdata^.calendar)}; bundle { //callbacks, 7/18/10 by DW if not defined (adrdata^.callbacks) { new (tabletype, @adrdata^.callbacks)}; if not defined (adrdata^.callbacks.beforeBuildHomePage) { new (tabletype, @adrdata^.callbacks.beforeBuildHomePage)}; if not defined (adrdata^.callbacks.buildRss) { //4/11/11 by DW new (tabletype, @adrdata^.callbacks.buildRss)}}; bundle { //prefs if not defined (adrdata^.prefs) { new (tabletype, @adrdata^.prefs)}; if not defined (adrdata^.prefs.enabled) { adrdata^.prefs.enabled = true}; if not defined (adrdata^.prefs.baseFolder) { local (pc = file.getpathchar ()); adrdata^.prefs.baseFolder = basefolder + "server" + pc + username + pc}; <<if not defined (adrdata^.prefs.baseUrl) <<adrdata^.prefs.baseUrl = "" if not defined (adrdata^.prefs.opmlFolder) { adrdata^.prefs.opmlFolder = adrdata^.prefs.basefolder + "opml" + file.getpathchar ()}; if not defined (adrdata^.prefs.weblogName) { adrdata^.prefs.weblogName = ""}; if not defined (adrdata^.prefs.homeTemplate) { adrdata^.prefs.homeTemplate = scripting2Suite.data.virgin.homeTemplate}; if not defined (adrdata^.prefs.storyTemplate) { adrdata^.prefs.storyTemplate = scripting2Suite.data.virgin.storyTemplate}; <<if not defined (adrdata^.prefs.aboutTheAuthor) <<adrdata^.prefs.aboutTheAuthor = "" if not defined (adrdata^.prefs.ownerName) { adrdata^.prefs.ownerName = ""}; if not defined (adrdata^.prefs.ownerEmail) { adrdata^.prefs.ownerEmail = ""}; if not defined (adrdata^.prefs.tagline) { adrdata^.prefs.tagline = ""}; if not defined (adrdata^.prefs.password) { adrdata^.prefs.password = binary (string.getrandompassword (10))}; <<if not defined (adrdata^.prefs.footerText) <<adrdata^.prefs.footerText = "© Copyright " + date.year () + " Your Name Here." <<if not defined (adrdata^.prefs.crumbTrailForStaticPage) <<adrdata^.prefs.crumbTrailForStaticPage = "" <<if not defined (adrdata^.prefs.ctDaysOnHomePage) <<adrdata^.prefs.ctDaysOnHomePage = 3 if not defined (adrdata^.prefs.ctStoriesOnHomePage) { adrdata^.prefs.ctStoriesOnHomePage = 20}; if not defined (adrdata^.prefs.headerImage) { //3/17/11 by DW adrdata^.prefs.headerImage = string (scripting2Suite.data.html.allBaking)}; if not defined (adrdata^.prefs.stylesheet) { //6/6/10 by DW adrdata^.prefs.stylesheet = scripting2Suite.data.virgin.styleSheet}; if not defined (adrdata^.prefs.glossary) { //6/6/10 by DW adrdata^.prefs.glossary = scripting2Suite.data.virgin.glossary}; if not defined (adrdata^.prefs.flPgfPermalinks) { //6/6/10 by DW adrdata^.prefs.flPgfPermalinks = true}; if not defined (adrdata^.prefs.timeZoneName) { //6/6/10 by DW adrdata^.prefs.timeZoneName = "GMT"}; if not defined (adrdata^.prefs.timeZone) { //6/6/10 by DW adrdata^.prefs.timeZone = 0}; if not defined (adrdata^.prefs.spacerWidth) { //6/6/10 by DW adrdata^.prefs.spacerWidth = 45}; if not defined (adrdata^.prefs.spacerHeight) { //6/6/10 by DW adrdata^.prefs.spacerHeight = 45}; if not defined (adrdata^.prefs.blogroll) { //6/27/10 by DW adrdata^.prefs.blogroll = scripting2Suite.data.virgin.blogroll}; bundle { //instantOutline if defined (adrdata^.prefs.instantOutline) { if typeof (adrdata^.prefs.instantOutline) == outlinetype { delete (@adrdata^.prefs.instantOutline)}}; if not defined (adrdata^.prefs.instantOutline) { //7/15/10 by DW new (tabletype, @adrdata^.prefs.instantOutline); adrdata^.prefs.instantOutline.opmltext = ""; adrdata^.prefs.instantOutline.ctSaves = 0; adrdata^.prefs.instantOutline.whenLastSave = date (0)}}; if not defined (adrdata^.prefs.archiveStartDate) { //6/8/10 by DW adrdata^.prefs.archiveStartDate = clock.now ()}; if not defined (adrdata^.prefs.flShareTemplates) { //6/13/10 by DW adrdata^.prefs.flShareTemplates = true}; if not defined (adrdata^.prefs.flDisqusComments) { //7/4/10 by DW adrdata^.prefs.flDisqusComments = true}; if not defined (adrdata^.prefs.disqusShortName) { //7/4/10 by DW adrdata^.prefs.disqusShortName = "scripting2"}; if not defined (adrdata^.prefs.flRealtimeUpdates) { //7/13/10 by DW adrdata^.prefs.flRealtimeUpdates = true}; if not defined (adrdata^.prefs.flBlogInRootDirectory) { //3/16/11 by DW adrdata^.prefs.flBlogInRootDirectory = false}; bundle { //ftp prefs -- if you want to override the defaults, 6/8/10 by DW if not defined (adrdata^.prefs.ftp) { new (tabletype, @adrdata^.prefs.ftp)}; if not defined (adrdata^.prefs.ftp.enabled) { adrdata^.prefs.ftp.enabled = false}; if not defined (adrdata^.prefs.ftp.path) { adrdata^.prefs.ftp.path = ""}; if not defined (adrdata^.prefs.ftp.url) { adrdata^.prefs.ftp.url = ""}}; bundle { //localFolder prefs -- if you want to override the defaults, 8/25/10 by DW if not defined (adrdata^.prefs.localFolder) { new (tabletype, @adrdata^.prefs.localFolder)}; if not defined (adrdata^.prefs.localFolder.enabled) { adrdata^.prefs.localFolder.enabled = false}; if not defined (adrdata^.prefs.localFolder.folder) { adrdata^.prefs.localFolder.folder = ""}; if not defined (adrdata^.prefs.localFolder.url) { adrdata^.prefs.localFolder.url = ""}}; <<bundle //headerImage <<if not defined (adrdata^.prefs.headerImage) <<new (tabletype, @adrdata^.prefs.headerImage) <<if not defined (adrdata^.prefs.headerImage.enabled) <<adrdata^.prefs.headerImage.enabled = false <<if not defined (adrdata^.prefs.headerImage.url) <<adrdata^.prefs.headerImage.url = "" <<if not defined (adrdata^.prefs.headerImage.alt) <<adrdata^.prefs.headerImage.alt = "" <<if not defined (adrdata^.prefs.headerImage.title) <<adrdata^.prefs.headerImage.title = "" <<if not defined (adrdata^.prefs.headerImage.context) <<adrdata^.prefs.headerImage.context = "" <<if not defined (adrdata^.prefs.headerImage.width) <<adrdata^.prefs.headerImage.width = 0 <<if not defined (adrdata^.prefs.headerImage.height) <<adrdata^.prefs.headerImage.height = 0 <<if not defined (adrdata^.prefs.headerImage.when) <<adrdata^.prefs.headerImage.when = date (0) <<bundle //search <<if not defined (adrdata^.prefs.search) <<new (tabletype, @adrdata^.prefs.search) <<if not defined (adrdata^.prefs.search.enabled) <<adrdata^.prefs.search.enabled = false <<if not defined (adrdata^.prefs.search.today) <<adrdata^.prefs.search.today = clock.now () <<if not defined (adrdata^.prefs.search.ctcalls) <<adrdata^.prefs.search.ctcalls = 0 <<if not defined (adrdata^.prefs.search.ctcallstoday) <<adrdata^.prefs.search.ctcallstoday = 0 <<if not defined (adrdata^.prefs.search.cthistory) <<adrdata^.prefs.search.cthistory = 0 <<if not defined (adrdata^.prefs.search.history) <<new (tabletype, @adrdata^.prefs.search.history) <<bundle //nightlyEmail <<if not defined (adrdata^.prefs.nightlyEmail) <<new (tabletype, @adrdata^.prefs.nightlyEmail) <<if not defined (adrdata^.prefs.nightlyEmail.enabled) <<adrdata^.prefs.nightlyEmail.enabled = true <<if not defined (adrdata^.prefs.nightlyEmail.hourToSend) <<adrdata^.prefs.nightlyEmail.hourToSend = 22 <<if not defined (adrdata^.prefs.nightlyEmail.subscribers) <<new (tabletype, @adrdata^.prefs.nightlyEmail.subscribers) <<if not defined (adrdata^.prefs.nightlyEmail.whenLastSend) <<adrdata^.prefs.nightlyEmail.whenLastSend = date (0) <<if not defined (adrdata^.prefs.nightlyEmail.adrLastDay) <<adrdata^.prefs.nightlyEmail.adrLastDay = nil <<if not defined (adrdata^.prefs.nightlyEmail.subject) <<adrdata^.prefs.nightlyEmail.subject = "Nightly email from my weblog" <<if not defined (adrdata^.prefs.nightlyEmail.sender) <<adrdata^.prefs.nightlyEmail.sender = adrdata^.prefs.ownerEmail bundle { //rssHeader if not defined (adrdata^.prefs.rssHeader) { new (tabletype, @adrdata^.prefs.rssHeader)}; if not defined (adrdata^.prefs.rssHeader.title) { adrdata^.prefs.rssHeader.title = ""}; if not defined (adrdata^.prefs.rssHeader.link) { adrdata^.prefs.rssHeader.link = ""}; if not defined (adrdata^.prefs.rssHeader.description) { adrdata^.prefs.rssHeader.description = ""}; if not defined (adrdata^.prefs.rssHeader.language) { adrdata^.prefs.rssHeader.language = "en-us"}; if not defined (adrdata^.prefs.rssHeader.copyrightHolder) { adrdata^.prefs.rssHeader.copyrightHolder = ""}; if not defined (adrdata^.prefs.rssHeader.managingEditor) { adrdata^.prefs.rssHeader.managingEditor = ""}; if not defined (adrdata^.prefs.rssHeader.webMaster) { adrdata^.prefs.rssHeader.webMaster = ""}}; bundle { //ping if not defined (adrdata^.prefs.ping) { new (tabletype, @adrdata^.prefs.ping)}; if not defined (adrdata^.prefs.ping.enabled) { adrdata^.prefs.ping.enabled = true}; if not defined (adrdata^.prefs.ping.url) { adrdata^.prefs.ping.url = ""}; if not defined (adrdata^.prefs.ping.server) { adrdata^.prefs.ping.server = "xmlrpc://rpc.weblogs.com/RPC2"}; if not defined (adrdata^.prefs.ping.result) { new (tabletype, @adrdata^.prefs.ping.result)}; if not defined (adrdata^.prefs.ping.when) { adrdata^.prefs.ping.when = clock.now ()}}; <<bundle //directoryPlace <<if not defined (adrdata^.prefs.directoryPlace) <<new (tabletype, @adrdata^.prefs.directoryPlace) <<if not defined (adrdata^.prefs.directoryPlace.adrManilaWebsite) <<adrdata^.prefs.directoryPlace.adrManilaWebsite = nil <<if not defined (adrdata^.prefs.directoryPlace.msgnum) <<adrdata^.prefs.directoryPlace.msgnum = 0 bundle { //s3 -- 3/8/11 by DW if not defined (adrdata^.prefs.s3) { new (tabletype, @adrdata^.prefs.s3)}; if not defined (adrdata^.prefs.s3.enabled) { adrdata^.prefs.s3.enabled = false}; if not defined (adrdata^.prefs.s3.path) { adrdata^.prefs.s3.path = ""}; if not defined (adrdata^.prefs.s3.url) { adrdata^.prefs.s3.url = ""}}}; bundle { //stats if not defined (adrdata^.stats) { new (tabletype, @adrdata^.stats)}; if not defined (adrdata^.stats.whenLastUpdate) { adrdata^.stats.whenLastUpdate = date (0)}; if not defined (adrdata^.stats.ctUpdates) { adrdata^.stats.ctUpdates = 0}; if not defined (adrdata^.stats.whenLastBuild) { adrdata^.stats.whenLastBuild = date (0)}; if not defined (adrdata^.stats.ctBuilds) { adrdata^.stats.ctBuilds = 0}; if not defined (adrdata^.stats.ctStoryBuilds) { adrdata^.stats.ctStoryBuilds = 0}; if not defined (adrdata^.stats.storySerialNum) { adrdata^.stats.storySerialNum = 1}; if not defined (adrdata^.stats.whenLastStylesheetSave) { adrdata^.stats.whenLastStylesheetSave = date (0)}; if not defined (adrdata^.stats.ctStylesheetSaves) { adrdata^.stats.ctStylesheetSaves = 0}; if not defined (adrdata^.stats.urlStylesheet) { adrdata^.stats.urlStylesheet = ""}; if not defined (adrdata^.stats.urlBlogroll) { //6/13/10 by DW adrdata^.stats.urlBlogroll = ""}; if not defined (adrdata^.stats.urlHomeTemplate) { //6/13/10 by DW adrdata^.stats.urlHomeTemplate = ""}; if not defined (adrdata^.stats.urlStoryTemplate) { //6/13/10 by DW adrdata^.stats.urlStoryTemplate = ""}; if not defined (adrdata^.stats.whenLastBuildAfterSave) { //6/12/10 by DW adrdata^.stats.whenLastBuildAfterSave = date (0)}; if not defined (adrdata^.stats.ctBuildEverythings) { //6/14/10 by DW adrdata^.stats.ctBuildEverythings = 0}; if not defined (adrdata^.stats.flBuildToc) { //6/27/10 by DW adrdata^.stats.flBuildToc = true}; if not defined (adrdata^.stats.ctTocBuilds) { //6/27/10 by DW adrdata^.stats.ctTocBuilds = 0}; if not defined (adrdata^.stats.whenLastTocBuild) { //7/8/10 by DW adrdata^.stats.whenLastTocBuild = date (0)}; if not defined (adrdata^.stats.newPostTokens) { //7/3/10 by DW new (tabletype, @adrdata^.stats.newPostTokens)}; if not defined (adrdata^.stats.ctRealtimeUpdates) { //7/13/10 by DW adrdata^.stats.ctRealtimeUpdates = 0}; bundle { //s3 -- 3/8/11 by DW if not defined (adrdata^.stats.s3) { new (tabletype, @adrdata^.stats.s3)}; if not defined (adrdata^.stats.s3.ctWrites) { adrdata^.stats.s3.ctWrites = 0}; if not defined (adrdata^.stats.s3.ctErrors) { adrdata^.stats.s3.ctErrors = 0}}}; <<bundle //website <<if not defined (adrdata^.website) <<adrdata^.website = scripting2Suite.data.virginWebsite bundle { //system.temp sub-table local (adrsub = @system.temp.scripting2.server.users.[username]); if not defined (adrsub^) { new (tabletype, adrsub)}; if not defined (adrsub^.realtimeUpdates) { new (tabletype, @adrsub^.realtimeUpdates)}}; return (adrdata)}; bundle { //test code initUser ("davewiner")}
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.