(.*)(.*)', $line, $out)) {
$title = $out[2];
break;
} //if
} //while
} //else
// trim title to max character length without breaking words
if (isset($title)) {
$aspace=" ";
if(strlen($title) > $title_max ) {
$title = substr(trim($title),0,$title_max);
$title = substr($title,0,strlen($title)-1-strpos(strrev($title),$aspace));
$title = $title . '...';
}
// clean $title to exclude single quotes
$title=htmlspecialchars($title, ENT_QUOTES);
$title=eregi_replace("\'", "", $title);
return $title;
} else {
return "No Title";
}
}
function process_refer($refer, $refer_full) {
//Compare link to database
global $debug;
global $db_host;
global $db_username;
global $db_password;
global $db_name;
global $table_name;
global $exclude_sites;
$refer_lookup = $refer;
$timeStamp = time();
//strip www from refer
$refer = eregi_replace('www\.','',$refer);
if (in_array($refer, $exclude_sites)) {
return;
}
if (eregi('google', $refer)) {
//fix to aggregate all googles (countries) to one
$refer="google.com";
}
$query = "SELECT refer_title, refer_name, count FROM $table_name WHERE refer_name='$refer' ";
$result = do_query($query);
// if in database
if ($row = mysql_fetch_array($result)) {
$title = $row['refer_title'];
$query = "INSERT INTO $table_name SET count=1, refer_name='$refer', refer_full='$refer_full', refer_title='$title', time=$timeStamp ";
$result = do_query($query);
}
else {
// insert link, title
$title = lookup_title($refer_lookup);
$query = "INSERT INTO $table_name SET count=1, refer_name='$refer', refer_full='$refer_full', refer_title='$title', time=$timeStamp ";
$result = do_query($query);
}
}
function cleanUp($expire_time) {
// delete old entries
global $table_name;
$timeCutoff = time() - (3600*$expire_time);
$query = "DELETE FROM $table_name WHERE time<$timeCutoff ";
$result = do_query($query);
}
function print_refers($output_type, $n, $min) {
// none - track only
// short - list of $n, and count >= $min
// all - all
global $table_name;
global $expire_time; // in hours
global $include_local;
global $include_unknown;
global $local_site;
global $include_total;
global $backiron_loc;
echo "Sites that sent visitors over the past $expire_time hours. ";
if ($include_total) {
$query = "SELECT count(*) FROM $table_name";
$result = do_query($query);
$row = mysql_fetch_array($result);
echo "Total: " . $row['count(*)']. " pageviews. ";
}
if ($output_type=='short') {
echo "Top $n referrals, with minimum of [$min].";
if (!$include_local) $n=$n+1;
if (!$include_unknown) $n=$n+1;
$query = "SELECT refer_name, refer_full, refer_title, count(*) FROM $table_name GROUP BY refer_name ORDER BY 4 DESC LIMIT $n";
} elseif ($output_type=='all') {
$query = "SELECT refer_name, refer_full, refer_title, count(*) FROM $table_name GROUP BY refer_name ORDER BY 4 DESC";
} else {
return;
}
$result = do_query($query);
echo "
";
while($row = mysql_fetch_array($result)) {
if (!((!$include_local) AND eregi($local_site, $row['refer_full'] ))) {
if (($output_type=='short') AND ($row['count(*)']<$min)) {
break;
}
if ($row['refer_title']=='No Title') {
$row['refer_title']=''.$row['refer_name'];
if ($row['refer_title']=='') {
$row['refer_title']='Unknown';
}
}
if ($row['refer_full']) {
echo ' [' . $row['count(*)'] . '] ' . $row['refer_title'] . '
';
} else {
if ( ($include_unknown) OR ($row['refer_title']!='Unknown') ) {
echo ' [' . $row['count(*)'] . '] ' . $row['refer_title'] . '
';
}
}
}
}
echo "[..] more...";
echo "
Powered by backIron"; } // ----------------------------- MAIN ----------------------------------// $refer_full = $_SERVER['HTTP_REFERER']; $page = $_SERVER['PHP_SELF']; if ($_SERVER['QUERY_STRING']) { $query = $_SERVER['QUERY_STRING']; } // Strip full url to get base only $url_comp = parse_url($refer_full); $refer = '' . $url_comp[host] ; openDatabase ($db_name, $db_host, $db_username, $db_password); // Insert or increment process_refer($refer, $refer_full); // Remove old refers cleanUp($expire_time); if (!isset($output_type)) { $output_type=$output_type_default; } if (!isset($output_number)) { $output_number=25; } if (!isset($output_min)) { $output_min=2; } print_refers($output_type, $output_number, $output_min); ?>