diff --git a/core/lib/Thelia/ImportExport/Export/Type/ContentExport.php b/core/lib/Thelia/ImportExport/Export/Type/ContentExport.php index 9f222e413..499b6c23e 100644 --- a/core/lib/Thelia/ImportExport/Export/Type/ContentExport.php +++ b/core/lib/Thelia/ImportExport/Export/Type/ContentExport.php @@ -103,18 +103,20 @@ class ContentExport extends ExportHandler implements ->useContentImageQuery("content_image_join", Criteria::LEFT_JOIN) ->addAsColumn("content_IMAGES", "GROUP_CONCAT(DISTINCT `content_image_join`.FILE)") ->addSelectColumn("content_IMAGES") + ->groupByContentId() ->endUse() ->_endif() ->_if($this->isDocumentExport()) - ->useContentDocumentQuery() - ->addAsColumn("content_DOCUMENTS", "GROUP_CONCAT(DISTINCT ".ContentDocumentTableMap::FILE.")") + ->useContentDocumentQuery("content_document_join", Criteria::LEFT_JOIN) + ->addAsColumn("content_DOCUMENTS", "GROUP_CONCAT(DISTINCT `content_document_join`.FILE)") ->addSelectColumn("content_DOCUMENTS") + ->groupByContentId() ->endUse() ->_endif() ->useContentFolderQuery(null, Criteria::LEFT_JOIN) ->useFolderQuery(null, Criteria::LEFT_JOIN) ->_if($this->isDocumentExport()) - ->useFolderDocumentQuery() + ->useFolderDocumentQuery(null, Criteria::LEFT_JOIN) ->addAsColumn("folder_DOCUMENTS", "GROUP_CONCAT(DISTINCT ".FolderDocumentTableMap::FILE.")") ->addSelectColumn("folder_DOCUMENTS") ->endUse() @@ -159,6 +161,7 @@ class ContentExport extends ExportHandler implements ->addAsColumn("url_URL", RewritingUrlTableMap::URL) ->groupBy(ContentTableMap::ID) ->groupBy("folder_ID") + ->orderById() ; return $query; @@ -202,7 +205,7 @@ class ContentExport extends ExportHandler implements } if (isset($line["content_DOCUMENTS"])) { - $line["content_IMAGES"] = ""; + $line["content_DOCUMENTS"] = ""; } } } diff --git a/core/lib/Thelia/Tests/ImportExport/Export/ContentExportTest.php b/core/lib/Thelia/Tests/ImportExport/Export/ContentExportTest.php index 5a010a679..8ecdfd00a 100644 --- a/core/lib/Thelia/Tests/ImportExport/Export/ContentExportTest.php +++ b/core/lib/Thelia/Tests/ImportExport/Export/ContentExportTest.php @@ -14,13 +14,17 @@ namespace Thelia\Tests\ImportExport\Export; use Symfony\Component\DependencyInjection\Container; use Thelia\Core\Translation\Translator; use Thelia\ImportExport\Export\Type\ContentExport; +use Thelia\Model\ContentDocumentQuery; use Thelia\Model\ContentFolderQuery; use Thelia\Model\ContentImageQuery; use Thelia\Model\ContentQuery; +use Thelia\Model\FolderDocumentQuery; use Thelia\Model\FolderImageQuery; use Thelia\Model\FolderQuery; use Thelia\Model\Lang; +use Thelia\Model\Map\ContentDocumentTableMap; use Thelia\Model\Map\ContentImageTableMap; +use Thelia\Model\Map\FolderDocumentTableMap; use Thelia\Model\Map\FolderImageTableMap; use Thelia\Model\Map\FolderTableMap; @@ -157,4 +161,57 @@ class ContentExportTest extends \PHPUnit_Framework_TestCase $this->assertEquals($folderImages, $data[$i]["folder_images"]); } } + + public function testQueryDocument() + { + $data = $this->handler + ->setDocumentExport(true) + ->buildData($this->lang) + ->getData() + ; + + $max = count($data); + if ($max > 50) { + $max = 50; + } + + for ($i = 0; $i < $max; ++$i) { + $documents = ContentDocumentQuery::create() + ->filterByContentId($data[$i]["id"]) + ->select(ContentDocumentTableMap::FILE) + ->find() + ->toArray() + ; + + $documentsString = implode(",", $documents); + + if (empty($data[$i]["content_documents"])) { + $j = 1; + while ($data[$i-$j]["id"] === $data[$i]["id"]) { + if (!empty($data[$i - $j++]["content_documents"])) { + $data[$i]["content_documents"] = $data[$i-$j+1]["content_documents"]; + break; + } + } + } + + $this->assertEquals($documentsString, $data[$i]["content_documents"]); + + $folderDocuments = FolderDocumentQuery::create() + ->useFolderQuery() + ->useContentFolderQuery() + ->filterByContentId($data[$i]["id"]) + ->filterByFolderId($data[$i]["folder_id"]) + ->endUse() + ->endUse() + ->select(FolderDocumentTableMap::FILE) + ->find() + ->toArray() + ; + + $folderDocuments = implode(",", $folderDocuments); + + $this->assertEquals($folderDocuments, $data[$i]["folder_documents"]); + } + } } \ No newline at end of file