Commit 406cf3e7 authored by Vadim's avatar Vadim

Add new file

parent a32d02fd
<?php
/******************************************************************************************
Страница настроек плагина
*******************************************************************************************/
// Начальные значения
add_option('bg_counter_options', array('period'=>DAY_IN_SECONDS, 'debug'=>0, 'archive'=>0, 'wppp'=>0));
add_option('bg_wppp_loaded', '');
$val = get_option('bg_counter_options');
if (!isset($val['period'])) {
$val['period'] = DAY_IN_SECONDS;
}
if (!isset($val['debug'])) {
$val['debug'] = 0;
}
if (!isset($val['archive'])) {
$val['archive'] = 0;
}
if (!isset($val['wppp'])) {
$val['wppp'] = 0;
}
update_option( 'bg_counter_options', $val );
add_action('admin_menu', 'bg_counter_add_plugin_page');
function bg_counter_add_plugin_page(){
add_options_page( 'Настройки Bg Az-Counter', 'Bg Az-Counter', 'manage_options', 'bg_counter_slug', 'bg_counter_options_page_output' );
}
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>";
$wppp_loaded = get_option('bg_wppp_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 ();
$val['wppp'] = 0;
update_option( 'bg_counter_options', $val );
if ($bg_from_wppp_result === false) {
echo "<br><div class='notice notice-error'><p><b>ОШИБКА</b> при отправке данных на сервер.</p></div>";
} else {
update_option('bg_wppp_loaded','on');
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($val['archive']) && $val['archive']) ) {
echo '<h2>Загрузка данных из архива '.BG_COUNTER_ARCHIVE.':</h2>';
$bg_from_archive_result = bg_counter_sendArchiveData ();
$val['archive'] = 0;
update_option( 'bg_counter_options', $val );
if ($bg_from_archive_result === false) {
echo "<br><div class='notice notice-error'><p><b>ОШИБКА</b> при отправке данных на сервер.</p></div>";
} else {
update_option('bg_wppp_loaded','on');
echo "<br><div class='notice notice-success'><p>Все данные ($bg_from_archive_result) из архива <b>".BG_COUNTER_ARCHIVE."</b> перенесены на сервер.</p></div>";
}
submit_button( "Продолжить...", "", "", true, "onclick='location.reload();'" );
} else {
$archive_status = get_option('bg_archive_status');
if ($archive_status) echo "<br>".$archive_status;
?>
<div class="wrap">
<h2><?php echo get_admin_page_title() ?></h2>
<form action="options.php" method="POST">
<?php
settings_fields( 'bg_counter_option_group' ); // скрытые защитные поля
do_settings_sections( 'bg_counter_page' ); // секции с настройками (опциями) 'section_1'
submit_button();
?>
</form>
</div>
<?php
}
}
/**
* Регистрируем настройки.
* Настройки будут храниться в массиве, а не одна настройка = одна опция.
*/
add_action('admin_init', 'bg_counter_settings');
function bg_counter_settings(){
// параметры: $option_group, $option_name, $sanitize_callback
register_setting( 'bg_counter_option_group', 'bg_counter_options', 'bg_counter_sanitize_callback' );
// параметры: $id, $title, $callback, $page
add_settings_section( 'section_1','Основные параметры', '', 'bg_counter_page' );
add_settings_section( 'section_2', 'Загрузка данных из WP Popular Posts', '', 'bg_counter_loaded' );
// параметры: $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_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' );
}
## Заполняем опцию 1
function fill_bg_counter_period(){
$val = get_option('bg_counter_options');
$val = $val ? $val['period'] : DAY_IN_SECONDS;
?>
<label>
<select name="bg_rating_options[period]">
<option value=1 <?php selected( 1, $val ); ?>>мгновенно</option>
<option value=<?php echo HOUR_IN_SECONDS; ?> <?php selected( HOUR_IN_SECONDS, $val ); ?>>каждый час</option>
<option value=<?php echo DAY_IN_SECONDS; ?> <?php selected( DAY_IN_SECONDS, $val ); ?>>ежедневно</option>
<option value=<?php echo WEEK_IN_SECONDS; ?> <?php selected( WEEK_IN_SECONDS, $val ); ?>>еженедельно</option>
<option value=<?php echo MONTH_IN_SECONDS; ?> <?php selected( MONTH_IN_SECONDS, $val ); ?>>ежемесячно</option>
<option value=<?php echo YEAR_IN_SECONDS; ?> <?php selected( YEAR_IN_SECONDS, $val ); ?>>ежегодно</option>
</select> обновление списка популярных постов</label>
<?php
}
## Заполняем опцию 2
function fill_bg_counter_debug(){
$val = get_option('bg_counter_options');
$val = $val ? $val['debug'] : null;
?>
<label><input type="checkbox" name="bg_counter_options[debug]" value="1" <?php checked(1, $val ); ?>/> отметьте, чтобы в консоли отображалась отладочная информация </label>
<?php
}
## Заполняем опцию 8
function fill_bg_counter_sendArchive(){
// Всегда предлагать сохранить не отмеченный
?>
<label><input type="checkbox" name="bg_counter_options[archive]" value="1" /> отметьте и нажмите кнопку «Сохранить изменения» </label>
<?php
}
## Заполняем опцию 9
function fill_bg_counter_wppp(){
global $wpdb;
$bg_wppp_table = $wpdb->prefix.'popularpostsdata';
if($wpdb->get_var("SHOW TABLES LIKE '$bg_wppp_table'") != $bg_wppp_table) {
echo "<i>Таблица данных из WP Popular Posts отсутствует в текущей БД.</i>";
} else {
$val = get_option('bg_counter_options');
$wppp_loaded = get_option('bg_wppp_loaded');
if (isset($wppp_loaded) && $wppp_loaded == 'on'){
echo "<i>Данные из WP Popular Posts уже загружены на сервер.</i>";
} else {
// Всегда предлагать сохранить не отмеченный
?>
<label><input type="checkbox" name="bg_counter_options[wppp]" value="1" /> отметьте и нажмите кнопку «Сохранить изменения» </label>
<?php
}
}
}
## Очистка данных
function bg_counter_sanitize_callback( $options ){
// очищаем
foreach( $options as $name => &$val ){
if( $name == 'period' )
$val = intval( $val );
if( $name == 'debug' )
$val = intval( $val );
if( $name == 'wppp' )
$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