images and localizing

This commit is contained in:
Oldperl 2011-08-23 14:08:57 +00:00
parent 8140d5f4d2
commit d11ff26772
8 changed files with 997 additions and 893 deletions

BIN
_psd/statzR_small_sfnet.psd Normal file

Binary file not shown.

BIN
_psd/statz_small.psd Normal file

Binary file not shown.

BIN
img/statzR.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

473
includes/functions.semr.php Normal file
View file

@ -0,0 +1,473 @@
<?php
############################################## SEMMELSTATZ-interne Funktionen
### Encodierung der IP-Adresse durch simple arithmetische Operation
function sem_encodeIP($ip) {
$ip_parts = split("[.]", $ip);
$new_ip = ($ip_parts[0]+700) . "." . ($ip_parts[1]*2) . "." . ($ip_parts[2]+600) . "." . ($ip_parts[3]*3);
return $new_ip;
}
### Decodierung der IP-Adresse durch simple arithmetische Operation
function sem_decodeIP($ip) {
$ip_parts = split("[.]", $ip);
$new_ip = ($ip_parts[0]-700) . "." . ($ip_parts[1] / 2) . "." . ($ip_parts[2]-600) . "." . ($ip_parts[3]/3);
return $new_ip;
}
### Ist IP-Adresse codiert?
function sem_checkIfIPisEncoded($ip) {
$ip_parts = split("[.]", $ip);
if($ip_parts[0]>700) {
return true;
}
else {
return false;
}
}
### Auslesen der höchsten Post-ID
function sem_getMaxPostID() {
global $wpdb;
$maxpostid = $wpdb->get_var("SELECT MAX(ID) FROM ".$wpdb->posts." LIMIT 0,1");
return $maxpostid; //Ganzzahl
}
### Auslesen des User- bzw. Kommentarautornamen
function sem_getUsername() {
global $user_ID, $user_login, $isAdmin;
get_currentuserinfo();
if($user_ID > 0) {
$useronline = $user_login;
if(current_user_can('manage_options')) {
$isAdmin = 1;
}
else {
$isAdmin = 0;
}
}
elseif(isset($_COOKIE["comment_author_".COOKIEHASH])) {
$useronline = trim($_COOKIE["comment_author_".COOKIEHASH]);
$isAdmin = -1;
}
else {
$useronline = "Gast";
$isAdmin = -1;
}
return $useronline;
}
### Prüfen, ob Besucher ein Bot ist
function sem_AreYouBot($user_agent) {
global $isBot;
$bots = array(
'aipbot',
'amfibibot',
'appie',
'ask jeeves/teoma',
'aspseek',
'axadine',
'baiduspider',
'becomebot',
'blogcorpuscrawler',
'blogpulse',
'blogsnowbot',
'boitho.com',
'bruinbot',
'cerberian',
'cfnetwork',
'check_http',
'cipinetbot',
'claymont',
'cometsearch@cometsystems.com',
'converacrawler',
'cydralspider',
'digger',
'es.net_crawler',
'eventax',
'everyfeed-spider',
'exabot@exava.com',
'faxobot',
'findlinks',
'fireball',
'francis',
'gaisbot',
'gamekitbot',
'gazz@nttr.co.jp',
'geonabot',
'getrax crawler',
'gigabot',
'girafa.com',
'goforitbot',
'googlebot',
'grub-client',
'holmes',
'houxoucrawler',
'http://www.almaden.ibm.com/cs/crawler',
'http://www.istarthere.com',
'http://www.relevantnoise.com',
'httrack ?',
'ia_archiver',
'ichiro',
'iltrovatore-setaccio',
'inelabot',
'infoseek',
'inktomi.com',
'irlbot',
'jetbot',
'jobspider_ba',
'kazoombot',
'larbin',
'libwww',
'linkwalker',
'lmspider',
'mackster',
'mediapartners-google',
'microsoft url control',
'mj12bot',
'moreoverbot',
'mozdex',
'msnbot',
'msrbot',
'naverbot',
'netresearchserver',
'ng/2.0',
'np(bot)',
'nutch',
'objectssearch',
'ocelli',
'omniexplorer_bot',
'openbot',
'overture',
'patwebbot',
'php',
'phpdig',
'pilgrim html-crawler',
'pipeliner',
'pompos',
'psbot',
'python-urllib',
'quepasacreep',
'robozilla',
'rpt-httpclient',
'savvybot',
'scooter',
'search.ch',
'seekbot',
'semager',
'seznambot',
'sherlock',
'shelob',
'sitesearch',
'snapbot',
'snappreviewbot',
'speedy spider',
'sphere scout',
'stackrambler',
'steeler',
'surveybot',
'szukacz',
'technoratibot',
'telnet',
'themiragorobot',
'thesubot',
'thumbshots-de-bot',
'topicblogs',
'turnitinbot',
'tutorgigbot',
'tutorial crawler',
'twiceler',
'vagabondo',
'versus',
'voilabot',
'w3c_css_validator',
'w3c_validator',
'w3c-checklink',
'web downloader',
'webcopier',
'webcrawler',
'webfilter robot',
'west wind internet protocols',
'wget',
'wwweasel robot',
'wwwster',
'xaldon webspider',
'xenu',
'yahoo! slurp',
'yahoofeedseeker',
'yahoo-mmcrawler',
'zao',
'zipppbot',
'zyborg',
);
foreach($bots as $bot) {
if(stristr($user_agent, $bot) !== false) {
return true;
}
}
return false;
}
### Referer nach Suchmaschinen-Queries und interner Suche prüfen und Suchstring extrahieren
function sem_getKeyword($referer) {
$keyword = @parse_url($referer);
if (preg_match("/google\./i", $keyword["host"])) {
if (preg_match("/imgurl/i", $keyword["query"])) {
parse_str($keyword["query"],$q);
$keyword = substr($q["prev"],10);
}
else if (preg_match("/translate\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
}
else {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
}
if($keyword == "") return; return "Google: ".$keyword;
}
elseif (preg_match("/search\.live\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
if($keyword == "") return; return "LiveSearch: ".$keyword;
}
elseif (preg_match("/bing\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
if($keyword == "") return; return "Bing: ".$keyword;
}
elseif (preg_match("/yahoo\./i", $keyword["host"])) {
if (preg_match("/images/i", $keyword["query"])) {
parse_str($keyword["query"],$q);
$keyword = $q["p"];
}
else {
parse_str($keyword["query"],$q);
$keyword = $q["p"];
}
if($keyword == "") return; return "Yahoo: ".$keyword;
}
elseif (preg_match("/aol\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
if($keyword == "") return; return "AOL: ".$keyword;
}
elseif (preg_match("/aolsvc\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
if($keyword == "") return; return "AOL: ".$keyword;
}
elseif (preg_match("/search\.msn\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
if($keyword == "") return; return "MSN: ".$keyword;
}
elseif (preg_match("/gmx\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["su"];
if($keyword == "") return; return "GMX: ".$keyword;
}
elseif (preg_match("/\.bild\.t\-/i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["query"];
if($keyword == "") return; return "BILD: ".$keyword;
}
elseif (preg_match("/t\-online\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
if($keyword == "") return; return "T-Online: ".$keyword;
}
elseif (preg_match("/suche\.web\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["su"];
if($keyword == "") return; return "WEB.de: ".$keyword;
}
elseif (preg_match("/suche\.lycos\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["query"];
if($keyword == "") return; return "Lycos: ".$keyword;
}
elseif (preg_match("/altavista\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
if($keyword == "") return; return "Altavista: ".$keyword;
}
elseif (preg_match("/alltheweb\./i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["q"];
if($keyword == "") return; return "alltheweb: ".$keyword;
}
elseif (preg_match("/technorati\.com\/search\//", $referer)) {
$q = preg_split("/technorati\.com\/search\//", $referer,-1,PREG_SPLIT_NO_EMPTY);
$keyword = $q[1];
if($keyword == "") return; return "Technorati: ".$keyword;
}
elseif (preg_match("/".$homehost."/i", $keyword["host"])) {
parse_str($keyword["query"],$q);
$keyword = $q["s"];
if($keyword == "") return; return "Interne Suche: ".$keyword;
}
else {
return;
}
}
### Anzahl der Datensätze in der statz-Tabelle
function sem_showNumStatzEntries() {
global $wpdb;
$numstatzentries = $wpdb->get_var("SELECT COUNT(id) FROM ".$wpdb->statz);
return $numstatzentries; // Zahl
}
### Aufgezeichnete Tage in der statz-Tabelle
function sem_countDaysInStatzTable() {
global $wpdb;
$firstdate = $wpdb->get_var("SELECT MIN(time) FROM ".$wpdb->statz." LIMIT 0,1");
if(!$firstdate) {
return 1;
}
else {
$firstdate = strtotime($firstdate); $now = time();
$days = (int) (($now - $firstdate) / (60*60*24)+1);
return $days; // KOMPLETTE! Tage
}
}
### Wenn Tage in statz-Tabelle kleiner als Tage in Daily-Statz, dann nimm Tage in Daily-Statz
function sem_compareLimitDays2DailyStatz () {
global $wpdb;
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
if (sem_countDaysInStatzTable() << $sem_options["statz_days_limit"]) {
$sem_options["statz_days_limit"] = sem_countDaysInStatzTable();
update_option("semmelstatzR_options", $sem_options);
}
}
### Zeigt Copyright-Notiz an
function sem_showCopyright() {
print "<p class='copyright'>semmelstatzR ". SEMMELSTATZR_VERSION . " happily coded by <a target='_blank' href='http://php-backoffice.de'>PHP-Backoffice<br />
<a target='_blank' style='border:none;' href='http://sourceforge.net/projects/semmelstatz/'>
<img src='".get_option('siteurl')."/wp-content/plugins/semmelstatzR/img/statzR.png' /></a></p>";
}
### statz-Tabelle leeren (NICHT LÖSCHEN!!!)
function sem_truncateStatzTable() {
global $wpdb, $userip;
$wpdb->query('TRUNCATE TABLE '.$wpdb->statz);
sem_optStatzTable();
$wpdb->query("INSERT INTO `$wpdb->statz`(ip, time, referer, page, username) VALUES('127.0.0.1', NOW(),NULL,0,'statz-Tabelle geleert')");
}
### Obsolet, bleibt aber aus Kompatibilitätsgründen zu SEMMELSTATZ_DELETE
function sem_delOldRecords($days) {
return true;
}
### simpleEncoding für die GoogleChartAPI
function sem_encodeChartData($values) {
$maxValue = max($values);
$simpleEncoding = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$chartData = "s:";
for ($i = 0; $i < count($values); $i++) {
$currentValue = $values[$i];
if ($currentValue > -1 && $maxValue <> 0) {
$chartData.=substr($simpleEncoding,61*($currentValue/$maxValue),1);
}
else {
$chartData.='_';
}
}
return $chartData;
}
### Datensätze älter als statz_recdays_limit-Tage löschen
function sem_delOutOfLimit() {
global $wpdb;
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
$today = time(); $days = $sem_options["statz_recdays_limit"];
$enddatum = $today - ($days * 86400);
$enddatum = date("Y-m-d", $enddatum) . " 23:59:59";
$wpdb->query("DELETE FROM ".$wpdb->statz." WHERE time <= '".$enddatum."'");
sem_optStatzTable();
}
### Wenn AUTOMATISCHES LIMIT aktiviert, dann LIMITIERE und erhöhe NEXT_CRON
function sem_doCronStatzLimit() {
sem_delOutOfLimit();
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
$statz_next_cron = $sem_options["statz_next_cron"] + 86400;
$sem_options["statz_next_cron"] = $statz_next_cron;
update_option("semmelstatzR_options", $sem_options);
}
### Konvertiert Strings von utf-8 in ISO-8859
function sem_encodeToIso($string) {
return mb_convert_encoding($string, "ISO-8859-1", mb_detect_encoding($string, "UTF-8, ISO-8859-1, ISO-8859-15", true));
}
### statz-Tabelle optimieren
function sem_optStatzTable() {
global $wpdb;
$wpdb->query("OPTIMIZE TABLE ".$wpdb->statz);
}
### Unter bestimmten Voraussetzungen den Vortag in die statzhist-Tabelle schreiben
function sem_writeYesterdayToHist() {
global $wpdb;
if(!$wpdb->get_var("SELECT date FROM ".$wpdb->statzhist." WHERE substring(date,1,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)")) {
if($wpdb->get_var("SELECT COUNT(ip) FROM ".$wpdb->statz." WHERE substring(time,1,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)")) {
$yesterdays = $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 substring(time,1,10) = DATE_SUB(CURDATE(),
INTERVAL 1 DAY) GROUP BY date");
foreach ($yesterdays as $yesterday) {
$date = $yesterday->date;
$visitors = $yesterday->visitors;
$hits = $yesterday->hits;
$referers = $yesterday->referers;
}
$sql = $wpdb->query("INSERT INTO ".$wpdb->statzhist." (date, referers, visitors, hits)
VALUES('$date', $referers, $visitors, $hits)");
}
else {
$date = $wpdb->get_var("SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY)");
$sql = $wpdb->query("INSERT INTO ".$wpdb->statzhist." (date, referers, visitors, hits) VALUES('$date', 0, 0, 0)");
}
}
}
### Summen der vergangenen Tage in die statzhist schreiben */
function sem_writeOldDaysToHist() {
global $wpdb;
if(!$wpdb->get_var("SELECT date FROM ".$wpdb->statzhist." WHERE substring(date,1,10) <= DATE_SUB(CURDATE(), INTERVAL 1 DAY)")) {
$theolddays = $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
substring(time,1,10) <= DATE_SUB(CURDATE(), INTERVAL 1 DAY) GROUP BY date ORDER BY time ASC");
foreach ($theolddays as $theoldday) {
$date = $theoldday->date;
$visitors = $theoldday->visitors; if(!$visitors) $visitors = 0;
$hits = $theoldday->hits; if(!$hits) $hits = 0;
$referers = $theoldday->referers; if(!$referers) $referers = 0;
$sql = $wpdb->query("INSERT INTO ".$wpdb->statzhist." (date, referers, visitors, hits)
VALUES('$date', $referers, $visitors, $hits)");
}
}
}
function semr_e($sValue, $sDomain = "semmelstatzR") {
return __($sValue, $sDomain);
}
############################################## Ende SEMMELSTATZ-interne Funktionen
?>

View file

@ -0,0 +1,267 @@
<?php
############################################## Beginn TEMPLATE-Funktionen
### Zeigt die letzten $num_posts-Posts an: Titel und absolutes Datum - CSS-id: #lastposts
function sem_showLastPosts($num_posts = 10) {
global $wpdb;
$lastposts = $wpdb->get_results("SELECT ID, post_title FROM ".$wpdb->posts." WHERE post_status = 'publish'
AND post_type = 'post' ORDER BY post_date DESC LIMIT 0, ".$num_posts);
print "<div id='lastposts'>";
if (empty($lastposts)) {
print "... noch keine Beitr&auml;ge";
}
else {
print "<b>Die letzten ".$num_posts." Beitr&auml;ge</b><br />";
foreach ($lastposts as $lastpost) {
$posttitle = $lastpost->post_title;
$permalink = get_permalink($lastpost->ID);
$postdate = $lastpost->post_date;
print "<a href='".$permalink."'>".$posttitle."</a><br />\n";
}
}
print "</div>";
}
### Zeigt die letzten $num_comments-Kommentare an: Autor und Post mit relativem Datum - CSS-id: #lastcomments
function sem_showLastComments($num_comments = 10) {
global $wpdb;
$comments = $wpdb->get_results("SELECT comment_author, comment_ID, comment_post_ID, comment_date
FROM ".$wpdb->comments." WHERE comment_approved = '1' ORDER BY comment_date DESC LIMIT 0, $num_comments");
print "<div id='lastcomments'>";
if (empty($comments)) {
print "Keine Kommentare";
}
else {
print "<b>Die letzten ".$num_comments." Kommentare</b><br />";
foreach ($comments as $comment) {
$commentday = strtotime(substr($comment->comment_date,1,10));
$today = time();
$difference = ceil(($today - $commentday) / (60*60*24))-1;
if($difference == 0) {
$commentdate = "Heute&nbsp;um&nbsp;" . mysql2date("G:i", $comment->comment_date);
}
elseif($difference == 1) {
$commentdate = "Gestern&nbsp;um&nbsp;" . mysql2date("G:i", $comment->comment_date);
}
elseif($difference == 2) {
$commentdate = "Vorgestern&nbsp;um&nbsp;" . mysql2date("G:i", $comment->comment_date);
}
else {
$commentdate = mysql2date("j. F G:i", $comment->comment_date);
}
print "<a href='" . get_permalink($comment->comment_post_ID) . "#comment-$comment->comment_ID'>$comment->comment_author@". get_the_title($comment->comment_post_ID) .", $commentdate</a><br />\n";
}
}
print "</div>";
}
### Zeigt die $num_reads meist gelesenen Posts an - CSS-id: #mostreads
function sem_showMostReads($num_reads = 10) {
global $wpdb;
$mostreads = $wpdb->get_results("SELECT post_title AS posttitle, guid AS postid, hits AS hits FROM ".$wpdb->posts." WHERE hits != '0' GROUP BY postid ORDER BY hits DESC LIMIT 0, $num_reads");
print "<div id='mostreads'>";
if (empty($mostreads)) {
print "... noch keine Eintr&auml;ge";
}
else {
print "<b>Die ".$num_reads." meist gelesenen Beitr&auml;ge</b><br />";
foreach ($mostreads as $mostread) {
$posttitle = $mostread->posttitle;
$postid = $mostread->postid;
//$permalink = get_permalink($mostread->postid);
$hits = $mostread->hits;
print "<a target='_blank' href='".$postid."'>".$posttitle." (".$hits.")</a><br />\n";
}
}
print "</div>";
}
### Zeigt die $num_reads meist gelesenen Posts an - CSS-id: #mostreads - ACHTUNG: Das Ergebnis der Funktion basiert auf der statz-Tabelle
function sem_showMostReadsOld($num_reads = 10) {
global $wpdb;
$mostreads = $wpdb->get_results("SELECT post_title AS posttitle, ".$wpdb->posts.".guid AS postid,
COUNT(".$wpdb->statz.".page) AS count FROM ".$wpdb->posts.", ".$wpdb->statz." WHERE
".$wpdb->statz.".page = ".$wpdb->posts.".ID GROUP BY postid ORDER BY count DESC LIMIT 0, $num_reads");
print "<div id='mostreads'>";
if (empty($mostreads)) {
print "... noch keine Eintr&auml;ge";
}
else {
print "<b>Die ".$num_reads." meist gelesenen Beitr&auml;ge</b><br />";
foreach ($mostreads as $mostread) {
$posttitle = $mostread->posttitle;
$postid = $mostread->postid;
//$permalink = get_permalink($mostread->postid);
$count = $mostread->count;
print "<a target='_blank' href='".$postid."'>".$posttitle." (".$count.")</a><br />\n";
}
}
print "</div>";
}
### Zeigt die $num_commented meist kommentierten Posts an - CSS-id: #mostcommented
function sem_showMostCommented($num_commented = 10) {
global $wpdb;
$mostcommented = $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 id, post_title ORDER BY count DESC LIMIT 0, $num_commented");
print "<div id='mostcommented'>";
if (empty($mostcommented)) {
print "... noch keine Eintr&auml;ge";
}
else {
print "<b>Die ".$num_commented." meist kommentierten Beitr&auml;ge</b><br />";
foreach ($mostcommented as $key => $mostcommented) {
$posttitle = $mostcommented->post_title;
$count = $mostcommented->count;
$postid = $mostcommented->guid;
print "<a target='_blank' href='".$postid."'>".$posttitle." (".$count.")</a><br />\n";
}
}
print "</div>";
}
### Zeigt einen Zähler der Hits im jeweiligen Post. ACHTUNG: FUNKTIONIERT NUR IM LOOP (index.php, single.php)
function sem_showPostHitsInLoop($postid) {
global $wpdb;
$hits = $wpdb->get_var("SELECT hits FROM $wpdb->posts WHERE ID = $postid LIMIT 0,1");
return $hits;
}
### Anzahl aller Posts/Pages
function sem_showTotalPosts() {
global $wpdb;
$totalposts = $wpdb->get_var("SELECT COUNT(ID) AS num FROM ".$wpdb->posts." WHERE post_status = 'publish' LIMIT 0,1");
return $totalposts; // Ganzzahl
}
### Anzahl aller Kommentare
function sem_showTotalComments() {
global $wpdb;
$totalcomments = $wpdb->get_var("SELECT COUNT(comment_ID) AS num FROM ".$wpdb->comments." WHERE comment_approved = '1' LIMIT 0,1");
return $totalcomments; // Ganzzahl
}
### Anzahl aller User seit Beginn der Statzaufzeichnung
function sem_showTotalUsers() {
global $wpdb;
$totalusers = $wpdb->get_var("SELECT SUM(visitors) FROM ".$wpdb->statzhist." LIMIT 0,1");
if(!$totalusers) $totalusers = 0;
return $totalusers; // Ganzzahl
}
### Anzahl User pro Tag im Durchschnitt
function sem_showAverageUserPerDay() {
$averageuser = ceil(sem_showTotalUsers() / sem_showStatzDays());
return $averageuser;
}
### Datum des 1. Posts = Blogstart
function sem_showFirstPostDate() {
global $wpdb;
$firstpostdate = $wpdb->get_var("SELECT MIN(post_date) FROM ".$wpdb->posts." WHERE post_status = 'publish' AND post_date != '0000-00-00 00:00:00' LIMIT 0,1");
$firstpostdate = mysql2date("j.n.Y", $firstpostdate);
return $firstpostdate; // String T.M.JJJJ
}
### Datum des 1. Kommentars
function sem_showFirstCommentDate() {
global $wpdb;
$firstcommentdate = $wpdb->get_var("SELECT MIN(comment_date) FROM ".$wpdb->comments." WHERE comment_approved = '1'
AND comment_date != '0000-00-00 00:00:00' LIMIT 0,1");
$firstcommentdate = mysql2date("j.n.Y", $firstcommentdate);
return $firstcommentdate; // String T.M.JJJJ
}
### Anzahl der Kommentierer nach Nicknamen
function sem_showNumCommenters() {
global $wpdb;
$totalcommenters = $wpdb->get_var("SELECT COUNT(DISTINCT comment_author) FROM ".$wpdb->comments." WHERE comment_approved = '1' LIMIT 0,1");
if(!$totalcommenters) $totalcommenters = 0;
return $totalcommenters; // Ganzzahl
}
### Blog besteht seit x Tagen
function sem_showPostDays() {
global $wpdb;
$firstdate = $wpdb->get_var("SELECT MIN(post_date) AS date FROM ".$wpdb->posts." WHERE post_status = 'publish' AND post_date != '0000-00-00 00:00' LIMIT 0,1");
$firstdate = strtotime($firstdate); $now = time();
$blogdays = (int) (($now - $firstdate) / (60*60*24));
$blogdays = $blogdays + 1;
return $blogdays; // Ganzzahl
}
### Tage seit 1. Kommentar
function sem_showCommentDays() {
global $wpdb;
$firstdate = $wpdb->get_var("SELECT MIN(comment_date) AS date FROM ".$wpdb->comments." LIMIT 0,1");
$firstdate = strtotime($firstdate); $now = time();
$commentdays = (int) (($now - $firstdate) / (60*60*24));
$commentdays = $commentdays + 1;
return $commentdays; // Ganzzahl
}
### durchschn. Posts pro Tag
function sem_showPostsPerDay() {
global $wpdb;
$postsperday = (int) sem_showTotalPosts() / (int) sem_showPostDays();
return $postsperday; // Ganzzahl
}
### durchschn. Kommentare pro Tag
function sem_showCommentsPerDay() {
global $wpdb;
$commentsperday = (int) sem_showTotalComments() / (int) sem_showCommentDays();
return $commentsperday; // Ganzzahl
}
### Startdatum der Gesamtstatistik (Basis: statzhist)
function sem_showStatzStartDate() {
global $wpdb;
$statzhiststartdate = $wpdb->get_var("SELECT MIN(date) FROM ".$wpdb->statzhist." WHERE date != '0000-00-00 00:00' LIMIT 0,1");
$statzhiststartdate = mysql2date("j.n.Y", $statzhiststartdate);
// if(!$statzhiststartdate) $statzhiststartdate= "xx.xx.xxxx";
return $statzhiststartdate; // String T.M.JJJJ
}
### Dauer der Statistikaufzeichnung in Tagen (Basis: statzhist)
function sem_showStatzDays() {
global $wpdb;
$firstdate = $wpdb->get_var("SELECT MIN(date) FROM ".$wpdb->statzhist." LIMIT 0,1");
if(!$firstdate) {
return 1;
}
else {
$firstdate = strtotime($firstdate); $now = time();
$statzdays = (int) (($now - $firstdate) / (60*60*24));
return $statzdays; // Ganzzahl
}
}
### Anzahl der Online-Besucher - Verweildauer in den Einstellungen
function sem_showNumUsersOnline() {
global $wpdb;
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
$onlinetime = $sem_options["statz_online_time"];
$numonline = $wpdb->get_var("SELECT COUNT(DISTINCT ip) FROM ".$wpdb->statz." WHERE time > Now() - INTERVAL ".$onlinetime." SECOND");
return $numonline; // Ganzzahl
}
### Anzahl der heutigen Besucher
function sem_showUsersToday() {
global $wpdb; $today = date("Y-m-d");
$todayusers = $wpdb->get_var("SELECT COUNT(DISTINCT ip) FROM ".$wpdb->statz." WHERE time >= '$today' LIMIT 0, 1");
return $todayusers;
}
### Anzahl der gestrigen Besucher
function sem_showUsersYesterday() {
global $wpdb;
$yesterdaysusers = $wpdb->get_var("SELECT visitors FROM ".$wpdb->statzhist." WHERE date = substr(DATE_SUB(NOW(), INTERVAL 1 DAY),1,10) LIMIT 0, 1");
return $yesterdaysusers;
}
##################################################### Ende TEMPLATE-Funktionen
?>

View file

@ -42,14 +42,15 @@ if(!current_user_can('manage_statz')) {
$sem_options['statz_show_todayusers'] = $_POST['statz_show_todayusers'];
$sem_options['statz_on_dashboard'] = $_POST['statz_on_dashboard'];
$sem_options['statz_datarecs_limit'] = $_POST['statz_datarecs_limit'];
$sem_options['statz_use_img'] = $_POST['statz_use_img'];
update_option("semmelstatzR_options", $sem_options);
echo '<div class="updated fade"><p>Einstellungen gespeichert</strong></p></div>';
echo '<div class="updated fade"><p>'.semr_e('Options saved').'</strong></p></div>';
}
if(isset($_POST['trunc_save'])) {
if ($result == sem_truncateStatzTable()) {
echo "<div class='updated'><p>Die <i>statz</i>-Tabelle wurde erfolgreich geleert.</p></div>";
echo "<div class='updated'><p>".semr_e('<i>statz</i>-table emptied succesfully.')."</p></div>";
}
}
@ -92,11 +93,19 @@ if(!current_user_can('manage_statz')) {
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?page=<?php echo plugin_basename(__FILE__); ?>">
<div id='icon-semmelstatzR' class='icon32'><br /></div>
<h2>SemmelstatzR &rsaquo; Einstellungen</h2>
<h2>SemmelstatzR &rsaquo; <?php echo semr_e('Options'); ?></h2>
<p><input type="submit" class="button-secondary" name="options_save" value="&Auml;nderungen &uuml;bernehmen" /></p>
<p><input type="submit" class="button-secondary" name="options_save" value="<?php echo semr_e('Save Changes'); ?>" /></p>
<table class="form-table">
<tr style="background:#eee;" valign="middle">
<th><?php echo semr_e('Use tracking image'); ?></th>
<td><input name="statz_use_img" type="checkbox" id="statz_write_admins" value="statz_use_img"
<?php if($sem_options["statz_use_img"] == TRUE) {?> checked="checked" <?php } ?> />
</td>
<td><?php echo semr_e('Use a pixelimage in the footer to track visitors. Only needed with some cache-plugins. - (Default: Off)'); ?></td>
</tr>
<tr style="background:#eee;" valign="middle">
<th>Blog-Administratoren aufzeichnen</th>

File diff suppressed because it is too large Load diff

25
semr_image.php Normal file
View file

@ -0,0 +1,25 @@
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
define('SEMMELSTATZR_STATZIMG', true);
/*
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
*/
header('Cache-Control: no-cache');
header("X-Robots-Tag: noindex, nofollow", true);
require '../../../wp-load.php';
sem_writeStatz();
// Output transparent gif
header('Content-type: image/gif');
header('Content-length: 43');
echo base64_decode('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
?>