aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaolo Tacconi <p.tacconi@giunti.it>2014-10-02 13:43:48 +0200
committerPaolo Tacconi <p.tacconi@giunti.it>2014-10-02 13:43:48 +0200
commit15c1529e836f6af4b9aa526cbc2ffa0c56711135 (patch)
tree67de532c36804a80c2a0582c71d0ca6383454f2e
parent9cebe8ccf015b5fd7814bbaa56b48ed67926ae5a (diff)
downloadvolse-hubzilla-15c1529e836f6af4b9aa526cbc2ffa0c56711135.tar.gz
volse-hubzilla-15c1529e836f6af4b9aa526cbc2ffa0c56711135.tar.bz2
volse-hubzilla-15c1529e836f6af4b9aa526cbc2ffa0c56711135.zip
query for statistics are now executed by poller
-rw-r--r--include/poller.php7
-rw-r--r--include/statistics_fns.php73
-rw-r--r--mod/siteinfo.php58
3 files changed, 89 insertions, 49 deletions
diff --git a/include/poller.php b/include/poller.php
index f689059b9..2febaeb32 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -149,6 +149,13 @@ function poller_run($argv, $argc){
update_birthdays();
+ //update statistics in config
+ require_once('include/statistics_fns.php');
+ update_channels_total_stat();
+ update_channels_active_halfyear_stat();
+ update_channels_active_monthly_stat();
+ update_local_posts_stat();
+
// expire any read notifications over a month old
q("delete from notify where seen = 1 and date < UTC_TIMESTAMP() - INTERVAL 30 DAY");
diff --git a/include/statistics_fns.php b/include/statistics_fns.php
new file mode 100644
index 000000000..4f72e6615
--- /dev/null
+++ b/include/statistics_fns.php
@@ -0,0 +1,73 @@
+<?php /** @file */
+
+function update_channels_total_stat() {
+ $r = q("select count(channel_id) as channels_total from channel left join account on account_id = channel_account_id
+ where account_flags = 0 ");
+ if($r) {
+ $channels_total_stat = intval($r[0]['channels_total']);
+ set_config('system','channels_total_stat',$channels_total_stat);
+ } else {
+ set_config('system','channels_total_stat',null);
+ }
+}
+
+function update_channels_active_halfyear_stat() {
+ $r = q("select channel_id from channel left join account on account_id = channel_account_id
+ where account_flags = 0 and account_lastlog > UTC_TIMESTAMP - INTERVAL 6 MONTH");
+ if($r) {
+ $s = '';
+ foreach($r as $rr) {
+ if($s)
+ $s .= ',';
+ $s .= intval($rr['channel_id']);
+ }
+ $x = q("select uid from item where uid in ( $s ) and (item_flags & %d) and created > UTC_TIMESTAMP - INTERVAL 6 MONTH group by uid",
+ intval(ITEM_WALL)
+ );
+ if($x) {
+ $channels_active_halfyear_stat = count($x);
+ set_config('system','channels_active_halfyear_stat',$channels_active_halfyear_stat);
+ } else {
+ set_config('system','channels_active_halfyear_stat',null);
+ }
+ } else {
+ set_config('system','channels_active_halfyear_stat',null);
+ }
+}
+
+function update_channels_active_monthly_stat() {
+ $r = q("select channel_id from channel left join account on account_id = channel_account_id
+ where account_flags = 0 and account_lastlog > UTC_TIMESTAMP - INTERVAL 1 MONTH");
+ if($r) {
+ $s = '';
+ foreach($r as $rr) {
+ if($s)
+ $s .= ',';
+ $s .= intval($rr['channel_id']);
+ }
+ $x = q("select uid from item where uid in ( $s ) and ( item_flags & %d ) and created > UTC_TIMESTAMP - INTERVAL 1 MONTH group by uid",
+ intval(ITEM_WALL)
+ );
+ if($x) {
+ $channels_active_monthly_stat = count($x);
+ set_config('system','channels_active_monthly_stat',$channels_active_monthly_stat);
+ } else {
+ set_config('system','channels_active_monthly_stat',null);
+ }
+ } else {
+ set_config('system','channels_active_monthly_stat',null);
+ }
+}
+
+function update_local_posts_stat() {
+ $posts = q("SELECT COUNT(*) AS local_posts FROM `item` WHERE (item_flags & %d) ",
+ intval(ITEM_WALL) );
+ if (is_array($posts)) {
+ $local_posts_stat = intval($posts[0]["local_posts"]);
+ set_config('system','local_posts_stat',$local_posts_stat);
+ } else {
+ set_config('system','local_posts_stat',null);
+ }
+}
+
+
diff --git a/mod/siteinfo.php b/mod/siteinfo.php
index c0c1c6e3e..3071e52fb 100644
--- a/mod/siteinfo.php
+++ b/mod/siteinfo.php
@@ -50,51 +50,12 @@ function siteinfo_init(&$a) {
$site_info = get_config('system','info');
$site_name = get_config('system','sitename');
- // Statistics (from statistics.json plugin)
+ //Statistics
+ $channels_total_stat = intval(get_config('system','channels_total_stat'));
+ $channels_active_halfyear_stat = intval(get_config('system','channels_active_halfyear_stat'));
+ $channels_active_monthly_stat = intval(get_config('system','channels_active_monthly_stat'));
+ $local_posts_stat = intval(get_config('system','local_posts_stat'));
- $r = q("select count(channel_id) as channels_total from channel left join account on account_id = channel_account_id
- where account_flags = 0 ");
- if($r)
- $channels_total = intval($r[0]['channels_total']);
-
- $r = q("select channel_id from channel left join account on account_id = channel_account_id
- where account_flags = 0 and account_lastlog > UTC_TIMESTAMP - INTERVAL 6 MONTH");
- if($r) {
- $s = '';
- foreach($r as $rr) {
- if($s)
- $s .= ',';
- $s .= intval($rr['channel_id']);
- }
- $x = q("select uid from item where uid in ( $s ) and (item_flags & %d) and created > UTC_TIMESTAMP - INTERVAL 6 MONTH group by uid",
- intval(ITEM_WALL)
- );
- if($x)
- $channels_active_halfyear = count($x);
- }
-
- $r = q("select channel_id from channel left join account on account_id = channel_account_id
- where account_flags = 0 and account_lastlog > UTC_TIMESTAMP - INTERVAL 1 MONTH");
- if($r) {
- $s = '';
- foreach($r as $rr) {
- if($s)
- $s .= ',';
- $s .= intval($rr['channel_id']);
- }
- $x = q("select uid from item where uid in ( $s ) and ( item_flags & %d ) and created > UTC_TIMESTAMP - INTERVAL 1 MONTH group by uid",
- intval(ITEM_WALL)
- );
- if($x)
- $channels_active_monthly = count($x);
- }
-
- $posts = q("SELECT COUNT(*) AS local_posts FROM `item` WHERE (item_flags & %d) ",
- intval(ITEM_WALL)
- );
- if (is_array($posts))
- $local_posts = intval($posts[0]["local_posts"]);
-
$data = Array(
'version' => RED_VERSION,
'commit' => $commit,
@@ -102,7 +63,6 @@ function siteinfo_init(&$a) {
'plugins' => $visible_plugins,
'register_policy' => $register_policy[$a->config['system']['register_policy']],
'directory_mode' => $directory_mode[$a->config['system']['directory_mode']],
- 'language' => get_config('system','language'),
'diaspora_emulation' => get_config('system','diaspora_enabled'),
'rss_connections' => get_config('system','feed_contacts'),
'default_service_restrictions' => $service_class,
@@ -110,10 +70,10 @@ function siteinfo_init(&$a) {
'site_name' => (($site_name) ? $site_name : ''),
'platform' => RED_PLATFORM,
'info' => (($site_info) ? $site_info : ''),
- 'channels_total' => $channels_total,
- 'channels_active_halfyear' => $channels_active_halfyear,
- 'channels_active_monthly' => $channels_active_monthly,
- 'local_posts' => $local_posts
+ 'channels_total' => $channels_total_stat,
+ 'channels_active_halfyear' => $channels_active_halfyear_stat,
+ 'channels_active_monthly' => $channels_active_monthly_stat,
+ 'local_posts' => $local_posts_stat
);
json_return_and_die($data);
}