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:
Benjamin Perche
2014-08-05 15:10:19 +02:00
parent b5dbf08bb7
commit d1a07b883b
8 changed files with 137 additions and 130 deletions

View File

@@ -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");
}
}

View File

@@ -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");
}
}

View File

@@ -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");
}
}

View File

@@ -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');
}
}

View File

@@ -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();
}

View File

@@ -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;

View File

@@ -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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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"}

View File

@@ -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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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="&lt;i class='glyphicon glyphicon-remove-circle'&gt;&lt;/i&gt;" data-on-label="&lt;i class='glyphicon glyphicon-ok-circle'&gt;&lt;/i&gt;" 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"}