getRequestParameter('return_url'); $basket = stBasket::getInstance($this->getUser()); $basket->setCouponCode(null); $basket->refresh(); $basket->save(); return $this->redirect(rawurldecode($return_url)); } public function executeActivateCouponCode() { $discount = $this->getRequestParameter('discount'); return $this->redirect($discount['return_url']); } public function validateActivateCouponCode() { $ok = true; if ($this->getRequest()->getMethod() == sfRequest::POST) { $discount = $this->getRequestParameter('discount'); if (empty($discount['coupon_code'])) { $this->setFlash('discount_coupon_code_error', 'Wprowadź kod rabatowy'); return false; } $c = new Criteria(); $c->add(DiscountCouponCodePeer::CODE, $discount['coupon_code']); $coupon_code = DiscountCouponCodePeer::doSelectOne($c); if (!$coupon_code) { $this->setFlash('discount_coupon_code_error', 'Podany kod nie istnieje'); $ok = false; } elseif (!$coupon_code->isValid() || stDiscount::isDisabledForWholesale($this->getUser()->getGuardUser())) { $this->setFlash('discount_coupon_code_error', 'Podany kod jest nieważny'); $ok = false; } else { $basket = $this->getUser()->getBasket(); $basket->get()->setDiscountCouponCode($coupon_code); $items = $basket->getItems(); foreach ($items as $item) { if (null === $item->getProductId() || !stDiscount::isValidDiscountCouponCodeProductIds($coupon_code, $item->getProduct())) { continue; } $product = $item->getProduct(); $productSetDiscount = $item->getProductSetDiscount(); $item->setDiscount($productSetDiscount ? array('value' => $productSetDiscount->getValueByUser($this->getUser()->getGuardUser()), 'type' => $productSetDiscount->getPriceType()) : $product->getDiscount()); $discount = stDiscount::calculateCouponCodeDiscount($item, $coupon_code); $item->setDiscount($discount); } $basket->save(); } } return $ok; } public function handleErrorActivateCouponCode() { return $this->redirect($this->getRequestParameter('discount[return_url]')); } public function executeDiscountInfo() { $this->smarty = new stSmarty('stDiscountFrontend'); if($this->getUser()->isAuthenticated()) { $user = sfContext::getInstance()->getUser()->getGuardUser(); $this->all_discounts = array(); if (!stDiscount::isDisabledForWholesale($user)) { sfLoader::loadHelpers(array('Helper', 'Tag', 'Url', 'stUrl')); if (is_object($user)) { $c = new Criteria(); $c->add(DiscountUserPeer::SF_GUARD_USER_ID, $user->getId()); $userDiscount = DiscountUserPeer::doSelectOne($c); if (is_object($userDiscount) && $userDiscount->getDiscount()) { $this->all_discounts[] = array('id' => 0, 'name' => $this->getContext()->getI18n()->__('Rabat ogólny'), 'value' => sprintf("%2.2f", $userDiscount->getDiscount()), 'link_to' => '-'); } $discounts = DiscountPeer::doSelectActiveCached(); if ($discounts && isset($discounts['P'])) { foreach ($discounts['P'] as $discount) { if ($discount->isAvailableForUser($user) && ($discount->getAllProducts() || $discount->countDiscountHasProducts() > 0)) { $this->all_discounts[] = array( 'id' => $discount->getId(), 'name' => $discount->getName(), 'value' => $discount->getValueByUser($user), 'type' => $discount->getPriceType(), 'link_to' => st_link_to( $this->getContext()->getI18n()->__('Lista produktów'), 'stDiscountFrontend/productList?discountId='.$discount->getId() ) ); } } } } } } else { stUser::processAuthentication(); } } public function executeProductList() { $this->selectDiscount = DiscountPeer::retrieveByPk($this->getRequestParameter('discountId')); if (!is_object($this->selectDiscount) || !$this->selectDiscount->getActive()) $this->forward404(); $this->smarty = new stSmarty($this->getModuleName()); $this->productSmarty = new stSmarty('stProduct'); $this->productSmarty->register_function('st_product_image_tag', 'st_product_smarty_image_tag'); $this->configProduct = stConfig::getInstance(sfContext::getInstance(), 'stProduct'); $c = new Criteria(); if (!$this->selectDiscount->getAllProducts()) { $c->addJoin(ProductPeer::ID, DiscountHasProductPeer::PRODUCT_ID); $c->add(DiscountHasProductPeer::DISCOUNT_ID, $this->getRequestParameter('discountId')); } $c->add(ProductPeer::ACTIVE, 1); if ($this->configProduct->get('show_without_price')) { $c->add(ProductPeer::PRICE, 0, Criteria::GREATER_THAN); } stEventDispatcher::getInstance()->notify(new sfEvent($this, 'stProductActions.postAddProductCriteria', array('criteria' => $c))); $this->pager = new sfPropelPager('Product'); $this->pager->setCriteria($c); $this->pager->setPeerMethod('doSelect'); $this->pager->setPage($this->getRequestParameter('page', 1)); if (stTheme::getInstance(sfContext::getInstance())->getVersion() < 7) { $this->pager->setMaxPerPage($this->configProduct->get('short_list')); }else{ $this->pager->setMaxPerPage($this->configProduct->get('long_list')); } $this->pager->init(); $this->for_link = array( 'discountId' => $this->getRequestParameter('discountId'), 'type' => $this->type_list_url, 'sort_by' => $this->sort_by, 'sort_order' => $this->sort_order, 'page' => $this->pager->getPage(), 'producer_filter' => $this->producer_filter ); $this->list_type = $this->getViewTypes('view_names'); $this->config_points = stConfig::getInstance(sfContext::getInstance(), 'stPointsBackend'); $this->config_points->setCulture(sfContext::getInstance()->getUser()->getCulture()); } protected function getViewTypes($type = null) { $types = array( 'label_names' => array( 'long' => 'Pełna lista', 'short' => 'Skrócona lista', 'other' => 'Lista alternatywna', ), 'view_names' => array( 'long' => 'listLongProduct', 'short' => 'listShortProduct', 'other' => 'listOther', ), ); return $type ? $types[$type] : $types; } }