PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.15
VikBooking Hotel Booking Engine & PMS v1.8.15
1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 All 36 releases
vikbooking / admin / helpers / src / history / detectoraware.php

detectoraware.php in VikBooking Hotel Booking Engine & PMS 1.8.15, at admin/helpers/src/history/detectoraware.php

120 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package VikBooking
4 * @subpackage core
5 * @author E4J s.r.l.
6 * @copyright Copyright (C) 2025 E4J s.r.l. All Rights Reserved.
7 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
8 * @link https://vikwp.com
9 */
10
11 // No direct access
12 defined('ABSPATH') or die('No script kiddies please!');
13
14 /**
15 * Changes detector aware class.
16 *
17 * @since 1.18 (J) - 1.8 (WP)
18 */
19 abstract class VBOHistoryDetectoraware implements VBOHistoryDetector
20 {
21 /**
22 * The value set before the changes.
23 *
24 * @var mixed
25 */
26 protected $previousValue;
27
28 /**
29 * The value set after the changes.
30 *
31 * @var mixed
32 */
33 protected $currentValue;
34
35 /**
36 * The name of the property to compare.
37 *
38 * @var string
39 */
40 protected $propertyName;
41
42 /**
43 * Class constructor.
44 *
45 * @param string $propertyName The name of the property to compare.
46 */
47 public function __construct(string $propertyName)
48 {
49 $this->propertyName = $propertyName;
50 }
51
52 /**
53 * @inheritDoc
54 */
55 public function getEvent()
56 {
57 return $this->propertyName . '.changed';
58 }
59
60 /**
61 * @inheritDoc
62 */
63 public function hasChanged(object $prev, object $curr)
64 {
65 if (!property_exists($prev, $this->propertyName)) {
66 return false;
67 }
68
69 if (!property_exists($curr, $this->propertyName)) {
70 return false;
71 }
72
73 // internally save for later use
74 $this->previousValue = $prev->{$this->propertyName};
75 $this->currentValue = $curr->{$this->propertyName};
76
77 return $this->checkChanges($this->previousValue, $this->currentValue);
78 }
79
80 /**
81 * Internal changes detection.
82 *
83 * @param mixed $previousValue
84 * @param mixed $currentValue
85 *
86 * @return bool
87 */
88 protected function checkChanges($previousValue, $currentValue)
89 {
90 // check whether the property of the 2 elements are different
91 return (bool) strcmp((string) $previousValue, (string) $currentValue);
92 }
93
94 /**
95 * @inheritDoc
96 */
97 final public function describe()
98 {
99 return $this->doDescribe($this->previousValue, $this->currentValue);
100 }
101
102 /**
103 * Internal changes description.
104 *
105 * @param mixed $previousValue
106 * @param mixed $currentValue
107 *
108 * @return string
109 */
110 abstract protected function doDescribe($previousValue, $currentValue);
111
112 /**
113 * @inheritDoc
114 */
115 public function getIcon()
116 {
117 return VikBookingIcons::i('pencil-alt');
118 }
119 }
120