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

system.verbs.builtins.radio.init

<<Changes
	<<8/21/04; 9:39:47 AM by SK
		<<Init user.radio.prefs.flNewsPageSortNewestFirst to true, preserving current behavior.  Linked to radio.html.viewNewsItems change that allows sorting by oldest or newest first.
	<<1/21/03; 7:54:01 AM by DW
		<<New callbacks for RSS file-writing, see radio.weblog.writeRssFile.
	<<12/22/02; 12:57:37 PM by JES
		<<Init user.radio.prefs.flOpenHomePageAtStartup to true, preserving current behavior.
	<<12/13/02; 9:11:41 AM by DW
		<<Initialize path for RSD file, user.radio.prefs.rsdXmlFilePath.
	<<11/5/02; 10:36:26 AM by DW
		<<Initialize the mail-from-aggregator feature -- call radio.aggregator.mailAggregator.init.
	<<10/27/02; 3:46:08 AM by JES
		<<On MacOS X, the default value of user.radio.prefs.flUseFileUrls is now false, since different browsers (and different versions of IE) support file URLs differently.
	<<6/12/02; 12:31:54 AM by JES
		<<Init the user.radio.callbacks.beforeWeblogPostForm and user.radio.callbacks.afterWeblogPostForm callback tables.
	<<5/8/02; 9:42:38 AM by DW
		<<Init user.radio.callbacks.writeRssFile.
	<<4/9/02; 4:15:18 PM by DW
		<<Initialize user.radio.prefs.flUpstreamDirectoryOpml.
	<<3/3/02; 12:44:31 PM by DW
		<<Init user.radio.prefs.flWebBugSimulator, call radio.aggregator.webBugSimulator.init.
	<<2/25/02; 7:05:59 PM by JES
		<<Initialize user.radio.prefs.weblogUpdates as a copy of weblogUpdates.data.
	<<2/18/02; 5:35:38 PM by DW
		<<Init user.radio.prefs.flUpstreamOnlyAfterPublish.
	<<2/11/02; 5:03:56 PM by DW
		<<Init user.radio.callbacks.firewall.
	<<2/8/02; 3:07:50 PM by DW
		<<Initialize user.radio.stats.dateLastUpdate.
	<<1/21/02; 7:43:46 AM by DW
		<<Init system.temp.radio.pingAfterUpstream.
	<<1/10/02; 12:55:09 PM by JES
		<<Changed ctStoriesOnNewsPage to 100.
	<<1/9/02; 12:27:37 PM by PBS
		<<New pref for disabling file:/// URLs: user.radio.prefs.flUseFileUrls.
	<<1/8/02; 7:35:54 PM by JES
		<<When not upgrading from 7.0.1, initialize user.radio.prefs.enclosures.flDownloadsEnabled to false.
	<<1/8/02; 6:35:32 PM by JES
		<<Set the correct path for user.radio.prefs.servicesXmlFilePath.
	<<1/7/02; 11:19:37 PM by JES
		<<Initialize user.radio.prefs.security.allowRemoteSystemPageAccess to false.
	<<1/3/02; 12:35:17 PM by DW
		<<Init user.radio.prefs.flEmptyLogsFolderOnStartup.
	<<12/31/01; 6:39:42 PM by JES
		<<Initialize user.radio.prefs.flLogThemeUpdates to true.
	<<12/31/01; 1:19:03 AM by JES
		<<Initialize user.radio.prefs.flUpdateThemesHourly to true.
	<<12/23/01; 11:29:44 PM by JES
		<<Init user.radio.prefs.browserBasedEditorSize to 9.
	<<12/19/01; 3:05:22 PM by JES
		<<Init user.radio.prefs.flLogWeblogPublish to false, instead of true, for new 7.1 (non-upgrading) users.
	<<12/19/01; 11:01:41 AM by JES
		<<Init user.radio.prefs.flNewsPageReturnAfterPost to false.
	<<12/18/01; 9:00:27 AM by DW
		<<Init user.radio.prefs.flLegacyUrlRedirects.
	<<12/17/01; 7:07:33 PM by DW
		<<Initialize user.radio.prefs.flBackupRendering and user.radio.prefs.renderingBackupFolder.
	<<12/16/01; 8:59:19 AM by DW
		<<Initialize user.radio.prefs.flBuildWeblogMonthNightly.
	<<12/14/01; 8:34:15 PM by DW
		<<Initialize user.radio.prefs.flWeblogArchive, user.radio.prefs.flLogWeblogArchive and user.radio.prefs.weblogArchiveFolder.
	<<12/6/01; 8:26:09 PM by DW
		<<Initialize user.radio.prefs.flLogWeblogsComPing.
	<<12/5/01; 3:57:41 PM by JES
		<<Only initialize websites.["#ftpSite"].url if user.radio.prefs.usernum is defined.
	<<12/5/01; 12:37:23 AM by JES
		<<Initialize items in the websites.["#ftpSite"] table.
	<<12/2/01; 8:46:24 AM by DW
		<<Initialize user.radio.settings.whenInstalled and user.radio.settings.flTrialVersion.
		<<Initialize user.radio.prefs.serialnumber.
	<<12/1/01; 11:33:14 AM by DW
		<<Init user.radio.settings.flPasswordStoredInCloud to false.
	<<11/27/01; 12:35:19 PM by DW
		<<Init system.temp.radio.recentlyWrittenWwwFiles.
	<<11/27/01; 12:17:39 PM by DW
		<<Init user.callbacks.fileWriteWholeFile, user.callbacks.fileSetModified.
	<<11/23/01; 4:42:14 PM by JES
		<<Init user.radio.prefs.flNewsPageDeleteCheckboxesDefault. If user.radio.prefs.newsPageDeleteCheckboxesDefault, copy its value, otherwise init to false.
	<<11/22/01; 7:52:22 PM by DW
		<<Init user.radio.settings.statusCenter.
	<<11/21/01; 11:00:06 AM by PBS
		<<Init user.radio.prefs.upstream.secsBetweenChecks -- default is 10 seconds.
	<<11/21/01; 1:27:30 AM by JES
		<<Init user.radio.prefs.upstream.folder to the new upstream folder -- the www folder.
	<<11/19/01; 2:52:57 PM by JES
		<<Initialize user.radio.prefs.flSystemEditor to false.
	<<11/9/01; 10:15:45 PM by DW
		<<Initialize user.radio.prefs.flLogHotlistReload.
		<<Comment initialization of user.radio.prefs.flLogNewSources.
	<<11/5/01; 12:06:58 AM by JES
		<<Init user.webserver.postFilters.addToServerLog.
	<<10/31/01; 2:58:39 PM by JES
		<<Commented out initialization of user.radio.stats.flNotifyWorkgroupOfNewStory.
	<<10/28/01; 2:54:08 AM by JES
		<<Moved initialization of writing services XML to after initializing user.radio.prefs.upstream. This is necessary because we need to call radio.weblog.init when initializing the path to save servicesXml, but radio.weblog.init references user.radio.prefs.upstream.folder.
	<<10/21/01; 10:46:59 AM by JES
		<<Init prefs for saving myServices.opml.
	<<10/19/01; 4:53:48 AM by JES
		<<Init user.radio.callbacks.downloadEnclosure.
	<<10/19/01; 3:19:46 AM by JES
		<<Init enclosure downloading prefs.
	<<10/18/01; 6:07:14 PM by JES
		<<Init user.radio.prefs.flBehindFirewall to false. Delete obsolete pref: user.radio.prefs.maxOutputItemsPerChannel.
	<<10/18/01; 12:17:57 PM by JES
		<<Make sure the port 5335 inetd daemon is running, if enabled, and not offline.
	<<10/18/01; 2:27:13 AM by JES
		<<Init user.radio.prefs.flLogNightlyUpdate.
		<<Init user.radio.prefs.flReadGlobalGlossaryNightly.
		<<Init user.radio.prefs.flReloadHotlistNightly.
	<<10/16/01; 6:57:03 PM by DW
		<<Initialize user.radio.prefs.defaultCloud. 
		<<Updated initialization of user.radio.prefs.rssCloud to point to radio.xmlstoragesystem.com.
	<<10/16/01; 3:36:32 PM by JES
		<<If user.callbacks.tcpSetOffline is undefined, create the table.
	<<10/16/01; 12:56:36 PM by DW
		<<system.temp.radio was being initialized twice.
		<<Make sure the script in user.callbacks.tcpSetOffline is installed so we can ping the cloud when the user goes offline or comes back online. Also install script in user.callbacks.shutdown.
	<<10/7/01; 7:58:28 PM by JES
		<<Leave radio.data.flRebuildMenus in place, but set to false when rebuilding menus. This makes maintainence of the menus easier.
	<<9/23/01; 4:11:14 AM by JES
		<<If radio.data.flRebuildMenus is defined, rebuild the menu bar.
	<<11/8/01; 11:30:08 PM by PBS
		<<Set up callbacks for systemTray2Click and systemTrayRightClick.
