private static function _printAvailableDate($product) { $availableDate = null; if ($product->getTypeId() == ITwebexperts_Payperrentals_Helper_Data::PRODUCT_TYPE) { $range = ITwebexperts_Payperrentals_Helper_Data::getFirstAvailableDateRange($product); } else { $bundleDefaultSelections = ITwebexperts_Payperrentals_Helper_Data::getDefaultSelectionsForBundle($product); $minimumDate = null; foreach ($bundleDefaultSelections as $productId) { $newRange = ITwebexperts_Payperrentals_Helper_Data::getFirstAvailableDateRange($productId); if (is_null($minimumDate) || strtotime($minimumDate) < $newRange['start_date']) { $minimumDate = $newRange['start_date']; $range = $newRange; } } } if (isset($range)) { if ($range['start_date'] != '0') { $nextAvail = Mage::helper('payperrentals')->__('Next Available Date: ') . ITwebexperts_Payperrentals_Helper_Date::formatDbDate($range['start_date']); } else { $nextAvail = ''; } $availableDate = $nextAvail; } return $availableDate; }
/** * Function which completes the booked array with the disabled and excluded days, so they * can't be selected in the calendar. The report will ignore them * * @param array $productIds * @param array $booked * @param int $currentTimestamp * @param datetime $stDate * @param datetime $enDate * * @return array */ public static function isExcludedDay($productIds, $stDate, $enDate) { if (!is_array($productIds)) { $productIds = array($productIds); } $currentTimestamp = (int) Mage::getSingleton('core/date')->timestamp(time()); foreach ($productIds as $id) { $disabledDays = ITwebexperts_Payperrentals_Helper_Data::getDisabledDays($id); $disabledDaysStart = ITwebexperts_Payperrentals_Helper_Data::getDisabledDaysStart(); $disabledDaysEnd = ITwebexperts_Payperrentals_Helper_Data::getDisabledDaysEnd(); //$paddingDays = ITwebexperts_Payperrentals_Helper_Data::getProductPaddingDays($id, $currentTimestamp); $paddingDays = ITwebexperts_Payperrentals_Helper_Data::getFirstAvailableDateRange($id, null, false, true); if (!$paddingDays) { return true; } $blockedDates = ITwebexperts_Payperrentals_Helper_Data::getDisabledDates($id); foreach ($blockedDates as $dateFormatted) { if (date('Y-m-d', strtotime($dateFormatted)) == date('Y-m-d', strtotime($stDate)) || date('Y-m-d', strtotime($dateFormatted)) == date('Y-m-d', strtotime($enDate))) { return true; } } foreach ($paddingDays as $dateFormatted) { if (strtotime($dateFormatted) >= strtotime($stDate) && strtotime($dateFormatted) <= strtotime($enDate)) { return true; } } if (count($disabledDays) > 0) { $startTimePadding = strtotime(date('Y-m-d', strtotime($stDate))); $endTimePadding = strtotime(date('Y-m-d', strtotime($enDate))); $dayofWeek = date('D', $startTimePadding); if (in_array($dayofWeek, $disabledDays)) { return true; } $dayofWeek = date('D', $startTimePadding); if (in_array($dayofWeek, $disabledDaysStart)) { return true; } $dayofWeek = date('D', $endTimePadding); if (in_array($dayofWeek, $disabledDays)) { return true; } $dayofWeek = date('D', $endTimePadding); if (in_array($dayofWeek, $disabledDaysEnd)) { return true; } } } return false; }
/** * @deprecated * This function was used to return the next available date when fixed date selection was used. * Is better so no start date is automatically selected * @param $product * @param $startDate * * @return array */ private function _getAvailDateAndSelDays($product, $startDate) { $selDays = false; $availDate = false; if ($this->getRequest()->getParam('selDays')) { $selDays = (int) $this->getRequest()->getParam('selDays') + 1; $availDateArr = ITwebexperts_Payperrentals_Helper_Data::getFirstAvailableDateRange($product, $startDate, ITwebexperts_Payperrentals_Helper_Data::getPeriodInSeconds($selDays, ITwebexperts_Payperrentals_Model_Product_Periodtype::DAYS)); $availDate = $availDateArr['start_date']; } return array($selDays, $availDate); }