. * * $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 */ ### 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; } /** * Check if agent is a bot * * @deprecated use Agents-object in the future * * @param string $user_agent * @return boolean */ function sem_AreYouBot($user_agent) { require_once 'class.agents.php'; $oCheckAgent = new Agents($user_agent); return $oCheckAgent->isBot(); } ### Referer nach Suchmaschinen-Queries und interner Suche prüfen und Suchstring extrahieren function sem_getKeyword($referer) { if(empty($referer)) return false; $homehost = '%'.(substr($_SERVER['SERVER_NAME'],0,4) == 'www.')? substr($_SERVER['SERVER_NAME'],4) . '%': $_SERVER['SERVER_NAME'] . '%'; $keyword = parse_url($referer); if(!isset($keyword['host']) || !isset($keyword['query'])) return false; 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 "
semmelstatzR ". SEMMELSTATZR_VERSION . " happily coded by SEM-Team