| @@ -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 | } |