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 / detector / array.php

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

93 lines 2.4 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 * Item array property changes detector class.
16 *
17 * @since 1.18 (J) - 1.8 (WP)
18 */
19 abstract class VBOHistoryDetectorArray extends VBOHistoryDetectoraware
20 {
21 /**
22 * @inheritDoc
23 */
24 protected function checkChanges($previousValue, $currentValue)
25 {
26 if (is_string($previousValue)) {
27 // decode JSON string (update internal property too)
28 $this->previousValue = $previousValue = (array) json_decode($previousValue, true);
29 }
30
31 if (is_string($currentValue)) {
32 // decode JSON string (update internal property too)
33 $this->currentValue = $currentValue = (array) json_decode($currentValue, true);
34 }
35
36 if (!is_array($previousValue) || !is_array($currentValue)) {
37 // both values must be arrays
38 return false;
39 }
40
41 // convert all the elements of the arrays into strings
42 $previousValue = array_map('strval', $previousValue);
43 $currentValue = array_map('strval', $currentValue);
44
45 // sort arrays to make sure the position of the elements is the same
46 sort($previousValue);
47 sort($currentValue);
48
49 // the arrays must be different
50 return $previousValue !== $currentValue;
51 }
52
53 /**
54 * @inheritDoc
55 */
56 protected function doDescribe($previousValue, $currentValue)
57 {
58 $chunks = [];
59
60 $added = array_diff($currentValue, $previousValue);
61
62 if ($added) {
63 $chunks[] = $this->describeAddedItems($added);
64 }
65
66 $removed = array_diff($previousValue, $currentValue);
67
68 if ($removed) {
69 $chunks[] = $this->describeRemovedItems($removed);
70 }
71
72 return implode(' ', $chunks);
73 }
74
75 /**
76 * Describes the added items.
77 *
78 * @param string[] $added
79 *
80 * @return string
81 */
82 abstract protected function describeAddedItems(array $added);
83
84 /**
85 * Describes the removed items.
86 *
87 * @param string[] $removed
88 *
89 * @return string
90 */
91 abstract protected function describeRemovedItems(array $removed);
92 }
93