mirror of
https://github.com/e107inc/e107.git
synced 2025-07-27 01:40:22 +02:00
Issue #5208 - Start of PCLZip removal.
This commit is contained in:
@@ -244,6 +244,7 @@ class e_file
|
|||||||
*/
|
*/
|
||||||
function get_files($path, $fmask = '', $omit = 'standard', $recurse_level = 0)
|
function get_files($path, $fmask = '', $omit = 'standard', $recurse_level = 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
$ret = array();
|
$ret = array();
|
||||||
$invert = false;
|
$invert = false;
|
||||||
if(!empty($fmask) && strpos($fmask, '~') === 0)
|
if(!empty($fmask) && strpos($fmask, '~') === 0)
|
||||||
@@ -441,14 +442,16 @@ class e_file
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return information about a file, including mime-type
|
* Return information about a file, including mime-type
|
||||||
* @deprecated - use getFileInfo() instead.
|
*
|
||||||
* @param string $path_to_file
|
* @param string $path_to_file
|
||||||
* @param bool $imgcheck
|
* @param bool $imgcheck
|
||||||
* @param bool $auto_fix_ext
|
* @param bool $auto_fix_ext
|
||||||
* @return array|bool
|
* @return array|bool
|
||||||
|
* @deprecated - use getFileInfo() instead.
|
||||||
*/
|
*/
|
||||||
public function get_file_info($path_to_file, $imgcheck = true, $auto_fix_ext = true)
|
public function get_file_info($path_to_file, $imgcheck = true, $auto_fix_ext = true)
|
||||||
{
|
{
|
||||||
|
|
||||||
return $this->getFileInfo($path_to_file, $imgcheck, $auto_fix_ext);
|
return $this->getFileInfo($path_to_file, $imgcheck, $auto_fix_ext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -560,6 +563,7 @@ class e_file
|
|||||||
}
|
}
|
||||||
|
|
||||||
error_log($msg);
|
error_log($msg);
|
||||||
|
|
||||||
return false; // May not be installed
|
return false; // May not be installed
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1321,6 +1325,37 @@ class e_file
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function addToZip(ZipArchive $zip, $src, $localname)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(is_dir($src))
|
||||||
|
{
|
||||||
|
$dir = opendir($src);
|
||||||
|
|
||||||
|
// add empty directories
|
||||||
|
$zip->addEmptyDir($localname);
|
||||||
|
|
||||||
|
while(false !== ($file = readdir($dir)))
|
||||||
|
{
|
||||||
|
if(($file != '.') && ($file != '..'))
|
||||||
|
{
|
||||||
|
$this->addToZip($zip, $src . '/' . $file, $localname . '/' . $file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir($dir);
|
||||||
|
}
|
||||||
|
elseif(is_file($src))
|
||||||
|
{
|
||||||
|
if(!$zip->addFile($src, $localname))
|
||||||
|
{
|
||||||
|
$this->error = "Could not add file: $src";
|
||||||
|
e107::getLog()->addError($this->error)->save('FILE', E_LOG_NOTICE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Zip up folders and files
|
* Zip up folders and files
|
||||||
*
|
*
|
||||||
@@ -1331,7 +1366,6 @@ class e_file
|
|||||||
*/
|
*/
|
||||||
public function zip($filePaths = null, $newFile = '', $options = array())
|
public function zip($filePaths = null, $newFile = '', $options = array())
|
||||||
{
|
{
|
||||||
|
|
||||||
if(empty($newFile))
|
if(empty($newFile))
|
||||||
{
|
{
|
||||||
$newFile = e_BACKUP . eHelper::title2sef(SITENAME) . "_" . date("Y-m-d-H-i-s") . ".zip";
|
$newFile = e_BACKUP . eHelper::title2sef(SITENAME) . "_" . date("Y-m-d-H-i-s") . ".zip";
|
||||||
@@ -1342,22 +1376,27 @@ class e_file
|
|||||||
return "No file-paths set!";
|
return "No file-paths set!";
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once(e_HANDLER . 'pclzip.lib.php');
|
$zip = new ZipArchive();
|
||||||
$archive = new PclZip($newFile);
|
|
||||||
|
|
||||||
$removePath = (!empty($options['remove_path'])) ? $options['remove_path'] : e_BASE;
|
if($zip->open($newFile, ZipArchive::CREATE) !== true)
|
||||||
|
|
||||||
if($archive->create($filePaths, PCLZIP_OPT_REMOVE_PATH, $removePath) == 0)
|
|
||||||
{
|
{
|
||||||
$error = $archive->errorInfo(true);
|
$this->error = "Cannot open <$newFile>\n";
|
||||||
e107::getLog()->addError($error)->save('FILE', E_LOG_NOTICE);
|
e107::getLog()->addError($this->error)->save('FILE', E_LOG_NOTICE);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
$removePath = (!empty($options['remove_path'])) ? $options['remove_path'] : e_BASE;
|
||||||
|
|
||||||
|
foreach($filePaths as $file)
|
||||||
{
|
{
|
||||||
return $newFile;
|
$localname = str_replace($removePath, '', $file);
|
||||||
|
$this->addToZip($zip, $file, rtrim($localname, '/'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$zip->close();
|
||||||
|
|
||||||
|
return $newFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1684,14 +1723,14 @@ class e_file
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else // Legacy Method.
|
/* else // Legacy Method.
|
||||||
{
|
{
|
||||||
require_once(e_HANDLER . "pclzip.lib.php");
|
require_once(e_HANDLER . "pclzip.lib.php");
|
||||||
|
|
||||||
$archive = new PclZip(e_TEMP . $localfile);
|
$archive = new PclZip(e_TEMP . $localfile);
|
||||||
$unarc = ($fileList = $archive->extract(PCLZIP_OPT_PATH, e_TEMP, PCLZIP_OPT_SET_CHMOD, 0755)); // Store in TEMP first.
|
$unarc = ($fileList = $archive->extract(PCLZIP_OPT_PATH, e_TEMP, PCLZIP_OPT_SET_CHMOD, 0755)); // Store in TEMP first.
|
||||||
$dir = $this->getRootFolder($unarc);
|
$dir = $this->getRootFolder($unarc);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
$destpath = ($type == 'theme') ? e_THEME : e_PLUGIN;
|
$destpath = ($type == 'theme') ? e_THEME : e_PLUGIN;
|
||||||
@@ -1761,14 +1800,14 @@ class e_file
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use getAllowedFileTypes()
|
|
||||||
* Get an array of permitted filetypes according to a set hierarchy.
|
|
||||||
* If a specific file name given, that's used. Otherwise the default hierarchy is used
|
|
||||||
*
|
|
||||||
* @param string|boolean $file_mask - comma-separated list of allowed file types
|
* @param string|boolean $file_mask - comma-separated list of allowed file types
|
||||||
* @param string $filename - optional override file name - defaults ignored
|
* @param string $filename - optional override file name - defaults ignored
|
||||||
*
|
*
|
||||||
* @return array of filetypes
|
* @return array of filetypes
|
||||||
|
* @deprecated Use getAllowedFileTypes()
|
||||||
|
* Get an array of permitted filetypes according to a set hierarchy.
|
||||||
|
* If a specific file name given, that's used. Otherwise the default hierarchy is used
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
function getFiletypeLimits($file_mask = false, $filename = '') // Wrapper only for now.
|
function getFiletypeLimits($file_mask = false, $filename = '') // Wrapper only for now.
|
||||||
{
|
{
|
||||||
@@ -1877,8 +1916,10 @@ class e_file
|
|||||||
|
|
||||||
foreach($unarc as $k => $v)
|
foreach($unarc as $k => $v)
|
||||||
{
|
{
|
||||||
if($this->matchFound($v['stored_filename'], $excludeMatch) ||
|
if(
|
||||||
in_array($v['stored_filename'], $excludes))
|
$this->matchFound($v['stored_filename'], $excludeMatch) ||
|
||||||
|
in_array($v['stored_filename'], $excludes)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
$skipped[] = $v['stored_filename'];
|
$skipped[] = $v['stored_filename'];
|
||||||
continue;
|
continue;
|
||||||
@@ -2278,6 +2319,7 @@ class e_file
|
|||||||
*/
|
*/
|
||||||
private function getMimeTypes()
|
private function getMimeTypes()
|
||||||
{
|
{
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'asc' => 'text/plain',
|
'asc' => 'text/plain',
|
||||||
'css' => 'text/css',
|
'css' => 'text/css',
|
||||||
@@ -2413,15 +2455,15 @@ class e_file
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the mime-type based on the file's extension.
|
* Return the mime-type based on the file's extension.
|
||||||
|
*
|
||||||
* @param string $filename
|
* @param string $filename
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getMime($filename)
|
public function getMime($filename)
|
||||||
{
|
{
|
||||||
|
|
||||||
$filename = basename($filename);
|
$filename = basename($filename);
|
||||||
|
|
||||||
$tmp = explode('.', $filename);
|
$tmp = explode('.', $filename);
|
||||||
|
@@ -436,7 +436,7 @@ class e_jsmanagerTest extends \Codeception\Test\Unit
|
|||||||
}
|
}
|
||||||
|
|
||||||
$tp->setStaticUrl(null);
|
$tp->setStaticUrl(null);
|
||||||
|
e107::getParser()->setStaticUrl(null);
|
||||||
|
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user