PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.1.4
Independent Analytics – WordPress Analytics Plugin v2.1.4
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 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
39 lines
1 <?php
2
3 namespace IAWP_SCOPED\IAWP\Public_API;
4
5 use IAWP_SCOPED\IAWP\Date_Range\Date_Range;
6 use IAWP_SCOPED\IAWP\Illuminate_Builder;
7 use IAWP_SCOPED\IAWP\Query;
8 use IAWP_SCOPED\Illuminate\Database\Query\JoinClause;
9 class Analytics
10 {
11 public $views;
12 public $visitors;
13 public $sessions;
14 private function __construct($row)
15 {
16 $this->views = $row->views ?? 0;
17 $this->visitors = $row->visitors ?? 0;
18 $this->sessions = $row->sessions ?? 0;
19 }
20 /**
21 * @param Date_Range $date_range
22 *
23 * @return self
24 */
25 public static function for(Date_Range $date_range) : self
26 {
27 $resources_table = Query::get_table_name(Query::RESOURCES);
28 $views_table = Query::get_table_name(Query::VIEWS);
29 $sessions_table = Query::get_table_name(Query::SESSIONS);
30 $resource_statistics_query = Illuminate_Builder::get_builder();
31 $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) {
32 $join->on('resources.id', '=', 'views.resource_id');
33 })->join("{$sessions_table} AS sessions", function (JoinClause $join) {
34 $join->on('sessions.session_id', '=', 'views.session_id');
35 })->whereBetween('views.viewed_at', [$date_range->iso_start(), $date_range->iso_end()]);
36 return new self($resource_statistics_query->get()->first());
37 }
38 }
39