bundle { //init prefs
	if not defined (user.radio.prefs) {
		new (tabletype, @user.radio.prefs)};
	if not defined (user.radio.prefs.editors) {
		new (tabletype, @user.radio.prefs.editors);
		user.radio.prefs.editors.["text/x-opml"] = frontier.getprogrampath ()};
	if not defined (user.radio.prefs.passwords) {
		new (tabletype, @user.radio.prefs.passwords)};
	if not defined (user.radio.prefs.imgFileCreator) {
		user.radio.prefs.imgFileCreator = user.html.prefs.imgFileCreator};
	if not defined (user.radio.prefs.wwwfolder) {
		if defined (user.playlist.prefs.wwwfolder) {
			user.radio.prefs.wwwfolder = user.playlist.prefs.wwwfolder}
		else {
			user.radio.prefs.wwwfolder = file.folderFromPath (Frontier.getFilePath ()) + "www" + file.getPathChar ()};
		file.surefolder (user.radio.prefs.wwwfolder)};
	if not defined (user.radio.prefs.typesToRender) {
		new (tabletype, @user.radio.prefs.typesToRender);
		<<user.radio.prefs.typesToRender.["text/html"] = true
		user.radio.prefs.typesToRender.["text/plain"] = true;
		user.radio.prefs.typesToRender.["text/x-opml"] = true};
	if not defined (user.radio.prefs.indexFileNames) {
		new (tabletype, @user.radio.prefs.indexFileNames);
		user.radio.prefs.indexFileNames.fname1 = "index.opml";
		user.radio.prefs.indexFileNames.fname2 = "index.txt";
		user.radio.prefs.indexFileNames.fname3 = "index.html"};
	if not defined (user.radio.prefs.browserBasedEditorSize) {
		user.radio.prefs.browserBasedEditorSize = 9};
	if not defined (user.radio.prefs.flBehindFirewall) {
		user.radio.prefs.flBehindFirewall = false};
	if not defined (user.radio.prefs.flDirectoryListings) {
		user.radio.prefs.flDirectoryListings = true};
	if not defined (user.radio.prefs.flTitleOnHomePage) {
		user.radio.prefs.flTitleOnHomePage = false};
	if not defined (user.radio.prefs.flAddToDailyLogDatabase) {
		user.radio.prefs.flAddToDailyLogDatabase = true};
	if not defined (user.radio.prefs.flLogWeblogPublish) {
		if defined (myUserLandData.prefs.flLogBlogPublish) {
			user.radio.prefs.flLogWeblogPublish = myUserLandData.prefs.flLogBlogPublish}
		else {
			user.radio.prefs.flLogWeblogPublish = false}};
	if not defined (user.radio.prefs.flLogThemeUpdates) {
		user.radio.prefs.flLogThemeUpdates = true};
	<<if not defined (user.radio.prefs.flLogNewSources)
		<<if defined (myUserLandData.prefs.flLogNewSources)
			<<user.radio.prefs.flLogNewSources = myUserLandData.prefs.flLogNewSources
		<<else
			<<user.radio.prefs.flLogNewSources = true
	if not defined (user.radio.prefs.flLogHotlistReload) {
		user.radio.prefs.flLogHotlistReload = true};
	if not defined (user.radio.prefs.flLogWeblogsComPing) {
		user.radio.prefs.flLogWeblogsComPing = true};
	if not defined (user.radio.prefs.flUpdateThemesHourly) {
		user.radio.prefs.flUpdateThemesHourly = true};
	if not defined (user.radio.prefs.flSystemEditor) {
		user.radio.prefs.flSystemEditor = false};
	if not defined (user.radio.prefs.maxDataFiles) {
		user.radio.prefs.maxDataFiles = 3};
	if not defined (user.radio.prefs.ctStoriesOnNewsPage) {
		if defined (myUserLandData.prefs.ctStoriesOnHomePage) {
			user.radio.prefs.ctStoriesOnNewsPage = myUserLandData.prefs.ctStoriesOnHomePage}
		else {
			user.radio.prefs.ctStoriesOnNewsPage = 100}};
	if not defined (user.radio.prefs.flNewsPageDeleteCheckboxesDefault) {
		if defined (user.radio.prefs.newsPageDeleteCheckboxesDefault) {
			user.radio.prefs.flNewsPageDeleteCheckboxesDefault = user.radio.prefs.newsPageDeleteCheckboxesDefault;
			delete (@user.radio.prefs.newsPageDeleteCheckboxesDefault)}
		else {
			user.radio.prefs.flNewsPageDeleteCheckboxesDefault = false}};
	if not defined (user.radio.prefs.flNewsPageReturnAfterPost) {
		user.radio.prefs.flNewsPageReturnAfterPost = false};
	if not defined (user.radio.prefs.flCacheNewsItemsPage) {
		if defined (myUserLandData.prefs.flCacheStoriesPage) {
			user.radio.prefs.flCacheNewsItemsPage = myUserLandData.prefs.flCacheStoriesPage}
		else {
			user.radio.prefs.flCacheNewsItemsPage = true}};
	if not defined (user.radio.prefs.flNewsPageSortNewestFirst) {
		user.radio.prefs.flNewsPageSortNewestFirst=true};
	if not defined (user.radio.prefs.flSaveDatabasesEveryMinute) {
		user.radio.prefs.flSaveDatabasesEveryMinute = true};
	if not defined (user.radio.prefs.weblogArchiveFolder) {
		local (pc = file.getpathchar ());
		user.radio.prefs.weblogArchiveFolder = frontier.pathstring + "backups" + pc + "weblogArchive" + pc};
	if not defined (user.radio.prefs.flWeblogArchive) {
		user.radio.prefs.flWeblogArchive = false};
	if not defined (user.radio.prefs.flLogWeblogArchive) {
		user.radio.prefs.flLogWeblogArchive = false};
	if not defined (user.radio.prefs.flBuildWeblogMonthNightly) {
		user.radio.prefs.flBuildWeblogMonthNightly = true};
	if not defined (user.radio.prefs.flBackupRendering) {
		user.radio.prefs.flBackupRendering = false};
	if not defined (user.radio.prefs.renderingBackupFolder) {
		local (pc = file.getpathchar ());
		user.radio.prefs.renderingBackupFolder = frontier.pathstring + "backups" + pc + "rendering" + pc};
	if not defined (user.radio.prefs.flLegacyUrlRedirects) {
		user.radio.prefs.flLegacyUrlRedirects = true};
	if not defined (user.radio.prefs.flEmptyLogsFolderOnStartup) {
		user.radio.prefs.flEmptyLogsFolderOnStartup = true};
	if not defined (user.radio.prefs.flUpstreamOnlyAfterPublish) {
		user.radio.prefs.flUpstreamOnlyAfterPublish = false};
	if not defined (user.radio.prefs.serialnumber) {
		user.radio.prefs.serialnumber = ""};
	if not defined (user.radio.prefs.flUseFileUrls) {
		user.radio.prefs.flUseFileUrls = (not system.environment.isCarbon)};
	if not defined (user.radio.prefs.flWebBugSimulator) {
		user.radio.prefs.flWebBugSimulator = true};
	if not defined (user.radio.prefs.flUpstreamDirectoryOpml) {
		user.radio.prefs.flUpstreamDirectoryOpml = false};
	if not defined (user.radio.prefs.flOpenHomePageAtStartup) {
		user.radio.prefs.flOpenHomePageAtStartup = true};
	bundle { //init defaultCloud
		if not defined (user.radio.prefs.defaultCloud) {
			new (tabletype, @user.radio.prefs.defaultCloud)};
		if not defined (user.radio.prefs.defaultCloud.flDebug) {
			user.radio.prefs.defaultCloud.flDebug = false};
		if not defined (user.radio.prefs.defaultCloud.path) {
			user.radio.prefs.defaultCloud.path = "/RPC2"};
		if not defined (user.radio.prefs.defaultCloud.port) {
			user.radio.prefs.defaultCloud.port = 80};
		if not defined (user.radio.prefs.defaultCloud.protocol) {
			user.radio.prefs.defaultCloud.protocol = "xml-rpc"};
		if not defined (user.radio.prefs.defaultCloud.rpcPath) {
			user.radio.prefs.defaultCloud.rpcPath = "/RPC2"};
		if not defined (user.radio.prefs.defaultCloud.server) {
			user.radio.prefs.defaultCloud.server = "radio.xmlstoragesystem.com"};
		if not defined (user.radio.prefs.defaultCloud.soapAction) {
			user.radio.prefs.defaultCloud.soapAction = "/xmlStorageSystem"}};
	bundle { //init rssCloud
		if not defined (user.radio.prefs.rssCloud) {
			if defined (myUserLandData.prefs.rssCloud) {
				user.radio.prefs.rssCloud = myUserLandData.prefs.rssCloud}
			else {
				new (tabletype, @user.radio.prefs.rssCloud)}};
		if not defined (user.radio.prefs.rssCloud.server) {
			user.radio.prefs.rssCloud.server = "radio.xmlstoragesystem.com"};
		if not defined (user.radio.prefs.rssCloud.port) {
			user.radio.prefs.rssCloud.port = 80};
		if not defined (user.radio.prefs.rssCloud.registerProcedure) {
			user.radio.prefs.rssCloud.registerProcedure = "xmlStorageSystem.rssPleaseNotify"};
		if not defined (user.radio.prefs.rssCloud.path) {
			user.radio.prefs.rssCloud.path = "/RPC2"};
		if not defined (user.radio.prefs.rssCloud.protocol) {
			user.radio.prefs.rssCloud.protocol = "xml-rpc"}};
	bundle { //init flags for overnight tasks
		if not defined (user.radio.prefs.flReloadHotlistNightly) {
			user.radio.prefs.flReloadHotlistNightly = true};
		if not defined (user.radio.prefs.flUpdateDatabaseNightly) {
			if defined (myUserLandData.prefs.flUpdateNightly) {
				user.radio.prefs.flUpdateDatabaseNightly = myUserLandData.prefs.flUpdateNightly}
			else {
				user.radio.prefs.flUpdateDatabaseNightly = true}};
		if not defined (user.radio.prefs.flLogNightlyUpdate) {
			if defined (myUserLandData.prefs.flLogNightlyUpdate) {
				user.radio.prefs.flLogNightlyUpdate = myUserLandData.prefs.flLogNightlyUpdate}
			else {
				user.radio.prefs.flLogNightlyUpdate = true}}};
	bundle { //init enclosure prefs
		if not defined (user.radio.prefs.enclosures) {
			new (tableType, @user.radio.prefs.enclosures)};
		if not defined (user.radio.prefs.enclosures.flDownloadsEnabled) {
			if defined (myUserLandData.prefs.flEnclosureDownloadsEnabled) {
				user.radio.prefs.enclosures.flDownloadsEnabled = myUserLandData.prefs.flEnclosureDownloadsEnabled}
			else {
				user.radio.prefs.enclosures.flDownloadsEnabled = false}};
		if not defined (user.radio.prefs.enclosures.flLogDownloads) {
			if defined (myUserLandData.prefs.flLogEnclosureDownloads) {
				user.radio.prefs.enclosures.flLogDownloads = myUserLandData.prefs.flLogEnclosureDownloads}
			else {
				user.radio.prefs.enclosures.flLogDownloads = true}};
		if not defined (user.radio.prefs.enclosures.hourToStartDownloads) {
			if defined (myUserLandData.prefs.hourToStartDownloads) {
				user.radio.prefs.enclosures.hourToStartDownloads = myUserLandData.prefs.hourToStartDownloads}
			else {
				user.radio.prefs.enclosures.hourToStartDownloads = 1}};
		if not defined (user.radio.prefs.enclosures.hourToStopDownloads) {
			if defined (myUserLandData.prefs.hourToStopDownloads) {
				user.radio.prefs.enclosures.hourToStopDownloads = myUserLandData.prefs.hourToStopDownloads}
			else {
				user.radio.prefs.enclosures.hourToStopDownloads = 1}};
		if not defined (user.radio.prefs.enclosures.enclosureFolder) {
			if defined (myUserLandData.prefs.enclosureFolder) {
				user.radio.prefs.enclosures.enclosureFolder = myUserLandData.prefs.enclosureFolder}
			else {
				user.radio.prefs.enclosures.enclosureFolder = file.folderfrompath (frontier.getprogrampath ()) + "enclosures" + file.getpathchar ()}};
		if not defined (user.radio.prefs.enclosures.flOutlineEnclosures) {
			if defined (myUserLandData.prefs.flOutlineEnclosures) {
				user.radio.prefs.enclosures.flOutlineEnclosures = myUserLandData.prefs.flOutlineEnclosures}
			else {
				user.radio.prefs.enclosures.flOutlineEnclosures = true}}};
	bundle { //init weblogUpdates
		if not defined (user.radio.prefs.weblogUpdates) {
			user.radio.prefs.weblogUpdates = weblogUpdates.data}}};
