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 / rms / pace / data / metric / ratevariationminus.php

ratevariationminus.php in VikBooking Hotel Booking Engine & PMS 1.8.15, at admin/helpers/src/rms/pace/data/metric/ratevariationminus.php

58 lines 1.7 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 * RMS Pace Data Metric Rate Variation Minus implementation.
16 *
17 * @since 1.18.6 (J) - 1.8.6 (WP)
18 */
19 final class VBORmsPaceDataMetricRatevariationminus extends VBORmsPaceDataMetric
20 {
21 /**
22 * @inheritDoc
23 */
24 public function getID()
25 {
26 return 'ratevrminus';
27 }
28
29 /**
30 * @inheritDoc
31 */
32 public function extract(VBORmsPaceDataperiod $paceDataPeriod, ?array $periodPaceMetrics = null)
33 {
34 // this metric should run after "Rate Variation Date"
35 if (empty($periodPaceMetrics['ratevrdt']) || !($periodPaceMetrics['ratevrdt'] instanceof DateTimeInterface)) {
36 return 0;
37 }
38
39 // start counter for the booking cancellations received after a certain date
40 $minusCount = 0;
41
42 // get the last variation timestamp
43 $lastTs = $periodPaceMetrics['ratevrdt']->format('U');
44
45 // iterate all cancelled bookings affecting the current period
46 foreach ($paceDataPeriod->getCancellations() as $booking) {
47 // attempt to evaluate the exact cancellation date timestamp
48 if (($booking['cancellation_ts'] ?? $booking['ts'] ?? 0) >= $lastTs) {
49 // increase counter
50 $minusCount++;
51 }
52 }
53
54 // return the number of booking cancellations after the last rate variation date
55 return $minusCount;
56 }
57 }
58