PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.19.1
Independent Analytics – WordPress Analytics Plugin v1.19.1
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 / Models / Referrer.php
independent-analytics / IAWP / Models Last commit date
Campaign.php 3 years ago Current_Traffic.php 3 years ago Geo.php 3 years ago Page.php 3 years ago Page_Author_Archive.php 3 years ago Page_Date_Archive.php 3 years ago Page_Home.php 3 years ago Page_Not_Found.php 3 years ago Page_Post_Type_Archive.php 3 years ago Page_Search.php 3 years ago Page_Singular.php 3 years ago Page_Term_Archive.php 3 years ago Referrer.php 3 years ago View_Stats.php 3 years ago Visitor.php 3 years ago WooCommerce_Stats.php 3 years ago
Referrer.php
118 lines
1 <?php
2
3 namespace IAWP\Models;
4
5 use IAWP\Utils\String_Util;
6
7 class Referrer
8 {
9 use View_Stats;
10 use WooCommerce_Stats;
11
12 private $is_direct;
13 private $referrer_ids;
14 private $group_name;
15 private $domain;
16 private $type;
17
18 public function __construct($row)
19 {
20 $this->is_direct = is_null($row->referrer_ids);
21 $this->referrer_ids = $row->referrer_ids;
22 $this->group_name = $row->group_name;
23 $this->domain = $row->domain;
24 $this->type = $row->type;
25 $this->set_view_stats($row);
26 $this->set_wc_stats($row);
27 }
28
29 /**
30 * Returns an array of all ids for a referrer group.
31 * Direct traffic has an empty array.
32 * Referrer traffic has an array with a single id.
33 * Grouped referrer traffic has an array of multiple grouped referrer ids.
34 *
35 * @return array Associated ids
36 */
37 protected function ids(): array
38 {
39 if ($this->is_direct) {
40 return [];
41 }
42
43 return $this->referrer_ids;
44 }
45
46 /**
47 * Return group name, referrer url, or direct.
48 *
49 * @return string Referrer
50 */
51 // Todo - This is the one the table is doing...
52 public function referrer(): string
53 {
54 if ($this->is_direct) {
55 return 'Direct';
56 }
57
58 // For ungrouped referrers, strip any potential www. prefix
59 if (String_Util::str_starts_with($this->group_name, 'www.')) {
60 return substr($this->group_name, 4);
61 }
62
63 return $this->group_name;
64 }
65
66 public function referrer_url(): string
67 {
68 if ($this->is_direct) {
69 return 'Direct';
70 }
71
72 return $this->domain;
73 }
74
75 /**
76 * Return group referrer type, referrer, or direct.
77 *
78 * @return string Referrer type
79 */
80 public function referrer_type(): string
81 {
82 if ($this->is_direct) {
83 return 'Direct';
84 }
85
86 if (is_null($this->type)) {
87 return 'Referrer';
88 }
89
90 return $this->type;
91 }
92
93 /**
94 * @return bool
95 */
96 public function is_direct(): bool
97 {
98 return $this->is_direct;
99 }
100
101 public static function referrer_ids(array $referrers): array
102 {
103 if (count($referrers) === 0) {
104 return [];
105 }
106
107 $array_of_arrays = array_map(function ($referrer) {
108 if ($referrer->is_direct()) {
109 return [null];
110 }
111
112 return $referrer->ids();
113 }, $referrers);
114
115 return array_merge(...$array_of_arrays);
116 }
117 }
118