595 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			24 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			595 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			24 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * file semmelstatzR_statz.php
 | 
						|
 *
 | 
						|
 * @package     SemmelstatzR
 | 
						|
 * @version     $Rev$
 | 
						|
 * @since       1.0.0 Beta
 | 
						|
 * @author      SEM-Team
 | 
						|
 * @copyright   (c)2011 SEM-Team
 | 
						|
 * @link        http://sourceforge.net/projects/semmelstatz/
 | 
						|
 * @license     http://www.gnu.org/licenses/gpl-3.0.html
 | 
						|
 * 
 | 
						|
 * This program is free software: you can redistribute it and/or modify
 | 
						|
 * it under the terms of the GNU General Public License as published by
 | 
						|
 * the Free Software Foundation, either version 3 of the License, or
 | 
						|
 * (at your option) any later version.
 | 
						|
 * 
 | 
						|
 * 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, see <http://www.gnu.org/licenses/>.  
 | 
						|
 *
 | 
						|
 * $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"];
 | 
						|
  
 | 
						|
  /** @todo add show_vars to semr-config */
 | 
						|
  $sem_options['show_utrace'] = $sem_options['show_whois'] = $sem_options['show_arin'] = true;
 | 
						|
		
 | 
						|
        $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 "<div class='statz'>";
 | 
						|
        $iUsersOnline = (int) sem_showNumUsersOnline();
 | 
						|
        printf("%s ".semr_i18np("Visitor online", "Visitors online", $iUsersOnline), $iUsersOnline);
 | 
						|
        print " - ".semr_i18n("Today").": ".sem_showTodayStatz()."</div>";
 | 
						|
        
 | 
						|
        if (empty($onlineusers)) {
 | 
						|
            print "<small>... ".semr_i18n("no entries")."</small>";
 | 
						|
            print "<hr />";
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        print '<table class="statzelement">';
 | 
						|
        print '<thead>';
 | 
						|
        print '<tr>';
 | 
						|
        print '<th style="text-align:left;">'.semr_i18n("Username").'</th>';
 | 
						|
        print '<th style="text-align:left;">'.semr_i18n("Post/Page").'</th>';
 | 
						|
        print '<th style="text-align:left;">'.semr_i18n("TCP/IP").'</th>';
 | 
						|
        print '<th style="text-align:center;">'.semr_i18n("Time").'</th>';
 | 
						|
        print '</tr>';
 | 
						|
        print '</thead>';
 | 
						|
        print '<tbody>';
 | 
						|
            foreach ($onlineusers as $key=>$onlineuser) {
 | 
						|
                $username = $onlineuser->username;
 | 
						|
                $page = $onlineuser->page;
 | 
						|
                if ($page == 0) {
 | 
						|
                    $link = get_option('siteurl');
 | 
						|
                    $title = semr_i18n("startpage");
 | 
						|
                } else {
 | 
						|
                    $link = get_permalink($page);
 | 
						|
                    $title = get_post($page);
 | 
						|
                    if(is_array($title)) {
 | 
						|
                        $title = $title->post_title;
 | 
						|
                    } else {
 | 
						|
                        $link = null;
 | 
						|
                        $title = semr_i18n("no page");
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                
 | 
						|
                $ip = $onlineuser->ip;
 | 
						|
                if(sem_checkIfIPisEncoded($ip) == true) $ip = sem_decodeIP($ip);
 | 
						|
                $time = mysql2date("H:i",$onlineuser->time);
 | 
						|
                print '<tr'.((1&$key)?' class="alternate">':'>');
 | 
						|
                print '<td style="text-align:left;">'.$username.'</td>';
 | 
						|
                print '<td style="text-align:left;">';
 | 
						|
                print (is_null($link))?$title:'<a target="_blank" href="'.$link.'">'.$title.'</a>';
 | 
						|
                print '</td>';
 | 
						|
                print '<td style="white-space:nowrap;text-align:left;">';
 | 
						|
                if($sem_options['show_arin']) {
 | 
						|
                    print '<a target="_blank" href="http://ws.arin.net/whois/?queryinput='.$ip.'">';
 | 
						|
                    print '<img src="'.SEMMELSTATZR_HTML_RELPATH.'img/arin.png" alt="" />';
 | 
						|
                    print '</a> ';
 | 
						|
                }
 | 
						|
                if($sem_options['show_whois']) {
 | 
						|
                    print '<a target="_blank" href="http://www.ripe.net/whois?searchtext='.$ip.'">';
 | 
						|
                    print '<img src="'.SEMMELSTATZR_HTML_RELPATH.'img/ripe.png" alt="" />';
 | 
						|
                    print '</a> ';
 | 
						|
                }
 | 
						|
                if($sem_options['show_utrace']) {
 | 
						|
                    print '<a target="_blank" href="http://www.utrace.de/?query='.$ip.'">';
 | 
						|
                    print '<img src="'.SEMMELSTATZR_HTML_RELPATH.'img/utrace.png" alt="" />';
 | 
						|
                    print '</a> ';
 | 
						|
                }                
 | 
						|
                print '</td>';
 | 
						|
                print '<td style="text-align:center;">'.$time.'</td>';
 | 
						|
                print '</tr>';
 | 
						|
            }
 | 
						|
        print '</tbody>';
 | 
						|
        print '</table>';
 | 
						|
        print "<hr />";
 | 
						|
	}
 | 
						|
	
 | 
						|
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 '<div class="statz">';
 | 
						|
    print semr_i18n("Visitors: Last 24 hours").'</div>';
 | 
						|
    print "<div align='left'>";
 | 
						|
 | 
						|
    if(empty($results)) {
 | 
						|
        print '<small>... '.  semr_i18n("no entries at all").'</small></div>';
 | 
						|
        print "<hr />";
 | 
						|
        return;
 | 
						|
    }
 | 
						|
    
 | 
						|
    $aHours = array();
 | 
						|
    $aVisitors = array();
 | 
						|
    $iInterval = 86400-7200;
 | 
						|
  
 | 
						|
    for($i=0;$i<24;$i++) {
 | 
						|
        $aHours[$i] = date("H", time() - $iInterval);
 | 
						|
        $iInterval = $iInterval - 3600;
 | 
						|
        $aVisitors[$i] = VOID;
 | 
						|
    }
 | 
						|
    
 | 
						|
    $iCount = 0;
 | 
						|
    $bFirst = true;
 | 
						|
    $atemp = array();    
 | 
						|
    
 | 
						|
    foreach($results as $aResult) {
 | 
						|
        $iDbHour = mysql2date('H', $aResult->hours);
 | 
						|
        $iKey = array_search($iDbHour, $aHours);
 | 
						|
        $aVisitors[$iKey] = $aResult->visitors;
 | 
						|
    }
 | 
						|
 | 
						|
    $MyData = new pData();  
 | 
						|
    $MyData->addPoints($aVisitors,"Visitors");
 | 
						|
    $MyData->setAxisName(0,"Visitors");
 | 
						|
    $MyData->addPoints($aHours,"Hours");
 | 
						|
    $MyData->setAbscissa("Hours");
 | 
						|
 | 
						|
    $myPicture = new pImage(780,150,$MyData);    
 | 
						|
    $myPicture->Antialias = true;    
 | 
						|
    $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(
 | 
						|
        //"DrawSubTicks"=>TRUE,
 | 
						|
        "GridR"=>200,
 | 
						|
        "GridG"=>200,
 | 
						|
        "GridB"=>200
 | 
						|
    );
 | 
						|
    $myPicture->drawScale($scaleSettings);
 | 
						|
    $myPicture->drawBarChart(array("DisplayValues"=>true,"DisplayColor"=>DISPLAY_MANUAL,"DisplayPos"=>LABEL_POS_OUTSIDE));
 | 
						|
    //$myPicture->drawSplineChart();
 | 
						|
    
 | 
						|
    $TextSettings = array("R"=>100,"G"=>100,"B"=>100,"FontSize"=>8,"Align"=>TEXT_ALIGN_TOPRIGHT);
 | 
						|
    $myPicture->drawText(770,5,"(c) 2011 semmelstatzR",$TextSettings);
 | 
						|
    
 | 
						|
    @$myPicture->Render(WP_CONTENT_DIR."/cache/24HourGoo.png"); 
 | 
						|
 | 
						|
    print '<div class="chart">';
 | 
						|
 | 
						|
    if(is_readable(WP_CONTENT_DIR."/cache/24HourGoo.png")) {
 | 
						|
        print '<img src="'.WP_CONTENT_URL.'/cache/24HourGoo.png" />';
 | 
						|
    } 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 "</div>";
 | 
						|
    print "</div>";
 | 
						|
    print "<hr />";
 | 
						|
}
 | 
						|
	
 | 
						|
	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 "<div class='statz'>".$limit."-Tage-Statistik</div>";
 | 
						|
        if (empty($thedays)) {
 | 
						|
            print '<small>... '.  semr_i18n("no entries at all").'</small></div>';
 | 
						|
            print "<hr />";
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        print "<table class='statzelement'>";
 | 
						|
        print "<thead>";
 | 
						|
        print "<tr>";
 | 
						|
        print "<th style='text-align:left;'>Datum</th>";
 | 
						|
        print "<th style='width: 15%;text-align:center;'>Besucher</th>";
 | 
						|
        print "<th style='width: 15%;text-align:center;'>Hits</th>";
 | 
						|
        print "<th style='width: 15%;text-align:center;'>Referer</th>";
 | 
						|
        print "</tr>";
 | 
						|
        print "</thead>";
 | 
						|
        print "<tbody>";
 | 
						|
            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 "<tr"; if(1&$key) print " class='alternate'"; print ">";
 | 
						|
                print "<td style='text-align:left;'>$date</td>";
 | 
						|
                print "<td style='text-align:center;'>$visitors</td>";
 | 
						|
                print "<td style='text-align:center;'>$hits</td>";
 | 
						|
                print "<td style='text-align:center;'>$referers</td>";
 | 
						|
                print "</tr>";
 | 
						|
            }
 | 
						|
        print "<tr>";
 | 
						|
        print "<td style='text-align:left;'><a href='".get_option('siteurl')."/wp-admin/admin.php?page=semmelstatzR/semmelstatzR-history.php'>mehr...</a></td>";
 | 
						|
        print "</tr>";
 | 
						|
        print "</tbody>";
 | 
						|
        print "</table>";
 | 
						|
		print "<hr />";
 | 
						|
	}
 | 
						|
    
 | 
						|
	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 "<div class='statz'>Die letzten ".$limit." Referer</div>";
 | 
						|
        if (empty($lastreferers)) {
 | 
						|
            print '<small>... '.  semr_i18n("no entries at all").'</small></div>';
 | 
						|
            print "<hr />";
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        print "<table class='statzelement'>";
 | 
						|
        print "<thead>";
 | 
						|
        print "<tr>";
 | 
						|
		print "<th style='text-align:center;width:12%;'>Zeit</th>";
 | 
						|
        print "<th style='text-align:left;'>Referer</th>";
 | 
						|
        print "</tr>";
 | 
						|
        print "</thead>";
 | 
						|
        print "<tbody>";
 | 
						|
            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 "<tr"; if(1&$key) print " class='alternate'"; print ">";
 | 
						|
				print "<td style='text-align:center;'>".$time."</td>";
 | 
						|
                if($mask != true) {
 | 
						|
                    print "<td style='text-align:left;'><a target='_blank' href='".$referer."'>".$printreferer."</a></td>";
 | 
						|
                }
 | 
						|
                else {
 | 
						|
                    $referer = htmlspecialchars($referer, ENT_QUOTES);
 | 
						|
                    print "<td style='text-align:left;'><a target='_blank' href='http://www.google.com/url?sa=D&q=".$referer."'>".$printreferer."</a></td>";
 | 
						|
                }
 | 
						|
                print "</tr>";
 | 
						|
            }
 | 
						|
        print "</tbody>";
 | 
						|
        print "</table>";
 | 
						|
		print "<hr />";
 | 
						|
	}
 | 
						|
	
 | 
						|
	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 "<div class='statz'>Die letzten $limit Suchbegriffe</div>";
 | 
						|
        if (empty($results)) {
 | 
						|
            print '<small>... '.  semr_i18n("no entries at all").'</small></div>';
 | 
						|
            print "<hr />";
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        print "<table class='statzelement'>";
 | 
						|
        print "<thead>";
 | 
						|
        print "<tr>";
 | 
						|
		print "<th style='text-align: center;width:12%;'>Zeit</th>";
 | 
						|
        print "<th style='text-align:left;width:70%;'>Suchbegriff</th>";
 | 
						|
        print "<th style='text-align:left;'>TCP/IP</th>";
 | 
						|
        print "</tr>";
 | 
						|
        print "</thead>";
 | 
						|
        print "<tbody>";
 | 
						|
		$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 "<tr"; if(1&$i) print " class='alternate'"; print ">";
 | 
						|
						print "<td style='text-align: center;'>".$time."</td>";
 | 
						|
						print "<td style='text-align: left;'><a target='_blank' href='".str_replace(' ','+',htmlspecialchars($referer, ENT_QUOTES))."'>".$keyword."</a></td>";
 | 
						|
						print "<td style='text-align: left;vertical-align:bottom;'>
 | 
						|
						<a target='_blank' href='http://ws.arin.net/whois/?queryinput=".$ip."'>
 | 
						|
						<img src='".get_option('siteurl')."/wp-content/plugins/semmelstatzR/img/arin.png' /></a> 
 | 
						|
						<a target='_blank' href='http://www.ripe.net/whois?searchtext=".$ip."'>
 | 
						|
						<img src='".get_option('siteurl')."/wp-content/plugins/semmelstatzR/img/ripe.png' /></a> 
 | 
						|
						<a target='_blank' href='http://www.utrace.de/?query=".$ip."'>
 | 
						|
						<img src='".get_option('siteurl')."/wp-content/plugins/semmelstatzR/img/utrace.png' /></a></td>";
 | 
						|
						
 | 
						|
						print "</tr>";
 | 
						|
						$i++;
 | 
						|
					}
 | 
						|
				if($i == $limit) break;
 | 
						|
			}
 | 
						|
		print "</tbody>";
 | 
						|
        print "</table>";
 | 
						|
		print "<hr />";
 | 
						|
	}
 | 
						|
	
 | 
						|
	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 "<div class='statz'>Die Top10 aller Posts & Pages heute</div>";
 | 
						|
        if (empty($topreads)) {
 | 
						|
            print '<small>... '.  semr_i18n("no entries at all").'</small></div>';
 | 
						|
            print "<hr />";
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        print "<table class='statzelement'>";
 | 
						|
        print "<thead>";
 | 
						|
        print "<tr>";
 | 
						|
        print "<th style='text-align: left; width: 45%;'>Post/Page</th>";
 | 
						|
        print "<th style='text-align: left; width: 45%;'>Postname</th>";
 | 
						|
        print "<th style='text-align: center; width: 10%;'>Hits</th>";
 | 
						|
        print "</tr>";
 | 
						|
        print "</thead>";
 | 
						|
        print "<tbody>";
 | 
						|
            foreach ($topreads as $key=>$topread) {
 | 
						|
                $posttitle = $topread->posttitle;
 | 
						|
                $postname = $topread->postname;
 | 
						|
                $postid = $topread->postid;
 | 
						|
                $count = $topread->count;
 | 
						|
                print "<tr"; if(1&$key) print " class='alternate'"; print ">";
 | 
						|
                print "<td style='text-align: left;'><a target='_blank' href='$postid'>".$posttitle."</a></td>";
 | 
						|
                print "<td style='text-align: left;'>".$postname."</td>";
 | 
						|
                print "<td style='text-align: center;'>".$count."</td>";
 | 
						|
                print "</tr>";
 | 
						|
            }
 | 
						|
        print "</tbody>";
 | 
						|
        print "</table>";
 | 
						|
		print "<hr />";
 | 
						|
    }
 | 
						|
	
 | 
						|
	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 "<div class='statz'>Die Top".$limit." aller Posts & Pages</div>";
 | 
						|
        if (empty($topreads)) {
 | 
						|
            print '<small>... '.  semr_i18n("no entries at all").'</small></div>';
 | 
						|
            print "<hr />";
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        print "<table class='statzelement'>";
 | 
						|
        print "<thead>";
 | 
						|
        print "<tr>";
 | 
						|
        print "<th style='text-align: left; width: 45%;'>Post/Page</th>";
 | 
						|
        print "<th style='text-align: left; width: 45%;'>Postname</th>";
 | 
						|
        print "<th style='text-align: center; width: 10%;'>Hits</th>";
 | 
						|
        print "</tr>";
 | 
						|
        print "</thead>";
 | 
						|
        print "<tbody>";
 | 
						|
            foreach ($topreads as $key=>$topread) {
 | 
						|
                $posttitle = $topread->posttitle;
 | 
						|
                $postname = $topread->postname;
 | 
						|
                $postid = $topread->postid;
 | 
						|
                $count = $topread->count;
 | 
						|
                print "<tr"; if(1&$key) print " class='alternate'"; print ">";
 | 
						|
                print "<td style='text-align: left;'><a target='_blank' href='".$postid."'>".$posttitle."</a></td>";
 | 
						|
                print "<td style='text-align: left;'>".$postname."</td>";
 | 
						|
                print "<td style='text-align: center;'>".$count."</td>";
 | 
						|
                print "</tr>";
 | 
						|
            }
 | 
						|
        print "</tbody>";
 | 
						|
        print "</table>";
 | 
						|
		print "<hr />";
 | 
						|
    }
 | 
						|
	
 | 
						|
    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 '<div class="statz">';
 | 
						|
        print semr_i18n("Known visitors today");
 | 
						|
        print '</div>';
 | 
						|
        if (empty($todaysonlineusers)) {
 | 
						|
            print '<small>... '.  semr_i18n("no entries at all").'</small></div>';
 | 
						|
            print "<hr />";
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        print "<table class='statzelement'>";
 | 
						|
        print "<thead>";
 | 
						|
        print "<tr>";
 | 
						|
        print "<th style='text-align: left; width: 80%;'>Besucher (Hits)</th>";
 | 
						|
        print "</tr>";
 | 
						|
        print "</thead>";
 | 
						|
        print "<tbody>";
 | 
						|
            foreach ($todaysonlineusers as $key=>$todayonlineuser) {
 | 
						|
                $username = $todayonlineuser->username;
 | 
						|
                $num = $todayonlineuser->num;
 | 
						|
                print "<tr"; if(1&$key) print " class='alternate'"; print ">";
 | 
						|
                print "<td style='text-align: left;'>".$username." (".$num.")</td>";
 | 
						|
                print "</tr>";
 | 
						|
            }
 | 
						|
        print "</tbody>";
 | 
						|
        print "</table>";
 | 
						|
		print "<hr />";
 | 
						|
    }
 | 
						|
	
 | 
						|
	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 "<div class='statz'>Die Top10 aller kommentierter Posts</div>";
 | 
						|
        if (empty($topcommentedposts)) {
 | 
						|
            print "<small>... noch keine Einträge</small>";
 | 
						|
			print "<hr />";
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        
 | 
						|
        print "<table class='statzelement'>";
 | 
						|
        print "<thead>";
 | 
						|
        print "<tr>";
 | 
						|
        print "<th style='text-align: left; width: 80%;'>Post/Page</th>";
 | 
						|
        print "<th style='text-align: center; width: 20%;'>Kommentare</th>";
 | 
						|
        print "</tr>";
 | 
						|
        print "</thead>";
 | 
						|
        print "<tbody>";
 | 
						|
        
 | 
						|
            foreach ($topcommentedposts as $key => $topcommentedpost) {
 | 
						|
                $posttitle = $topcommentedpost->post_title;
 | 
						|
                $count = $topcommentedpost->count;
 | 
						|
                $postid = $topcommentedpost->guid;
 | 
						|
                print "<tr"; if(1&$key) print " class='alternate'"; print ">";
 | 
						|
                print "<td style='text-align: left;'><a target='_blank' href='".$postid."'> ".$posttitle."</a></td>";
 | 
						|
                print "<td style='text-align: center;'>".$count."</td>";
 | 
						|
                print "</tr>";
 | 
						|
            }
 | 
						|
            
 | 
						|
        print "</tbody>";
 | 
						|
        print "</table>";
 | 
						|
		print "<hr />";
 | 
						|
    }
 | 
						|
 | 
						|
    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 "<div class='statz'>Die Top".$limit." aller Kommentierer</div>";
 | 
						|
        if (empty($topcommenters)) {
 | 
						|
            print "<small>... noch keine Einträge</small>";
 | 
						|
			print "<hr />";
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        
 | 
						|
        print "<table class='statzelement'>";
 | 
						|
        print "<thead>";
 | 
						|
        print "<tr>";
 | 
						|
        print "<th style='text-align: left; width: 20%;'>User</th>";
 | 
						|
        print "<th style='text-align: left; width: 30%;'>Email</th>";
 | 
						|
        print "<th style='text-align: left; width: 40%;'>Homepage</th>";
 | 
						|
        print "<th style='text-align: center; width: 10%;'>Kommentare</th>";
 | 
						|
        print "</tr>";
 | 
						|
        print "</thead>";
 | 
						|
        print "<tbody>";
 | 
						|
        
 | 
						|
            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 "<tr"; if(1&$key) print " class='alternate'"; print ">";
 | 
						|
                print "<td style='text-align: left;'>".$commenter."</td>";
 | 
						|
                print "<td style='text-align: left;'><a href='mailto:".$email."'>".$email."</a></td>";
 | 
						|
                print "<td style='text-align: left;'><a target='_blank' href='http://".$homepage."'>".$homepage."</a></td>";
 | 
						|
                print "<td style='text-align: center;'>".$count."</td>";
 | 
						|
                print "</tr>";
 | 
						|
            }
 | 
						|
        
 | 
						|
        print "</tbody>";
 | 
						|
        print "</table>";
 | 
						|
		print "<hr />";
 | 
						|
    }
 | 
						|
    
 | 
						|
### AKTUELL Anzeige
 | 
						|
 | 
						|
	print "<div class='wrap'>";
 | 
						|
		print "<div><a name='top'></a></div>";
 | 
						|
		print "<div id='icon-semmelstatzR' class='icon32'><br /></div>";
 | 
						|
		print "<h2>SemmelstatzR › Aktuell</h2>";
 | 
						|
		$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 "</div>";
 | 
						|
		
 | 
						|
?>
 |