* @author Andreas 'Redunzl' Mueller
* @copyright (c)2011 PHP-Backoffice
* @copyright (c)2005-2009 kopfhoch-studio
* @link http://www.php-backoffice.de/projects/semmelstatzR
* @link http://sourceforge.net/projects/semmelstatz/
* @license http://www.gnu.org/licenses/gpl-2.0.html
*
* $Id$
*/
if(!current_user_can('manage_statz')) {
die('Zugriff verweigert');
}
### AKTUELL - Funktionen
function sem_showWhoIsOnline() {
global $wpdb;
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
$onlinetime = $sem_options["statz_online_time"];
$onlineusers = $wpdb->get_results("SELECT DISTINCT username, page, ip, time
FROM ".$wpdb->statz." WHERE time > Now() - INTERVAL ".$onlinetime." SECOND GROUP BY ip ORDER BY page DESC");
print "
".sem_showNumUsersOnline()." Besucher online - Heute: ".sem_showTodayStatz()."
";
if (empty($onlineusers)) {
print "... keine Einträge";
print "
";
return;
}
print "";
print "";
print "";
print "Username | ";
print "Post/Page | ";
print "TCP/IP | ";
print "Zeit | ";
print "
";
print "";
print "";
foreach ($onlineusers as $key=>$onlineuser) {
$username = $onlineuser->username;
$page = $onlineuser->page;
if ($page == 0) {
$link = get_option('siteurl');
$title = 'startseite'; //oder wie auch immer
}
else {
$link = get_permalink($page);
$title = get_post($page); // muss so sein, da get_post = ARRAY
$title = $title->post_title; // sonst könnte man gleich diese Zeile nehmen
}
$ip = $onlineuser->ip;
if(sem_checkIfIPisEncoded($ip) == true) $ip = sem_decodeIP($ip);
$time = mysql2date("H:i",$onlineuser->time);
print "";
print "".$username." | ";
print "".$title." | ";
print "
| ";
print "$time | ";
print "
";
}
print "";
print "
";
print "
";
}
function sem_draw24HoursGoo() {
global $wpdb;
$results = $wpdb->get_results("SELECT time as hours, COUNT(DISTINCT ip) as visitors
FROM ".$wpdb->statz." WHERE time >= NOW() - INTERVAL 23 HOUR GROUP BY HOUR(time) ORDER BY time ASC");
print "Besucher: Die letzten 24 Stunden
";
print "";
if (empty($results)) {
print "... noch keine Einträge
";
print "
";
return;
}
foreach ($results as $result) {
$visitors[] = $result->visitors;
$hours[] = mysql2date('H', $result->hours);
}
$maxvalue = max($visitors);
$visitors = implode(',', $visitors);
$hours = "|".implode('|', $hours)."|";
$charturl = "http://chart.apis.google.com/chart?";
$chartsize = "chs=600x150&";
$charttype = "cht=bvs&";
$chartgrid = "chg=25,25&";
$chartdata = "chd=t:".$visitors."&";
$chartminmax = "chds=0,".$maxvalue."&";
$barsize = "chbh=a&";
$axis = "chxt=x,y&";
$axisdataX = "chxl=0:".$hours;
$axisdataY = "1:|0|".$maxvalue."&";
$datalabels = "chm=N,000000,0,-1,10";
$chart = $charturl.$chartsize.$charttype.$chartgrid.$chartdata.$chartminmax.$barsize.$axis.$axisdataX.$axisdataY.$datalabels;
print "";
print "
";
print "
";
print "";
print "
";
}
function sem_showDailyStatz() {
global $wpdb;
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
$limit = $sem_options["statz_days_limit"];
$daylimit = $limit - 1;
$thedays = $wpdb->get_results("SELECT COUNT(ip) AS hits, COUNT(DISTINCT ip) AS visitors, COUNT(DISTINCT referer)
AS referers, substring(time,1,10) AS date FROM ".$wpdb->statz." WHERE time >= CURDATE() - INTERVAL ".$daylimit." DAY
GROUP BY date ORDER BY time DESC");
print "".$limit."-Tage-Statistik
";
if (empty($thedays)) {
print "... noch keine Einträge";
print "
";
return;
}
print "";
print "";
print "";
print "Datum | ";
print "Besucher | ";
print "Hits | ";
print "Referer | ";
print "
";
print "";
print "";
foreach ($thedays as $key=>$theday) {
$date = $theday->date;
$date = strtotime(substr($theday->date,1,10));
$today = time();
$difference = ceil(($today - $date) / (60*60*24))-1;
if($difference == 0) {
$date = "Heute";
}
elseif($difference == 1) {
$date = "Gestern";
}
elseif($difference == 2) {
$date = "Vorgestern";
}
else {
$date = mysql2date("d.m.Y",$theday->date);
}
$hits = $theday->hits;
$visitors = $theday->visitors;
$referers = $theday->referers;
print "";
print "$date | ";
print "$visitors | ";
print "$hits | ";
print "$referers | ";
print "
";
}
print "";
print "mehr... | ";
print "
";
print "";
print "
";
print "
";
}
function sem_showReferers() {
global $wpdb, $homehost;
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
$limit = $sem_options["statz_referer_limit"];
$mask = $sem_options["statz_mask_referer"];
$lastreferers = $wpdb->get_results("SELECT DISTINCT referer, time FROM ".$wpdb->statz." WHERE referer
NOT LIKE '".$homehost."' ORDER BY time DESC LIMIT 0, ".$limit);
print "Die letzten ".$limit." Referer
";
if (empty($lastreferers)) {
print "... noch keine Einträge";
print "
";
return;
}
print "";
print "";
print "";
print "Zeit | ";
print "Referer | ";
print "
";
print "";
print "";
foreach ($lastreferers as $key=>$lastreferer) {
$referer = $lastreferer->referer;
if(strlen($referer) >= 120) {
$printreferer = substr($referer, 0, 120)." ...";
}
else {
$printreferer = $referer;
}
$time = mysql2date("d.m.Y - H:i",$lastreferer->time);
print "";
print "".$time." | ";
if($mask != true) {
print "".$printreferer." | ";
}
else {
$referer = htmlspecialchars($referer, ENT_QUOTES);
print "".$printreferer." | ";
}
print "
";
}
print "";
print "
";
print "
";
}
function sem_showKeyword() {
global $wpdb;
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
$limit = $sem_options["statz_keyword_limit"];
$results = $wpdb->get_results("SELECT referer, time, ip FROM $wpdb->statz WHERE referer != 'NULL' ORDER BY time DESC");
print "Die letzten $limit Suchbegriffe
";
if (empty($results)) {
print "... noch keine Einträge";
print "
";
return;
}
print "";
print "";
print "";
print "Zeit | ";
print "Suchbegriff | ";
print "TCP/IP | ";
print "
";
print "";
print "";
$i=0;
foreach($results as $result) {
$referer = $result->referer;
$keyword = sem_getKeyword($referer);
$ip = $result->ip;
if(sem_checkIfIPisEncoded($ip) == true) $ip = sem_decodeIP($ip);
$time = mysql2date('d.m.Y - H:i',$result->time);
if($keyword) {
print "";
print "".$time." | ";
print "".$keyword." | ";
print "
| ";
print "
";
$i++;
}
if($i == $limit) break;
}
print "";
print "
";
print "
";
}
function sem_showTodayTopReads() {
global $wpdb;
$today = date("Y-m-d");
$topreads = $wpdb->get_results("SELECT post_title AS posttitle, post_name as postname, guid AS postid,
COUNT(".$wpdb->statz.".page) AS count FROM ".$wpdb->posts.", ".$wpdb->statz." WHERE
".$wpdb->statz.".page = ".$wpdb->posts.".ID AND time >= '$today' GROUP BY postid ORDER BY count DESC LIMIT 10");
print "Die Top10 aller Posts & Pages heute
";
if (empty($topreads)) {
print "... noch keine Einträge";
print "
";
return;
}
print "";
print "";
print "";
print "Post/Page | ";
print "Postname | ";
print "Hits | ";
print "
";
print "";
print "";
foreach ($topreads as $key=>$topread) {
$posttitle = $topread->posttitle;
$postname = $topread->postname;
$postid = $topread->postid;
$count = $topread->count;
print "";
print "".$posttitle." | ";
print "".$postname." | ";
print "".$count." | ";
print "
";
}
print "";
print "
";
print "
";
}
function sem_showTopReads() {
global $wpdb;
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
$limit = $sem_options["statz_topreads_limit"];
$topreads = $wpdb->get_results("SELECT post_title AS posttitle, post_name as postname, guid AS postid,
hits AS count FROM ".$wpdb->posts." WHERE hits != '0' GROUP BY postid ORDER BY hits DESC LIMIT 0, ".$limit);
print "Die Top".$limit." aller Posts & Pages
";
if (empty($topreads)) {
print "... noch keine Einträge";
print "
";
return;
}
print "";
print "";
print "";
print "Post/Page | ";
print "Postname | ";
print "Hits | ";
print "
";
print "";
print "";
foreach ($topreads as $key=>$topread) {
$posttitle = $topread->posttitle;
$postname = $topread->postname;
$postid = $topread->postid;
$count = $topread->count;
print "";
print "".$posttitle." | ";
print "".$postname." | ";
print "".$count." | ";
print "
";
}
print "";
print "
";
print "
";
}
function sem_showWhoWasOnlineToday() {
global $wpdb;
$today = date("Y-m-d");
$todaysonlineusers = $wpdb->get_results("SELECT DISTINCT username, COUNT(username) as num FROM ".$wpdb->statz." WHERE
time >= '$today' AND username != 'Gast' GROUP BY username ORDER BY num DESC");
print "Bekannte Besucher heute
";
if (empty($todaysonlineusers)) {
print "... noch keine Einträge";
print "
";
return;
}
print "";
print "";
print "";
print "Besucher (Hits) | ";
print "
";
print "";
print "";
foreach ($todaysonlineusers as $key=>$todayonlineuser) {
$username = $todayonlineuser->username;
$num = $todayonlineuser->num;
print "";
print "".$username." (".$num.") | ";
print "
";
}
print "";
print "
";
print "
";
}
function sem_showTopCommented() {
global $wpdb;
$topcommentedposts = $wpdb->get_results("SELECT guid, id, post_title, COUNT(*) AS count FROM
".$wpdb->comments.",". $wpdb->posts." WHERE comment_approved = '1' AND comment_post_id = id
GROUP BY guid ORDER BY count DESC LIMIT 0, 10");
print "Die Top10 aller kommentierter Posts
";
if (empty($topcommentedposts)) {
print "... noch keine Einträge";
print "
";
return;
}
print "";
print "";
print "";
print "Post/Page | ";
print "Kommentare | ";
print "
";
print "";
print "";
foreach ($topcommentedposts as $key => $topcommentedpost) {
$posttitle = $topcommentedpost->post_title;
$count = $topcommentedpost->count;
$postid = $topcommentedpost->guid;
print "";
print " ".$posttitle." | ";
print "".$count." | ";
print "
";
}
print "";
print "
";
print "
";
}
function sem_showCommenters() {
global $wpdb;
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
$limit = $sem_options["statz_comment_limit"];
$topcommenters = $wpdb->get_results("SELECT comment_author AS commenter, COUNT(comment_ID) AS count,
comment_author_email AS email, comment_author_url AS homepage FROM " .$wpdb->comments . " WHERE
comment_approved = '1' GROUP BY comment_author ORDER BY count DESC LIMIT 0, ".$limit);
print "Die Top".$limit." aller Kommentierer
";
if (empty($topcommenters)) {
print "... noch keine Einträge";
print "
";
return;
}
print "";
print "";
print "";
print "User | ";
print "Email | ";
print "Homepage | ";
print "Kommentare | ";
print "
";
print "";
print "";
foreach ($topcommenters as $key=>$topcommenter) {
$commenter = $topcommenter->commenter;
$email = $topcommenter->email;
$homepage = $topcommenter->homepage;
if($homepage=="http://") $homepage="";
$url=parse_url($homepage);
$homepage = $url['host'];
$count = $topcommenter->count;
print "";
print "".$commenter." | ";
print "".$email." | ";
print "".$homepage." | ";
print "".$count." | ";
print "
";
}
print "";
print "
";
print "
";
}
### AKTUELL Anzeige
print "";
print "
";
print "
";
print "
SemmelstatzR › Aktuell
";
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
if ($sem_options["statz_show_useronline"]) sem_showWhoIsOnline();
sem_draw24HoursGoo();
if ($sem_options["statz_show_todayusers"]) sem_showWhoWasOnlineToday();
if ($sem_options["statz_show_dailystatz"]) sem_showDailyStatz();
if ($sem_options["statz_show_referers"]) sem_showReferers();
if ($sem_options["statz_show_keywords"]) sem_showKeyword();
if ($sem_options["statz_show_todayreads"]) sem_showTodayTopReads();
if ($sem_options["statz_show_reads"]) sem_showTopReads();
if ($sem_options["statz_show_topcommposts"]) sem_showTopCommented();
if ($sem_options["statz_show_commenters"]) sem_showCommenters();
sem_showCopyright();
print "
";
?>