PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.3.1
Independent Analytics – WordPress Analytics Plugin v2.3.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 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Interval / Minute_Interval.php
independent-analytics / IAWP / Interval Last commit date
Interval.php 2 years ago Minute_Interval.php 2 years ago Ten_Second_Interval.php 2 years ago
Minute_Interval.php
41 lines
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::get_builder()->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