PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.8.5
Independent Analytics – WordPress Analytics Plugin v2.8.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 All 120 releases
independent-analytics / IAWP / Interval / Ten_Second_Interval.php
Ten_Second_Interval.php
41 lines 1.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IAWP\Interval;
4
5 use IAWP\Date_Range\Date_Range;
6 use IAWP\Illuminate_Builder;
7 use IAWP\Query;
8 use IAWPSCOPED\Illuminate\Database\Query\JoinClause;
9 /** @internal */
10 class Ten_Second_Interval extends \IAWP\Interval\Interval
11 {
12 public function fetch(Date_Range $date_range) : array
13 {
14 $views_table = Query::get_table_name(Query::VIEWS);
15 $sessions_table = Query::get_table_name(Query::SESSIONS);
16 return Illuminate_Builder::get_builder()->from($views_table, 'views')->selectRaw('COUNT(DISTINCT (sessions.visitor_id)) AS visitors')->selectRaw('COUNT(*) AS views')->selectRaw("ABS(CEILING(TIMESTAMPDIFF(SECOND, '{$date_range->iso_end()}', views.viewed_at) / 10)) AS interval_ago")->leftJoin("{$sessions_table} AS sessions", function (JoinClause $join) {
17 $join->on('views.session_id', '=', 'sessions.session_id');
18 })->whereBetween('viewed_at', [$date_range->iso_start(), $date_range->iso_end()])->groupBy('interval_ago')->get()->all();
19 }
20 public function get_date_interval() : \DateInterval
21 {
22 return new \DateInterval('PT10S');
23 }
24 public function short_label() : string
25 {
26 return \__('sec');
27 }
28 public function long_label_singular() : string
29 {
30 return \__('second ago');
31 }
32 public function long_label_plural() : string
33 {
34 return \__('seconds ago');
35 }
36 public function interval_multiplier() : int
37 {
38 return 10;
39 }
40 }
41