Add document tests and use left join instead of inner join for documents
modifié: core/lib/Thelia/ImportExport/Export/Type/ContentExport.php modifié: core/lib/Thelia/Tests/ImportExport/Export/ContentExportTest.php
This commit is contained in:
@@ -103,18 +103,20 @@ class ContentExport extends ExportHandler implements
|
|||||||
->useContentImageQuery("content_image_join", Criteria::LEFT_JOIN)
|
->useContentImageQuery("content_image_join", Criteria::LEFT_JOIN)
|
||||||
->addAsColumn("content_IMAGES", "GROUP_CONCAT(DISTINCT `content_image_join`.FILE)")
|
->addAsColumn("content_IMAGES", "GROUP_CONCAT(DISTINCT `content_image_join`.FILE)")
|
||||||
->addSelectColumn("content_IMAGES")
|
->addSelectColumn("content_IMAGES")
|
||||||
|
->groupByContentId()
|
||||||
->endUse()
|
->endUse()
|
||||||
->_endif()
|
->_endif()
|
||||||
->_if($this->isDocumentExport())
|
->_if($this->isDocumentExport())
|
||||||
->useContentDocumentQuery()
|
->useContentDocumentQuery("content_document_join", Criteria::LEFT_JOIN)
|
||||||
->addAsColumn("content_DOCUMENTS", "GROUP_CONCAT(DISTINCT ".ContentDocumentTableMap::FILE.")")
|
->addAsColumn("content_DOCUMENTS", "GROUP_CONCAT(DISTINCT `content_document_join`.FILE)")
|
||||||
->addSelectColumn("content_DOCUMENTS")
|
->addSelectColumn("content_DOCUMENTS")
|
||||||
|
->groupByContentId()
|
||||||
->endUse()
|
->endUse()
|
||||||
->_endif()
|
->_endif()
|
||||||
->useContentFolderQuery(null, Criteria::LEFT_JOIN)
|
->useContentFolderQuery(null, Criteria::LEFT_JOIN)
|
||||||
->useFolderQuery(null, Criteria::LEFT_JOIN)
|
->useFolderQuery(null, Criteria::LEFT_JOIN)
|
||||||
->_if($this->isDocumentExport())
|
->_if($this->isDocumentExport())
|
||||||
->useFolderDocumentQuery()
|
->useFolderDocumentQuery(null, Criteria::LEFT_JOIN)
|
||||||
->addAsColumn("folder_DOCUMENTS", "GROUP_CONCAT(DISTINCT ".FolderDocumentTableMap::FILE.")")
|
->addAsColumn("folder_DOCUMENTS", "GROUP_CONCAT(DISTINCT ".FolderDocumentTableMap::FILE.")")
|
||||||
->addSelectColumn("folder_DOCUMENTS")
|
->addSelectColumn("folder_DOCUMENTS")
|
||||||
->endUse()
|
->endUse()
|
||||||
@@ -159,6 +161,7 @@ class ContentExport extends ExportHandler implements
|
|||||||
->addAsColumn("url_URL", RewritingUrlTableMap::URL)
|
->addAsColumn("url_URL", RewritingUrlTableMap::URL)
|
||||||
->groupBy(ContentTableMap::ID)
|
->groupBy(ContentTableMap::ID)
|
||||||
->groupBy("folder_ID")
|
->groupBy("folder_ID")
|
||||||
|
->orderById()
|
||||||
;
|
;
|
||||||
|
|
||||||
return $query;
|
return $query;
|
||||||
@@ -202,7 +205,7 @@ class ContentExport extends ExportHandler implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isset($line["content_DOCUMENTS"])) {
|
if (isset($line["content_DOCUMENTS"])) {
|
||||||
$line["content_IMAGES"] = "";
|
$line["content_DOCUMENTS"] = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,13 +14,17 @@ namespace Thelia\Tests\ImportExport\Export;
|
|||||||
use Symfony\Component\DependencyInjection\Container;
|
use Symfony\Component\DependencyInjection\Container;
|
||||||
use Thelia\Core\Translation\Translator;
|
use Thelia\Core\Translation\Translator;
|
||||||
use Thelia\ImportExport\Export\Type\ContentExport;
|
use Thelia\ImportExport\Export\Type\ContentExport;
|
||||||
|
use Thelia\Model\ContentDocumentQuery;
|
||||||
use Thelia\Model\ContentFolderQuery;
|
use Thelia\Model\ContentFolderQuery;
|
||||||
use Thelia\Model\ContentImageQuery;
|
use Thelia\Model\ContentImageQuery;
|
||||||
use Thelia\Model\ContentQuery;
|
use Thelia\Model\ContentQuery;
|
||||||
|
use Thelia\Model\FolderDocumentQuery;
|
||||||
use Thelia\Model\FolderImageQuery;
|
use Thelia\Model\FolderImageQuery;
|
||||||
use Thelia\Model\FolderQuery;
|
use Thelia\Model\FolderQuery;
|
||||||
use Thelia\Model\Lang;
|
use Thelia\Model\Lang;
|
||||||
|
use Thelia\Model\Map\ContentDocumentTableMap;
|
||||||
use Thelia\Model\Map\ContentImageTableMap;
|
use Thelia\Model\Map\ContentImageTableMap;
|
||||||
|
use Thelia\Model\Map\FolderDocumentTableMap;
|
||||||
use Thelia\Model\Map\FolderImageTableMap;
|
use Thelia\Model\Map\FolderImageTableMap;
|
||||||
use Thelia\Model\Map\FolderTableMap;
|
use Thelia\Model\Map\FolderTableMap;
|
||||||
|
|
||||||
@@ -157,4 +161,57 @@ class ContentExportTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals($folderImages, $data[$i]["folder_images"]);
|
$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"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user