From d1a07b883b25ade802e5ff6c0a6655f34cc426a3 Mon Sep 17 00:00:00 2001 From: Benjamin Perche Date: Tue, 5 Aug 2014 15:10:19 +0200 Subject: [PATCH] =?UTF-8?q?Add=20checks=20for=20archive=20building=20libra?= =?UTF-8?q?ries=20=09modifi=C3=A9:=20=20=20=20=20=20=20=20=20core/lib/Thel?= =?UTF-8?q?ia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php?= =?UTF-8?q?=20=09modifi=C3=A9:=20=20=20=20=20=20=20=20=20core/lib/Thelia/C?= =?UTF-8?q?ore/FileFormat/Archive/ArchiveBuilder/TarBz2ArchiveBuilder.php?= =?UTF-8?q?=20=09modifi=C3=A9:=20=20=20=20=20=20=20=20=20core/lib/Thelia/C?= =?UTF-8?q?ore/FileFormat/Archive/ArchiveBuilder/TarGzArchiveBuilder.php?= =?UTF-8?q?=20=09modifi=C3=A9:=20=20=20=20=20=20=20=20=20core/lib/Thelia/C?= =?UTF-8?q?ore/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilder.php=20?= =?UTF-8?q?=09modifi=C3=A9:=20=20=20=20=20=20=20=20=20core/lib/Thelia/Core?= =?UTF-8?q?/FileFormat/Archive/ArchiveBuilderInterface.php=20=09modifi?= =?UTF-8?q?=C3=A9:=20=20=20=20=20=20=20=20=20core/lib/Thelia/Core/FileForm?= =?UTF-8?q?at/Archive/ArchiveBuilderManager.php=20=09modifi=C3=A9:=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20templates/backOffice/default/ajax/export-m?= =?UTF-8?q?odal.html=20=09modifi=C3=A9:=20=20=20=20=20=20=20=20=20template?= =?UTF-8?q?s/backOffice/default/export-page.html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ArchiveBuilder/TarArchiveBuilder.php | 14 +-- .../ArchiveBuilder/TarBz2ArchiveBuilder.php | 14 +-- .../ArchiveBuilder/TarGzArchiveBuilder.php | 13 +-- .../ArchiveBuilder/ZipArchiveBuilder.php | 10 ++ .../Archive/ArchiveBuilderInterface.php | 6 + .../Archive/ArchiveBuilderManager.php | 4 +- .../backOffice/default/ajax/export-modal.html | 100 +++++++++-------- templates/backOffice/default/export-page.html | 106 +++++++++--------- 8 files changed, 137 insertions(+), 130 deletions(-) diff --git a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php index a8157ee8e..22652904c 100644 --- a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php +++ b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php @@ -47,15 +47,6 @@ class TarArchiveBuilder extends AbstractArchiveBuilder /** @var \Thelia\Log\Tlog */ protected $logger; - public function __construct() - { - if (false !== (bool) ini_get("phar.readonly") || !class_exists("\\PharData")) { - return null; - } - - parent::__construct(); - } - public function __destruct() { if ($this->tar instanceof \PharData) { @@ -512,4 +503,9 @@ class TarArchiveBuilder extends AbstractArchiveBuilder { return $this->compression; } + + public function isAvailable() + { + return false === (bool) ini_get("phar.readonly") && class_exists("\\PharData"); + } } diff --git a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarBz2ArchiveBuilder.php b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarBz2ArchiveBuilder.php index 0f20e0fb4..d30ea33cd 100644 --- a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarBz2ArchiveBuilder.php +++ b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarBz2ArchiveBuilder.php @@ -19,15 +19,6 @@ namespace Thelia\Core\FileFormat\Archive\ArchiveBuilder; */ class TarBz2ArchiveBuilder extends TarArchiveBuilder { - public function __construct() - { - if (!extension_loaded("bzip2")) { - return null; - } - - parent::__construct(); - } - public function getName() { return "tar.bz2"; @@ -53,4 +44,9 @@ class TarBz2ArchiveBuilder extends TarArchiveBuilder return $this; } + + public function isAvailable() + { + return parent::isAvailable() && extension_loaded("bzip2"); + } } diff --git a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarGzArchiveBuilder.php b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarGzArchiveBuilder.php index eef21efbe..ef188d0b6 100644 --- a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarGzArchiveBuilder.php +++ b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarGzArchiveBuilder.php @@ -19,15 +19,6 @@ namespace Thelia\Core\FileFormat\Archive\ArchiveBuilder; */ class TarGzArchiveBuilder extends TarArchiveBuilder { - public function __construct() - { - if (!extension_loaded("zlib")) { - return null; - } - - parent::__construct(); - } - public function getName() { return "tar.gz"; @@ -54,4 +45,8 @@ class TarGzArchiveBuilder extends TarArchiveBuilder return $this; } + public function isAvailable() + { + return parent::isAvailable() && extension_loaded("zlib"); + } } diff --git a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilder.php b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilder.php index dcaac183e..034bad869 100644 --- a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilder.php +++ b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilder.php @@ -610,4 +610,14 @@ class ZipArchiveBuilder extends AbstractArchiveBuilder { return $this->zip; } + + /** + * @return bool + * + * Returns conditions for archive builder to be available ( loaded libraries ) + */ + public function isAvailable() + { + return class_exists('\\ZipArchive'); + } } diff --git a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderInterface.php b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderInterface.php index 0ff882ae5..c3fc30621 100644 --- a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderInterface.php +++ b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderInterface.php @@ -112,4 +112,10 @@ interface ArchiveBuilderInterface */ public function hasDirectory($directory); + /** + * @return bool + * + * Returns conditions for archive builder to be available ( loaded libraries ) + */ + public function isAvailable(); } diff --git a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderManager.php b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderManager.php index 9e41432a1..701f985f7 100644 --- a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderManager.php +++ b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderManager.php @@ -33,9 +33,9 @@ class ArchiveBuilderManager * @param AbstractArchiveBuilder $archiveBuilder * @return $this */ - public function add(AbstractArchiveBuilder $archiveBuilder = null) + public function add(AbstractArchiveBuilder $archiveBuilder) { - if (null !== $archiveBuilder) { + if ($archiveBuilder->isAvailable()) { $archiveBuilder->setEnvironment($this->environment); $this->archiveBuilders[$archiveBuilder->getName()] = $archiveBuilder; diff --git a/templates/backOffice/default/ajax/export-modal.html b/templates/backOffice/default/ajax/export-modal.html index efd0931e0..a5946a1ea 100644 --- a/templates/backOffice/default/ajax/export-modal.html +++ b/templates/backOffice/default/ajax/export-modal.html @@ -48,59 +48,61 @@ {/form_field} -
-
- {form_field form=$form field="do_compress"} - -
- + {ifloop rel="export-archive-builder"} +
+
+ {form_field form=$form field="do_compress"} + +
+ +
+ {/form_field}
- {/form_field}
-
-
-
- {form_field form=$form field="archive_builder"} - - - {/form_field} -
- {if $HAS_IMAGES} -
- {form_field form=$form field="images"} - +
+
+ {form_field form=$form field="archive_builder"} + + + {/form_field} +
+ {if $HAS_IMAGES} +
+ {form_field form=$form field="images"} + -
- -
- {/form_field} -
- {/if} - {if $HAS_DOCUMENTS} -
- {form_field form=$form field="documents"} - +
+ +
+ {/form_field} +
+ {/if} + {if $HAS_DOCUMENTS} +
+ {form_field form=$form field="documents"} + -
- -
- {/form_field} -
- {/if} +
+ +
+ {/form_field} +
+ {/if} + {/ifloop}
{/ifloop} {elseloop rel="export-formatters"} diff --git a/templates/backOffice/default/export-page.html b/templates/backOffice/default/export-page.html index 69417131a..9d215fb82 100644 --- a/templates/backOffice/default/export-page.html +++ b/templates/backOffice/default/export-page.html @@ -86,64 +86,66 @@ {/form_field}
-
- {form_field form=$form field="do_compress"} - -
- -
- {/form_field} -
- -
-
- {form_field form=$form field="archive_builder"} -
+ {ifloop rel="export-archive-builder"} +
+ {form_field form=$form field="do_compress"} - - - {if $error} -
{$message}
- {/if} -
- {/form_field} +
+ +
+ {/form_field} +
- {if $HAS_IMAGES} -
- {form_field form=$form field="images"} - +
+
+ {form_field form=$form field="archive_builder"} +
+ + -
- -
- {/form_field} -
- {/if} - {if $HAS_DOCUMENTS} -
- {form_field form=$form field="documents"} - + {if $error} +
{$message}
+ {/if} +
+ {/form_field} +
+ {if $HAS_IMAGES} +
+ {form_field form=$form field="images"} + -
- -
- {/form_field} -
- {/if} +
+ +
+ {/form_field} +
+ {/if} + {if $HAS_DOCUMENTS} +
+ {form_field form=$form field="documents"} + + +
+ +
+ {/form_field} +
+ {/if} + {/ifloop}
{/ifloop} {elseloop rel="export-formatters"}