bundle { //init drivers
	if not defined (user.radio.drivers) {
		new (tabletype, @user.radio.drivers)};
	if not defined (user.radio.drivers.upstream) {
		new (tabletype, @user.radio.drivers.upstream)}};
bundle { //thread prefs
	if not defined (user.radio.prefs.thread) {
		new (tabletype, @user.radio.prefs.thread)};
	if not defined (user.radio.prefs.thread.secsBetweenChecks) {
		if defined (user.playlist.data.upstream.secsBetweenChecks) {
			user.radio.prefs.thread.secsBetweenChecks = user.playlist.data.upstream.secsBetweenChecks}
		else {
			user.radio.prefs.thread.secsBetweenChecks = 10}};
	if not defined (user.radio.prefs.thread.minuteToDoHourlyScan) {
		if defined (myUserLandData.prefs.minuteToDoHourlyScan) {
			user.radio.prefs.thread.minuteToDoHourlyScan = myUserLandData.prefs.minuteToDoHourlyScan}
		else {
			user.radio.prefs.thread.minuteToDoHourlyScan = 0}};
	if defined (radio.thread.agents.getServerCapabilities) { //obsolete
		delete (@radio.thread.agents.getServerCapabilities)}};
bundle { //security prefs
	if not defined (user.radio.prefs.security) {
		if defined (myuserlanddata.prefs.security) {
			user.radio.prefs.security = myuserlanddata.prefs.security}
		else {
			new (tabletype, @user.radio.prefs.security)}};
	if not defined (user.radio.prefs.security.allowRemotePost) {
		user.radio.prefs.security.allowRemotePost = false};
	if not defined (user.radio.prefs.security.allowRemoteViewing) {
		user.radio.prefs.security.allowRemoteViewing = false};
	if not defined (user.radio.prefs.security.remotePassword) {
		user.radio.prefs.security.remotePassword = ""};
	if not defined (user.radio.prefs.security.remoteUsername) {
		user.radio.prefs.security.remoteUsername = "visitor"};
	if not defined (user.radio.prefs.security.requireRemoteLogin) {
		user.radio.prefs.security.requireRemoteLogin = true};
	if not defined (user.radio.prefs.security.allowRemoteSystemPageAccess) {
		user.radio.prefs.security.allowRemoteSystemPageAccess = false}};
