$refer_cache_path),
$refer_cache_time);
function count_referrers_for_url($url) {
global $refer_cache;
$out = $refer_cache->call("_real_count_referrers_for_url", $url);
return $out;
}
function _real_count_referrers_for_url($url) {
$cursor = _query_referers_for_url($url);
if (get_class($cursor) == "db_error") {
return "N/A ";
} elseif (get_class($cursor) == "db_result") {
return $cursor->numRows();
}
}
function list_referrers_for_url($url) {
global $refer_cache;
$out = $refer_cache->call("_real_list_referrers_for_url", $url);
return $out;
}
function _real_list_referrers_for_url($url) {
$cursor = _query_referers_for_url($url);
$out = "";
$out .= "
\n";
if (get_class($cursor) == "db_error") {
$out .= "- DANGER WILL ROBINSON! ";
$out .= $cursor->tostring();
} elseif (get_class($cursor) == "db_result") {
while($row = $cursor->fetchRow(DB_FETCHMODE_ASSOC)) {
$link = $row['ref_url'];
$title = $row['ref_title'];
if ($title == "") {
$link_label = truncate_str($link, 40);
} else {
$link_label = $title;
}
$visitor_count = $row['visitor_count'];
$out .= "\t
- $link_label ($visitor_count)
\n";
}
}
$out .= "
\n";
return $out;
}
function _query_referers_for_url($url) {
global $refer_dbh;
$url_parts = parse_url($url);
$url_path = $url_parts['path'];
// execute query
$query = 'SELECT ref_url, ref_title, hits AS visitor_count '.
'FROM referer_links '.
'WHERE site_path="'.$url_path.'" ';
if ($url_path == '/') {
$query .= 'AND created > date_sub(now(), interval 1 day) ';
}
$query .= 'ORDER BY visitor_count DESC '.
'LIMIT 40';
$cursor = $refer_dbh->query($query);
return $cursor;
}
function truncate_str($str, $len) {
if (strlen($str) > $len) {
$half_len = $len / 2;
return substr($str,0,$half_len)."...".substr($str,0-$half_len);
} else {
return $str;
}
}
?>