Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
bg-az-counter
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
azbyka_bg
bg-az-counter
Commits
c613fefb
Commit
c613fefb
authored
Nov 08, 2019
by
Vadim
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Version 2.7
Добавлен запрос bach-query
parent
37badd20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
25 additions
and
72 deletions
+25
-72
README.md
README.md
+4
-3
bg_az-counter.php
bg_az-counter.php
+6
-2
options.php
inc/options.php
+15
-1
counter.js
js/counter.js
+0
-0
rating.js
js/rating.js
+0
-66
No files found.
README.md
View file @
c613fefb
...
@@ -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'*
.
Все некорректные записи обнуляются и будут удалены на сервере.
Все некорректные записи обнуляются и будут удалены на сервере.
...
...
bg_az-counter.php
View file @
c613fefb
...
@@ -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 объекта
...
...
inc/options.php
View file @
c613fefb
...
@@ -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'
);
...
...
js/counter.js
View file @
c613fefb
This diff is collapsed.
Click to expand it.
js/rating.js
View file @
c613fefb
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>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment