2011-08-23 14:08:57 +00:00
|
|
|
|
<?php
|
2011-11-14 08:17:25 +00:00
|
|
|
|
/**
|
|
|
|
|
* File: functions.semr.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$
|
|
|
|
|
*
|
|
|
|
|
*/
|
2011-08-23 14:08:57 +00:00
|
|
|
|
### 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<50>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<70>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<6E>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<69>tsgr<67>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<6E>tze <20>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<72>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)");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2011-08-24 09:20:32 +00:00
|
|
|
|
/**
|
|
|
|
|
* translate and return a string
|
|
|
|
|
* @uses wp-function __() and prefilled plugin gettextdomain
|
|
|
|
|
*
|
|
|
|
|
* @param string $sValue string to translate
|
|
|
|
|
* @param string $sDomain gettextdomain
|
|
|
|
|
* @return string translated string
|
|
|
|
|
*/
|
|
|
|
|
function semr_i18n($sValue, $sDomain = "semmelstatzR") {
|
2011-08-23 14:08:57 +00:00
|
|
|
|
return __($sValue, $sDomain);
|
|
|
|
|
}
|
2011-08-24 09:20:32 +00:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* translate and echo a string
|
|
|
|
|
* @uses wp-function _e() and prefilled plugin gettextdomain
|
|
|
|
|
*
|
|
|
|
|
* @param string $sValue
|
|
|
|
|
* @param string $sDomain
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
function semr_i18ne($sValue, $sDomain = "semmelstatzR") {
|
|
|
|
|
_e($sValue, $sDomain);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* translate and return a plural or singular string based on an amount
|
|
|
|
|
* @uses wp-function _n() and prefilled plugin gettextdomain
|
|
|
|
|
*
|
|
|
|
|
* @param string $sSingular
|
|
|
|
|
* @param string $sPlural
|
|
|
|
|
* @param type $iNumber
|
|
|
|
|
* @param string $sDomain
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
function semr_i18np($sSingular, $sPlural, $iNumber, $sDomain = "semmelstatzR") {
|
|
|
|
|
return _n($sSingular, $sPlural, $iNumber, $sDomain);
|
|
|
|
|
}
|
|
|
|
|
|
2011-08-23 14:08:57 +00:00
|
|
|
|
############################################## Ende SEMMELSTATZ-interne Funktionen
|
|
|
|
|
?>
|