bundle { //glossary prefs
	if not defined (user.radio.prefs.glossary) {
		new (tableType, @user.radio.prefs.glossary)};
	if not defined (user.radio.prefs.glossary.url) {
		if defined (myUserLandData.prefs.glossaryUrl) {
			user.radio.prefs.glossary.url = myUserLandData.prefs.glossaryUrl}
		else {
			user.radio.prefs.glossary.url = radio.data.globalGlossaryUrl}};
	if not defined (user.radio.prefs.glossary.logging) {
		if defined (myUserLandData.prefs.flLogGlossaryRead) {
			user.radio.prefs.glossary.logging = myUserLandData.prefs.flLogGlossaryRead}
		else {
			user.radio.prefs.glossary.logging = true}};
	if not defined (user.radio.prefs.glossary.flReadNightly) {
		user.radio.prefs.glossary.flReadNightly = true}};
bundle { //responder
	if string (user.webserver.responders.default.methods.any) == "on any (pta) {\r\treturn (playlist.filesystemResponder (pta))}" {
		local (s = "on any (pta) {\r\treturn (radio.webserver.responder (pta))}");
		script.newScriptObject (s, @user.webserver.responders.default.methods.any)}};
bundle { //port 5335 listener (calls builtins.webserver.server)
	if not defined (user.inetd.config.http2) {
		new (tableType, @user.inetd.config.http2);
		user.inetd.config.http2.count = 10;
		user.inetd.config.http2.daemon = @webserver.server;
		user.inetd.config.http2.noWait = true;
		user.inetd.config.http2.port = radio.data.daemonPort;
		user.inetd.config.http2.startup = user.inetd.config.http.startup;
		user.inetd.config.http2.timeout = 30};
	if user.inetd.config.http2.startup {
		if not tcp.isOffline () {
			if not inetd.isDaemonRunning (@user.inetd.config.http2) {
				inetd.startOne (@user.inetd.config.http2)}}}};
