PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.16
VikBooking Hotel Booking Engine & PMS v1.8.16
1.8.16 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 All 37 releases
← All changes | site/views/tableaux/view.html.php +45 -39 1.6.6 → 1.8.16 View file →
@@ -13,14 +13,14 @@
13 13 jimport('joomla.application.component.view');
14 14
15 15 class VikbookingViewTableaux extends JViewVikBooking
16 16 {
17 - function display($tpl = null)
17 + public function display($tpl = null)
18 18 {
19 - //set noindex instruction for robots
19 + // set noindex instruction for robots
20 20 $document = JFactory::getDocument();
21 - $document->setMetaData('robots', 'noindex,follow');
22 - //
21 + $document->setMetaData('robots', 'noindex, nofollow');
22 +
23 23 $app = JFactory::getApplication();
24 24 $dbo = JFactory::getDbo();
25 25 $opobj = VikBooking::getOperatorInstance();
26 26
@@ -40,30 +40,38 @@
40 40 $app->redirect(JRoute::rewrite('index.php?option=com_vikbooking&view=operators'.(!empty($pitemid) ? '&Itemid='.$pitemid : ''), false));
41 41 exit;
42 42 }
43 43
44 + /**
45 + * We allow the "visible days" setting to be negative. In this case
46 + * we double it to get the number of past and future visible days.
47 + *
48 + * @since 1.16.9 (J) - 1.6.9 (WP)
49 + */
50 + $past_days = 0;
51 + $visible_days = $operator['perms']['days'] ?: 0;
52 + if ($visible_days < 0) {
53 + $visible_days = $visible_days + (abs($visible_days) * 2);
54 + $past_days = $visible_days;
55 + }
56 +
44 57 // prepare tableaux data
45 58 $tsinfo = getdate();
46 - $fromts = mktime(0, 0, 0, $tsinfo['mon'], $tsinfo['mday'], $tsinfo['year']);
47 - $tots = mktime(23, 59, 59, $tsinfo['mon'], ($tsinfo['mday'] + $operator['perms']['days']), $tsinfo['year']);
59 + $fromts = mktime(0, 0, 0, $tsinfo['mon'], ($tsinfo['mday'] - $past_days), $tsinfo['year']);
60 + $tots = mktime(23, 59, 59, $tsinfo['mon'], ($tsinfo['mday'] + $visible_days), $tsinfo['year']);
48 61
49 - $roomids = $operator['perms']['rooms'];
50 - if (count($roomids) && empty($roomids[0])) {
51 - $roomids = array();
52 - }
62 + $roomids = array_filter((array) ($operator['perms']['rooms'] ?? []));
53 63
54 64 // get all rooms enabled for the operator
55 - $rooms = array();
56 - $q = "SELECT `id`,`name`,`units`,`params` FROM `#__vikbooking_rooms`".(count($roomids) ? " WHERE `id` IN (".implode(', ', $roomids).")" : "")." ORDER BY `name` ASC;";
65 + $rooms = [];
66 + $q = "SELECT `id`,`name`,`units`,`params` FROM `#__vikbooking_rooms`" . ($roomids ? " WHERE `id` IN (" . implode(', ', array_map('intval', $roomids)) . ")" : "") . " ORDER BY `name` ASC;";
57 67 $dbo->setQuery($q);
58 - $dbo->execute();
59 - if ($dbo->getNumRows()) {
60 - $all = $dbo->loadAssocList();
61 - foreach ($all as $r) {
62 - $rooms[$r['id']] = $r;
63 - }
68 + $all = $dbo->loadAssocList();
69 + foreach ($all as $r) {
70 + $rooms[$r['id']] = $r;
64 71 }
65 - if (!count($rooms)) {
72 +
73 + if (!$rooms) {
66 74 VikError::raiseWarning('', JText::translate('VBONOTAUTHORIZEDRES').' (#2)');
67 75 $pitemid = VikRequest::getInt('Itemid', '', 'request');
68 76 $app->redirect(JRoute::rewrite('index.php?option=com_vikbooking&view=operators'.(!empty($pitemid) ? '&Itemid='.$pitemid : ''), false));
69 77 exit;
@@ -69,10 +77,10 @@
69 77 exit;
70 78 }
71 79
72 80 // get all occupied dates for these rooms
73 - $rooms_busy = array();
74 - $q = "SELECT `b`.*,`ob`.`idorder`,`o`.`custdata`,`o`.`status`,`o`.`country`,`oc`.`idcustomer`,`c`.`first_name`,`c`.`last_name`,
81 + $rooms_busy = [];
82 + $q = "SELECT `b`.*,`ob`.`idorder`,`o`.`custdata`,`o`.`status`,`o`.`country`,`o`.`phone`,`oc`.`idcustomer`,`c`.`first_name`,`c`.`last_name`,
75 83 (SELECT GROUP_CONCAT(`or`.`roomindex` SEPARATOR ';') FROM `#__vikbooking_ordersrooms` AS `or` WHERE `or`.`idorder`=`ob`.`idorder`) AS `indexes`,
76 84 (SELECT GROUP_CONCAT(`or`.`adults` SEPARATOR ';') FROM `#__vikbooking_ordersrooms` AS `or` WHERE `or`.`idorder`=`ob`.`idorder`) AS `adults`,
77 85 (SELECT GROUP_CONCAT(`or`.`children` SEPARATOR ';') FROM `#__vikbooking_ordersrooms` AS `or` WHERE `or`.`idorder`=`ob`.`idorder`) AS `children`,
78 86 (SELECT GROUP_CONCAT(`or`.`pets` SEPARATOR ';') FROM `#__vikbooking_ordersrooms` AS `or` WHERE `or`.`idorder`=`ob`.`idorder`) AS `pets`,
@@ -86,20 +94,18 @@
86 94 LEFT JOIN `#__vikbooking_ordersbusy` AS `ob` ON `b`.`id`=`ob`.`idbusy`
87 95 LEFT JOIN `#__vikbooking_orders` AS `o` ON `ob`.`idorder`=`o`.`id`
88 96 LEFT JOIN `#__vikbooking_customers_orders` AS `oc` ON `ob`.`idorder`=`oc`.`idorder`
89 97 LEFT JOIN `#__vikbooking_customers` AS `c` ON `oc`.`idcustomer`=`c`.`id`
90 - WHERE `b`.`idroom` IN (".implode(', ', array_keys($rooms)).") AND (`b`.`checkin`>=".$fromts." OR `b`.`checkout`>=".$fromts.") AND (`b`.`checkin`<=".$tots." OR `b`.`checkout`<=".$fromts.") AND `o`.`status`='confirmed' AND `o`.`closure`=0
98 + WHERE `b`.`idroom` IN (" . implode(', ', array_keys($rooms)) . ") AND (`b`.`checkin`>=" . $fromts . " OR `b`.`checkout`>=" . $fromts . ") AND (`b`.`checkin`<=" . $tots . " OR `b`.`checkout`<=" . $fromts . ") AND `o`.`status`='confirmed' AND `o`.`closure`=0
91 99 ORDER BY `b`.`checkin` ASC, `ob`.`idorder` ASC;";
92 100 $dbo->setQuery($q);
93 - $dbo->execute();
94 - if ($dbo->getNumRows()) {
95 - $busy = $dbo->loadAssocList();
96 - foreach ($busy as $b) {
97 - if (!isset($rooms_busy[$b['idroom']])) {
98 - $rooms_busy[$b['idroom']] = array();
99 - }
100 - array_push($rooms_busy[$b['idroom']], $b);
101 + $busy = $dbo->loadAssocList();
102 +
103 + foreach ($busy as $b) {
104 + if (!isset($rooms_busy[$b['idroom']])) {
105 + $rooms_busy[$b['idroom']] = [];
101 106 }
107 + array_push($rooms_busy[$b['idroom']], $b);
102 108 }
103 109
104 110 /**
105 111 * Check the next festivities periodically
@@ -122,14 +128,12 @@
122 128 // load all options
123 129 $all_options = [];
124 130 $q = "SELECT * FROM `#__vikbooking_optionals` WHERE `forcesel`=0 AND `is_citytax`=0 AND `is_fee`=0;";
125 131 $dbo->setQuery($q);
126 - $dbo->execute();
127 - if ($dbo->getNumRows()) {
128 - $records = $dbo->loadAssocList();
129 - foreach ($records as $opt) {
130 - $all_options[$opt['id']] = $opt;
131 - }
132 + $records = $dbo->loadAssocList();
133 +
134 + foreach ($records as $opt) {
135 + $all_options[$opt['id']] = $opt;
132 136 }
133 137
134 138 $this->operator = $operator;
135 139 $this->rooms = $rooms;
@@ -138,8 +142,10 @@
138 142 $this->tots = $tots;
139 143 $this->festivities = $festivities;
140 144 $this->rdaynotes = $rdaynotes;
141 145 $this->all_options = $all_options;
146 + $this->visible_days = $visible_days;
147 + $this->past_days = $past_days;
142 148
143 149 parent::display($tpl);
144 150 }
145 151
@@ -163,13 +169,13 @@
163 169 FROM `#__vikbooking_dispcost` AS `d`
164 170 LEFT JOIN `#__vikbooking_prices` AS `p` ON `d`.`idprice`=`p`.`id`
165 171 WHERE `d`.`id`={$idtar} AND `p`.`name` IS NOT NULL";
166 172 $dbo->setQuery($q, 0, 1);
167 - $dbo->execute();
168 - if (!$dbo->getNumRows()) {
173 + $record = $dbo->loadAssoc();
174 +
175 + if (!$record) {
169 176 return null;
170 177 }
171 - $record = $dbo->loadAssoc();
172 178
173 179 return $record['name'];
174 180 }
175 181 }