private static function getDeliveryDates() { if (!empty(self::$_deliveryOptions)) { return; } self::$_deliveryOptions = array(); self::$_deliveryDates = 0; self::$_fieldRequired = 0; if (self::$_params->get('shownodate')) { $fieldsClass = hikashop_get('class.field'); $itemFields = $fieldsClass->getFields('', $element, 'item'); foreach ($itemFields as $itemField) { self::$_fieldRequired += $itemField->field_required; } if (self::$_fieldRequired) { self::$_deliveryOptions[''] = self::$_params->get('selectdate'); } else { self::$_deliveryOptions[''] = null; } } $maxdaysinadvance = self::$_params->get('maxdaysinadvance'); if (empty($maxdaysinadvance)) { return; } $now = time(); $nowHours = (int) date('H', $now); $nowMins = (int) date('i', $now); $minadvancedays = self::$_params->get('minadvancedays'); $maxdaysinadvance -= $minadvancedays; // Check if we can order on current day $day = 0; if (self::checkDeliveryDate($now, $day)) { // If too late to order today skip to next available date $lastestordertime = self::$_params->get('lastestordertime'); if (!empty($lastestordertime)) { $latestorder = explode(':', $lastestordertime); if (count($latestorder) != 2 || !preg_match('/^[0-9]+:[0-9]+$/', $lastestordertime)) { JError::raiseWarning(4720, 'Error (Last Order Time): Please contact System Administrator'); return false; } if ((int) $latestorder[0] <= $nowHours || (int) $latestorder[0] == $nowHours && (int) $latestorder[1] <= $nowMins) { $day += 1; $maxdaysinadvance -= 1; } } } // Check if we can order on current day, if not find the next day when we can order while (!self::checkDeliveryDate($now, $day)) { $day += 1; $maxdaysinadvance -= 1; $checkOrderTime = false; } $day += $minadvancedays + 1; while ($maxdaysinadvance > 0) { self::addDeliveryDate($now, $day); $maxdaysinadvance -= 1; $day += 1; } }