* @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 ""; print ""; print ""; print ""; 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 ""; print ""; print ""; print ""; print ""; } print ""; print "
UsernamePost/PageTCP/IPZeit
".$username."".$title."     $time
"; 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 "Chart nicht verfügbar"; 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 ""; print ""; print ""; print ""; 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 ""; print ""; print ""; print ""; print ""; } print ""; print ""; print ""; print ""; print "
DatumBesucherHitsReferer
$date$visitors$hits$referers
mehr...
"; 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 ""; print ""; 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 ""; if($mask != true) { print ""; } else { $referer = htmlspecialchars($referer, ENT_QUOTES); print ""; } print ""; } print ""; print "
ZeitReferer
".$time."".$printreferer."".$printreferer."
"; 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 ""; print ""; print ""; 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 ""; print ""; print ""; print ""; $i++; } if($i == $limit) break; } print ""; print "
ZeitSuchbegriffTCP/IP
".$time."".$keyword."    
"; 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 ""; print ""; print ""; print ""; print ""; print ""; foreach ($topreads as $key=>$topread) { $posttitle = $topread->posttitle; $postname = $topread->postname; $postid = $topread->postid; $count = $topread->count; print ""; print ""; print ""; print ""; print ""; } print ""; print "
Post/PagePostnameHits
".$posttitle."".$postname."".$count."
"; 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 ""; print ""; print ""; print ""; print ""; print ""; foreach ($topreads as $key=>$topread) { $posttitle = $topread->posttitle; $postname = $topread->postname; $postid = $topread->postid; $count = $topread->count; print ""; print ""; print ""; print ""; print ""; } print ""; print "
Post/PagePostnameHits
".$posttitle."".$postname."".$count."
"; 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 ""; print ""; print ""; print ""; foreach ($todaysonlineusers as $key=>$todayonlineuser) { $username = $todayonlineuser->username; $num = $todayonlineuser->num; print ""; print ""; print ""; } print ""; print "
Besucher (Hits)
".$username." (".$num.")
"; 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 ""; print ""; print ""; print ""; print ""; foreach ($topcommentedposts as $key => $topcommentedpost) { $posttitle = $topcommentedpost->post_title; $count = $topcommentedpost->count; $postid = $topcommentedpost->guid; print ""; print ""; print ""; print ""; } print ""; print "
Post/PageKommentare
 ".$posttitle."".$count."
"; 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 ""; print ""; print ""; print ""; 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 ""; print ""; print ""; print ""; print ""; } print ""; print "
UserEmailHomepageKommentare
".$commenter."".$email."".$homepage."".$count."
"; 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 "
"; ?>