bundle { //upstreaming prefs
	if not defined (user.radio.prefs.upstream) {
		new (tabletype, @user.radio.prefs.upstream)};
	if not defined (user.radio.prefs.upstream.enabled) {
		if defined (user.playlist.data.upstream.enabled) {
			user.radio.prefs.upstream.enabled = user.playlist.data.upstream.enabled}
		else {
			user.radio.prefs.upstream.enabled = false}};
	if not defined (user.radio.prefs.upstream.folder) {
		<<if defined (user.playlist.prefs.wwwFolder)
			<<user.radio.prefs.upstream.folder = user.playlist.prefs.wwwFolder
		<<else
		<<user.radio.prefs.upstream.folder = radio.file.getSubFolder (radio.data.folderNames.wwwSystemSubfolderName + "/" + radio.data.folderNames.wwwUpstreamSubfolderName)
		user.radio.prefs.upstream.folder = user.radio.prefs.wwwFolder;
		file.surefolder (user.radio.prefs.upstream.folder)};
	bundle { //new multi-server items
		if not defined (user.radio.prefs.upstream.servers) {
			new (tableType, @user.radio.prefs.upstream.servers)}};
	if not defined (user.radio.prefs.upstream.logging) {
		if defined (user.playlist.data.upstream.logging) {
			user.radio.prefs.upstream.logging = user.playlist.data.upstream.logging}
		else {
			user.radio.prefs.upstream.logging = true}};
	if not defined (user.radio.prefs.upstream.secsBetweenChecks) { //PBS 11/21/01
		user.radio.prefs.upstream.secsBetweenChecks = 10};
	<<bundle //obsolete items to port?
		<<if not defined (user.radio.prefs.upstream.timeLastUpload)
			<<user.radio.prefs.upstream.timeLastUpload = date (0)
		<<if not defined (user.radio.prefs.upstream.timeLastServerCapabilities)
			<<user.radio.prefs.upstream.timeLastServerCapabilities = date (0)
		<<if not defined (user.radio.prefs.upstream.magicFolders)
			<<if defined (user.playlist.data.upstream.magicFolders)
				<<user.radio.prefs.upstream.magicFolders = user.playlist.data.upstream.magicFolders
			<<else
				<<new (tabletype, @user.radio.prefs.upstream.magicFolders)
		<<if not defined (user.radio.prefs.upstream.xmlStorageSystem)
			<<user.radio.prefs.upstream.xmlStorageSystem = xmlStorageSystem.data
	bundle { //delete obsolete prefs
		if defined (user.radio.prefs.upstream.account) {
			delete (@user.radio.prefs.upstream.account)};
		if defined (user.radio.prefs.upstream.timeoutSeconds) {
			delete (@user.radio.prefs.upstream.timeoutSeconds)};
		if defined (user.radio.prefs.upstream.maxFilesPerMessage) {
			delete (@user.radio.prefs.upstream.maxFilesPerMessage)};
		if defined (user.radio.prefs.upstream.packetSizeLimit) {
			delete (@user.radio.prefs.upstream.packetSizeLimit)};
		if defined (user.radio.settings.wwwUpstreamFolderUrl) { //obsolete
			delete (@user.radio.settings.wwwUpstreamFolderUrl)};
		if defined (user.radio.prefs.maxOutputItemsPerChannel) {
			delete (@user.radio.prefs.maxOutputItemsPerChannel)}}};
bundle { //init servicesXml prefs -- must be done after upstreaming prefs
	<<10/28/01; 2:53:25 AM by JES
		<<This has to happen after upstreaming prefs because we need to call radio.weblog.init, which references user.radio.prefs.upstream.folder.
	if not defined (user.radio.prefs.flSaveServicesXml) {
		user.radio.prefs.flSaveServicesXml = true};
	if not defined (user.radio.prefs.servicesXmlFilePath) {
		local (pc = file.getPathChar ());
		with radio.data.foldernames, radio.data.filenames {
			user.radio.prefs.servicesXmlFilePath = radio.file.getRelativePath (user.radio.prefs.upstream.folder + wwwGemsSubFolderName + pc + servicesXmlFileName)}}};
		<<with radio.data.foldernames, radio.data.filenames
			<<user.radio.prefs.servicesXmlFilePath = radio.file.getRelativePath (user.radio.prefs.upstream.folder + "rss" + pc + "misc" + pc + servicesXmlFileName)
			<<user.radio.prefs.servicesXmlFilePath = wwwSystemSubfolderName + "/" + wwwUpstreamSubfolderName + "/" + wwwRssCategorySubfolderName + "/misc/" + servicesXmlFileName
bundle { //init user.radio.prefs.rsdXmlFilePath, 12/13/02 by DW
	if not defined (user.radio.prefs.rsdXmlFilePath) {
		user.radio.prefs.rsdXmlFilePath = radio.file.getRelativePath (user.radio.prefs.upstream.folder + radio.data.foldernames.wwwGemsSubFolderName + file.getPathChar () + radio.data.fileNames.weblogRsdFileName)}};
