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 / controllers / maintenance.php

maintenance.php in VikBooking Hotel Booking Engine & PMS 1.8.15, at admin/controllers/maintenance.php

97 lines 3.1 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 * VikBooking maintenance controller.
16 *
17 * @since 1.17.3 (J) - 1.7.3 (WP)
18 */
19 class VikBookingControllerMaintenance extends JControllerAdmin
20 {
21 /**
22 * Optimizes the season records for the given listing, rate plan and dates.
23 */
24 public function seasons_optimize_db_records()
25 {
26 $app = JFactory::getApplication();
27
28 if (!JSession::checkToken()) {
29 VBOHttpDocument::getInstance($app)->close(403, JText::translate('JINVALID_TOKEN'));
30 }
31
32 $is_ajax = $app->input->getBool('ajax', false);
33 $listing_id = $app->input->getUInt('listing_id', 0);
34 $id_price = $app->input->getUInt('id_price', 0);
35 $from_date = $app->input->getString('from_date', '');
36 $to_date = $app->input->getString('to_date', '');
37
38 if (empty($listing_id) || empty($id_price)) {
39 VBOHttpDocument::getInstance($app)->close(400, 'Missing command values');
40 }
41
42 if (!empty($from_date)) {
43 // ensure date format is Y-m-d
44 $from_date = date('Y-m-d', VikBooking::getDateTimestamp($from_date));
45 }
46
47 if (!empty($to_date)) {
48 // ensure date format is Y-m-d
49 $to_date = date('Y-m-d', VikBooking::getDateTimestamp($to_date));
50 }
51
52 try {
53 VBOPerformanceCleaner::setOptions([
54 'listing_id' => $listing_id,
55 'id_price' => $id_price,
56 'from_date' => $from_date,
57 'to_date' => $to_date,
58 // flag to ignore the skip list
59 'forced' => true,
60 ]);
61
62 $result = VBOPerformanceCleaner::listingSeasonSnapshot();
63 } catch (Exception $e) {
64 VBOHttpDocument::getInstance($app)->close($e->getCode(), $e->getMessage());
65 }
66
67 if ($is_ajax) {
68 VBOHttpDocument::getInstance($app)->json($result);
69 }
70
71 $app->enqueueMessage(sprintf('Cleaning completed with %d records removed', (int) ($result['records_removed'] ?? 0)));
72 $app->redirect('index.php?option=com_vikbooking&task=seasons');
73 $app->close();
74 }
75
76 /**
77 * Task introduced to normalize customer records using "short" PIN codes.
78 *
79 * @since 1.18.6 (J) - 1.8.6 (WP)
80 */
81 public function normalize_short_pins()
82 {
83 $app = JFactory::getApplication();
84
85 if (!JSession::checkToken() && !JSession::checkToken('get')) {
86 VBOHttpDocument::getInstance($app)->close(403, JText::translate('JINVALID_TOKEN'));
87 }
88
89 // trigger normalization
90 VikBooking::getCPinInstance()->normalizeShortPins();
91
92 $app->enqueueMessage(JText::translate('VBOCHECKINSTATUSUPDATED'), 'success');
93 $app->redirect('index.php?option=com_vikbooking');
94 $app->close();
95 }
96 }
97