«Changes «4/19/03; 6:38:04 AM by DW «Return the site list in OPML. local (minmessages = 10); //only sites with this number or more are in the OPML on stripNonAlpha (s) { local (i, ch, sout = ""); for i = 1 to sizeof (s) { ch = s [i]; if string.isalpha (ch) or string.isnumeric (ch) or (ch == " ") { sout = sout + ch}}; return (sout)}; local (adr, adrdiscuss, flinclude); local (xmltext = "", indentlevel = 0); local (adrcache = @system.temp.berkmansiteslistcache); bundle { //generate xmltext local (flbuild = false); if not defined (adrcache^) { new (tabletype, adrcache)}; if not defined (adrcache^.whenLastBuilt) { adrcache^.whenLastBuilt = clock.now () - (60 * 30)}; if not defined (adrcache^.ctCacheUses) { adrcache^.ctCacheUses = 0}; if number (clock.now () - adrcache^.whenLastBuilt) > (60 * 15) { //expires after fifteen minutes flbuild = true}; if flbuild { on add (s) { xmltext = xmltext + string.filledstring ("\t", indentlevel) + s + "\r"}; add (""); add (""); add (""); indentlevel++; bundle { //add head add (""); indentlevel++; add ("Example directory"); add ("Sat, 19 Apr 2003 11:04:47 GMT"); add ("" + date.netstandardstring (clock.now ()) + ""); add ("Weblogmaster"); add ("weblogmaster@cyber.law.harvard.edu"); add (""); add ("1"); add ("10"); add ("10"); add ("517"); add ("214"); add (""); indentlevel--}; bundle { //add body local (sortedsitenames); bundle { //fill sortedsitenames local (adr); new (tabletype, @sortedsitenames); for adr in @config.manila.sites { try {sortedsitenames.[stripNonAlpha (adr^^.["#newsSite"].siteName)] = adr^}}; local (oldtarget = target.set (@sortedsitenames)); table.sortby ("Name"); target.set (oldtarget)}; add (""); indentlevel++; for i = 1 to sizeof (sortedsitenames) { adr = sortedsitenames [i]; «msg (adr) if defined (adr^) { adrdiscuss = @adr^.["#discussionGroup"]; if defined (adrdiscuss^) { if sizeof (adrdiscuss^.messages) >= minmessages { flinclude = true}}}; if flinclude { add ("")}}; add (""); indentlevel--}; add (""); indentlevel--; adrcache^.whenLastBuilt = clock.now (); adrcache^.ctCacheUses = 0; adrcache^.xmltext = xmltext} else { adrcache^.ctCacheUses++; xmltext = adrcache^.xmltext}}; local (pta = html.getPageTableAddress ()); pta^.responseHeaders.["Content-Type"] = "text/xml"; pta^.autoParagraphs = false; pta^.clayCompatibility = false; pta^.activeUrls = false; pta^.processMacros = false; pta^.expandGlossaryItems = false; wp.newTextObject ("{bodytext}", @pta^.template); return (xmltext)