/** * @depends testCreate */ public function testUpdate(ProductModel $product) { $event = new ProductUpdateEvent($product->getId()); $defaultCategory = CategoryQuery::create()->select('id')->addAscendingOrderByColumn('RAND()')->findOne(); $brandId = BrandQuery::create()->findOne()->getId(); $event->setLocale('fr_FR')->setTitle('test MAJ titre en français')->setDescription('test description fr')->setChapo('test chapo fr')->setPostscriptum('test postscriptum fr')->setVisible(1)->setDefaultCategory($defaultCategory)->setBrandId($brandId)->setRef($product->getRef())->setDispatcher($this->getDispatcher()); $action = new Product(); $action->update($event); $updatedProduct = $event->getProduct(); $this->assertInstanceOf('Thelia\\Model\\Product', $updatedProduct); $updatedProduct->setLocale('fr_FR'); $this->assertEquals('test MAJ titre en français', $updatedProduct->getTitle()); $this->assertEquals('test description fr', $updatedProduct->getDescription()); $this->assertEquals('test chapo fr', $updatedProduct->getChapo()); $this->assertEquals('test postscriptum fr', $updatedProduct->getPostscriptum()); $this->assertEquals(1, $updatedProduct->getVisible()); $this->assertEquals($defaultCategory, $updatedProduct->getDefaultCategoryId()); $PSE = $updatedProduct->getProductSaleElementss(); $this->assertEquals(1, count($PSE)); return $updatedProduct; }
/** * @param LoopResultRow $loopResultRow the current result row * @param \Thelia\Model\Product $product * @param $default_category_id * @return mixed */ private function associateValues($loopResultRow, $product, $default_category_id) { $display_initial_price = $product->getVirtualColumn('display_initial_price'); if (is_null($display_initial_price)) { $display_initial_price = 1; } $loopResultRow->set("ID", $product->getId())->set("REF", $product->getRef())->set("IS_TRANSLATED", $product->getVirtualColumn('IS_TRANSLATED'))->set("LOCALE", $this->locale)->set("TITLE", $product->getVirtualColumn('i18n_TITLE'))->set("CHAPO", $product->getVirtualColumn('i18n_CHAPO'))->set("DESCRIPTION", $product->getVirtualColumn('i18n_DESCRIPTION'))->set("POSTSCRIPTUM", $product->getVirtualColumn('i18n_POSTSCRIPTUM'))->set("URL", $product->getUrl($this->locale))->set("META_TITLE", $product->getVirtualColumn('i18n_META_TITLE'))->set("META_DESCRIPTION", $product->getVirtualColumn('i18n_META_DESCRIPTION'))->set("META_KEYWORDS", $product->getVirtualColumn('i18n_META_KEYWORDS'))->set("POSITION", $product->getPosition())->set("VIRTUAL", $product->getVirtual() ? "1" : "0")->set("VISIBLE", $product->getVisible() ? "1" : "0")->set("TEMPLATE", $product->getTemplateId())->set("DEFAULT_CATEGORY", $default_category_id)->set("TAX_RULE_ID", $product->getTaxRuleId())->set("BRAND_ID", $product->getBrandId() ?: 0)->set("SHOW_ORIGINAL_PRICE", $display_initial_price); if ($this->getBackend_context() || $this->getWithPrevNextInfo()) { $visible = $this->getWithPrevNextVisible(); // Find previous and next category $previousSearch = ProductQuery::create()->joinProductCategory()->where('ProductCategory.category_id = ?', $default_category_id)->filterByPosition($product->getPosition(), Criteria::LESS_THAN)->orderByPosition(Criteria::DESC); if ($visible !== Type\BooleanOrBothType::ANY) { $previousSearch->filterByVisible($visible ? 1 : 0); } $previous = $previousSearch->findOne(); $nextSearch = ProductQuery::create()->joinProductCategory()->where('ProductCategory.category_id = ?', $default_category_id)->filterByPosition($product->getPosition(), Criteria::GREATER_THAN)->orderByPosition(Criteria::ASC); if ($visible !== Type\BooleanOrBothType::ANY) { $nextSearch->filterByVisible($visible ? 1 : 0); } $next = $nextSearch->findOne(); $loopResultRow->set("HAS_PREVIOUS", $previous != null ? 1 : 0)->set("HAS_NEXT", $next != null ? 1 : 0)->set("PREVIOUS", $previous != null ? $previous->getId() : -1)->set("NEXT", $next != null ? $next->getId() : -1); } return $loopResultRow; }
/** * @param LoopResultRow $loopResultRow the current result row * @param \Thelia\Model\Product $product * @param $defaultCategoryId * @return mixed */ private function associateValues($loopResultRow, $product, $defaultCategoryId) { $display_initial_price = $product->getVirtualColumn('display_initial_price'); if (is_null($display_initial_price)) { $display_initial_price = 1; } $loopResultRow->set("ID", $product->getId())->set("REF", $product->getRef())->set("IS_TRANSLATED", $product->getVirtualColumn('IS_TRANSLATED'))->set("LOCALE", $this->locale)->set("TITLE", $product->getVirtualColumn('i18n_TITLE'))->set("CHAPO", $product->getVirtualColumn('i18n_CHAPO'))->set("DESCRIPTION", $product->getVirtualColumn('i18n_DESCRIPTION'))->set("POSTSCRIPTUM", $product->getVirtualColumn('i18n_POSTSCRIPTUM'))->set("URL", $this->getReturnUrl() ? $product->getUrl($this->locale) : null)->set("META_TITLE", $product->getVirtualColumn('i18n_META_TITLE'))->set("META_DESCRIPTION", $product->getVirtualColumn('i18n_META_DESCRIPTION'))->set("META_KEYWORDS", $product->getVirtualColumn('i18n_META_KEYWORDS'))->set("POSITION", $product->getVirtualColumn('position_delegate'))->set("VIRTUAL", $product->getVirtual() ? "1" : "0")->set("VISIBLE", $product->getVisible() ? "1" : "0")->set("TEMPLATE", $product->getTemplateId())->set("DEFAULT_CATEGORY", $defaultCategoryId)->set("TAX_RULE_ID", $product->getTaxRuleId())->set("BRAND_ID", $product->getBrandId() ?: 0)->set("SHOW_ORIGINAL_PRICE", $display_initial_price); $this->findNextPrev($loopResultRow, $product, $defaultCategoryId); return $loopResultRow; }