PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.10
Independent Analytics – WordPress Analytics Plugin v1.10
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 / inc / models / referrer.php
independent-analytics / inc / models Last commit date
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 visitor.php 3 years ago
referrer.php
135 lines
1 <?php
2
3 namespace IAWP;
4
5 class Referrer
6 {
7 private $is_direct;
8 private $referrer_ids;
9 private $group_name;
10 private $domain;
11 private $type;
12 private $views;
13 private $visitors;
14
15 public function __construct(?array $ids, ?string $group_name, ?string $domain, ?string $type, int $views, int $visitors)
16 {
17 $this->is_direct = is_null($ids);
18 $this->referrer_ids = $ids;
19 $this->group_name = $group_name;
20 $this->domain = $domain;
21 $this->type = $type;
22 $this->views = $views;
23 $this->visitors = $visitors;
24 }
25
26 /**
27 * Returns an array of all ids for a referrer group.
28 * Direct traffic has an empty array.
29 * Referrer traffic has an array with a single id.
30 * Grouped referrer traffic has an array of multiple grouped referrer ids.
31 *
32 * @return array Associated ids
33 */
34 protected function ids(): array
35 {
36 if ($this->is_direct) {
37 return [];
38 }
39
40 return $this->referrer_ids;
41 }
42
43 /**
44 * Returns label text used for referral traffic link.
45 *
46 * @return string Referrer label text
47 */
48 public function referrer_label(): string
49 {
50 if ($this->is_direct) {
51 return 'Direct';
52 }
53
54 // For ungrouped referrers, strip any potential www. prefix
55 if (str_starts_with($this->group_name, 'www.')) {
56 return substr($this->group_name, 4);
57 }
58
59 return $this->group_name;
60 }
61
62 /**
63 * Return group name, referrer url, or direct.
64 *
65 * @return string Referrer
66 */
67 public function referrer(): string
68 {
69 if ($this->is_direct) {
70 return 'Direct';
71 }
72
73 return $this->domain;
74 }
75
76 /**
77 * Return group referrer type, referrer, or direct.
78 *
79 * @return string Referrer type
80 */
81 public function referrer_type(): string
82 {
83 if ($this->is_direct) {
84 return 'Direct';
85 }
86
87 if (is_null($this->type)) {
88 return 'Referrer';
89 }
90
91 return $this->type;
92 }
93
94 /**
95 * @return int
96 */
97 public function views(): int
98 {
99 return $this->views;
100 }
101
102 /**
103 * @return int
104 */
105 public function visitors(): int
106 {
107 return $this->visitors;
108 }
109
110 /**
111 * @return bool
112 */
113 public function is_direct(): bool
114 {
115 return $this->is_direct;
116 }
117
118 public static function referrer_ids(array $referrers): array
119 {
120 if (count($referrers) === 0) {
121 return [];
122 }
123
124 $array_of_arrays = array_map(function ($referrer) {
125 if ($referrer->is_direct()) {
126 return [null];
127 }
128
129 return $referrer->ids();
130 }, $referrers);
131
132 return array_merge(...$array_of_arrays);
133 }
134 }
135