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