Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.trackback.changedPost
on changedPost (adrpost, flnew, posttext) {
<<Changes
<<7/14/03; 12:02:34 AM by JES
<<Factored the code that adds an outbound ping URL to the trackback sub-table for a post.
<<4/22/03; 6:57:13 PM by DW
<<Created. The post is either new or changed. We scan the text looking for URLs, and accumulate them in a trackback sub-table.
<<bundle //debugging
<<local (oldtarget = target.set (@scratchpad.trackbacks))
<<op.firstsummit ()
<<local (s)
<<if flnew
<<s = "New"
<<else
<<s = "Edit"
<<op.insert (s + ": " + nameof (adrpost^) + " " + date.timestring (), up)
<<target.set (oldtarget)
local (adrtrackback);
trackback.initPost (adrpost);
<<edit (adrpost) //debugging
adrtrackback = @adrpost^.trackback;
bundle { //add to the urls table
local (s = string.lower (posttext));
local (ix, ixsingle, ixdouble, chclose, fladd);
loop {
bundle { //set ix
ixsingle = string.patternmatch ("'http://", s);
ixdouble = string.patternmatch ("\"http://", s);
if (ixsingle == 0) and (ixdouble == 0) {
break};
if ixsingle == 0 {
ixsingle = infinity};
if ixdouble == 0 {
ixdouble = infinity};
if ixsingle < ixdouble {
ix = ixsingle;
chclose = "'"}
else {
ix = ixdouble;
chclose = "\""}};
s = string.delete (s, 1, ix);
posttext = string.delete (posttext, 1, ix);
ix = string.patternmatch (chclose, s);
if ix == 0 {
break};
url = string.mid (posttext, 1, ix - 1);
bundle { //init fladd
case string.nthfield (url, ".", string.countfields (url, ".")) {
"jpg";
"jpeg";
"gif";
"dtd";
"js" {
fladd = false}}
else {
fladd = true}};
if not ((url - "http://") contains "/") {
fladd = true;
url = url + "/"};
if url beginswith "http://127.0.0.1" { //2/19/03 by DW
fladd = false};
if fladd {
trackback.initOutboundUrl (adrpost, url)};
<<bundle //factored code
<<local (adrurl = @adrtrackback^.outbound.urls.[url])
<<if not defined (adrurl^)
<<new (tabletype, adrurl)
<<adrurl^.flPinged = false
<<adrurl^.flChecked = false
<<adrurl^.flSupportsTrackback = false
s = string.delete (s, 1, sizeof (url) + 1);
posttext = string.delete (posttext, 1, sizeof (url) + 1)}};
bundle { //loop over urls and find out if there's trackback support on the other end
local (adrurls = @adrtrackback^.outbound.urls, adrurl);
for adrurl in adrurls {
if not adrurl^.flChecked {
trackback.discoverPingInfo (adrurl);
adrurl^.flChecked = true}}}}
<<bundle //test code
<<local (adrpost = @newssiteManilaWebsite.["#discussionGroup"].messages.["0000005"])
<<changedPost (adrpost, false, string (adrpost^.newsItem.description))
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.