Commit c613fefb authored by Vadim's avatar Vadim

Version 2.7

Добавлен запрос bach-query
parent 37badd20
...@@ -82,6 +82,7 @@ ...@@ -82,6 +82,7 @@
"websocket":"wss://stat.azbyka.ru/realtime-view", // Сокет: пока соединение активно, оно будет засчитываться как один просмотр в текущий момент "websocket":"wss://stat.azbyka.ru/realtime-view", // Сокет: пока соединение активно, оно будет засчитываться как один просмотр в текущий момент
"updatesocket":"wss://stat.azbyka.ru/updates", // Сокет: просмотр счетчиков online-посетителей "updatesocket":"wss://stat.azbyka.ru/updates", // Сокет: просмотр счетчиков online-посетителей
"updatetime":"3000", // Периодичность обновления счетчиков online-посетителей "updatetime":"3000", // Периодичность обновления счетчиков online-посетителей
"maxreconnect":"5", // Макс. количество повторов подключений
"project":"/project/propovedi", // Имя текущего проекта "project":"/project/propovedi", // Имя текущего проекта
"type":"post", // Пока только "post" или пусто для ID="" "type":"post", // Пока только "post" или пусто для ID=""
"ID":"1234", // ID поста или пусто, чтобы не собирать статистику "ID":"1234", // ID поста или пусто, чтобы не собирать статистику
...@@ -89,7 +90,7 @@ ...@@ -89,7 +90,7 @@
"votes2":"голоcа", "votes2":"голоcа",
"vote1":"голос", "vote1":"голос",
"voted":"Вы уже проголосовали", "voted":"Вы уже проголосовали",
"price":["тяжко", "слабо", "сносно", "достойно", "чудесно"], "price":["худо", "слабо", "сносно", "достойно", "чудесно"],
"debug":"" // Выводить или нет инфу в консоль "debug":"" // Выводить или нет инфу в консоль
}; };
...@@ -126,7 +127,7 @@ ...@@ -126,7 +127,7 @@
Виджет **"Сейчас на сайте"**, выводит в боковую панель количество онлайн-посетителей на сайте и общее количество просмотров страниц. Виджет **"Сейчас на сайте"**, выводит в боковую панель количество онлайн-посетителей на сайте и общее количество просмотров страниц.
Количество онлайн-посетителей обновляется каждые 5 секунд. Остальные показатели не изменяются. Количество онлайн-посетителей обновляется каждые 3 секунды. Остальные показатели не изменяются.
## Импорт данных, архивирование и валидация данных ## Импорт данных, архивирование и валидация данных
...@@ -140,7 +141,7 @@ ...@@ -140,7 +141,7 @@
Проверка на валидность при сохранении архива: Проверка на валидность при сохранении архива:
* имеет ли запись с данным **ID** тип *'post'*, *'page'* или *ползователский тип* и статус - *'publish'*. * имеет ли запись с данным **ID** тип *'post'*, *'page'* или *пользовательский тип* и статус - *'publish'*.
Все некорректные записи обнуляются и будут удалены на сервере. Все некорректные записи обнуляются и будут удалены на сервере.
......
...@@ -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.6.4 Version: 2.7
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.6.4'); define('BG_COUNTER_VERSION', '2.7');
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');
...@@ -48,6 +48,8 @@ define('BG_COUNTER_STAT_RATE','https://stat.azbyka.ru/rate'); ...@@ -48,6 +48,8 @@ define('BG_COUNTER_STAT_RATE','https://stat.azbyka.ru/rate');
define('BG_COUNTER_STAT_SCORE','https://stat.azbyka.ru/item-score'); define('BG_COUNTER_STAT_SCORE','https://stat.azbyka.ru/item-score');
define('BG_COUNTER_STAT_SCORELIST','https://stat.azbyka.ru/scores-list'); define('BG_COUNTER_STAT_SCORELIST','https://stat.azbyka.ru/scores-list');
define('BG_COUNTER_STAT_BATCH','https://stat.azbyka.ru/batch-query');
define('BG_COUNTER_STAT_SET','https://stat.azbyka.ru/set-counter'); define('BG_COUNTER_STAT_SET','https://stat.azbyka.ru/set-counter');
define('BG_COUNTER_STAT_SET_RATINGS','https://stat.azbyka.ru/set-rating'); define('BG_COUNTER_STAT_SET_RATINGS','https://stat.azbyka.ru/set-rating');
define('BG_COUNTER_REALTIME_VIEW','wss://stat.azbyka.ru/realtime-view'); define('BG_COUNTER_REALTIME_VIEW','wss://stat.azbyka.ru/realtime-view');
...@@ -114,9 +116,11 @@ function bg_counter_enqueue_frontend_scripts () { ...@@ -114,9 +116,11 @@ function bg_counter_enqueue_frontend_scripts () {
'counterurl' => BG_COUNTER_STAT_COUNTERS, // Всегда 'https://stat.azbyka.ru/counters' 'counterurl' => BG_COUNTER_STAT_COUNTERS, // Всегда 'https://stat.azbyka.ru/counters'
'rateurl' => BG_COUNTER_STAT_RATE, // Всегда 'https://stat.azbyka.ru/rate' 'rateurl' => BG_COUNTER_STAT_RATE, // Всегда 'https://stat.azbyka.ru/rate'
'scoreurl' => BG_COUNTER_STAT_SCORE, // Всегда 'https://stat.azbyka.ru/item-score' 'scoreurl' => BG_COUNTER_STAT_SCORE, // Всегда 'https://stat.azbyka.ru/item-score'
'batch' => BG_COUNTER_STAT_BATCH, // Всегда 'https://stat.azbyka.ru/batch-query'
'websocket' => BG_COUNTER_REALTIME_VIEW, // Всегда 'wss://stat.azbyka.ru/realtime-view' 'websocket' => BG_COUNTER_REALTIME_VIEW, // Всегда 'wss://stat.azbyka.ru/realtime-view'
'updatesocket' => BG_COUNTER_REALTIME_UPDATES, // Всегда 'wss://stat.azbyka.ru/updates' 'updatesocket' => BG_COUNTER_REALTIME_UPDATES, // Всегда 'wss://stat.azbyka.ru/updates'
'updatetime' => (int) $option['update'], // Время обновление счетчиков онлайн-посетителей 'updatetime' => (int) $option['update'], // Время обновление счетчиков онлайн-посетителей
'maxreconnect' => (int) $option['maxreconnect'], // Макс. количество повторов подключений
'project' => $project, // Имя текущего проекта, например, '/propovedi' 'project' => $project, // Имя текущего проекта, например, '/propovedi'
'type' => $type, // Тип объекта 'post', 'category', 'tag', 'index' или пусто 'type' => $type, // Тип объекта 'post', 'category', 'tag', 'index' или пусто
'ID' => $theID, // ID объекта 'ID' => $theID, // ID объекта
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
*******************************************************************************************/ *******************************************************************************************/
// Начальные значения // Начальные значения
add_option('bg_counter_options', array('period'=>DAY_IN_SECONDS, 'update'=>3000, 'views'=>1, 'now'=>1, 'rate'=>1, 'title'=>'', 'author'=>'', 'debug'=>0, 'archive'=>0, 'pvc'=>0, 'wppp'=>0, 'wppm'=>0, 'bgar'=>0)); add_option('bg_counter_options', array('period'=>DAY_IN_SECONDS, 'update'=>3000, 'maxreconnect'=>5, 'views'=>1, 'now'=>1, 'rate'=>1, 'title'=>'', 'author'=>'', 'debug'=>0, 'archive'=>0, 'pvc'=>0, 'wppp'=>0, 'wppm'=>0, 'bgar'=>0));
add_option('bg_pvc_loaded', ''); add_option('bg_pvc_loaded', '');
add_option('bg_wppp_loaded', ''); add_option('bg_wppp_loaded', '');
add_option('bg_wppm_loaded', ''); add_option('bg_wppm_loaded', '');
...@@ -18,6 +18,10 @@ if (!isset($val['update'])) { ...@@ -18,6 +18,10 @@ if (!isset($val['update'])) {
$val['update'] = 3000; $val['update'] = 3000;
update_option( 'bg_counter_period', $val['update'] ); update_option( 'bg_counter_period', $val['update'] );
} }
if (!isset($val['maxreconnect'])) {
$val['maxreconnect'] = 5;
update_option( 'bg_counter_maxreconnect', $val['maxreconnect'] );
}
if (!isset($val['views'])) { if (!isset($val['views'])) {
$val['views'] = 0; $val['views'] = 0;
} }
...@@ -193,6 +197,7 @@ function bg_counter_settings(){ ...@@ -193,6 +197,7 @@ function bg_counter_settings(){
// параметры: $id, $title, $callback, $page, $section, $args // параметры: $id, $title, $callback, $page, $section, $args
add_settings_field('bg_counter_period', 'Периодичность обработки данных', 'fill_bg_counter_period', 'bg_counter_page', 'section_1' ); add_settings_field('bg_counter_period', 'Периодичность обработки данных', 'fill_bg_counter_period', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_update', 'Периодичность обновления счетчиков online-посетителей', 'fill_bg_counter_update', 'bg_counter_page', 'section_1' ); add_settings_field('bg_counter_update', 'Периодичность обновления счетчиков online-посетителей', 'fill_bg_counter_update', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_maxreconnect', 'Максимальное количество повторов запросов', 'fill_bg_counter_maxreconnect', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_views', 'Просмотров всего', 'fill_bg_counter_views', 'bg_counter_page', 'section_1' ); add_settings_field('bg_counter_views', 'Просмотров всего', 'fill_bg_counter_views', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_now', 'Просматривают сейчас', 'fill_bg_counter_now', 'bg_counter_page', 'section_1' ); add_settings_field('bg_counter_now', 'Просматривают сейчас', 'fill_bg_counter_now', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_rate', 'Оценка пользователями', 'fill_bg_counter_rate', 'bg_counter_page', 'section_1' ); add_settings_field('bg_counter_rate', 'Оценка пользователями', 'fill_bg_counter_rate', 'bg_counter_page', 'section_1' );
...@@ -233,6 +238,15 @@ function fill_bg_counter_update(){ ...@@ -233,6 +238,15 @@ function fill_bg_counter_update(){
<?php <?php
} }
## Заполняем опцию 1c
function fill_bg_counter_maxreconnect(){
$val = get_option('bg_counter_options');
$val = $val['maxreconnect'];
?>
<input type="number" name="bg_counter_options[maxreconnect]" value="<?php echo esc_attr( $val ) ?>" step="1" min="1" />
<?php
}
## Заполняем опцию 2a ## Заполняем опцию 2a
function fill_bg_counter_views(){ function fill_bg_counter_views(){
$val = get_option('bg_counter_options'); $val = get_option('bg_counter_options');
......
var start_rate_index, rating_voted; var start_rate_index, rating_voted;
var options={};
options.expires=60*60*24; // Кука на сутки
options.path=window.location.pathname; // Текущий путь
var bg_counter_ratings = 0;
jQuery( document ).ready(function() { jQuery( document ).ready(function() {
// Обновлять рейтинги каждые 3 сек, если добавлены элементы.
let timerAllRatesId = setTimeout(function tickAllRates() {
getAllRates();
timerAllRatesId = setTimeout(tickAllRates, bg_counter.updatetime?bg_counter.updatetime:3000);
}, bg_counter.updatetime?bg_counter.updatetime:3000);
// Обновлять рейтинги после прокрутки страницы, если добавлены элементы.
// jQuery(window).on('scroll', function() {
// getAllRates();
// });
if (!bg_counter.ID) return; // У объекта нет ID if (!bg_counter.ID) return; // У объекта нет ID
if (jQuery("div").is(".bg_counter_rating") == false) return; // На странице нет счетчика if (jQuery("div").is(".bg_counter_rating") == false) return; // На странице нет счетчика
...@@ -135,57 +120,6 @@ function getRate(type, id) { ...@@ -135,57 +120,6 @@ function getRate(type, id) {
xhr.send(); xhr.send();
} }
function getAllRates() {
var elem = jQuery('span.bg-az-counter');
if( typeof elem == 'undefined' ) {
return;
}
if (elem.length > bg_counter_ratings) {
bg_counter_ratings = elem.length;
jQuery('span.bg-az-counter').each (function () {
var el = jQuery(this);
var type = el.attr('data-type');
var id = el.attr('data-ID');
var project = el.attr('data-project');
if (project) project = '/project/'+project;
else project = bg_counter.project;
if (!type || !id) return;
var request = bg_counter.scoreurl+bg_counter.project+"/"+type+"/"+id;
var xhr = new XMLHttpRequest();
xhr.open("GET", request, true);
if (bg_counter.debug) console.log('GET REQUEST: '+request);
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
if (xhr.status == 200) {
if (xhr.responseText) {
var response = JSON.parse(xhr.responseText);
if (response.success) {
// Вывод данных на экран
if (bg_counter.debug) console.log(JSON.stringify(response.data));
el.find('span.bg-az-counter-score').text(parseFloat(response.data.score).toFixed(1));
} else {
if (bg_counter.debug) console.log('GET REQUEST: '+request+' ERROR: '+response.error);
el.find('span.bg-az-counter-score').text('0');
}
} else {
if (bg_counter.debug) console.warn('GET REQUEST: '+request+' Warning: responseText is empty!');
el.find('span.bg-az-counter-score').text(' - ');
}
} else {
if (bg_counter.debug) console.warn('ERROR '+xhr.status+': '+xhr.statusText);
el.find('span.bg-az-counter-score').text('-');
}
}
xhr.send();
});
}
}
/********************************************************************************* /*********************************************************************************
POST /rate/<path> POST /rate/<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