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

system.verbs.builtins.radio.backup.restoreAllPrefs

on restoreAllPrefs (adrReadFileCallback, adrfiles, adrStatusMsgCallback=nil) {
	<<Changes
		<<1/27/03; 3:56:04 PM by JES
			<<New optional parameter, adrStatusMsgCallback -- called with the name of the file currently being backed up.
		<<11/26/02; 10:31:46 PM by JES
			<<Created.
	on statusMsg (s) {
		if adrStatusMsgCallback != nil {
			try {adrStatusMsgCallback^ (s)}}};
	on readfile (partialpath) {
		local (fname = string.nthField (partialPath, "/", string.countFields (partialPath, "/")));
		statusMsg (fname + "...");
		adrReadFileCallback^ (partialpath)};
	local (adr);
	bundle { //make sure data files are open
		radio.weblog.init ();
		xml.aggregator.init ();
		weblogsCom.init ()};
	for adr in adrfiles {
		local (partialpath = nameOf (adr^));
		if partialpath beginsWith "prefs" {
			readFile (partialpath);
			local (adrdata = @system.temp.radioPrefsBackup);
			local (stringdest = string (adrdata^.directory.adrobject));
			stringdest = radio.backup.getAddress (stringdest);
			case stringdest {
				"services" {
					stringDest = "aggregatorData.services"};
				"prefs" {
					stringDest = "user.radio.prefs"}};
			<<"templates"
				<<radio.backup.restoreTemplates (@adrdata^.data)
				<<continue
			local (adrdest = address (stringdest));
			radio.backup.restorePrefTable (@adrdata^.data, adrdest)}}};
bundle { //test code
	local (backupFolder = user.radio.backup.prefs.folder);
	on readFile (partialpath) {
		if backupFolder beginsWith "http://" {
			return (tcp.httpReadUrl (backupFolder + partialpath))}
		else { //read from local filesystem
			local (f = backupFolder + string.replaceAll (partialPath, "/", file.getPathChar ()));
			return (file.readWholeFile (f))}};
	on importObject (partialpath) {
		if backupFolder beginsWith "http://" {
			table.xmlToTable (tcp.httpReadUrl (backupFolder + partialPath), @system.temp.radioPrefsBackup)}
		else { //read from local filesystem
			local (f = backupFolder + string.replaceAll (partialPath, "/", file.getPathChar ()));
			table.xmlToTable (file.readWholeFile (f), @system.temp.radioPrefsBackup)}};
	local (files);
	radio.backup.readDirectory (readfile ("files.xml"), @files);
	restoreAllPrefs (@importObject, @files, @msg)}



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.