Add checks for archive building libraries
modifié: core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php modifié: core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarBz2ArchiveBuilder.php modifié: core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarGzArchiveBuilder.php modifié: core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilder.php modifié: core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderInterface.php modifié: core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderManager.php modifié: templates/backOffice/default/ajax/export-modal.html modifié: templates/backOffice/default/export-page.html
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -48,59 +48,61 @@
|
||||
</select>
|
||||
{/form_field}
|
||||
</div>
|
||||
<div class="col-md-1"></div>
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="do_compress"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small" id="export-compression-switch">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}"/>
|
||||
{ifloop rel="export-archive-builder"}
|
||||
<div class="col-md-1"></div>
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="do_compress"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small" id="export-compression-switch">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}"/>
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row export-compression-selection-row">
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="archive_builder"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<select name="{$name}" id="{$label_attr.for}">
|
||||
{loop name="export-archive-builder" type="archive-builder"}
|
||||
<option value="{$NAME}" {if $value == $NAME}selected{/if}>
|
||||
{$NAME} (.{$EXTENSION})
|
||||
</option>
|
||||
{/loop}
|
||||
</select>
|
||||
{/form_field}
|
||||
</div>
|
||||
{if $HAS_IMAGES}
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="images"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<div class="row export-compression-selection-row">
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="archive_builder"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<select name="{$name}" id="{$label_attr.for}">
|
||||
{loop name="export-archive-builder" type="archive-builder"}
|
||||
<option value="{$NAME}" {if $value == $NAME}selected{/if}>
|
||||
{$NAME} (.{$EXTENSION})
|
||||
</option>
|
||||
{/loop}
|
||||
</select>
|
||||
{/form_field}
|
||||
</div>
|
||||
{if $HAS_IMAGES}
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="images"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}" />
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{/if}
|
||||
{if $HAS_DOCUMENTS}
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="documents"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}" />
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{/if}
|
||||
{if $HAS_DOCUMENTS}
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="documents"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}" />
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{/if}
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}" />
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{/if}
|
||||
{/ifloop}
|
||||
</div>
|
||||
{/ifloop}
|
||||
{elseloop rel="export-formatters"}
|
||||
|
||||
@@ -86,64 +86,66 @@
|
||||
</select>
|
||||
{/form_field}
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="do_compress"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small" id="export-compression-switch">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}"/>
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row export-compression-selection-row">
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="archive_builder"}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
{ifloop rel="export-archive-builder"}
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="do_compress"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<select name="{$name}" id="{$label_attr.for}">
|
||||
{loop name="export-archive-builder" type="archive-builder"}
|
||||
<option value="{$NAME}" {if $value == $NAME}selected{/if}>
|
||||
{$NAME} (.{$EXTENSION})
|
||||
</option>
|
||||
{/loop}
|
||||
</select>
|
||||
|
||||
{if $error}
|
||||
<div class="error-field">{$message}</div>
|
||||
{/if}
|
||||
</div>
|
||||
{/form_field}
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small" id="export-compression-switch">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}"/>
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
</div>
|
||||
{if $HAS_IMAGES}
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="images"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<div class="row export-compression-selection-row">
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="archive_builder"}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
<select name="{$name}" id="{$label_attr.for}">
|
||||
{loop name="export-archive-builder" type="archive-builder"}
|
||||
<option value="{$NAME}" {if $value == $NAME}selected{/if}>
|
||||
{$NAME} (.{$EXTENSION})
|
||||
</option>
|
||||
{/loop}
|
||||
</select>
|
||||
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}" />
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{/if}
|
||||
{if $HAS_DOCUMENTS}
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="documents"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
{if $error}
|
||||
<div class="error-field">{$message}</div>
|
||||
{/if}
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{if $HAS_IMAGES}
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="images"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}" />
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{/if}
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}" />
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{/if}
|
||||
{if $HAS_DOCUMENTS}
|
||||
<div class="col-md-4">
|
||||
{form_field form=$form field="documents"}
|
||||
<label for="{$label_attr.for}">
|
||||
{$label}
|
||||
</label>
|
||||
|
||||
<div data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>" data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>" data-on="success" class="make-switch switch-small">
|
||||
<input type="checkbox" name="{$name}" id="{$label_attr.for}" />
|
||||
</div>
|
||||
{/form_field}
|
||||
</div>
|
||||
{/if}
|
||||
{/ifloop}
|
||||
</div>
|
||||
{/ifloop}
|
||||
{elseloop rel="export-formatters"}
|
||||
|
||||
Reference in New Issue
Block a user