Commit 7b51448a authored by Vadim's avatar Vadim

Version 0.8

Добавлена загрузка данных на сервер из произвольных полей "views"
parent a6bbfd9b
......@@ -53,7 +53,7 @@
Для вывода списка популярных постов в боковую панель используйте **виджет "Популярные записи"**, который работает аналогично соответствующему шорт-коду.
Плагин позволяет загрузить на сервер данные из плагина **WP Popular Posts**, а также ежедневно сохраняет архив данных в файле `wp-content/uploads/bg_az_counter.json`, которые при необходимости можно также загрузить на сервер.
Плагин позволяет загрузить на сервер данные из плагина **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.7
Version: 0.8
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.7.1');
define('BG_COUNTER_VERSION', '0.8.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');
......@@ -54,10 +54,12 @@ if (function_exists('register_uninstall_hook')) {
function bg_counter_deinstall() {
delete_option('bg_counter_options');
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_wppm_loaded'); // - " - из произвольных полей "views"
if (!isset($project)) {
$project = wp_parse_url( site_url(), PHP_URL_PATH );
......@@ -318,6 +320,37 @@ function bg_counter_top_posts_shortcode( $atts ) {
}
/*****************************************************************************************
Получить данные из произвольного поля views
и отправить на сервер
******************************************************************************************/
function bg_counter_getWPPostMeta() {
global $wpdb;
global $project;
// Получить данные из таблицы
// postid(bigint(20)), day(datetime), last_viewed(datetime), pageviews(bigint(20))
$old_data = $wpdb->get_results("SELECT post_id,meta_value FROM wp_postmeta WHERE meta_key='views'", ARRAY_A);
// Формируем запрос
$i = 0;
$data = array();
$point = array();
foreach ($old_data as $row) {
$point['path'] = $project.'/post/'.$row['post_id'];
$point['counter'] = (int)$row['meta_value'];
$data[] = $point;
$i++;
}
$json = json_encode($data, JSON_UNESCAPED_SLASHES);
echo $json."<br>";
// Отправить данные на сервер
if (!setAllCounts ($json)) return false;
return $i;
}
/*****************************************************************************************
Получить данные из плагина WP Popular Posts
и отправить на сервер
......
......@@ -4,8 +4,9 @@
*******************************************************************************************/
// Начальные значения
add_option('bg_counter_options', array('period'=>DAY_IN_SECONDS, 'now'=>0, 'debug'=>0, 'archive'=>0, 'wppp'=>0));
add_option('bg_counter_options', array('period'=>DAY_IN_SECONDS, 'now'=>0, 'debug'=>0, 'archive'=>0, 'wppp'=>0, 'wppm'=>0));
add_option('bg_wppp_loaded', '');
add_option('bg_wppm_loaded', '');
$val = get_option('bg_counter_options');
if (!isset($val['period'])) {
$val['period'] = DAY_IN_SECONDS;
......@@ -23,6 +24,9 @@ if (!isset($val['archive'])) {
if (!isset($val['wppp'])) {
$val['wppp'] = 0;
}
if (!isset($val['wppm'])) {
$val['wppm'] = 0;
}
update_option( 'bg_counter_options', $val );
add_action('admin_menu', 'bg_counter_add_plugin_page');
......@@ -36,6 +40,7 @@ function bg_counter_options_page_output(){
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>";
$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']) ) {
echo '<h2>Загрузка данных из WP Popular Posts:</h2>';
$bg_from_wppp_result = bg_counter_getWPPopularPosts ();
......@@ -48,6 +53,18 @@ function bg_counter_options_page_output(){
echo "<br><div class='notice notice-success'><p>Все данные ($bg_from_wppp_result) из плагина <b>WP Popular Posts</b> перенесены на сервер.</p></div>";
}
submit_button( "Продолжить...", "", "", true, "onclick='location.reload();'" );
} else if ((isset($wppm_loaded) && $wppm_loaded != 'on') && (isset($val['wppm']) && $val['wppm']) ) {
echo '<h2>Загрузка данных из WP post meta "views":</h2>';
$bg_from_wppm_result = bg_counter_getWPPostMeta ();
$val['wppm'] = 0;
update_option( 'bg_counter_options', $val );
if ($bg_from_wppm_result === false) {
echo "<br><div class='notice notice-error'><p><b>ОШИБКА</b> при отправке данных на сервер.</p></div>";
} else {
update_option('bg_wppm_loaded','on');
echo "<br><div class='notice notice-success'><p>Все данные ($bg_from_wppm_result) из произвольных полей <b>views</b> постов перенесены на сервер.</p></div>";
}
submit_button( "Продолжить...", "", "", true, "onclick='location.reload();'" );
} else if ((isset($val['archive']) && $val['archive']) ) {
echo '<h2>Загрузка данных из архива '.BG_COUNTER_ARCHIVE.':</h2>';
$bg_from_archive_result = bg_counter_sendArchiveData ();
......@@ -102,6 +119,7 @@ function bg_counter_settings(){
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' );
}
......@@ -140,7 +158,7 @@ function fill_bg_counter_debug(){
<?php
}
## Заполняем опцию 8
## Заполняем опцию 7
function fill_bg_counter_sendArchive(){
// Всегда предлагать сохранить не отмеченный
......@@ -148,7 +166,7 @@ function fill_bg_counter_sendArchive(){
<label><input type="checkbox" name="bg_counter_options[archive]" value="1" /> отметьте и нажмите кнопку «Сохранить изменения» </label>
<?php
}
## Заполняем опцию 9
## Заполняем опцию 8
function fill_bg_counter_wppp(){
global $wpdb;
......@@ -168,6 +186,20 @@ function fill_bg_counter_wppp(){
}
}
}
## Заполняем опцию 9
function fill_bg_counter_wppm(){
$val = get_option('bg_counter_options');
$wppm_loaded = get_option('bg_wppm_loaded');
if (isset($wppm_loaded) && $wppm_loaded == 'on'){
echo '<i>Данные из произвольных полей "views" уже загружены на сервер.</i>';
} else {
// Всегда предлагать сохранить не отмеченный
?>
<label><input type="checkbox" name="bg_counter_options[wppm]" value="1" /> отметьте и нажмите кнопку «Сохранить изменения» </label>
<?php
}
}
## Очистка данных
function bg_counter_sanitize_callback( $options ){
......@@ -187,6 +219,9 @@ function bg_counter_sanitize_callback( $options ){
if( $name == 'wppp' )
$val = intval( $val );
if( $name == 'wppm' )
$val = intval( $val );
}
return $options;
}
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