function tb_delete($page)
{
    $filename = tb_get_filename($page);
    if (file_exists($filename)) {
        @unlink($filename);
    }
}
function plugin_referer_body($page, $sort)
{
    global $script, $_referer_msg;
    global $referer;
    $data = tb_get(tb_get_filename($page, '.ref'));
    if (empty($data)) {
        return '<p>no data.</p>';
    }
    $bg = plugin_referer_set_color();
    $arrow_last = $arrow_1st = $arrow_ctr = '';
    $color_last = $color_1st = $color_ctr = $color_ref = $bg['etc'];
    $sort_last = '0d';
    $sort_1st = '1d';
    $sort_ctr = '2d';
    switch ($sort) {
        case '0d':
            // 0d 最終更新日時(新着順)
            usort($data, create_function('$a,$b', 'return $b[0] - $a[0];'));
            $color_last = $bg['cur'];
            $arrow_last = $_referer_msg['msg_Chr_darr'];
            $sort_last = '0a';
            break;
        case '0a':
            // 0a 最終更新日時(日付順)
            usort($data, create_function('$a,$b', 'return $a[0] - $b[0];'));
            $color_last = $bg['cur'];
            $arrow_last = $_referer_msg['msg_Chr_uarr'];
            //		$sort_last = '0d';
            break;
        case '1d':
            // 1d 初回登録日時(新着順)
            usort($data, create_function('$a,$b', 'return $b[1] - $a[1];'));
            $color_1st = $bg['cur'];
            $arrow_1st = $_referer_msg['msg_Chr_darr'];
            $sort_1st = '1a';
            break;
        case '1a':
            // 1a 初回登録日時(日付順)
            usort($data, create_function('$a,$b', 'return $a[1] - $b[1];'));
            $color_1st = $bg['cur'];
            $arrow_1st = $_referer_msg['msg_Chr_uarr'];
            //		$sort_1st = '1d';
            break;
        case '2d':
            // 2d カウンタ(大きい順)
            usort($data, create_function('$a,$b', 'return $b[2] - $a[2];'));
            $color_ctr = $bg['cur'];
            $arrow_ctr = $_referer_msg['msg_Chr_darr'];
            $sort_ctr = '2a';
            break;
        case '2a':
            // 2a カウンタ(小さい順)
            usort($data, create_function('$a,$b', 'return $a[2] - $b[2];'));
            $color_ctr = $bg['cur'];
            $arrow_ctr = $_referer_msg['msg_Chr_uarr'];
            //		$sort_ctr = '2d';
            break;
        case '3':
            // 3 Referer
            usort($data, create_function('$a,$b', 'return ($a[3] == $b[3]) ? 0 : (($a[3] > $b[3]) ? 1 : -1);'));
            $color_ref = $bg['cur'];
            break;
    }
    $body = '';
    $ctr = 0;
    foreach ($data as $arr) {
        // 0:最終更新日時, 1:初回登録日時, 2:参照カウンタ, 3:Referer ヘッダ, 4:利用可否フラグ(1は有効)
        list($ltime, $stime, $count, $url, $enable) = $arr;
        // 項目不正の場合の対応
        // カウンタが数値ではない場合は、表示を抑止
        if (!is_numeric($count)) {
            continue;
        }
        $sw_ignore = plugin_referer_ignore_check($url);
        if ($sw_ignore && $referer > 1) {
            continue;
        }
        // 非ASCIIキャラクタ(だけ)をURLエンコードしておく BugTrack/440
        $e_url = htmlspecialchars(preg_replace('/([" \\x80-\\xff]+)/e', 'rawurlencode("$1")', $url));
        $s_url = htmlspecialchars(mb_convert_encoding(rawurldecode($url), SOURCE_ENCODING, 'auto'));
        $s_url = mb_strimwidth($s_url, 0, REFERE_TITLE_LENGTH, '...');
        $lpass = get_passage($ltime, FALSE);
        // 最終更新日時からの経過時間
        $spass = get_passage($stime, FALSE);
        // 初回登録日時からの経過時間
        $ldate = get_date($_referer_msg['msg_Fmt_Date'], $ltime);
        // 最終更新日時文字列
        $sdate = get_date($_referer_msg['msg_Fmt_Date'], $stime);
        // 初回登録日時文字列
        $body .= ' <tr>' . "\n" . '  <td>' . $ldate . '</td>' . "\n" . '  <td>' . $lpass . '</td>' . "\n";
        $body .= $count == 1 ? '  <td colspan="2">N/A</td>' . "\n" : '  <td>' . $sdate . '</td>' . "\n" . '  <td>' . $spass . '</td>' . "\n";
        $body .= '  <td style="text-align:right;">' . $count . '</td>' . "\n";
        // 適用不可データのときはアンカーをつけない
        $body .= $sw_ignore ? '  <td>' . $s_url . '</td>' . "\n" : '  <td><a href="' . $e_url . '" rel="nofollow">' . $s_url . '</a></td>' . "\n";
        $body .= ' </tr>' . "\n";
        $ctr++;
    }
    if ($ctr === 0) {
        return '<p>no data.</p>';
    }
    $href = $script . '?plugin=referer&amp;page=' . rawurlencode($page);
    return <<<EOD
<table border="1" cellspacing="1" summary="Referer">
 <tr>
  <td style="background-color:{$color_last}" colspan="2">
   <a href="{$href}&amp;sort={$sort_last}">{$_referer_msg['msg_Hed_LastUpdate']}{$arrow_last}</a>
  </td>
  <td style="background-color:{$color_1st}" colspan="2">
   <a href="{$href}&amp;sort={$sort_1st}">{$_referer_msg['msg_Hed_1stDate']}{$arrow_1st}</a>
  </td>
  <td style="background-color:{$color_ctr};text-align:right">
   <a href="{$href}&amp;sort={$sort_ctr}">{$_referer_msg['msg_Hed_RefCounter']}{$arrow_ctr}</a>
  </td>
  <td style="background-color:{$color_ref}">
   <a href="{$href}&amp;sort=3">{$_referer_msg['msg_Hed_Referer']}</a>
   </td>
 </tr>
 {$body}
</table>
EOD;
}
Example #3
0
function ref_save($page)
{
    global $referer;
    if (PKWK_READONLY || !$referer || empty($_SERVER['HTTP_REFERER'])) {
        return true;
    }
    $url = $_SERVER['HTTP_REFERER'];
    // Validate URI (Ignore own)
    $parse_url = parse_url($url);
    if (empty($parse_url['host']) || $parse_url['host'] == $_SERVER['HTTP_HOST']) {
        return true;
    }
    if (!is_dir(TRACKBACK_DIR)) {
        die('No such directory: TRACKBACK_DIR');
    }
    if (!is_writable(TRACKBACK_DIR)) {
        die('Permission denied to write: TRACKBACK_DIR');
    }
    // Update referer data
    if (ereg("[,\"\n\r]", $url)) {
        $url = '"' . str_replace('"', '""', $url) . '"';
    }
    $filename = tb_get_filename($page, '.ref');
    $data = tb_get($filename, 3);
    $d_url = rawurldecode($url);
    if (!isset($data[$d_url])) {
        $data[$d_url] = array('', UTIME, 0, $url, 1);
    }
    $data[$d_url][0] = UTIME;
    $data[$d_url][2]++;
    $fp = fopen($filename, 'w');
    if ($fp === false) {
        return false;
    }
    set_file_buffer($fp, 0);
    flock($fp, LOCK_EX);
    rewind($fp);
    foreach ($data as $line) {
        fwrite($fp, join(',', $line) . "\n");
    }
    flock($fp, LOCK_UN);
    fclose($fp);
    return true;
}
Example #4
0
function plugin_tb_output_htmllist($tb_id)
{
    pkwk_common_headers();
    echo 'This function had been removed now. It will be created soon.<br />' . "\n";
    echo 'Sorry for your inconvenience.';
    exit;
    // ----
    // Skeleton Logic
    global $script;
    global $_tb_date;
    $page = tb_id2page($tb_id);
    if ($page === false) {
        return false;
    }
    $data = tb_get(tb_get_filename($page));
    // Sort: The first is the latest
    usort($data, create_function('$a,$b', 'return $b[0] - $a[0];'));
    $tb_body = '';
    foreach ($data as $x) {
        if (count($x) != 5) {
            continue;
        }
        // Ignore incorrect record
        list($time, $url, $title, $excerpt, $blog_name) = $x;
        if ($title == '') {
            $title = 'no title';
        }
        $time = date($_tb_date, $time + LOCALZONE);
        // May 2, 2003 11:25 AM
        $tb_body .= <<<EOD
EOD;
    }
    // Output start
    pkwk_common_headers();
    // BugTrack/466 Care for MSIE trouble
    // Logically correct, but MSIE will treat the data like 'file downloading'
    //header('Content-type: application/xhtml+xml; charset=UTF-8');
    header('Content-type: text/html; charset=UTF-8');
    // Works well
    $meta_content_type = pkwk_output_dtd(PKWK_DTD_XHTML_1_0_TRANSITIONAL, 'UTF-8');
    $msg = <<<EOD
<head>
 {$meta_content_type}
</head>
<body>
 {$script}?tb_id={$tb_id}<br /><br />
 {$tb_body}
</body>
</html>
EOD;
    echo mb_convert_encoding($msg, 'UTF-8', SOURCE_ENCODING);
    exit;
}
Example #5
0
function plugin_tb_recent($page, $line)
{
    $body = '';
    $tb_id = tb_get_id($page);
    $data = tb_get(tb_get_filename($page));
    $ctr = count($data);
    if ($ctr == 0) {
        return '';
    }
    if ($ctr > 1) {
        // Sort: The first is the latest
        usort($data, create_function('$a,$b', 'return $b[0] - $a[0];'));
    }
    $body .= '<h5>' . _("RECENT TRACKBACK") . "</h5>\n";
    $body .= "<div>\n<ul class=\"recent_list\">\n";
    $i = 0;
    foreach ($data as $x) {
        if (count($x) != 5) {
            continue;
        }
        // Ignore incorrect record
        list($time, $url, $title, $excerpt, $blog_name) = $x;
        if ($title == '') {
            $title = 'no title';
        }
        $body .= '<li><a href="' . $url . '" title="' . $blog_name . ' ' . get_passage($time) . '" rel="nofollow">' . $title . '</a></li>' . "\n";
        $i++;
        if ($line == 0) {
            continue;
        }
        if ($i >= $line) {
            break;
        }
    }
    if ($i == 0) {
        return '';
    }
    $body .= "</ul>\n</div>\n";
    return $body;
}
Example #6
0
function plugin_referer_body($page, $sort)
{
    global $script;
    $qm = get_qm();
    $data = tb_get(tb_get_filename($page, '.ref'));
    if (empty($data)) {
        return '<p>no data.</p>';
    }
    $bg = plugin_referer_set_color();
    $arrow_last = $arrow_1st = $arrow_ctr = '';
    $color_last = $color_1st = $color_ctr = $color_ref = $bg['etc'];
    $sort_last = '0d';
    $sort_1st = '1d';
    $sort_ctr = '2d';
    switch ($sort) {
        case '0d':
            // 0d 最終更新日時(新着順)
            usort($data, create_function('$a,$b', 'return $b[0] - $a[0];'));
            $color_last = $bg['cur'];
            $arrow_last = $qm->m['plg_referer']['down'];
            $sort_last = '0a';
            break;
        case '0a':
            // 0a 最終更新日時(日付順)
            usort($data, create_function('$a,$b', 'return $a[0] - $b[0];'));
            $color_last = $bg['cur'];
            $arrow_last = $qm->m['plg_referer']['up'];
            //		$sort_last = '0d';
            break;
        case '1d':
            // 1d 初回登録日時(新着順)
            usort($data, create_function('$a,$b', 'return $b[1] - $a[1];'));
            $color_1st = $bg['cur'];
            $arrow_1st = $qm->m['plg_referer']['down'];
            $sort_1st = '1a';
            break;
        case '1a':
            // 1a 初回登録日時(日付順)
            usort($data, create_function('$a,$b', 'return $a[1] - $b[1];'));
            $color_1st = $bg['cur'];
            $arrow_1st = $qm->m['plg_referer']['up'];
            //		$sort_1st = '1d';
            break;
        case '2d':
            // 2d カウンタ(大きい順)
            usort($data, create_function('$a,$b', 'return $b[2] - $a[2];'));
            $color_ctr = $bg['cur'];
            $arrow_ctr = $qm->m['plg_referer']['down'];
            $sort_ctr = '2a';
            break;
        case '2a':
            // 2a カウンタ(小さい順)
            usort($data, create_function('$a,$b', 'return $a[2] - $b[2];'));
            $color_ctr = $bg['cur'];
            $arrow_ctr = $qm->m['plg_referer']['up'];
            //		$sort_ctr = '2d';
            break;
        case '3':
            // 3 Referer
            usort($data, create_function('$a,$b', 'return ($a[3] == $b[3]) ? 0 : (($a[3] > $b[3]) ? 1 : -1);'));
            $color_ref = $bg['cur'];
            break;
    }
    $body = '';
    foreach ($data as $arr) {
        // 0:最終更新日時, 1:初回登録日時, 2:参照カウンタ, 3:Referer ヘッダ, 4:利用可否フラグ(1は有効)
        list($ltime, $stime, $count, $url, $enable) = $arr;
        // 非ASCIIキャラクタ(だけ)をURLエンコードしておく BugTrack/440
        $e_url = htmlspecialchars(preg_replace('/([" \\x80-\\xff]+)/e', 'rawurlencode("$1")', $url));
        $s_url = htmlspecialchars(mb_convert_encoding(rawurldecode($url), SOURCE_ENCODING, 'auto'));
        $lpass = get_passage($ltime, FALSE);
        // 最終更新日時からの経過時間
        $spass = get_passage($stime, FALSE);
        // 初回登録日時からの経過時間
        $ldate = get_date($qm->m['plg_referer']['date_format'], $ltime);
        // 最終更新日時文字列
        $sdate = get_date($qm->m['plg_referer']['date_format'], $stime);
        // 初回登録日時文字列
        $body .= ' <tr>' . "\n" . '  <td>' . $ldate . '</td>' . "\n" . '  <td>' . $lpass . '</td>' . "\n";
        $body .= $count == 1 ? '  <td colspan="2">N/A</td>' . "\n" : '  <td>' . $sdate . '</td>' . "\n" . '  <td>' . $spass . '</td>' . "\n";
        $body .= '  <td style="text-align:right;">' . $count . '</td>' . "\n";
        // 適用不可データのときはアンカーをつけない
        $body .= plugin_referer_ignore_check($url) ? '  <td>' . $s_url . '</td>' . "\n" : '  <td><a href="' . $e_url . '" rel="nofollow">' . $s_url . '</a></td>' . "\n";
        $body .= ' </tr>' . "\n";
    }
    $href = $script . '?plugin=referer&amp;page=' . rawurlencode($page);
    return <<<EOD
<table border="1" cellspacing="1" summary="Referer">
 <tr>
  <td style="background-color:{$color_last}" colspan="2">
   <a href="{$href}&amp;sort={$sort_last}">{$qm->m['plg_referer']['lastupdate']}{$arrow_last}</a>
  </td>
  <td style="background-color:{$color_1st}" colspan="2">
   <a href="{$href}&amp;sort={$sort_1st}">{$qm->m['plg_referer']['firstdate']}{$arrow_1st}</a>
  </td>
  <td style="background-color:{$color_ctr};text-align:right">
   <a href="{$href}&amp;sort={$sort_ctr}">{$qm->m['plg_referer']['counter']}{$arrow_ctr}</a>
  </td>
  <td style="background-color:{$color_ref}">
   <a href="{$href}&amp;sort=3">{$qm->m['plg_referer']['referer']}</a>
   </td>
 </tr>
 {$body}
</table>
EOD;
}