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

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