* * @package stDeliveryPlugin * @subpackage actions */ class stDeliveryFrontendComponents extends sfComponents { /** * Podsumowanie koszyka */ public function executeBasketSummary() { $this->smarty = new stSmarty('stDeliveryFrontend'); $dispatcher = $this->getController()->getDispatcher(); $dispatcher->notify(new sfEvent($this, 'stDeliveryFrontendComponents.preExecuteBasketSummary')); $this -> config_points = stConfig::getInstance(sfContext::getInstance(), 'stPointsBackend'); $this -> config_points->setCulture(sfContext::getInstance()->getUser()->getCulture()); $this->discount_coupon_code = st_get_component('stDiscountFrontend', 'couponCode', array('return_url' => 'stBasket/index')); $this->gift_card = st_get_component('stGiftCardFrontend', 'show', array('return_url' => 'stBasket/index')); $this->delivery = stDeliveryFrontend::getInstance($this->basket); } public function executeWeekendDelivery() { $frontendDelivery = stDeliveryFrontend::getInstance($this->getUser()->getBasket()); /** * @var Delivery */ $delivery = $frontendDelivery->getDefaultDelivery(); if (null === $delivery || !$delivery->getIsWeekendDelivery() || !$delivery->isWeekendDeliveryAvailable()) { return sfView::NONE; } $smarty = new stSmarty('stDeliveryFrontend'); $smarty->assign('delivery', $delivery); $smarty->assign('selected', $frontendDelivery->getIsWeekendDelivery()); return $smarty; } public function executeExpressDelivery() { $frontendDelivery = stDeliveryFrontend::getInstance($this->getUser()->getBasket()); /** * @var Delivery */ $delivery = $frontendDelivery->getDefaultDelivery(); if (null === $delivery || !$delivery->getIsExpressDelivery()) { return sfView::NONE; } $smarty = new stSmarty('stDeliveryFrontend'); $smarty->assign('delivery', $delivery); $smarty->assign('selected', $frontendDelivery->getIsExpressDelivery()); $smarty->assign('help', $this->getContext()->getI18N()->__('Realizowane są wyłącznie zamówienia złożone i opłacone do godziny %%time%%', [ '%%time%%' => $delivery->getExpressDeliveryOrderTimeLimit(), ])); return $smarty; } public function executeBasketDeliveryList() { $this->smarty = new stSmarty('stDeliveryFrontend'); $this->delivery = stDeliveryFrontend::getInstance($this->basket); $this->config = stConfig::getInstance('stDeliveryBackend'); } /** * Wyświetlenie listy płatności */ public function executeBasketPaymentList() { $i18n = $this->getContext()->getI18N(); $this->smarty = new stSmarty('stDeliveryFrontend'); $this->delivery_payments = array(); $this->delivery = stDeliveryFrontend::getInstance($this->basket); if ($this->delivery->hasDeliveries()) { $defaultDelivery = $this->delivery->getDefaultDelivery(); $totalAmount = $this->basket->getTotalAmount(true, true) + $defaultDelivery->getTotalCost(true, true); if (stGiftCardPlugin::isActive() && stGiftCardPlugin::calculateAmountLeft($totalAmount) == 0) { $pt = new PaymentType(); $pt->setName($i18n->__('Bony zakupowe')); $dhp = new DeliveryHasPaymentType(); $dhp->setIsActive(true); $dhp->setDelivery($defaultDelivery); $dhp->setPaymentType($pt); $dp = new stDeliveryPaymentFrontendContainer($this->delivery, $dhp); $this->delivery->getDefaultDelivery()->setDefaultPayment($dhp); $this->delivery_payments = array($dp); } else { $this->delivery_payments = $this->delivery->getDefaultDelivery()->getDeliveryPayments(); } $this->smarty->assign('order_total_amount', $totalAmount); } } /** * Data i czas dostawy */ public function executeDateTime() { $this->smarty = new stSmarty('stDeliveryFrontend'); $this->language = $this->getUser()->getCulture(); $config = stConfig::getInstance($this->getContext(), 'stDeliveryBackend'); $this->config = $config; $deliveryFromRequest = $this->getRequestParameter('delivery'); if ($deliveryFromRequest['time'] != "") { $time = explode(":", $deliveryFromRequest['time']); $this->time_h_def = $time[0]; $this->time_m_def = $time[1]; } else { $this->time_h_def = $config->get('time_h_def'); $this->time_m_def = $config->get('time_m_def'); } $dates_array = array(); $dates_array[] = $this->dates_inbetween($config->get('array1_from'), $config->get('array1_to')); $dates_array[] = $this->dates_inbetween($config->get('array2_from'), $config->get('array2_to')); $dates_array[] = $this->dates_inbetween($config->get('array3_from'), $config->get('array3_to')); $dates_array[] = $this->dates_inbetween($config->get('array4_from'), $config->get('array4_to')); $dates_array[] = $this->dates_inbetween($config->get('array5_from'), $config->get('array5_to')); $dates_array[] = $this->dates_inbetween($config->get('array6_from'), $config->get('array6_to')); foreach ($dates_array as $dates) { foreach ($dates as $date) { if ($date != '01-01-1970') { $allowed_dates.='{"allow_date":"' . $date . '"},'; } } } $dates = array( array('from' => $config->get('array1_from'), 'to' => $config->get('array1_to')), array('from' => $config->get('array2_from'), 'to' => $config->get('array2_to')), array('from' => $config->get('array3_from'), 'to' => $config->get('array3_to')), array('from' => $config->get('array4_from'), 'to' => $config->get('array4_to')), array('from' => $config->get('array5_from'), 'to' => $config->get('array5_to')), array('from' => $config->get('array6_from'), 'to' => $config->get('array6_to')), ); foreach ($dates as $k => $date) { $dates[$k]['from'] = strtotime($date['from']); $dates[$k]['to'] = strtotime($date['to']); } $time_limit=$config->get('time_h_limit').$config->get('time_m_limit'); $current = time(); if(date('Hi')>=$time_limit) { $current += 60*60*24; $new_min = $config->get('min'); }else{ $new_min = $config->get('min')-1; } $min = strtotime(date('d-m-Y', time()+ 60*60*24*$new_min)); $current = strtotime(date('d-m-Y',$current)); if ($deliveryFromRequest['date'] != "") { $this->default_date = $deliveryFromRequest['date']; } else { $this->default_date = date('d-m-Y', $this->getCurrentDate($current, $dates, $min, $config->get('weekends_on'))); } $today = strtotime(date('d-m-Y')); $today_and_max = $today + $config->get('max')*(60*60*24); $today_and_max = date('d-m-Y', $today_and_max); $off_date_picker = 0; if(strtotime($this->default_date) > strtotime($today_and_max)) { $off_date_picker = 1; } $this->off_date_picker = $off_date_picker; if (isset($allowed_dates)) { $this->allowed_dates = $allowed_dates; } } protected function getCurrentDate($current_date, $allowed_dates, $min, $weekend) { // echo $weekend; $ok = true; if ($current_date > $min) { foreach ($allowed_dates as $allow_date) { if ($current_date >= $allow_date['from'] && $current_date <= $allow_date['to']) { $ok = false; break; } } } else { $ok = false; } if ($ok) { if($weekend==1){ //echo $current_date; $w = date('w', $current_date); if($w == 0 || $w == 6){ return $this->getCurrentDate($current_date + 60 * 60 * 24, $allowed_dates, $min, $weekend); } else{ return $current_date; } }else{ return $current_date; } }else{ return $this->getCurrentDate($current_date + 60 * 60 * 24, $allowed_dates, $min, $weekend); } } function dates_inbetween($date1, $date2) { $day = 60 * 60 * 24; $date1 = strtotime($date1); $date2 = strtotime($date2); $days_diff = round(($date2 - $date1) / $day); // Unix time difference devided by 1 day to get total days in between $dates_array = array(); $dates_array[] = date('d-m-Y', $date1); for ($x = 1; $x < $days_diff; $x++) { $dates_array[] = date('d-m-Y', ($date1 + ($day * $x))); } $dates_array[] = date('d-m-Y', $date2); return $dates_array; } }