some doc and cleanup stuff
Dieser Commit ist enthalten in:
Ursprung
e400b059d8
Commit
b90587fef1
3 geänderte Dateien mit 271 neuen und 225 gelöschten Zeilen
|
@ -10,189 +10,188 @@ Plugin URI: https://github.com/meglio/wp-upgrademe
|
||||||
|
|
||||||
if (!class_exists('Upgrademe')) {
|
if (!class_exists('Upgrademe')) {
|
||||||
|
|
||||||
class Upgrademe
|
class Upgrademe {
|
||||||
{
|
/**
|
||||||
/**
|
* Stores parsed and validated data returned by unofficial APIs.
|
||||||
* Stores parsed and validated data returned by unofficial APIs.
|
* @var array
|
||||||
* @var array
|
*/
|
||||||
*/
|
private static $data;
|
||||||
private static $data;
|
|
||||||
|
|
||||||
private static $WP_FILTER_PREFIX = 'wpFilter_';
|
private static $WP_FILTER_PREFIX = 'wpFilter_';
|
||||||
|
|
||||||
public static function register()
|
public static function register()
|
||||||
{
|
{
|
||||||
$r = new ReflectionClass(__CLASS__);
|
$r = new ReflectionClass(__CLASS__);
|
||||||
$methods = $r->getMethods(ReflectionMethod::IS_PUBLIC);
|
$methods = $r->getMethods(ReflectionMethod::IS_PUBLIC);
|
||||||
foreach($methods as $m)
|
foreach($methods as $m)
|
||||||
{
|
{
|
||||||
/** @var ReflectionMethod $m */
|
/** @var ReflectionMethod $m */
|
||||||
if ($m->isStatic() && strpos($m->getName(), self::$WP_FILTER_PREFIX) === 0) {
|
if ($m->isStatic() && strpos($m->getName(), self::$WP_FILTER_PREFIX) === 0) {
|
||||||
add_filter(substr($m->getName(), strlen(self::$WP_FILTER_PREFIX)), array(get_class(), $m->getName()),
|
add_filter(substr($m->getName(), strlen(self::$WP_FILTER_PREFIX)), array(get_class(), $m->getName()),
|
||||||
10, $m->getNumberOfParameters());
|
10, $m->getNumberOfParameters());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function wpFilter_http_response($response, $args, $url)
|
public static function wpFilter_http_response($response, $args, $url)
|
||||||
{
|
{
|
||||||
# Control recursion
|
# Control recursion
|
||||||
static $recursion = false;
|
static $recursion = false;
|
||||||
if ($recursion)
|
if ($recursion)
|
||||||
return $response;
|
return $response;
|
||||||
|
|
||||||
if (empty($response) || !is_array($response) || !isset($response['body']))
|
if (empty($response) || !is_array($response) || !isset($response['body']))
|
||||||
return $response;
|
return $response;
|
||||||
|
|
||||||
# Guess if it's time to take action
|
# Guess if it's time to take action
|
||||||
if ($url == 'http://api.wordpress.org/plugins/update-check/1.0/')
|
if ($url == 'http://api.wordpress.org/plugins/update-check/1.0/')
|
||||||
$showTime = true;
|
$showTime = true;
|
||||||
# Prevent failures if WordPress changes url for updates; we will detect if it still contains "update-check" token
|
# Prevent failures if WordPress changes url for updates; we will detect if it still contains "update-check" token
|
||||||
# and called from withing wp_update_plugins() function
|
# and called from withing wp_update_plugins() function
|
||||||
elseif (stripos($url, 'update-check') !== false)
|
elseif (stripos($url, 'update-check') !== false)
|
||||||
{
|
{
|
||||||
$showTime = false;
|
$showTime = false;
|
||||||
$trace = debug_backtrace(false);
|
$trace = debug_backtrace(false);
|
||||||
foreach($trace as $t)
|
foreach($trace as $t)
|
||||||
# http request made from within wp_update_plugins
|
# http request made from within wp_update_plugins
|
||||||
if (isset($t['function']) && $t['function'] == 'wp_update_plugins')
|
if (isset($t['function']) && $t['function'] == 'wp_update_plugins')
|
||||||
{
|
{
|
||||||
$showTime = true;
|
$showTime = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
unset($trace, $t);
|
unset($trace, $t);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$showTime = false;
|
$showTime = false;
|
||||||
if (!$showTime)
|
if (!$showTime)
|
||||||
return $response;
|
return $response;
|
||||||
|
|
||||||
# Loop over plugins who provided <pluginName>_upgrademe() function and use returned url to request for up-to-date version signature.
|
# Loop over plugins who provided <pluginName>_upgrademe() function and use returned url to request for up-to-date version signature.
|
||||||
# Collect retrieved (only valid) data into $upgrademe
|
# Collect retrieved (only valid) data into $upgrademe
|
||||||
$plugins = get_plugins();
|
$plugins = get_plugins();
|
||||||
$upgrademe = array();
|
$upgrademe = array();
|
||||||
foreach($plugins as $file => $info)
|
foreach($plugins as $file => $info)
|
||||||
{
|
{
|
||||||
# Get url if function exists
|
# Get url if function exists
|
||||||
$slugName = str_replace('-', '_', basename($file, '.php'));
|
$slugName = str_replace('-', '_', basename($file, '.php'));
|
||||||
|
|
||||||
# Request latest version signature from custom url (non-WP plugins repository api) && validate response variables
|
# Request latest version signature from custom url (non-WP plugins repository api) && validate response variables
|
||||||
$recursion = true;
|
$recursion = true;
|
||||||
$vars = self::loadPluginData($slugName);
|
$vars = self::loadPluginData($slugName);
|
||||||
$recursion = false;
|
$recursion = false;
|
||||||
if (empty($vars))
|
if (empty($vars))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
$upgrademe[$file] = $vars;
|
$upgrademe[$file] = $vars;
|
||||||
}
|
}
|
||||||
if (!count($upgrademe))
|
if (!count($upgrademe))
|
||||||
return $response;
|
return $response;
|
||||||
|
|
||||||
$body = $response['body'];
|
$body = $response['body'];
|
||||||
if (!empty($body))
|
if (!empty($body))
|
||||||
$body = unserialize($body);
|
$body = unserialize($body);
|
||||||
if (empty($body))
|
if (empty($body))
|
||||||
$body = array();
|
$body = array();
|
||||||
foreach($upgrademe as $file => $upgradeVars)
|
foreach($upgrademe as $file => $upgradeVars)
|
||||||
{
|
{
|
||||||
# Do not override data returned by official WP plugins repository API
|
# Do not override data returned by official WP plugins repository API
|
||||||
if (isset($body[$file]))
|
if (isset($body[$file]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
# If new version is different then current one, only then add info
|
# If new version is different then current one, only then add info
|
||||||
if (!isset($plugins[$file]['Version']) || $plugins[$file]['Version'] == $upgradeVars['new_version'])
|
if (!isset($plugins[$file]['Version']) || $plugins[$file]['Version'] == $upgradeVars['new_version'])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
$upgradeInfo = new stdClass();
|
$upgradeInfo = new stdClass();
|
||||||
$upgradeInfo->id = $upgradeVars['id'];
|
$upgradeInfo->id = $upgradeVars['id'];
|
||||||
$upgradeInfo->slug = $upgradeVars['slug'];
|
$upgradeInfo->slug = $upgradeVars['slug'];
|
||||||
$upgradeInfo->new_version = $upgradeVars['new_version'];
|
$upgradeInfo->new_version = $upgradeVars['new_version'];
|
||||||
$upgradeInfo->url = $upgradeVars['url'];
|
$upgradeInfo->url = $upgradeVars['url'];
|
||||||
$upgradeInfo->package = $upgradeVars['package'];
|
$upgradeInfo->package = $upgradeVars['package'];
|
||||||
$body[$file] = $upgradeInfo;
|
$body[$file] = $upgradeInfo;
|
||||||
}
|
}
|
||||||
$response['body'] = serialize($body);
|
$response['body'] = serialize($body);
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function wpFilter_plugins_api($value, $action, $args)
|
public static function wpFilter_plugins_api($value, $action, $args)
|
||||||
{
|
{
|
||||||
// If for some reason value available already, do not change it
|
// If for some reason value available already, do not change it
|
||||||
if (!empty($value))
|
if (!empty($value))
|
||||||
return $value;
|
return $value;
|
||||||
|
|
||||||
if ($action != 'plugin_information' || !is_object($args) || !isset($args->slug) || empty($args->slug))
|
if ($action != 'plugin_information' || !is_object($args) || !isset($args->slug) || empty($args->slug))
|
||||||
return $value;
|
return $value;
|
||||||
|
|
||||||
$vars = self::loadPluginData($args->slug);
|
$vars = self::loadPluginData($args->slug);
|
||||||
if (empty($vars))
|
if (empty($vars))
|
||||||
return $value;
|
return $value;
|
||||||
|
|
||||||
return (object)$vars['info'];
|
return (object)$vars['info'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function wpFilter_http_request_args($args, $url)
|
public static function wpFilter_http_request_args($args, $url)
|
||||||
{
|
{
|
||||||
if (strpos($url, 'wp-upgrademe') === false || !is_array($args))
|
if (strpos($url, 'wp-upgrademe') === false || !is_array($args))
|
||||||
return $args;
|
return $args;
|
||||||
|
|
||||||
$args['sslverify'] = false;
|
$args['sslverify'] = false;
|
||||||
return $args;
|
return $args;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function loadPluginData($slug)
|
private static function loadPluginData($slug)
|
||||||
{
|
{
|
||||||
if (isset(self::$data[$slug]))
|
if (isset(self::$data[$slug]))
|
||||||
return self::$data[$slug];
|
return self::$data[$slug];
|
||||||
|
|
||||||
$funcName = $slug.'_upgrademe';
|
$funcName = $slug.'_upgrademe';
|
||||||
if (!function_exists($funcName))
|
if (!function_exists($funcName))
|
||||||
return self::$data[$slug] = null;
|
return self::$data[$slug] = null;
|
||||||
|
|
||||||
$upgradeUrl = filter_var(call_user_func($funcName), FILTER_VALIDATE_URL);
|
$upgradeUrl = filter_var(call_user_func($funcName), FILTER_VALIDATE_URL);
|
||||||
if (empty($upgradeUrl))
|
if (empty($upgradeUrl))
|
||||||
return self::$data[$slug] = null;
|
return self::$data[$slug] = null;
|
||||||
|
|
||||||
# Request latest version signature from custom url (non-WP plugins repository api) && validate response variables
|
# Request latest version signature from custom url (non-WP plugins repository api) && validate response variables
|
||||||
$r = wp_remote_post($upgradeUrl, array('method' => 'POST', 'timeout' => 4, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true,
|
$r = wp_remote_post($upgradeUrl, array('method' => 'POST', 'timeout' => 4, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true,
|
||||||
'headers' => array(), 'body' => null, 'cookies' => array(), 'sslverify' => false));
|
'headers' => array(), 'body' => null, 'cookies' => array(), 'sslverify' => false));
|
||||||
|
|
||||||
if( is_wp_error($r) || !isset($r['body']) || empty($r['body']))
|
if( is_wp_error($r) || !isset($r['body']) || empty($r['body']))
|
||||||
return self::$data[$slug] = null;
|
return self::$data[$slug] = null;
|
||||||
|
|
||||||
$vars = json_decode($r['body'], true);
|
$vars = json_decode($r['body'], true);
|
||||||
if (empty($vars) || !is_array($vars) || count($vars) > 4
|
if (empty($vars) || !is_array($vars) || count($vars) > 4
|
||||||
|| !isset($vars['new_version']) || !isset($vars['url']) || !isset($vars['package']) || !isset($vars['info']))
|
|| !isset($vars['new_version']) || !isset($vars['url']) || !isset($vars['package']) || !isset($vars['info']))
|
||||||
return self::$data[$slug] = null;
|
return self::$data[$slug] = null;
|
||||||
|
|
||||||
# 2 147 483 648 - max int32
|
# 2 147 483 648 - max int32
|
||||||
# 16 777 215 - ffffff = max possible value of 6-letters hex
|
# 16 777 215 - ffffff = max possible value of 6-letters hex
|
||||||
# 50 000 000 - reasonable offset
|
# 50 000 000 - reasonable offset
|
||||||
# Finally generate ID between 50 000 000 and 66 777 215
|
# Finally generate ID between 50 000 000 and 66 777 215
|
||||||
$vars['id'] = 50000000 + hexdec(substr(md5($slug), 1, 6));
|
$vars['id'] = 50000000 + hexdec(substr(md5($slug), 1, 6));
|
||||||
|
|
||||||
$vars['slug'] = $slug;
|
$vars['slug'] = $slug;
|
||||||
|
|
||||||
# Sanitize variables of "info"
|
# Sanitize variables of "info"
|
||||||
if (!is_array($vars['info']))
|
if (!is_array($vars['info']))
|
||||||
$vars['info'] = array();
|
$vars['info'] = array();
|
||||||
|
|
||||||
$info = array();
|
$info = array();
|
||||||
foreach($vars['info'] as $key => $val)
|
foreach($vars['info'] as $key => $val)
|
||||||
{
|
{
|
||||||
if (!in_array($key, array('name','slug','version','author','author_profile','contributors','requires','tested',
|
if (!in_array($key, array('name','slug','version','author','author_profile','contributors','requires','tested',
|
||||||
'compatibility','rating','rating','num_ratings','downloaded','last_updated','added','homepage',
|
'compatibility','rating','rating','num_ratings','downloaded','last_updated','added','homepage',
|
||||||
'sections','download_link','tags')))
|
'sections','download_link','tags')))
|
||||||
continue;
|
continue;
|
||||||
$info[$key] = $val;
|
$info[$key] = $val;
|
||||||
}
|
}
|
||||||
$info['slug'] = $slug;
|
$info['slug'] = $slug;
|
||||||
$info['version'] = $vars['new_version'];
|
$info['version'] = $vars['new_version'];
|
||||||
$info['download_link'] = $vars['url'];
|
$info['download_link'] = $vars['url'];
|
||||||
$vars['info'] = $info;
|
$vars['info'] = $info;
|
||||||
|
|
||||||
return self::$data[$slug] = $vars;
|
return self::$data[$slug] = $vars;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Upgrademe::register();
|
Upgrademe::register();
|
||||||
} # class_exists()
|
} # class_exists()
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* @package SemmelstatzR
|
* @package SemmelstatzR
|
||||||
* @version $Rev$
|
* @version $Rev$
|
||||||
* @since 1.0.0 Beta
|
* @since 1.0.0
|
||||||
* @author SEM-Team
|
* @author SEM-Team
|
||||||
* @copyright (c)2011 SEM-Team
|
* @copyright (c)2011 SEM-Team
|
||||||
* @link http://sourceforge.net/projects/semmelstatz/
|
* @link http://sourceforge.net/projects/semmelstatz/
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
### Auslesen der höchsten Post-ID
|
### Auslesen der h<EFBFBD>chsten Post-ID
|
||||||
function sem_getMaxPostID() {
|
function sem_getMaxPostID() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$maxpostid = $wpdb->get_var("SELECT MAX(ID) FROM ".$wpdb->posts." LIMIT 0,1");
|
$maxpostid = $wpdb->get_var("SELECT MAX(ID) FROM ".$wpdb->posts." LIMIT 0,1");
|
||||||
|
@ -117,7 +117,12 @@ function sem_AreYouBot($user_agent) {
|
||||||
return $oCheckAgent->isBot();
|
return $oCheckAgent->isBot();
|
||||||
}
|
}
|
||||||
|
|
||||||
### Referer nach Suchmaschinen-Queries und interner Suche prüfen und Suchstring extrahieren
|
/**
|
||||||
|
* Referer nach Suchmaschinen-Queries und interner Suche prüfen und Suchstring extrahieren
|
||||||
|
*
|
||||||
|
* @param string $referer
|
||||||
|
* @return string name of searchengine and keywords
|
||||||
|
*/
|
||||||
function sem_getKeyword($referer) {
|
function sem_getKeyword($referer) {
|
||||||
if(empty($referer)) return false;
|
if(empty($referer)) return false;
|
||||||
$homehost = '%'.(substr($_SERVER['SERVER_NAME'],0,4) == 'www.')?
|
$homehost = '%'.(substr($_SERVER['SERVER_NAME'],0,4) == 'www.')?
|
||||||
|
@ -221,14 +226,14 @@ function sem_getKeyword($referer) {
|
||||||
elseif (preg_match("/".$homehost."/i", $keyword["host"])) {
|
elseif (preg_match("/".$homehost."/i", $keyword["host"])) {
|
||||||
parse_str($keyword["query"],$q);
|
parse_str($keyword["query"],$q);
|
||||||
$keyword = $q["s"];
|
$keyword = $q["s"];
|
||||||
if($keyword == "") return; return "Interne Suche: ".$keyword;
|
if($keyword == "") return; return semr_i18n("Internal search: ").$keyword;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
### Anzahl der Datensätze in der statz-Tabelle
|
### Anzahl der Datens<EFBFBD>tze in der statz-Tabelle
|
||||||
function sem_showNumStatzEntries() {
|
function sem_showNumStatzEntries() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$numstatzentries = $wpdb->get_var("SELECT COUNT(id) FROM ".$wpdb->statz);
|
$numstatzentries = $wpdb->get_var("SELECT COUNT(id) FROM ".$wpdb->statz);
|
||||||
|
@ -259,27 +264,41 @@ function sem_getKeyword($referer) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
### Zeigt Copyright-Notiz an
|
/**
|
||||||
function sem_showCopyright() {
|
* prints a copyright notiz
|
||||||
print "<p class='copyright'>semmelstatzR ". SEMMELSTATZR_VERSION . " happily coded by <a target='_blank' href='http://semmelstatz.sourceforge.net/'>SEM-Team<br />
|
*/
|
||||||
<a target='_blank' style='border:none;' href='http://sourceforge.net/projects/semmelstatz/'>
|
function sem_showCopyright() {
|
||||||
<img src='".get_option('siteurl')."/wp-content/plugins/semmelstatzR/img/statzR.png' /></a></p>";
|
print "<p class='copyright'>semmelstatzR ". SEMMELSTATZR_VERSION .
|
||||||
}
|
" happily coded by <a target='_blank' href='http://semmelstatz.sourceforge.net/'>SEM-Team<br />
|
||||||
|
<a target='_blank' style='border:none;' href='http://sourceforge.net/projects/semmelstatz/'>
|
||||||
### statz-Tabelle leeren (NICHT LÖSCHEN!!!)
|
<img src='".get_option('siteurl')."/wp-content/plugins/semmelstatzR/img/statzR.png' /></a></p>";
|
||||||
function sem_truncateStatzTable() {
|
|
||||||
global $wpdb, $userip;
|
|
||||||
$wpdb->query('TRUNCATE TABLE '.$wpdb->statz);
|
|
||||||
sem_optStatzTable();
|
|
||||||
return $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) {
|
* empty statz table
|
||||||
return true;
|
*
|
||||||
}
|
* @global type $wpdb
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
function sem_truncateStatzTable() {
|
||||||
|
global $wpdb;
|
||||||
|
$wpdb->query('TRUNCATE TABLE '.$wpdb->statz);
|
||||||
|
sem_optStatzTable();
|
||||||
|
return ($wpdb->query("INSERT INTO `$wpdb->statz`(ip, time, referer, page, username) VALUES('127.0.0.1', NOW(),NULL,0,'statz-Tabelle geleert')"))?true:false;
|
||||||
|
}
|
||||||
|
|
||||||
### simpleEncoding für die GoogleChartAPI
|
/**
|
||||||
|
*
|
||||||
|
* @deprecated no need to hold unused functions in semR
|
||||||
|
* @todo remove in next major release
|
||||||
|
* @param int $days
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
function sem_delOldRecords($days) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
### simpleEncoding f<>r die GoogleChartAPI
|
||||||
function sem_encodeChartData($values) {
|
function sem_encodeChartData($values) {
|
||||||
|
|
||||||
$maxValue = max($values);
|
$maxValue = max($values);
|
||||||
|
@ -298,7 +317,7 @@ function sem_truncateStatzTable() {
|
||||||
return $chartData;
|
return $chartData;
|
||||||
}
|
}
|
||||||
|
|
||||||
### Datensätze älter als statz_recdays_limit-Tage löschen
|
### Datens<EFBFBD>tze <20>lter als statz_recdays_limit-Tage l<>schen
|
||||||
function sem_delOutOfLimit() {
|
function sem_delOutOfLimit() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
|
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
|
||||||
|
@ -309,7 +328,7 @@ function sem_truncateStatzTable() {
|
||||||
sem_optStatzTable();
|
sem_optStatzTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
### Wenn AUTOMATISCHES LIMIT aktiviert, dann LIMITIERE und erhöhe NEXT_CRON
|
### Wenn AUTOMATISCHES LIMIT aktiviert, dann LIMITIERE und erh<EFBFBD>he NEXT_CRON
|
||||||
function sem_doCronStatzLimit() {
|
function sem_doCronStatzLimit() {
|
||||||
sem_delOutOfLimit();
|
sem_delOutOfLimit();
|
||||||
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
|
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
|
||||||
|
@ -330,32 +349,36 @@ function sem_truncateStatzTable() {
|
||||||
}
|
}
|
||||||
|
|
||||||
### Unter bestimmten Voraussetzungen den Vortag in die statzhist-Tabelle schreiben
|
### Unter bestimmten Voraussetzungen den Vortag in die statzhist-Tabelle schreiben
|
||||||
function sem_writeYesterdayToHist() {
|
/**
|
||||||
global $wpdb;
|
* @todo add action cache so we don't need to do it with every call
|
||||||
if(!$wpdb->get_var("SELECT date FROM ".$wpdb->statzhist." WHERE substring(date,1,10) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)")) {
|
* @global type $wpdb
|
||||||
|
*/
|
||||||
|
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)")) {
|
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)
|
$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(),
|
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");
|
INTERVAL 1 DAY) GROUP BY date");
|
||||||
|
|
||||||
foreach ($yesterdays as $yesterday) {
|
foreach ($yesterdays as $yesterday) {
|
||||||
$date = $yesterday->date;
|
$date = $yesterday->date;
|
||||||
$visitors = $yesterday->visitors;
|
$visitors = $yesterday->visitors;
|
||||||
$hits = $yesterday->hits;
|
$hits = $yesterday->hits;
|
||||||
$referers = $yesterday->referers;
|
$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)");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$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 */
|
/* Summen der vergangenen Tage in die statzhist schreiben */
|
||||||
function sem_writeOldDaysToHist() {
|
function sem_writeOldDaysToHist() {
|
||||||
|
@ -378,8 +401,11 @@ function sem_truncateStatzTable() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* translate and return a string
|
* translate and return a string
|
||||||
|
*
|
||||||
* @uses wp-function __() and prefilled plugin gettextdomain
|
* @uses wp-function __() and prefilled plugin gettextdomain
|
||||||
|
* @author Ortwin Pinke
|
||||||
|
* @since 1.0.0
|
||||||
*
|
*
|
||||||
* @param string $sValue string to translate
|
* @param string $sValue string to translate
|
||||||
* @param string $sDomain gettextdomain
|
* @param string $sDomain gettextdomain
|
||||||
|
@ -391,7 +417,10 @@ function semr_i18n($sValue, $sDomain = "semmelstatzR") {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* translate and echo a string
|
* translate and echo a string
|
||||||
|
*
|
||||||
* @uses wp-function _e() and prefilled plugin gettextdomain
|
* @uses wp-function _e() and prefilled plugin gettextdomain
|
||||||
|
* @author Ortwin Pinke
|
||||||
|
* @since 1.0.0
|
||||||
*
|
*
|
||||||
* @param string $sValue
|
* @param string $sValue
|
||||||
* @param string $sDomain
|
* @param string $sDomain
|
||||||
|
@ -403,7 +432,10 @@ function semr_i18ne($sValue, $sDomain = "semmelstatzR") {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* translate and return a plural or singular string based on an amount
|
* translate and return a plural or singular string based on an amount
|
||||||
|
*
|
||||||
* @uses wp-function _n() and prefilled plugin gettextdomain
|
* @uses wp-function _n() and prefilled plugin gettextdomain
|
||||||
|
* @author Ortwin Pinke
|
||||||
|
* @since 1.0.0
|
||||||
*
|
*
|
||||||
* @param string $sSingular
|
* @param string $sSingular
|
||||||
* @param string $sPlural
|
* @param string $sPlural
|
||||||
|
@ -418,8 +450,9 @@ function semr_i18np($sSingular, $sPlural, $iNumber, $sDomain = "semmelstatzR") {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author anyexample.com
|
* @author anyexample.com
|
||||||
* @license http://www.anyexample.com/license/
|
* @license modified MIT see http://www.anyexample.com/license/
|
||||||
* @link http://www.anyexample.com/programming/php/php_convert_rgb_from_to_html_hex_color.xml
|
* @link http://www.anyexample.com/programming/php/php_convert_rgb_from_to_html_hex_color.xml
|
||||||
|
* @since 1.0.0
|
||||||
*
|
*
|
||||||
* @param string $color
|
* @param string $color
|
||||||
* @return array
|
* @return array
|
||||||
|
@ -445,8 +478,9 @@ function semr_hex2rgb($color) {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author anyexample.com
|
* @author anyexample.com
|
||||||
* @license http://www.anyexample.com/license/
|
* @license modified MIT see http://www.anyexample.com/license/
|
||||||
* @link http://www.anyexample.com/programming/php/php_convert_rgb_from_to_html_hex_color.xml
|
* @link http://www.anyexample.com/programming/php/php_convert_rgb_from_to_html_hex_color.xml
|
||||||
|
* @since 1.0.0
|
||||||
*
|
*
|
||||||
* @param int $r
|
* @param int $r
|
||||||
* @param int $g
|
* @param int $g
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
Plugin Name: semmelstatzR
|
Plugin Name: semmelstatzR
|
||||||
Plugin URI: http://sourceforge.net/projects/semmelstatz/
|
Plugin URI: http://sourceforge.net/projects/semmelstatz/
|
||||||
Description: Visitorstatistic for Wordpress, based upon the original wp-plugin semmelstatz by Andreas 'Redunzl' Mueller (http://www.kopfhoch-studio.de)
|
Description: Visitorstatistic for Wordpress, based upon the original wp-plugin semmelstatz by Andreas 'Redunzl' Mueller (http://www.kopfhoch-studio.de)
|
||||||
Version: 1.0.0 Beta
|
Version: 1.0 RC
|
||||||
Author: SEM-Team
|
Author: SEM-Team
|
||||||
Author URI: http://semmelstatz.sf.net
|
Author URI: http://semmelstatz.sf.net
|
||||||
License: GPLv3
|
License: GPLv3
|
||||||
|
@ -16,7 +16,7 @@ License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
* @version $Rev$
|
* @version $Rev$
|
||||||
* @since 1.0.0 Beta
|
* @since 1.0.0 Beta
|
||||||
* @author SEM-Team
|
* @author SEM-Team
|
||||||
* @copyright (c)2011 SEM-Team
|
* @copyright (c)2011-2012 SEM-Team
|
||||||
* @link http://sourceforge.net/projects/semmelstatz/
|
* @link http://sourceforge.net/projects/semmelstatz/
|
||||||
* @license http://www.gnu.org/licenses/gpl-3.0.html
|
* @license http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
*
|
*
|
||||||
|
@ -128,7 +128,7 @@ if(is_admin() == true) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
if(get_option('statz_options')) {
|
if(get_option('statz_options')) {
|
||||||
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE 'statz%';"); // Löschen der alten Optionen
|
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE 'statz%';"); // L<EFBFBD>schen der alten Optionen
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!get_option('semmelstatzR_options')) {
|
if(!get_option('semmelstatzR_options')) {
|
||||||
|
@ -156,7 +156,7 @@ if(is_admin() == true) {
|
||||||
"statz_topreads_limit" => 10,
|
"statz_topreads_limit" => 10,
|
||||||
"statz_write_admins" => false,
|
"statz_write_admins" => false,
|
||||||
"statz_write_users" => false,
|
"statz_write_users" => false,
|
||||||
"statz_use_img" => true
|
"statz_use_img" => false
|
||||||
);
|
);
|
||||||
add_option( 'semmelstatzR_options', $sem_options );
|
add_option( 'semmelstatzR_options', $sem_options );
|
||||||
}
|
}
|
||||||
|
@ -175,7 +175,7 @@ function sem_statzsetup() {
|
||||||
} elseif(@is_file(ABSPATH.'/wp-admin/includes/upgrade.php')) {
|
} elseif(@is_file(ABSPATH.'/wp-admin/includes/upgrade.php')) {
|
||||||
include_once(ABSPATH.'/wp-admin/includes/upgrade.php');
|
include_once(ABSPATH.'/wp-admin/includes/upgrade.php');
|
||||||
} else {
|
} else {
|
||||||
die('Kann <i>wp-admin/upgrade-functions.php</i> und <i>wp-admin/includes/upgrade.php</i> nicht finden!');
|
die(semr_i18n('Cannot find <i>wp-admin/upgrade-functions.php</i> and <i>wp-admin/includes/upgrade.php</i>!'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$create_table = array();
|
$create_table = array();
|
||||||
|
@ -228,9 +228,9 @@ function sem_writeStatz() {
|
||||||
// true === $sem_options['statz_use_img'] &&
|
// true === $sem_options['statz_use_img'] &&
|
||||||
if(true == $sem_options['statz_use_img'] && !defined('SEMMELSTATZR_STATZIMG')) {
|
if(true == $sem_options['statz_use_img'] && !defined('SEMMELSTATZR_STATZIMG')) {
|
||||||
print '<img src="'.SEMMELSTATZR_HTML_RELPATH.'semr_image.php" alt="" />';
|
print '<img src="'.SEMMELSTATZR_HTML_RELPATH.'semr_image.php" alt="" />';
|
||||||
return; ### nothing todo if stat image is used
|
return; ### nothing else todo if stat image is used
|
||||||
}
|
}
|
||||||
|
|
||||||
sem_writeYesterdayToHist();
|
sem_writeYesterdayToHist();
|
||||||
$useragent = $wpdb->escape($_SERVER['HTTP_USER_AGENT']);
|
$useragent = $wpdb->escape($_SERVER['HTTP_USER_AGENT']);
|
||||||
$isBot = sem_AreYouBot($useragent);
|
$isBot = sem_AreYouBot($useragent);
|
||||||
|
@ -244,17 +244,16 @@ function sem_writeStatz() {
|
||||||
|
|
||||||
$userip = $wpdb->escape($_SERVER['REMOTE_ADDR']);
|
$userip = $wpdb->escape($_SERVER['REMOTE_ADDR']);
|
||||||
if($sem_options['statz_encode_ip'] == true) $userip = sem_encodeIP($userip);
|
if($sem_options['statz_encode_ip'] == true) $userip = sem_encodeIP($userip);
|
||||||
|
|
||||||
$referer = $wpdb->escape(urldecode($_SERVER['HTTP_REFERER']));
|
$referer = $wpdb->escape(urldecode($_SERVER['HTTP_REFERER']));
|
||||||
$blogtime = gmdate('Y-m-d H:i:s', current_time('timestamp'));
|
$blogtime = gmdate('Y-m-d H:i:s', current_time('timestamp'));
|
||||||
|
|
||||||
if (!empty($referer)) {
|
if (!empty($referer)) {
|
||||||
if(get_option('blog_charset') == 'iso-8859-1') $referer = utf8_decode($referer);
|
if(get_option('blog_charset') == 'iso-8859-1') $referer = utf8_decode($referer);
|
||||||
$referer = "'".$referer."'";
|
$referer = "'".$referer."'";
|
||||||
|
} else {
|
||||||
|
$referer = 'NULL';
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$referer = 'NULL';
|
|
||||||
}
|
|
||||||
|
|
||||||
$readingnow = wp_title('', false);
|
$readingnow = wp_title('', false);
|
||||||
if(empty($readingnow)) {
|
if(empty($readingnow)) {
|
||||||
|
@ -262,9 +261,9 @@ $referer = 'NULL';
|
||||||
} else {
|
} else {
|
||||||
$page = $wp_query->post->ID;
|
$page = $wp_query->post->ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
$wpdb->query("INSERT INTO $wpdb->statz (ip, time, referer, page, username)
|
$wpdb->query("INSERT INTO $wpdb->statz (ip, time, referer, page, username)
|
||||||
VALUES('$userip', '$blogtime', $referer, $page, '$username')");
|
VALUES('$userip', '$blogtime', $referer, $page, '$username')");
|
||||||
|
|
||||||
if($wpdb->query("SELECT COUNT(hits) FROM $wpdb->posts")) {
|
if($wpdb->query("SELECT COUNT(hits) FROM $wpdb->posts")) {
|
||||||
$wpdb->query("UPDATE $wpdb->posts SET hits = hits + 1 WHERE ID = $page"); // neu ab 3.2
|
$wpdb->query("UPDATE $wpdb->posts SET hits = hits + 1 WHERE ID = $page"); // neu ab 3.2
|
||||||
|
@ -272,13 +271,19 @@ $wpdb->query("INSERT INTO $wpdb->statz (ip, time, referer, page, username)
|
||||||
}
|
}
|
||||||
|
|
||||||
### Zeitgesteuertes Limitieren der statz-Tabelle
|
### Zeitgesteuertes Limitieren der statz-Tabelle
|
||||||
// Wenn semmelKron JA UND statz_next_cron älter JETZT, dann...
|
// @todo add action cache
|
||||||
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
|
// Wenn semmelKron JA UND statz_next_cron älter JETZT, dann...
|
||||||
if($sem_options['statz_do_cron'] == true && $sem_options['statz_next_cron'] < time()) {
|
$sem_options = get_option('semmelstatzR_options'); ### optionsarray auslesen
|
||||||
add_action('shutdown', 'sem_doCronStatzLimit'); // ...limitiere statz-Tabelle auf vorgegebenen Wert
|
if($sem_options['statz_do_cron'] == true && $sem_options['statz_next_cron'] < time()) {
|
||||||
}
|
add_action('shutdown', 'sem_doCronStatzLimit'); // ...limitiere statz-Tabelle auf vorgegebenen Wert
|
||||||
|
}
|
||||||
|
|
||||||
### Rendert eine Mini-STATZ. Idee: René Tauchnitz
|
/**
|
||||||
|
* renders a ministatz for dashboard
|
||||||
|
* Idee: René Tauchnitz
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
function sem_dashboardStatz_show() {
|
function sem_dashboardStatz_show() {
|
||||||
|
|
||||||
$widget_options = get_option( 'dashboard_widget_options' );
|
$widget_options = get_option( 'dashboard_widget_options' );
|
||||||
|
@ -299,6 +304,14 @@ function sem_dashboardStatz_show() {
|
||||||
echo '</p>';
|
echo '</p>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dashboard-control for ministatz
|
||||||
|
*
|
||||||
|
* @author Ortwin Pinke
|
||||||
|
* @since semR 1.0
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
function sem_dashboardStatz_control() {
|
function sem_dashboardStatz_control() {
|
||||||
if (!$widget_options = get_option('dashboard_widget_options'))
|
if (!$widget_options = get_option('dashboard_widget_options'))
|
||||||
$widget_options = array();
|
$widget_options = array();
|
||||||
|
|
Laden …
In neuem Issue referenzieren