Add accepted formats on import form and add delete not registred exports and imports

modifié:         core/lib/Thelia/Config/Resources/export.xml
	modifié:         core/lib/Thelia/Config/Resources/import.xml
	modifié:         core/lib/Thelia/Controller/Admin/ImportExportController.php
	modifié:         core/lib/Thelia/Core/DependencyInjection/Loader/XmlFileLoader.php
	modifié:         core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderManager.php
	modifié:         core/lib/Thelia/Core/FileFormat/Formatting/FormatterManager.php
	modifié:         core/lib/Thelia/Model/Export.php
	modifié:         core/lib/Thelia/Model/Import.php
	modifié:         templates/backOffice/default/ajax/import-modal.html
	modifié:         templates/backOffice/default/import-page.html
This commit is contained in:
Benjamin Perche
2014-07-17 11:35:37 +02:00
parent b86683a580
commit a16b481059
10 changed files with 102 additions and 20 deletions

View File

@@ -12,6 +12,7 @@
namespace Thelia\Core\DependencyInjection\Loader;
use Propel\Runtime\ActiveQuery\Criteria;
use Propel\Runtime\Propel;
use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\Config\Util\XmlUtils;
@@ -310,6 +311,7 @@ class XmlFileLoader extends FileLoader
$con->beginTransaction();
try {
$refs = [];
/** @var SimpleXMLElement $exportCategory */
foreach ($exportCategories as $exportCategory) {
$id = (string) $exportCategory->getAttributeAsPhp("id");
@@ -336,8 +338,16 @@ class XmlFileLoader extends FileLoader
->save($con);
;
}
$refs[] = $id;
}
ExportCategoryQuery::create()
->filterByRef($refs, Criteria::NOT_IN)
->find()
->delete()
;
$con->commit();
} catch (\Exception $e) {
$con->rollBack();
@@ -356,6 +366,8 @@ class XmlFileLoader extends FileLoader
$con->beginTransaction();
try {
$refs = [];
/** @var SimpleXMLElement $export */
foreach ($exports as $export) {
$id = (string) $export->getAttributeAsPhp("id");
@@ -441,8 +453,16 @@ class XmlFileLoader extends FileLoader
->save($con)
;
}
$refs[] = $id;
}
ExportQuery::create()
->filterByRef($refs, Criteria::NOT_IN)
->find()
->delete()
;
$con->commit();
} catch (\Exception $e) {
$con->rollBack();
@@ -461,6 +481,8 @@ class XmlFileLoader extends FileLoader
$con->beginTransaction();
try {
$refs = [];
/** @var SimpleXMLElement $importCategory */
foreach ($importCategories as $importCategory) {
$id = (string) $importCategory->getAttributeAsPhp("id");
@@ -487,8 +509,16 @@ class XmlFileLoader extends FileLoader
->save($con);
;
}
$refs[] = $id;
}
ImportCategoryQuery::create()
->filterByRef($refs, Criteria::NOT_IN)
->find()
->delete()
;
$con->commit();
} catch (\Exception $e) {
$con->rollBack();
@@ -507,6 +537,8 @@ class XmlFileLoader extends FileLoader
$con->beginTransaction();
try {
$refs = [];
/** @var SimpleXMLElement $import */
foreach ($imports as $import) {
$id = (string) $import->getAttributeAsPhp("id");
@@ -592,8 +624,16 @@ class XmlFileLoader extends FileLoader
->save($con)
;
}
$refs[] = $id;
}
ImportQuery::create()
->filterByRef($refs, Criteria::NOT_IN)
->find()
->delete()
;
$con->commit();
} catch (\Exception $e) {
$con->rollBack();

View File

@@ -109,13 +109,15 @@ class ArchiveBuilderManager
*
* Return the extensions handled by archive builders
*/
public function getExtensions()
public function getExtensions($withDot = false)
{
$extensions = [];
/** @var AbstractArchiveBuilder $archiveBuilder */
foreach ($this->archiveBuilders as $archiveBuilder) {
$extensions += [$archiveBuilder->getName() => $archiveBuilder->getExtension()];
$extensionName = $withDot ? ".": "";
$extensionName .= $archiveBuilder->getExtension();
$extensions += [$archiveBuilder->getName() => $extensionName];
}
return $extensions;

View File

@@ -105,13 +105,28 @@ class FormatterManager
*
* Return the extensions handled by archive builders
*/
public function getExtensions()
public function getExtensions($withDot = false)
{
$extensions = [];
/** @var AbstractFormatter $formatter */
foreach ($this->formatters as $formatter) {
$extensions += [$formatter->getName() => $formatter->getExtension()];
$extensionName = $withDot ? ".": "";
$extensionName .= $formatter->getExtension();
$extensions += [$formatter->getName() => $extensionName];
}
return $extensions;
}
public function getExtensionsByTypes($types, $withDot = false) {
$extensions = [];
/** @var AbstractFormatter $formatter */
foreach ($this->getFormattersByTypes($types) as $formatter) {
$extensionName = $withDot ? ".": "";
$extensionName .= $formatter->getExtension();
$extensions += [$formatter->getName() => $extensionName];
}
return $extensions;
@@ -123,6 +138,10 @@ class FormatterManager
*/
public function getFormatterByExtension($extension)
{
if ($extension[0] === ".") {
$extension = substr($extension, 1);
}
$extensions = $this->getExtensions();
if (!in_array($extension, $extensions)) {