PluginProbe
VikBooking Hotel Booking Engine & PMS / trunk
VikBooking Hotel Booking Engine & PMS vtrunk
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 1.7.4 All 35 releases
vikbooking / admin / controllers / listings.php

listings.php in VikBooking Hotel Booking Engine & PMS trunk, at admin/controllers/listings.php

111 lines 2.8 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 listings controller.
16 *
17 * @since 1.17.6 (J) - 1.7.6 (WP)
18 */
19 class VikBookingControllerListings extends JControllerAdmin
20 {
21 /**
22 * AJAX endpoint to check the listings with a missing mini-thumbnail.
23 *
24 * @return void
25 */
26 public function check_mini_thumbnails()
27 {
28 if (!JSession::checkToken()) {
29 VBOHttpDocument::getInstance()->close(403, JText::translate('JINVALID_TOKEN'));
30 }
31
32 $result = [
33 'processed' => 0,
34 'generated' => 0,
35 ];
36
37 $dbo = JFactory::getDbo();
38
39 $dbo->setQuery(
40 $dbo->getQuery(true)
41 ->select([
42 $dbo->qn('id'),
43 $dbo->qn('img'),
44 ])
45 ->from($dbo->qn('#__vikbooking_rooms'))
46 ->where($dbo->qn('avail') . ' = 1')
47 );
48
49 $listings = $dbo->loadAssocList();
50
51 $updpath = VBO_SITE_PATH . DIRECTORY_SEPARATOR . 'resources' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR;
52
53 foreach ($listings as $listing) {
54 // increase counter
55 $result['processed']++;
56
57 if (is_file($updpath . $listing['img']) && !is_file($updpath . 'mini_' . $listing['img'])) {
58 // generate thumbnail
59 try {
60 // resize the original image
61 (new VikResizer)->proportionalImage($updpath . $listing['img'], $updpath . 'mini_' . $listing['img'], 96, 96);
62
63 // increase counter
64 $result['generated']++;
65 } catch (Throwable $e) {
66 // silently catch any PHP GD error and continue
67 }
68 }
69 }
70
71 // send result to output
72 VBOHttpDocument::getInstance()->json($result);
73 }
74
75 /**
76 * AJAX endpoint to get the eligible options/extras for a given room party.
77 *
78 * @return void
79 *
80 * @since 1.18.8 (J) - 1.8.8 (WP)
81 */
82 public function get_eligible_options()
83 {
84 if (!JSession::checkToken()) {
85 VBOHttpDocument::getInstance()->close(403, JText::translate('JINVALID_TOKEN'));
86 }
87
88 $app = JFactory::getApplication();
89
90 // gather request values
91 $listingId = $app->input->getUInt('listing_id', 0);
92 $adults = $app->input->getUInt('adults', 0);
93 $children = $app->input->getUInt('children', 0);
94 $rateId = $app->input->getUInt('rate_id', 0);
95 $checkin = $app->input->getString('checkin', '');
96 $checkout = $app->input->getString('checkout', '');
97
98 // get the listing eligible options for the given room party
99 $eligibleOptions = VBORoomHelper::getInstance()->getEligibleOptions($listingId, [
100 'checkin' => $checkin,
101 'checkout' => $checkout,
102 'adults' => $adults,
103 'children' => $children,
104 'rate_id' => $rateId,
105 ]);
106
107 // send list to output
108 VBOHttpDocument::getInstance($app)->json($eligibleOptions);
109 }
110 }
111