trackback-procs.tcl
Does not contain a contract.
- Location:
- /packages/trackback/tcl/trackback-procs.tcl
Related Files
[ hide source ] | [ make this the default ]
File Contents
#packages/trackback?/tcl/trackback-procs.tcl ad_library { } namespace eval trackback {} d_proc -public trackback::new { -tb_url -blog_name -object_id -comment_id -user_id -creation_ip -content -comment_mime_type -is_live -title -context_id } { add new trackback } { set revision_id [general_comment_new \ -object_id $object_id \ -comment_id $comment_id \ -user_id "" \ -creation_ip $creation_ip \ -content $content \ -comment_mime_type $comment_mime_type \ -category "" \ -is_live $is_live \ -title $title \ -context_id $object_id] ns_log Debug "Trackback tb_url=$tb_url blog_name=$blog_name" db_dml add_trackback "" return $comment_id } ad_proc -public trackback::package_url {} { returns url of mount location for trackback package } { return [apm_package_url_from_key "trackback"] } ad_proc -public trackback::object_url { -object_id } { returns a fully qualified URL for trackback } { return [trackback::package_url]${object_id} } d_proc -public trackback::auto_ping { -url -content {-blog_name ""} {-title ""} {-excerpt ""} } { searches and entry for links and checks them for trackback support. If trackback is supported, the parameters are user to make a trackback ping. http://www.movabletype.org/docs/mttrackback.html @param url permanent url of weblog entry @param title title of weblog entry @param excerpt part of weblog entry } { # loop through links # hopefully this will grab anthing starting with http:// # maybe we need to check other stuff? set links_list [regexp -all -inline {http://[^\"^\s]*} $content] ns_log Debug "trackback: List of links $links_list" # get trackback url foreach link $links_list { set result_list [ad_httpget -url $link] ns_log debug "trackback: results $result_list" array set link_array $result_list if {[string equal $link_array(status) 200 ]} { #get trackback_info if available set ping_url_args [trackback::get_ping_url -data $link_array(page) -link $link] set ping_url [lindex $ping_url_args 0] set ping_method [lindex $ping_url_args 1] if {![empty_string_p $ping_url]} { trackback::send_ping -ping_url $ping_url \ -excerpt $excerpt \ -url $url \ -title $title \ -blog_name $blog_name \ -method $ping_method } } } } d_proc -public trackback::get_ping_url { -data -link } { searches for trackback information @author Dave Bauer dave@thedesignexperience.org @creation-date 2003-04-14 @param data html content to search @param link URL of item linked to, used to find the correct trackback URL if more than one trackback RDF section is in data @return ping_url URL of trackback link for the content provided or empty string if no trackabck info is found } { set ping_url "" set method "" foreach rdf_data [regexp -all -inline {<rdf:Description.*?/>} $data] { # find dc:identifier tag and compare to link passed in # if it matches, look for trackback:ping or fall back to # about ns_log debug " trackback::get_ping_url rdf_data $rdf_data" if {[regexp {trackback:ping=\"([^"]+)\"} $rdf_data extra result]} { set ping_url $result set method POST } elseif {[regexp {about=\"([^"]+)\"} $rdf_data extra result]} { set ping_url $result set method GET } else { set ping_url "none" set method "none" } } return [list $ping_url $method] } d_proc -public trackback::send_ping { -ping_url -url {-excerpt ""} {-title "" } {-blog_name ""} {-method "POST"} } { sends a trackback ping. returns status code if successful, or error message if unsuccessful @author Dave Bauer dave@thedesignexperience.org @creation-date 2003-04-14 @param ping_url URL to send ping to @param url URL ping is from @param excerpt Short text from URL referring to ping_url @param title title of URL } { ns_log debug "trackback: ping_url=$ping_url method=$method" # POST or GET to trackback ping url set query_set [ns_set create] ns_set put $query_set url $url if {[string equal $method GET]} { set form_vars [export_vars {url excerpt title blog_name}] ns_log debug "trackback: full url = ${ping_url}&${form_vars}" # old style GET set result [ns_httpget ${ping_url}&${form_vars} 60] ns_log debug "trackback: trackback returned: $result" } else { #must be POST set form_vars [export_vars { url }] if {![empty_string_p $excerpt]} { ns_set put $query_set excerpt $excerpt } if {![empty_string_p $title]} { ns_set put $query_set title $title } if {![empty_string_p $blog_name]} { ns_set put $query_set blog_name $blog_name } if {[catch {[ns_httppost $ping_url "" $query_set]} result]} { ns_log debug "trackback: trackback returned: $result" } } return $result }