bundle { //callbacks
	if not defined (user.radio.callbacks) {
		new (tabletype, @user.radio.callbacks)};
	if not defined (user.radio.callbacks.addToDailyLogDatabase) {
		if defined (user.playlist.callbacks.addToDailyLogDatabase) {
			user.radio.callbacks.addToDailyLogDatabase = user.playlist.callbacks.addToDailyLogDatabase}
		else {
			new (tabletype, @user.radio.callbacks.addToDailyLogDatabase)}};
	if not defined (user.radio.callbacks.upstream) {
		if defined (user.playlist.callbacks.upstream) {
			user.radio.callbacks.upstream = user.playlist.callbacks.upstream}
		else {
			new (tabletype, @user.radio.callbacks.upstream)}};
	if not defined (user.radio.callbacks.upstreamFileWasDeleted) {
		if defined (user.playlist.callbacks.upstreamFileWasDeleted) {
			user.radio.callbacks.upstreamFileWasDeleted = user.playlist.callbacks.upstreamFileWasDeleted}
		else {
			new (tabletype, @user.radio.callbacks.upstreamFileWasDeleted)}};
	if not defined (user.radio.callbacks.downloadEnclosure) {
		if defined (myUserLandData.callbacks.downloadEnclosure) {
			user.radio.callbacks.downloadEnclosure = myUserLandData.callbacks.downloadEnclosure}
		else {
			new (tableType, @user.radio.callbacks.downloadEnclosure)}};
	if not defined (user.radio.callbacks.firewall) {
		new (tableType, @user.radio.callbacks.firewall)};
	if not defined (user.radio.callbacks.writeRssFile) {
		new (tableType, @user.radio.callbacks.writeRssFile)};
	if not defined (user.radio.callbacks.beforeWeblogPostForm) {
		new (tableType, @user.radio.callbacks.beforeWeblogPostForm)};
	if not defined (user.radio.callbacks.afterWeblogPostForm) {
		new (tableType, @user.radio.callbacks.afterWeblogPostForm)};
	bundle { //new callbacks, see radio.weblog.writeRssFile, 1/21/03 by DW
		if not defined (user.radio.callbacks.writeRssNamespace) {
			new (tableType, @user.radio.callbacks.writeRssNamespace)};
		if not defined (user.radio.callbacks.writeRssChannelElement) {
			new (tableType, @user.radio.callbacks.writeRssChannelElement)};
		if not defined (user.radio.callbacks.writeRssItemElement) {
			new (tableType, @user.radio.callbacks.writeRssItemElement)}}};
bundle { //init settings
	if not defined (user.radio.settings) {
		new (tabletype, @user.radio.settings)};
	if defined (user.radio.settings.flControlPanelExpanded) { //obsolete
		delete (@user.radio.settings.flControlPanelExpanded)};
	if not defined (user.radio.settings.minuteToDoNightlyTasks) {
		user.radio.settings.minuteToDoNightlyTasks = random (5, 55)};
	if not defined (user.radio.settings.files) {
		new (tabletype, @user.radio.settings.files)};
	if not defined (user.radio.settings.statusCenter) {
		new (tabletype, @user.radio.settings.statusCenter)};
	if not defined (user.radio.settings.statusCenter.whenMessageOfTheDayChanged) {
		user.radio.settings.statusCenter.whenMessageOfTheDayChanged = date (0)};
	if not defined (user.radio.settings.statusCenter.messageOfTheDay) {
		user.radio.settings.statusCenter.messageOfTheDay = ""};
	if not defined (user.radio.settings.flPasswordStoredInCloud) {
		user.radio.settings.flPasswordStoredInCloud = false};
	if not defined (user.radio.settings.whenInstalled) {
		user.radio.settings.whenInstalled = clock.now ()};
	if not defined (user.radio.settings.flTrialVersion) { //until a serial number is entered, all copies are Trial versions
		user.radio.settings.flTrialVersion = true};
	if not defined (user.radio.settings.flExpired) {
		user.radio.settings.flExpired = false}};
bundle { //init stats
	if not defined (user.radio.stats) {
		new (tabletype, @user.radio.stats)};
	if not defined (user.radio.stats.dateLastImageSave) {
		user.radio.stats.dateLastImageSave = date (0)};
	if not defined (user.radio.stats.dateLastHit) {
		user.radio.stats.dateLastHit = date (0)};
	if not defined (user.radio.stats.dateLastImageSave) {
		user.radio.stats.dateLastImageSave = date (0)};
	if not defined (user.radio.stats.dateLastHelpSave) {
		user.radio.stats.dateLastHelpSave = date (0)};
	if not defined (user.radio.stats.flNewStoryOpensInOutliner) {
		user.radio.stats.flNewStoryOpensInOutliner = false};
	if not defined (user.radio.stats.dateLastUpdate) {
		user.radio.stats.dateLastUpdate = date (0)}};
	<<if not defined (user.radio.stats.flNotifyWorkgroupOfNewStory)
		<<user.radio.stats.flNotifyWorkgroupOfNewStory = false
