PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.2.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.2.0
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Tracker / Visit / VisitProperties.php
matomo / app / core / Tracker / Visit Last commit date
Factory.php 2 years ago ReferrerSpamFilter.php 1 year ago VisitProperties.php 2 years ago
VisitProperties.php
126 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 */
9 namespace Piwik\Tracker\Visit;
10
11 /**
12 * Holds temporary data for tracking requests.
13 */
14 class VisitProperties
15 {
16 /**
17 * Information about the current visit. This array holds the column values that will be inserted or updated
18 * in the `log_visit` table, or the values for the last known visit of the current visitor. These properties
19 * can be modified during request processing.
20 *
21 * @var array
22 */
23 private $visitInfo = [];
24 /**
25 * Holds the initial visit properties information about the current visit, this data is not changed during request processing.
26 *
27 * @var array
28 */
29 private $visitInfoImmutableProperties = [];
30 public function __construct(array $visitInfo = [])
31 {
32 $this->visitInfo = $visitInfo;
33 $this->visitInfoImmutableProperties = $visitInfo;
34 }
35 /**
36 * Returns a visit property, or `null` if none is set.
37 *
38 * @param string $name The property name.
39 *
40 * @return mixed
41 */
42 public function getProperty($name)
43 {
44 return isset($this->visitInfo[$name]) ? $this->visitInfo[$name] : null;
45 }
46 /**
47 * Returns all visit properties by reference.
48 *
49 * @return array
50 */
51 public function &getProperties() : array
52 {
53 return $this->visitInfo;
54 }
55 /**
56 * Sets a visit property.
57 *
58 * @param string $name The property name.
59 * @param mixed $value The property value.
60 *
61 * @return void
62 */
63 public function setProperty($name, $value) : void
64 {
65 $this->visitInfo[$name] = $value;
66 }
67 /**
68 * Unsets all visit properties.
69 *
70 * @return void
71 */
72 public function clearProperties() : void
73 {
74 $this->visitInfo = [];
75 }
76 /**
77 * Sets all visit properties.
78 *
79 * @param array $properties
80 *
81 * @return void
82 */
83 public function setProperties(array $properties) : void
84 {
85 $this->visitInfo = $properties;
86 }
87 /**
88 * Set the initial values of a property.
89 * The immutable value remains unchanged throughout request processing and can be access with getImmutableProperty()
90 * The mutable value can be updated at any time with setProperty() and accessed via getProperty()
91 *
92 * @param string $name
93 * @param mixed $value
94 *
95 * @return void
96 */
97 public function initializeProperty(string $name, $value) : void
98 {
99 if (isset($this->visitInfoImmutableProperties[$name])) {
100 throw new \Exception(sprintf('The property %s has already been initialized', $name));
101 }
102 $this->visitInfoImmutableProperties[$name] = $value;
103 $this->setProperty($name, $value);
104 }
105 /**
106 * Returns a visit property, unmodified by request processors. Returns `null` if not set.
107 *
108 * @param string $name The property name.
109 *
110 * @return mixed|null
111 */
112 public function getImmutableProperty(string $name)
113 {
114 return $this->visitInfoImmutableProperties[$name] ?? null;
115 }
116 /**
117 * Returns all immutable visit properties
118 *
119 * @return array
120 */
121 public function getImmutableProperties() : array
122 {
123 return $this->visitInfoImmutableProperties;
124 }
125 }
126