PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.10.2
Independent Analytics – WordPress Analytics Plugin v2.10.2
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 / Minute_Interval.php
Minute_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 Minute_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::new()->from($views_table, 'views')->selectRaw('COUNT(DISTINCT (sessions.visitor_id)) AS visitors')->selectRaw('COUNT(*) AS views')->selectRaw("ABS(CEILING(TIMESTAMPDIFF(MINUTE, '{$date_range->iso_end()}', views.viewed_at))) 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('PT1M');
23 }
24 public function short_label() : string
25 {
26 return \__('min');
27 }
28 public function long_label_singular() : string
29 {
30 return \__('minute ago');
31 }
32 public function long_label_plural() : string
33 {
34 return \__('minutes ago');
35 }
36 public function interval_multiplier() : int
37 {
38 return 1;
39 }
40 }
41