<?php
-// $Id: trackback.php,v 1.9 2005/04/09 03:18:56 henoheno Exp $
+// $Id: trackback.php,v 1.10 2005/04/10 07:51:30 henoheno Exp $
/*
* PukiWiki/TrackBack
- * (C) 2003-2004 PukiWiki Developers Team
+ * (C) 2003-2005 PukiWiki Developers Team
* (C) 2003, Katsumi Saito <katsumi@jo1upk.ymt.prug.or.jp>
* License: GPL
*
- * http://localhost/pukiwiki/pukiwiki.php?FrontPage ¤ÈÌÀ³Î¤Ë»ØÄꤷ¤Ê¤¤¤È
- * TrackBack ID ¤Î¼èÆÀ¤Ï¤Ç¤¤Ê¤¤
+ * NOTE:
+ * To get TrackBack ID correctly, specify URI clearly like:
+ * http://localhost/pukiwiki/pukiwiki.php?FrontPage
*
* tb_get_id($page) Get TrackBack Ping ID from page name
* tb_id2page($tb_id) Get page name from TrackBack Ping ID
* tb_get_filename($page) Get file name of TrackBack Ping data
* tb_count($page) Count the number of TrackBack Pings included for the page
- * // pukiwiki.skin.LANG.php
+ * // pukiwiki.skin.php
* tb_send($page, $data) Send TrackBack Ping(s) automatically // file.php
* tb_delete($page) Remove TrackBack Ping data // edit.inc.php
- * tb_get($file, $key = 1) TrackBack Ping ¥Ç¡¼¥¿ÆþÎÏ
- * tb_get_rdf($page) ʸ¾ÏÃæ¤ËËä¤á¹þ¤à¤¿¤á¤Îrdf¤ò¥Ç¡¼¥¿¤òÀ¸À® // pukiwiki.php
- * tb_get_url($url) ʸ½ñ¤òGET¤·¡¢Ëä¤á¹þ¤Þ¤ì¤¿TrackBack Ping URL¤ò¼èÆÀ
- * class TrackBack_XML XML¤«¤éTrackBack Ping ID¤ò¼èÆÀ¤¹¤ë¥¯¥é¥¹
- * == Referer Âбþʬ ==
- * ref_save($page) Save or update referer data // pukiwiki.php
+ * tb_get($file, $key = 1) Import TrackBack Ping data from file
+ * tb_get_rdf($page) Get a RDF comment to bury TrackBack-ping-URI under HTML(XHTML) output
+ * // lib/pukiwiki.php
+ * tb_get_url($url) HTTP-GET from $uri, and reveal TrackBack-Ping-URI
+ * class TrackBack_XML Parse and reveal TrackBack-Ping-URI from RDF data
+ *
+ * == Referer related ==
+ * ref_save($page) Save or update referer data // lib/pukiwiki.php
*/
define('PLUGIN_TRACKBACK_VERSION', 'PukiWiki/TrackBack 0.2');
if (isset($cache[$tb_id])) return $cache[$tb_id];
if (! isset($pages)) $pages = get_existpages();
-
foreach ($pages as $page) {
$_tb_id = tb_get_id($page);
$cache[$_tb_id] = $page;
unset($pages[$page]);
- if ($tb_id == $_tb_id) return $cache[$tb_id];
+ if ($tb_id == $_tb_id) return $cache[$tb_id]; // Found
}
$cache[$tb_id] = FALSE;
-
return $cache[$tb_id]; // Not found
}
// $minus = Removed lines may include URLs
function tb_send($page, $plus, $minus = '')
{
- global $script, $trackback;
+ global $trackback;
if (! $trackback) return;
+ $script = get_script_uri();
+
// Disable 'max execution time' (php.ini: max_execution_time)
if (ini_get('safe_mode') == '0') set_time_limit(0);
// Sender's information
$putdata = array(
'title' => $page, // Title = It's page name
- 'url' => "$script?$r_page", // will be rawurlencode() at send phase
+ 'url' => $script . '?' . $r_page, // will be rawurlencode() at send phase
'excerpt' => mb_strimwidth(preg_replace("/[\r\n]/", ' ', $excerpt), 0, 255, '...'),
'blog_name' => PLUGIN_TRACKBACK_VERSION,
'charset' => SOURCE_ENCODING // Ping text encoding (Not defined)
if (file_exists($filename)) @unlink($filename);
}
-// TrackBack Ping ¥Ç¡¼¥¿ÆþÎÏ
+// Import TrackBack Ping data from file
function tb_get($file, $key = 1)
{
if (! file_exists($file)) return array();
return $result;
}
-// ʸ¾ÏÃæ¤Ë trackback:ping ¤òËä¤á¹þ¤à¤¿¤á¤Î¥Ç¡¼¥¿¤òÀ¸À®
+// Get a RDF comment to bury TrackBack-ping-URI under HTML(XHTML) output
function tb_get_rdf($page)
{
global $trackback;
EOD;
}
-// ʸ½ñ¤òGET¤·¡¢Ëä¤á¹þ¤Þ¤ì¤¿TrackBack Ping url¤ò¼èÆÀ
+// HTTP-GET from $uri, and reveal TrackBack-Ping-URI
function tb_get_url($url)
{
- // ¥×¥í¥¥·¤ò·Ðͳ¤¹¤ëɬÍפ¬¤¢¤ë¥Û¥¹¥È¤Ë¤Ïping¤òÁ÷¿®¤·¤Ê¤¤
+ // Don't go across HTTP-proxy server
$parse_url = parse_url($url);
if (empty($parse_url['host']) || via_proxy($parse_url['host']))
return '';
return '';
}
-// Ëä¤á¹þ¤Þ¤ì¤¿¥Ç¡¼¥¿¤«¤é TrackBack Ping url¤ò¼èÆÀ¤¹¤ë¥¯¥é¥¹
+// Parse and reveal TrackBack-Ping-URI from RDF(XML) data
class TrackBack_XML
{
var $url;
return TRUE;
if (! is_dir(TRACKBACK_DIR)) die('No such directory: TRACKBACK_DIR');
- if (! is_writable(TRACKBACK_DIR)) die('Permission denied: TRACKBACK_DIR');
+ if (! is_writable(TRACKBACK_DIR)) die('Permission denied to write: TRACKBACK_DIR');
// Update referer data
if (ereg("[,\"\n\r]", $url))
$data = tb_get($filename, 3);
$d_url = rawurldecode($url);
if (! isset($data[$d_url])) {
- // 0:ºÇ½ª¹¹¿·Æü»þ, 1:½é²óÅÐÏ¿Æü»þ, 2:»²¾È¥«¥¦¥ó¥¿,
- // 3:Referer ¥Ø¥Ã¥À, 4:ÍøÍѲÄÈݥե饰(1¤Ï͸ú)
- $data[$d_url] = array(UTIME, UTIME, 0, $url, 1);
+ $data[$d_url] = array(
+ '', // [0]: Last update date
+ UTIME, // [1]: Creation date
+ 0, // [2]: Reference counter
+ $url, // [3]: Referer header
+ 1 // [4]: Enable / Disable flag (1 = enable)
+ );
}
$data[$d_url][0] = UTIME;
$data[$d_url][2]++;