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

system.verbs.builtins.radio.trackback.threadScript

on threadScript (adrpost, adrblog=radio.weblog.init ()) {
	<<Changes
		<<8/21/03; 6:05:30 PM by JES
			<<Perform autodiscovery and pings in a try block to prevent error windows from popping up when a server times out or refuses a connection.
		<<8/5/03; 12:16:57 PM by JES
			<<Fixed a bug which could cause multiple TrackBack pings to be sent under certain circumstances.
		<<7/21/03; 1:42:49 AM by JES
			<<Created.
	if adrblog^.prefs.trackback.flEnabled {
		bundle { //if another thread is already handling this post, exit
			if not defined (system.temp.radio.misc.trackbackThreads) {
				new (tableType, @system.temp.radio.misc.trackbackThreads)};
			if defined (system.temp.radio.misc.trackbackThreads.[nameOf (adrpost^)]) {
				return};
			system.temp.radio.misc.trackbackThreads.[nameOf (adrpost^)] = true};
		if defined (adrpost^.link) {
			if sizeOf (adrpost^.link) > 0 {
				if not (string.lower (adrpost^.link) == "http://") {
					trackback.initOutboundUrl (adrpost, adrpost^.link)}}};
		try { //prevent error windows from popping up when autodiscovery fails
			trackback.changedPost (adrpost, false, string (adrpost^.text));
			local (adrurl);
			for adrurl in @adrpost^.trackback.outbound.urls {
				if (not adrurl^.flpinged) and adrurl^.flSupportsTrackback {
					try {
						radio.trackback.ping (adrblog, adrpost, adrurl)}
					else {
						adrurl^.errorstring = tryerror};
					adrurl^.flpinged = true}}};
		if defined (system.temp.radio.misc.trackbackThreads.[nameOf (adrpost^)]) {
			delete (@system.temp.radio.misc.trackbackThreads.[nameOf (adrpost^)])}};
	return}
<<bundle //test code
	<<local (adrblog = radio.weblog.init ())
	<<local (adrpost = @adrblog^.posts[sizeOf (weblogData.posts)])
	<<threadScript (adrpost, adrblog)



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.