mirror of
https://github.com/YunoHost-Apps/dolibarr_ynh.git
synced 2024-09-03 18:35:53 +02:00
92 lines
2.5 KiB
PHP
92 lines
2.5 KiB
PHP
|
<?php
|
||
|
require_once 'ZipInterface.php';
|
||
|
class PhpZipProxyException extends Exception
|
||
|
{ }
|
||
|
/**
|
||
|
* Proxy class for the PHP Zip Extension
|
||
|
* You need PHP 5.2 at least
|
||
|
* You need Zip Extension or PclZip library
|
||
|
* Encoding : ISO-8859-1
|
||
|
*
|
||
|
* @copyright GPL License 2008 - Julien Pauli - Cyril PIERRE de GEYER - Anaska (http://www.anaska.com)
|
||
|
* @license http://www.gnu.org/copyleft/gpl.html GPL License
|
||
|
* @version 1.3
|
||
|
*/
|
||
|
|
||
|
class PhpZipProxy implements ZipInterface
|
||
|
{
|
||
|
protected $zipArchive;
|
||
|
protected $filename;
|
||
|
/**
|
||
|
* Class constructor
|
||
|
*
|
||
|
* @throws PhpZipProxyException
|
||
|
*/
|
||
|
public function __construct()
|
||
|
{
|
||
|
if (! class_exists('ZipArchive')) {
|
||
|
throw new PhpZipProxyException('Zip extension not loaded - check your php settings, PHP5.2 minimum with zip extension
|
||
|
is required for using PhpZipProxy'); ;
|
||
|
}
|
||
|
$this->zipArchive = new ZipArchive();
|
||
|
}
|
||
|
/**
|
||
|
* Open a Zip archive
|
||
|
*
|
||
|
* @param string $filename the name of the archive to open
|
||
|
* @return true if openning has succeeded
|
||
|
*/
|
||
|
public function open($filename)
|
||
|
{
|
||
|
$this->filename = $filename;
|
||
|
return $this->zipArchive->open($filename, ZIPARCHIVE::CREATE);
|
||
|
}
|
||
|
/**
|
||
|
* Retrieve the content of a file within the archive from its name
|
||
|
*
|
||
|
* @param string $name the name of the file to extract
|
||
|
* @return the content of the file in a string
|
||
|
*/
|
||
|
public function getFromName($name)
|
||
|
{
|
||
|
return $this->zipArchive->getFromName($name);
|
||
|
}
|
||
|
/**
|
||
|
* Add a file within the archive from a string
|
||
|
*
|
||
|
* @param string $localname the local path to the file in the archive
|
||
|
* @param string $contents the content of the file
|
||
|
* @return true if the file has been successful added
|
||
|
*/
|
||
|
public function addFromString($localname, $contents)
|
||
|
{
|
||
|
if (file_exists($this->filename) && !is_writable($this->filename)) {
|
||
|
return false;
|
||
|
}
|
||
|
return $this->zipArchive->addFromString($localname, $contents);
|
||
|
}
|
||
|
/**
|
||
|
* Add a file within the archive from a file
|
||
|
*
|
||
|
* @param string $filename the path to the file we want to add
|
||
|
* @param string $localname the local path to the file in the archive
|
||
|
* @return true if the file has been successful added
|
||
|
*/
|
||
|
public function addFile($filename, $localname = null)
|
||
|
{
|
||
|
if ((file_exists($this->filename) && !is_writable($this->filename))
|
||
|
|| !file_exists($filename)) {
|
||
|
return false;
|
||
|
}
|
||
|
return $this->zipArchive->addFile($filename, $localname);
|
||
|
}
|
||
|
/**
|
||
|
* Close the Zip archive
|
||
|
* @return true
|
||
|
*/
|
||
|
public function close()
|
||
|
{
|
||
|
return $this->zipArchive->close();
|
||
|
}
|
||
|
}
|
||
|
?>
|