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:
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user