case 7: // Show trackback echo '<div class="voters" id="voters">'; // AdSense do_banner_story(); print_story_tabs($tab_option); echo '<a href="' . $link->get_trackback() . '" title="' . _('URI para trackbacks') . '" class="tab-trackback-url"><img src="' . $globals['base_url'] . 'img/common/permalink.gif" alt="' . _('enlace trackback') . '" width="16" height="9"/> ' . _('dirección de trackback') . '</a>' . "\n"; echo '<fieldset><legend>' . _('lugares que enlazan esta noticia') . '</legend>'; echo '<ul class="tab-trackback">'; $trackbacks = $db->get_col("SELECT trackback_id FROM trackbacks WHERE trackback_link_id={$link->id} AND trackback_type='in' and trackback_status = 'ok' ORDER BY trackback_date DESC limit 50"); if ($trackbacks) { require_once mnminclude . 'trackback.php'; $trackback = new Trackback(); foreach ($trackbacks as $trackback_id) { $trackback->id = $trackback_id; $trackback->read(); echo '<li class="tab-trackback-entry"><a href="' . $trackback->url . '" rel="nofollow">' . $trackback->title . '</a> [' . preg_replace('/https*:\\/\\/([^\\/]+).*/', "\$1", $trackback->url) . ']</li>' . "\n"; } } echo '<li class="tab-trackback-technorati"><a href="http://technorati.com/search/' . urlencode($globals['link_permalink']) . '">' . _('Technorati') . '</a></li>' . "\n"; echo '<li class="tab-trackback-google"><a href="http://blogsearch.google.com/blogsearch?hl=es&q=link%3A' . urlencode($globals['link_permalink']) . '">' . _('Google') . '</a></li>' . "\n"; echo '<li class="tab-trackback-askcom"><a href="http://es.ask.com/blogsearch?q=' . urlencode($globals['link_permalink']) . '&t=a&search=Buscar&qsrc=2101&bql=any">' . _('Ask.com') . '</a></li>' . "\n"; echo '</ul>'; echo '</fieldset>'; echo '</div>'; break; } // echo '<div class="story-vertical-completion"> </div>'; echo '</div>'; echo '<!--' . "\n" . '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"' . "\n"; echo ' xmlns:dc="http://purl.org/dc/elements/1.1/"' . "\n";
if (empty($title) && empty($tb_url) && empty($blog_name)) { // If it doesn't look like a trackback at all... header('Location: ' . getmyFullurl("story", $tb_id)); exit; } if (!empty($tb_url) && !empty($title) && !empty($tb_url)) { header('Content-Type: text/xml; charset=UTF-8'); $title = htmlspecialchars(strip_tags($title)); $title = strlen($title) > 150 ? substr($title, 0, 150) . '...' : $title; $excerpt = strip_tags($excerpt); $excerpt = strlen($excerpt) > 200 ? substr($excerpt, 0, 200) . '...' : $excerpt; $trackres = new Trackback(); $trackres->link = $tb_id; $trackres->type = 'in'; $trackres->url = $tb_url; $dupe = $trackres->read(); if ($dupe) { trackback_response(1, $main_smarty->get_config_vars('PLIGG_Visual_Trackback_AlreadyPing')); } $contents = @file_get_contents($tb_url); if (!$contents) { trackback_response(1, $main_smarty->get_config_vars('PLIGG_Visual_Trackback_BadURL')); } $permalink = get_permalink($tb_id); $permalink_q = preg_quote($permalink, '/'); $pattern = "/<\\s*a.*href\\s*=[\"'\\s]*" . $permalink_q . "[\"'\\s]*.*>.*<\\s*\\/\\s*a\\s*>/i"; if (!preg_match($pattern, $contents)) { trackback_response(1, $main_smarty->get_config_vars('PLIGG_Visual_Trackback_NoReturnLink')); } $trackres->title = $title; $trackres->content = $excerpt;
if ($tbs = $db->get_col("select trackback_id from trackbacks where trackback_link_id = {$link->id} and trackback_status='pendent'")) { foreach ($tbs as $tb_id) { $tb = new Trackback(); $tb->id = $tb_id; if ($tb->read()) { $res = $tb->send($link); } } } // Send pingbacks for link inside the text preg_match_all('/([\\(\\[:\\.\\s]|^)(https*:\\/\\/[^ \\t\\n\\r\\]\\(\\)\\&]{5,70}[^ \\t\\n\\r\\]\\(\\)]*[^ .\\t,\\n\\r\\(\\)\\"\'\\]\\?])/i', $link->content, $matches); foreach ($matches[2] as $match) { $tb = new Trackback(); $tb->link = clean_input_url($match); $tb->link_id = $link->id; $tb->author = $link->author; if (!$tb->read()) { $tmp = new Link(); if (!$tmp->get($match, 2000, false)) { echo "couldn't get {$match}\n"; next; } if (!$tmp->pingback()) { echo "couldn't get pingback {$match}\n"; next; } $tb->link = clean_input_url($match); $tb->url = clean_input_url($tmp->trackback); $tb->send($link); } }
function do_trackbacks() { global $db, $globals; echo '<div id="trackback">'; echo '<h2><a href="' . get_trackback($globals['link_id']) . '" title="' . _('URI para trackbacks') . '">trackbacks</a></h2>'; $id = $globals['link_id']; $trackbacks = $db->get_col("SELECT trackback_id FROM trackbacks WHERE trackback_link_id={$id} AND trackback_type='in' ORDER BY trackback_date DESC"); echo '<ul>'; if ($trackbacks) { require_once mnminclude . 'trackback.php'; $trackback = new Trackback(); foreach ($trackbacks as $trackback_id) { $trackback->id = $trackback_id; $trackback->read(); echo '<li><a href="' . $trackback->url . '" title="' . $trackback->content . '">' . $trackback->title . '</a></li>'; } } else { echo '<li>' . _('(sin trackbacks)') . '</li>'; } echo '<li><img src="img/favicons/technorati.png" alt="' . _('enlaces technorati') . '" width="16" height="16"/> <a href="http://technorati.com/search/' . urlencode(get_permalink($globals['link_id'])) . '">' . _('según Technorati') . '</a></li>'; echo "</ul>\n"; echo '</div><!--html1:do_trackbacks-->'; }
function pingback_ping($args) { global $db, $globals; $pagelinkedfrom = clean_input_string($args[0]); //$pagelinkedfrom = str_replace('&', '&', $pagelinkedfrom); $pagelinkedto = clean_input_string($args[1]); $title = ''; $urlfrom = parse_url($pagelinkedfrom); $urltest = parse_url($pagelinkedto); if (!$urlfrom || !$urltest) { return new IXR_Error(0, 'Is there no link to us?'); } if ($urltest['host'] != get_server_name()) { return new IXR_Error(0, 'Is there no link to us?'); } $base_uri = preg_quote($globals['base_url'] . $globals['base_story_url'], '/'); $uri = preg_replace("/^{$base_uri}/", '', $urltest[path]); if (check_ban($globals['user_ip'], 'ip')) { syslog(LOG_NOTICE, "Meneame: pingback, IP is banned ({$globals['user_ip']}): {$pagelinkedfrom} - {$pagelinkedto}"); return new IXR_Error(33, 'IP is banned.'); } // Antispam of sites like xxx.yyy-zzz.info/archives/xxx.php if (preg_match('/http:\\/\\/[a-z0-9]\\.[a-z0-9]+-[^\\/]+\\.info\\/archives\\/.+\\.php$/', $pagelinkedfrom)) { return new IXR_Error(33, 'Host not allowed.'); } if (check_ban($urlfrom[host], 'hostname', false)) { syslog(LOG_NOTICE, "Meneame: pingback, site is banned: {$pagelinkedfrom} - {$pagelinkedto}"); return new IXR_Error(33, 'Site is banned.'); } $link = new Link(); $link->uri = preg_replace('/#[\\w\\-\\_]+$/', '', $uri); if (empty($uri) || !$link->read('uri')) { syslog(LOG_NOTICE, "Meneame: pingback, story does not exist: {$pagelinkedto}"); return new IXR_Error(33, 'Story doesn\'t exist.'); } if ($link->get_permalink() == $pagelinkedfrom) { syslog(LOG_NOTICE, "Meneame: pingback, points to the same post: {$pagelinkedfrom} - {$pagelinkedto}"); return new IXR_Error(48, 'The pingback points to the same post.'); } if ($link->date < time() - 86400 * 15) { syslog(LOG_NOTICE, "Meneame: pingback, story is too old: {$pagelinkedto}"); return new IXR_Error(33, 'Story is too old for pingbacks.'); } $trackres = new Trackback(); $trackres->link_id = $link->id; $trackres->type = 'in'; $trackres->link = $pagelinkedfrom; $trackres->url = $pagelinkedfrom; if ($trackres->abuse()) { return new IXR_Error(33, 'Don\'t send so many pings.'); } $dupe = $trackres->read(); if ($dupe) { syslog(LOG_NOTICE, "Meneame: pingback, we already have a ping from that URI for this post: {$pagelinkedfrom} - {$pagelinkedto}"); return new IXR_Error(48, 'The pingback has already been registered.'); } // very stupid, but gives time to the 'from' server to publish ! sleep(1); // Let's check the remote site if (version_compare(phpversion(), '5.1.0') >= 0) { $contents = @file_get_contents($pagelinkedfrom, FALSE, NULL, 0, 100000); } else { $contents = @file_get_contents($pagelinkedfrom); } if (!$contents) { syslog(LOG_NOTICE, "Meneame: pingback, the provided URL does not seem to work: {$pagelinkedfrom} - {$pagelinkedto}"); return new IXR_Error(16, 'The source URL does not exist.'); } if (preg_match('/charset=([a-zA-Z0-9-_]+)/i', $contents, $matches)) { $this->encoding = trim($matches[1]); if (strcasecmp($this->encoding, 'utf-8') != 0) { $contents = iconv($this->encoding, 'UTF-8//IGNORE', $contents); } } // Check is links back to us $permalink = $link->get_permalink(); $permalink_q = preg_quote($permalink, '/'); $pattern = "/<\\s*a[^>]+href=[\"']" . $permalink_q . "[#\\/0-9a-z\\-]*[\"'][^>]*>/i"; if (!preg_match($pattern, $contents)) { syslog(LOG_NOTICE, "Meneame: pingback, the provided URL does not have a link back to us: {$pagelinkedfrom} - {$pagelinkedto}"); return new IXR_Error(17, 'The source URL does not contain a link to the target URL, and so cannot be used as a source.'); } // Search Title if (preg_match('/<title[^<>]*>([^<>]*)<\\/title>/si', $contents, $matches)) { $url_title = clean_text($matches[1]); if (mb_strlen($url_title) > 3) { $title = $url_title; } } if (empty($title)) { syslog(LOG_NOTICE, "Meneame: pingback, cannot find a title on that page: {$pagelinkedfrom} - {$pagelinkedto}"); return new IXR_Error(32, 'We cannot find a title on that page.'); } $title = mb_strlen($title) > 120 ? mb_substr($title, 0, 120) . '...' : $title; $trackres->title = $title; $trackres->status = 'ok'; $trackres->store(); syslog(LOG_NOTICE, "Meneame: pingback ok: {$pagelinkedfrom} - {$pagelinkedto}"); return "Pingback from registered. Keep the web talking! :-)"; }
function do_trackbacks() { global $db; $id = $_REQUEST['id']; echo '<div id="blogged" style="z-index: 10;">'; echo '<h2>' . PLIGG_Visual_Trackback . '</h2>'; $trackbacks = $db->get_col("SELECT trackback_id FROM " . table_trackbacks . " WHERE trackback_link_id={$id} AND trackback_type='in' ORDER BY trackback_date DESC"); if ($trackbacks) { echo '<ul>'; require_once mnminclude . 'trackback.php'; $trackback = new Trackback(); foreach ($trackbacks as $trackback_id) { $trackback->id = $trackback_id; $trackback->read(); echo '<li><a href="' . $trackback->url . '" title="' . htmlspecialchars($trackback->content) . '">' . $trackback->title . '</a></li>'; } echo "</ul>\n"; } echo '<br /></div>'; }