Commit 5a17b1c5 authored by Vadim's avatar Vadim

Version 2.8

В админку добавлен блок для фальсификации статистики
parent f6bba74c
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
Plugin Name: Bg Az-Counter Plugin Name: Bg Az-Counter
Plugin URI: https://bogaiskov.ru Plugin URI: https://bogaiskov.ru
Description: Подсчет количества посещений страниц на базе stat.azbyka.ru Description: Подсчет количества посещений страниц на базе stat.azbyka.ru
Version: 2.7.6 Version: 2.8
Author: VBog Author: VBog
Author URI: https://bogaiskov.ru Author URI: https://bogaiskov.ru
License: GPL2 License: GPL2
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
if ( !defined('ABSPATH') ) { if ( !defined('ABSPATH') ) {
die( 'Sorry, you are not allowed to access this page directly.' ); die( 'Sorry, you are not allowed to access this page directly.' );
} }
define('BG_COUNTER_VERSION', '2.7.6'); define('BG_COUNTER_VERSION', '2.8');
define('BG_COUNTER_LOG', dirname(__FILE__ ).'/bg_counter.log'); define('BG_COUNTER_LOG', dirname(__FILE__ ).'/bg_counter.log');
define('BG_COUNTER_STAT_COUNTERS','https://stat.azbyka.ru/counters'); define('BG_COUNTER_STAT_COUNTERS','https://stat.azbyka.ru/counters');
...@@ -155,3 +155,50 @@ function bg_counter_deinstall() { ...@@ -155,3 +155,50 @@ function bg_counter_deinstall() {
include_once ("inc/counter.php"); include_once ("inc/counter.php");
// Запускаем голосование // Запускаем голосование
include_once ("inc/rating.php"); include_once ("inc/rating.php");
/*****************************************************************************************
Блок фальсификации данных статистики
******************************************************************************************/
add_action('admin_init', 'azbyka_falsification', 1);
// Создание блока в админке
function azbyka_falsification() {
add_meta_box( 'azbyka_falsification', 'Фальсификация статистики', 'azbyka_falsification_box_func', 'post', 'side', 'high' );
}
// Добавление поля 'Фальсификация данных статистики'
function azbyka_falsification_box_func( $post ){
wp_nonce_field( basename( __FILE__ ), 'azbyka_falsification_nonce' );
$path = '/post/'.$post->ID;
$count = getCount($path);
if ($count) $count = $count->total;
else $count = "Нет счетчика";
?>
<b>Количество посещений:</b> <?php echo $count; ?><br>
<label>Введите любое число > 0:<br>
<input type="number" name="azbyka_falsh_counts" value="" min=1 /><br>и нажмите кнопку "Опубликовать/Обновить".
</label>
<i>Если оставить поле пустым, счетчик сохранит свое истинное значение.</i>
<?php
}
// Сохранение значений счетчика при автосохранении поста
add_action('save_post', 'azbyka_falsification_update', 0);
// Сохранение значений счетчика при сохранении поста
function azbyka_falsification_update( $post_id ){
// проверяем, пришёл ли запрос со страницы с метабоксом
if ( !isset( $_POST['azbyka_falsification_nonce'] )
|| !wp_verify_nonce( $_POST['azbyka_falsification_nonce'], basename( __FILE__ ) ) ) return $post_id;
// проверяем, является ли запрос автосохранением
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id;
// проверяем, права пользователя, может ли он редактировать записи
if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id;
if ( !empty( $_POST['azbyka_falsh_counts'] ) ) {
$counter = (int) $_POST['azbyka_falsh_counts'];
$path = '/post/'.$post_id;
if ($counter > 0) setCount ($path, $counter);
}
}
...@@ -77,6 +77,53 @@ function getPopularPosts ($limit, $offset=0, $number=false) { ...@@ -77,6 +77,53 @@ function getPopularPosts ($limit, $offset=0, $number=false) {
} }
} }
/***************************************************************************************** /*****************************************************************************************
GET /counters/<path>
Возвращает текущие значения счётчика - общий счётчик и количество
просматривающих в данный момент.
Пример запроса:
GET /counters/project/test/author/1/book/3
Пример ответа:
{
"success":true,
"data":{
"now":3,
"total":34
}
}
******************************************************************************************/
// Получить 1 счетчик
function getCount ($path) {
global $project;
$result = wp_remote_get (BG_COUNTER_STAT_COUNTERS.$project.$path);
if( is_wp_error( $result ) ) {
error_log( PHP_EOL .current_time('mysql')." COUNTERS. Ошибка при получении данных с сервера: ".$result->get_error_message(), 3, BG_COUNTER_LOG ); // сообщение ошибки
error_log( " " .$result->get_error_code(), 3, BG_COUNTER_LOG ); // ключ ошибки
return false;
}
if (($code = wp_remote_retrieve_response_code( $result )) != 200) {
error_log( PHP_EOL .current_time('mysql')." RATING (top posts). Сервер вернул код ошибки: ".$code, 3, BG_COUNTER_LOG ); // сообщение ошибки
error_log( " " .wp_remote_retrieve_response_message( $result ), 3, BG_COUNTER_LOG ); // ключ ошибки
return false;
}
$json = wp_remote_retrieve_body($result);
$response = json_decode($json, false);
if ($response->success) {
return $response->data;
} else {
error_log( PHP_EOL .current_time('mysql')." COUNTERS. Сервер вернул ответ неудачи:\n".$json, 3, BG_COUNTER_LOG );
return false;
}
}
/*****************************************************************************************
POST /set-counter/<path> POST /set-counter/<path>
Задаёт значение счётчика и создаёт его, если счётчик не существовал. Задаёт значение счётчика и создаёт его, если счётчик не существовал.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment