PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.8
Independent Analytics – WordPress Analytics Plugin v2.14.8
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 1 year ago Singular_Analytics.php 1 year ago Top_Posts.php 5 months ago
Singular_Analytics.php
46 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 Singular_Analytics
11 {
12 public $singular_id;
13 public $views;
14 public $visitors;
15 public $sessions;
16 private function __construct($singular_id, $row)
17 {
18 $this->singular_id = $singular_id;
19 $this->views = $row->views ?? 0;
20 $this->visitors = $row->visitors ?? 0;
21 $this->sessions = $row->sessions ?? 0;
22 }
23 /**
24 * @param string|int $singular_id
25 * @param Date_Range $date_range
26 *
27 * @return self
28 */
29 public static function for($singular_id, Date_Range $date_range) : ?self
30 {
31 if (\get_post($singular_id) === null) {
32 return null;
33 }
34 $resources_table = Query::get_table_name(Query::RESOURCES);
35 $views_table = Query::get_table_name(Query::VIEWS);
36 $sessions_table = Query::get_table_name(Query::SESSIONS);
37 $resource_statistics_query = Illuminate_Builder::new();
38 $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) {
39 $join->on('resources.id', '=', 'views.resource_id');
40 })->join("{$sessions_table} AS sessions", function (JoinClause $join) {
41 $join->on('sessions.session_id', '=', 'views.session_id');
42 })->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');
43 return new self((int) $singular_id, $resource_statistics_query->get()->first());
44 }
45 }
46