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 / Public_API / Analytics.php
independent-analytics / IAWP / Public_API Last commit date
Analytics.php 2 years ago Singular_Analytics.php 2 years ago
Analytics.php
40 lines
1 <?php
2
3 namespace IAWP\Public_API;
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 Analytics
11 {
12 public $views;
13 public $visitors;
14 public $sessions;
15 private function __construct($row)
16 {
17 $this->views = $row->views ?? 0;
18 $this->visitors = $row->visitors ?? 0;
19 $this->sessions = $row->sessions ?? 0;
20 }
21 /**
22 * @param Date_Range $date_range
23 *
24 * @return self
25 */
26 public static function for(Date_Range $date_range) : self
27 {
28 $resources_table = Query::get_table_name(Query::RESOURCES);
29 $views_table = Query::get_table_name(Query::VIEWS);
30 $sessions_table = Query::get_table_name(Query::SESSIONS);
31 $resource_statistics_query = Illuminate_Builder::get_builder();
32 $resource_statistics_query->selectRaw('COUNT(DISTINCT views.id) AS views')->selectRaw('COUNT(DISTINCT sessions.visitor_id) AS visitors')->selectRaw('COUNT(DISTINCT sessions.session_id) AS sessions')->from("{$views_table} as views")->join("{$resources_table} AS resources", function (JoinClause $join) {
33 $join->on('resources.id', '=', 'views.resource_id');
34 })->join("{$sessions_table} AS sessions", function (JoinClause $join) {
35 $join->on('sessions.session_id', '=', 'views.session_id');
36 })->whereBetween('views.viewed_at', [$date_range->iso_start(), $date_range->iso_end()]);
37 return new self($resource_statistics_query->get()->first());
38 }
39 }
40