Merge pull request #568 from lovenunu/fix-archiving

Fix archiving
This commit is contained in:
Manuel Raynaud
2014-08-05 15:57:51 +02:00
14 changed files with 197 additions and 110 deletions

View File

@@ -11,7 +11,6 @@
/*************************************************************************************/
namespace Thelia\Action;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\Cache\CacheEvent;

View File

@@ -11,7 +11,6 @@
/*************************************************************************************/
namespace Thelia\Action;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\Cache\CacheEvent;

View File

@@ -26,7 +26,6 @@ use Thelia\Files\FileModelInterface;
use Thelia\Form\Exception\FormValidationException;
use Thelia\Log\Tlog;
use Thelia\Model\Lang;
use Thelia\Tools\MimeTypeTools;
use Thelia\Tools\Rest\ResponseRest;
use Thelia\Tools\URL;

View File

@@ -503,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

@@ -44,4 +44,9 @@ class TarBz2ArchiveBuilder extends TarArchiveBuilder
return $this;
}
public function isAvailable()
{
return parent::isAvailable() && extension_loaded("bz2");
}
}

View File

@@ -45,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

@@ -35,7 +35,7 @@ class ArchiveBuilderManager
*/
public function add(AbstractArchiveBuilder $archiveBuilder)
{
if (null !== $archiveBuilder) {
if ($archiveBuilder->isAvailable()) {
$archiveBuilder->setEnvironment($this->environment);
$this->archiveBuilders[$archiveBuilder->getName()] = $archiveBuilder;

View File

@@ -39,7 +39,34 @@ class ArchiveBuilderManagerTest extends \PHPUnit_Framework_TestCase
public function testAddArchiveBuilder()
{
/** @var AbstractArchiveBuilder $instance */
$instance = $this->getMock("Thelia\\Core\\FileFormat\\Archive\\AbstractArchiveBuilder");
$instance = $this->getMock(
"Thelia\\Core\\FileFormat\\Archive\\AbstractArchiveBuilder",
[
"isAvailable",
"getName",
"getExtension",
"getMimeType",
"addFile",
"addFileFromString",
"getFileContent",
"deleteFile",
"addDirectory",
"buildArchiveResponse",
"loadArchive",
"hasFile",
"hasDirectory",
]
);
$instance->expects($this->any())
->method("isAvailable")
->willReturn(true)
;
$instance->expects($this->any())
->method("getName")
->willReturn("foo")
;
$this->manager->add($instance);
@@ -53,7 +80,34 @@ class ArchiveBuilderManagerTest extends \PHPUnit_Framework_TestCase
public function testDeleteArchiveBuilder()
{
/** @var AbstractArchiveBuilder $instance */
$instance = $this->getMock("Thelia\\Core\\FileFormat\\Archive\\AbstractArchiveBuilder");
$instance = $this->getMock(
"Thelia\\Core\\FileFormat\\Archive\\AbstractArchiveBuilder",
[
"isAvailable",
"getName",
"getExtension",
"getMimeType",
"addFile",
"addFileFromString",
"getFileContent",
"deleteFile",
"addDirectory",
"buildArchiveResponse",
"loadArchive",
"hasFile",
"hasDirectory",
]
);
$instance->expects($this->any())
->method("isAvailable")
->willReturn(true)
;
$instance->expects($this->any())
->method("getName")
->willReturn("foo")
;
$this->manager->add($instance);

View File

@@ -74,8 +74,10 @@ class ProductPricesExportTest extends \PHPUnit_Framework_TestCase
$attributes = [];
foreach ($attributeCombinations as $attributeCombination) {
if (!in_array($attributeCombination->getAttributeAv()->getTitle(), $attributes)) {
$attributes[] = $attributeCombination->getAttributeAv()->getTitle();
}
}
$rowAttributes = explode(",", $row["attributes"]);

View File

@@ -51,6 +51,7 @@
</select>
{/form_field}
</div>
{ifloop rel="export-archive-builder"}
<div class="col-md-1"></div>
<div class="col-md-4">
{form_field form=$form field="do_compress"}
@@ -104,6 +105,7 @@
{/form_field}
</div>
{/if}
{/ifloop}
</div>
{/ifloop}
{elseloop rel="export-formatters"}

View File

@@ -86,6 +86,7 @@
</select>
{/form_field}
</div>
{ifloop rel="export-archive-builder"}
<div class="col-md-4">
{form_field form=$form field="do_compress"}
<label for="{$label_attr.for}">
@@ -144,6 +145,7 @@
{/form_field}
</div>
{/if}
{/ifloop}
</div>
{/ifloop}
{elseloop rel="export-formatters"}