diff --git a/core/lib/Thelia/Core/FileFormat/Formatter/FormatterData.php b/core/lib/Thelia/Core/FileFormat/Formatter/FormatterData.php index a74ecef90..0a7ed344d 100644 --- a/core/lib/Thelia/Core/FileFormat/Formatter/FormatterData.php +++ b/core/lib/Thelia/Core/FileFormat/Formatter/FormatterData.php @@ -12,6 +12,8 @@ namespace Thelia\Core\FileFormat\Formatter; use Propel\Runtime\ActiveQuery\ModelCriteria; +use Propel\Runtime\Collection\ArrayCollection; +use Propel\Runtime\Collection\ObjectCollection; use Thelia\Core\Translation\Translator; /** @@ -34,15 +36,31 @@ class FormatterData public function loadModelCriteria(ModelCriteria $criteria) { - - $propelData = - $criteria - ->find() - ; + $propelData = $criteria->find(); if (empty($propelData)) { return null; } + $asColumns = $propelData->getFormatter()->getAsColumns(); + + if (empty($asColumns) && $propelData instanceof ObjectCollection) { + /** + * Full request ( without select nor join ) + */ + } elseif (empty($asColumns) && $propelData instanceof ArrayCollection) { + /** + * Request with joins, but without select + */ + } elseif (count($asColumns) > 1) { + /** + * Request with multiple select + */ + } elseif (count($asColumns) === 1) { + /** + * Request with one select + */ + } + } } diff --git a/core/lib/Thelia/Tests/FileFormat/Formatter/FormatterDataTest.php b/core/lib/Thelia/Tests/FileFormat/Formatter/FormatterDataTest.php new file mode 100644 index 000000000..369e2bc41 --- /dev/null +++ b/core/lib/Thelia/Tests/FileFormat/Formatter/FormatterDataTest.php @@ -0,0 +1,70 @@ + + */ +class FormatterDataTest extends \PHPUnit_Framework_TestCase +{ + + protected $data; + + public function setUp() + { + new Translator(new Container()); + $this->data = new FormatterData(); + + $query = ProductQuery::create() + ->filterById([3,4,5], Criteria::IN); + + $this->data->loadModelCriteria($query); + + $query = ProductSaleElementsQuery::create() + ->joinProduct() + ->select(["ProductSaleElements.id", "Product.id"]) + ->filterById([3,4,5], Criteria::IN) + ; + + $this->data->loadModelCriteria($query); + + $query = ProductSaleElementsQuery::create() + ->joinProduct() + ->select(["ProductSaleElements.id"]) + ->filterById([3,4,5], Criteria::IN) + ; + + $this->data->loadModelCriteria($query); + + $query = ProductQuery::create() + ->joinProductSaleElements() + ->filterById([3,4,5], Criteria::IN); + + $this->data->loadModelCriteria($query); + } + + public function testA() + { + + } +}