Commit bfdb3261 authored by Vadim's avatar Vadim

Version 0.9

Добавлено чтение данных из плагина Post Views Counter
parent 601fbfc3
......@@ -53,7 +53,8 @@
Для вывода списка популярных постов в боковую панель используйте **виджет "Популярные записи"**, который работает аналогично соответствующему шорт-коду.
Плагин позволяет загрузить на сервер данные из плагина **WP Popular Posts** и/или из произвольных полей **"views"**, а также ежедневно сохраняет архив данных в файле `wp-content/uploads/bg_az_counter.json`, которые при необходимости можно также загрузить на сервер.
Плагин позволяет загрузить на сервер данные из плагинов **Post Views Counter** и/или **WP Popular Posts**, а также из произвольных полей **"views"**.
Кроме того плагин ежедневно сохраняет архив данных в файле `wp-content/uploads/bg_az_counter.json`, которые при необходимости можно также загрузить на сервер.
В случае возникновения проблем при сохранении архива ошибки фиксируются в логе плагина: `wp-content/plugins/bg-az-counter/bg_counter.log`.
**Внимание!** После удаления плагина файл `wp-content/uploads/bg_az_counter.json` **НЕ будет удален**! При необходимости, удалите его вручную.
......
......@@ -3,7 +3,7 @@
Plugin Name: Bg Az-Counter
Plugin URI: https://bogaiskov.ru
Description: Подсчет количества посещений страниц на базе stat.azbyka.ru
Version: 0.8
Version: 0.9
Author: VBog
Author URI: https://bogaiskov.ru
License: GPL2
......@@ -38,7 +38,7 @@ if ( !defined('ABSPATH') ) {
die( 'Sorry, you are not allowed to access this page directly.' );
}
define('BG_COUNTER_VERSION', '0.8.4');
define('BG_COUNTER_VERSION', '0.9.0');
define('BG_COUNTER_LOG', dirname(__FILE__ ).'/bg_counter.log');
define('BG_COUNTER_STAT_COUNTERS','https://stat.azbyka.ru/counters');
define('BG_COUNTER_STAT_RAITING','https://stat.azbyka.ru/rating');
......@@ -53,12 +53,15 @@ if (function_exists('register_uninstall_hook')) {
}
function bg_counter_deinstall() {
delete_option('bg_counter_options');
delete_option('bg_pvc_loaded');
delete_option('bg_wppp_loaded');
delete_option('bg_wppm_loaded');
delete_option('bg_archive_status');
delete_option('bg_counter_period');
}
//delete_option('bg_wppp_loaded'); // Снять комментарий, чтобы сбросить флаг загрузки из WP Popular Posts
// Снять комментарий, чтобы сбросить флаг загрузки:
//delete_option('bg_pvc_loaded'); // - " - из Post Views Counter
//delete_option('bg_wppp_loaded'); // - " - из WP Popular Posts
//delete_option('bg_wppm_loaded'); // - " - из произвольных полей "views"
if (!isset($project)) {
......@@ -382,6 +385,42 @@ function bg_counter_getWPPopularPosts() {
}
/*****************************************************************************************
Получить данные из плагина Post Views Counter
и отправить на сервер
******************************************************************************************/
function bg_counter_getPostViewsCounter() {
global $wpdb;
global $project;
// Получить данные из таблицы
// postid(bigint(20)), day(datetime), last_viewed(datetime), pageviews(bigint(20))
$raw_data = $wpdb->get_results("SELECT id,count FROM wp_post_views", ARRAY_A);
// Суммируем count по id
$old_data = array();
foreach ($raw_data as $row) {
if (empty($old_data[$row['id']])) $old_data[$row['id']] = 0;
$old_data[$row['id']] = (int)$row['count'];
}
// Формируем запрос
$i = 0;
$data = array();
$point = array();
foreach ($old_data as $id => $count) {
$point['path'] = $project.'/post/'.$id;
$point['counter'] = $count;
$data[] = $point;
$i++;
}
$json = json_encode($data, JSON_UNESCAPED_SLASHES);
echo $json."<br>";
// Отправить данные на сервер
if (!setAllCounts ($json)) return false;
return $i;
}
/*****************************************************************************************
Получить данные с сервера
и сохранить их в файле
******************************************************************************************/
......
......@@ -4,7 +4,8 @@
*******************************************************************************************/
// Начальные значения
add_option('bg_counter_options', array('period'=>DAY_IN_SECONDS, 'now'=>0, 'debug'=>0, 'archive'=>0, 'wppp'=>0, 'wppm'=>0));
add_option('bg_counter_options', array('period'=>DAY_IN_SECONDS, 'now'=>0, 'debug'=>0, 'archive'=>0, 'pvc'=>0, 'wppp'=>0, 'wppm'=>0));
add_option('bg_pvc_loaded', '');
add_option('bg_wppp_loaded', '');
add_option('bg_wppm_loaded', '');
$val = get_option('bg_counter_options');
......@@ -21,6 +22,9 @@ if (!isset($val['debug'])) {
if (!isset($val['archive'])) {
$val['archive'] = 0;
}
if (!isset($val['pvc'])) {
$val['pvc'] = 0;
}
if (!isset($val['wppp'])) {
$val['wppp'] = 0;
}
......@@ -39,9 +43,22 @@ function bg_counter_options_page_output(){
$val = get_option('bg_counter_options');
echo "<br><div class='notice notice-info'><p>Plugin powered by Redis-based server for collecting view statistics. <a href='https://gitlab.eterfund.ru/azbyka/stats-server' target='_blank'>See details here</a>. Server URL: <code>https://stat.azbyka.ru</code></p></div>";
$pvc_loaded = get_option('bg_pvc_loaded');
$wppp_loaded = get_option('bg_wppp_loaded');
$wppm_loaded = get_option('bg_wppm_loaded');
if ((isset($wppp_loaded) && $wppp_loaded != 'on') && (isset($val['wppp']) && $val['wppp']) ) {
if ((isset($pvc_loaded) && $pvc_loaded != 'on') && (isset($val['pvc']) && $val['pvc']) ) {
echo '<h2>Загрузка данных из Post Views Counter:</h2>';
$bg_from_pvc_result = bg_counter_getPostViewsCounter ();
$val['pvc'] = 0;
update_option( 'bg_counter_options', $val );
if ($bg_from_pvc_result === false) {
echo "<br><div class='notice notice-error'><p><b>ОШИБКА</b> при отправке данных на сервер.</p></div>";
} else {
update_option('bg_pvc_loaded','on');
echo "<br><div class='notice notice-success'><p>Все данные ($bg_from_pvc_result) из плагина <b>Post Views Counter</b> перенесены на сервер.</p></div>";
}
submit_button( "Продолжить...", "", "", true, "onclick='location.reload();'" );
}else if ((isset($wppp_loaded) && $wppp_loaded != 'on') && (isset($val['wppp']) && $val['wppp']) ) {
echo '<h2>Загрузка данных из WP Popular Posts:</h2>';
$bg_from_wppp_result = bg_counter_getWPPopularPosts ();
$val['wppp'] = 0;
......@@ -118,8 +135,9 @@ function bg_counter_settings(){
add_settings_field('bg_counter_now', 'Просматривают сейчас', 'fill_bg_counter_now', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_debug', 'Включить отладку', 'fill_bg_counter_debug', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_archive', 'Загрузить данные из архива на сервер', 'fill_bg_counter_sendArchive', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_wppp', 'Загрузить данные из WP Popular Posts на сервер', 'fill_bg_counter_wppp', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_wppm', 'Загрузить данные из произвольных полей "views" на сервер', 'fill_bg_counter_wppm', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_pvc', 'Загрузить данные из Post Views Counter', 'fill_bg_counter_pvc', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_wppp', 'Загрузить данные из WP Popular Posts', 'fill_bg_counter_wppp', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_wppm', 'Загрузить данные из произвольных полей "views"', 'fill_bg_counter_wppm', 'bg_counter_page', 'section_1' );
}
......@@ -158,7 +176,7 @@ function fill_bg_counter_debug(){
<?php
}
## Заполняем опцию 7
## Заполняем опцию 6
function fill_bg_counter_sendArchive(){
// Всегда предлагать сохранить не отмеченный
......@@ -166,6 +184,26 @@ function fill_bg_counter_sendArchive(){
<label><input type="checkbox" name="bg_counter_options[archive]" value="1" /> отметьте и нажмите кнопку «Сохранить изменения» </label>
<?php
}
## Заполняем опцию 7
function fill_bg_counter_pvc(){
global $wpdb;
$bg_pvc_table = $wpdb->prefix.'post_views';
if($wpdb->get_var("SHOW TABLES LIKE '$bg_pvc_table'") != $bg_pvc_table) {
echo "<i>Таблица данных из Post Views Counter отсутствует в текущей БД.</i>";
} else {
$val = get_option('bg_counter_options');
$pvc_loaded = get_option('bg_pvc_loaded');
if (isset($pvc_loaded) && $pvc_loaded == 'on'){
echo "<i>Данные из Post Views Counter уже загружены на сервер.</i>";
} else {
// Всегда предлагать сохранить не отмеченный
?>
<label><input type="checkbox" name="bg_counter_options[pvc]" value="1" /> отметьте и нажмите кнопку «Сохранить изменения» </label>
<?php
}
}
}
## Заполняем опцию 8
function fill_bg_counter_wppp(){
global $wpdb;
......@@ -217,6 +255,9 @@ function bg_counter_sanitize_callback( $options ){
if( $name == 'archive' )
$val = intval( $val );
if( $name == 'pvc' )
$val = intval( $val );
if( $name == 'wppp' )
$val = intval( $val );
......
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