. * * $Id$ * */ /** * based upon semmelstatz * Copyright (c) 2005-2009 Andreas 'Redunzl' Mueller (redunzl@gmx.de) * * @license http://www.gnu.org/licenses/gpl-2.0.html * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License (version 2) as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ if(!current_user_can('manage_statz')) { die('Zugriff verweigert'); } include_once plugin_dir_path(__FILE__).'includes/pChart/class/pData.class.php'; include_once plugin_dir_path(__FILE__).'includes/pChart/class/pDraw.class.php'; include_once plugin_dir_path(__FILE__).'includes/pChart/class/pImage.class.php'; ### 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); } $MyData = new pData(); $MyData->addPoints($visitors,"Visitors"); $MyData->setAxisName(0,"Visitors"); $MyData->addPoints($hours,"Hours"); $MyData->setAbscissa("Hours"); $myPicture = new pImage(780,150,$MyData); $myPicture->Antialias = FALSE; $myPicture->drawRectangle(0,0,779,149,array("R"=>0,"G"=>0,"B"=>0)); $myPicture->setFontProperties(array("FontName"=>plugin_dir_path(__FILE__)."includes/pChart/fonts/Bedizen.ttf","FontSize"=>8)); $myPicture->setGraphArea(30,20,760,130); $scaleSettings = array("GridR"=>200,"GridG"=>200,"GridB"=>200); $myPicture->drawScale($scaleSettings); $myPicture->drawBarChart(); @$myPicture->Render(WP_CONTENT_DIR."/cache/24HourGoo.png"); print "
"; if(is_readable(WP_CONTENT_DIR."/cache/24HourGoo.png")) { print ''; } else if(!is_dir(WP_CONTENT_DIR."/cache")) { print semr_i18n('No Chart: Cannot find cache-folder!'); } else if(!is_writable(WP_CONTENT_DIR."/cache")) { print semr_i18n('No Chart: Missing rights for cache-folder!'); } 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 "
"; ?>