bundle { //init temp table
	if not defined (system.temp.radio) {
		new (tabletype, @system.temp.radio)};
	if not defined (system.temp.radio.hwCache) {
		new (tabletype, @system.temp.radio.hwCache)};
	if not defined (system.temp.radio.menus) {
		new (tabletype, @system.temp.radio.menus)};
	if not defined (system.temp.radio.datafiles) {
		new (tabletype, @system.temp.radio.datafiles)};
	if not defined (system.temp.radio.htmlCache) {
		new (tabletype, @system.temp.radio.htmlCache)};
	if not defined (system.temp.radio.upstreamSpecCache) {
		new (tabletype, @system.temp.radio.upstreamSpecCache)};
	if not defined (system.temp.radio.recentlyChangedFolders) {
		new (tabletype, @system.temp.radio.recentlyChangedFolders)};
	if not defined (system.temp.radio.misc) {
		new (tabletype, @system.temp.radio.misc)};
	if not defined (system.temp.radio.stats) {
		new (tabletype, @system.temp.radio.stats)};
	if not defined (system.temp.radio.stats.agentsTicks) {
		new (tabletype, @system.temp.radio.stats.agentsTicks)};
	if not defined (system.temp.radio.recentlyWrittenWwwFiles) {
		new (tabletype, @system.temp.radio.recentlyWrittenWwwFiles)};
	if not defined (system.temp.radio.pingAfterUpstream) {
		new (tabletype, @system.temp.radio.pingAfterUpstream)}};
bundle { //init the thread
	if not defined (user.scheduler.threads.radio) {
		user.scheduler.threads.radio = @radio.thread}};
bundle { //init callbacks
	if not defined (user.callbacks.tcpSetOffline) {
		new (tableType, @user.callbacks.tcpSetOffline)};
	if not defined (user.callbacks.tcpSetOffline.radio) {
		user.callbacks.tcpSetOffline.radio = @radio.callbacks.tcpSetOffline};
	if not defined (user.callbacks.shutdown.radio) {
		user.callbacks.shutdown.radio = @radio.callbacks.shutdown};
	if not defined (user.callbacks.systemTrayIcon2Click) { //PBS 11/08/01: new system tray callbacks
		new (tableType, @user.callbacks.systemTrayIcon2Click)};
	if not defined (user.callbacks.systemTrayIcon2Click.radio) {
		user.callbacks.systemTrayIcon2Click.radio = @radio.callbacks.systemTrayIcon2Click};
	if not defined (user.callbacks.systemTrayIconRightClick) {
		new (tableType, @user.callbacks.systemTrayIconRightClick)};
	if not defined (user.callbacks.systemTrayIconRightClick.radio) {
		user.callbacks.systemTrayIconRightClick.radio = @radio.callbacks.systemTrayIconRightClick};
	if not defined (user.callbacks.fileWriteWholeFile) {
		new (tabletype, @user.callbacks.fileWriteWholeFile)};
	if not defined (user.callbacks.fileWriteWholeFile.radio) {
		user.callbacks.fileWriteWholeFile.radio = @radio.file.writeFileCallback};
	if not defined (user.callbacks.fileSetModified) {
		new (tabletype, @user.callbacks.fileSetModified)};
	if not defined (user.callbacks.fileSetModified.radio) {
		user.callbacks.fileSetModified.radio = @radio.file.writeFileCallback}};
bundle { //init other things
	if not defined (user.webserver.prefs.ext2MIME.opml) {
		user.webserver.prefs.ext2MIME.opml = "text/x-opml"};
	if not defined (user.webserver.postFilters.addToServerLog) {
		user.webserver.postFilters.addToServerLog = @radio.log.addToServerLog};
	bundle { //init websites.["#ftpSite"] items
		local (adrftpsite = @websites.["#ftpSite"]);
		if defined (adrftpsite^) {
			if adrftpsite^.folder == "" {
				adrftpsite^.folder = user.radio.prefs.wwwFolder};
			if adrftpsite^.url == "" {
				if defined (user.radio.prefs.usernum) {
					adrftpsite^.url = string.replace (radio.data.cloudUrls.homePage, "<%usernum%>", string.padWithZeros (user.radio.prefs.usernum, 7))}}}};
	radio.aggregator.webBugSimulator.init ();
	radio.aggregator.mailAggregator.init ()};
bundle { //perform any necessary upgrades
	local (flrebuildmenus = false);
	if defined (user.menus.playlist) {
		delete (@user.menus.playlist);
		flrebuildmenus = true};
	if not defined (user.menus.radio) {
		user.menus.radio = @radio.menu;
		flrebuildmenus = true};
	if defined (radio.data.flRebuildMenus) {
		if radio.data.flRebuildMenus {
			menu.noSuite (); //reset the menu bar, no suite running
			radio.data.flRebuildMenus = false}};
	if flrebuildmenus {
		system.menus.buildMenuBar ()}}



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.