163 lines
3.6 KiB
PHP
Executable File
163 lines
3.6 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Nwdthemes\Revslider\Helper;
|
|
|
|
use Nwdthemes\Revslider\Model\Revslider\Framework\PclZip;
|
|
use Magento\Framework\App\Helper\AbstractHelper;
|
|
use Magento\Framework\App\Helper\Context;
|
|
|
|
class Filesystem extends AbstractHelper {
|
|
|
|
protected $_context;
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
|
|
public function __construct(
|
|
Context $context
|
|
) {
|
|
$this->_context = $context;
|
|
|
|
parent::__construct($this->_context);
|
|
}
|
|
|
|
/**
|
|
* Init filesystem class
|
|
*/
|
|
|
|
public function WP_Filesystem() {
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Unzip file
|
|
*
|
|
* @param string Zip file
|
|
* @param string Destination path
|
|
* @return boolean
|
|
*/
|
|
|
|
public function unzip_file($file, $path) {
|
|
|
|
// make sure it have trailing slash
|
|
$path = rtrim($path, '/\\') . DIRECTORY_SEPARATOR;
|
|
|
|
if ( ! $this->wp_mkdir_p($path)) return false;
|
|
|
|
if (class_exists('\ZipArchive', false)) {
|
|
$zip = new \ZipArchive;
|
|
$zipResult = $zip->open($file, \ZipArchive::CREATE);
|
|
if ($zipResult === true) {
|
|
for($i = 0; $i < $zip->numFiles; $i++) {
|
|
$fileName = $zip->getNameIndex($i);
|
|
$fileInfo = pathinfo($fileName);
|
|
if (strpos($fileName, '_') !== 0 && strpos($fileName, '.') !== 0 && strpos($fileInfo['basename'], '_') !== 0 && strpos($fileInfo['basename'], '.') !== 0) {
|
|
if ($fileInfo['dirname'] !== '.' && ! file_exists($path.$fileInfo['dirname'])) {
|
|
$parts = explode('/', $fileInfo['dirname']);
|
|
$dirPath = $path;
|
|
foreach ($parts as $part) {
|
|
$dirPath .= $part . DIRECTORY_SEPARATOR;
|
|
$this->wp_mkdir_p($dirPath);
|
|
}
|
|
}
|
|
if (substr($fileName, -1) !== '/' && substr($fileName, -1) !== '\\') {
|
|
copy("zip://".$file."#".$fileName, $path.str_replace('//', DIRECTORY_SEPARATOR, $fileName));
|
|
}
|
|
}
|
|
}
|
|
$zip->close();
|
|
}
|
|
} else {
|
|
$pclZip = new PclZip($file);
|
|
$zipResult = $pclZip->extract($path) ? true : false;
|
|
}
|
|
|
|
return $zipResult;
|
|
}
|
|
|
|
public function recurse_move($src, $dst) {
|
|
$src = rtrim($src,'/\\');
|
|
$dst = rtrim($dst,'/\\');
|
|
$dir = opendir($src);
|
|
$this->wp_mkdir_p($dst);
|
|
while(false !== ( $file = readdir($dir)) ) {
|
|
if (( $file != '.' ) && ( $file != '..' )) {
|
|
if ( is_dir($src . '/' . $file) ) {
|
|
$this->recurse_move($src . '/' . $file,$dst . '/' . $file);
|
|
} else {
|
|
$this->rename($src . '/' . $file,$dst . '/' . $file);
|
|
}
|
|
}
|
|
}
|
|
closedir($dir);
|
|
rmdir($src);
|
|
}
|
|
|
|
/**
|
|
* Make writable directory
|
|
*
|
|
* @param string $path
|
|
* @return bool
|
|
*/
|
|
|
|
public function wp_mkdir_p($dir) {
|
|
if (file_exists($dir) && is_dir($dir)) {
|
|
return true;
|
|
} else {
|
|
return @mkdir($dir);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if file exists
|
|
*
|
|
* @param string Path to file
|
|
* @return boolean
|
|
*/
|
|
|
|
public function exists($path) {
|
|
return file_exists($path);
|
|
}
|
|
|
|
/**
|
|
* Read file
|
|
*
|
|
* @param string Path to file
|
|
* @return string
|
|
*/
|
|
|
|
public function get_contents($path) {
|
|
return file_get_contents($path);
|
|
}
|
|
|
|
/**
|
|
* Delete file
|
|
*
|
|
* @param string Path to file
|
|
* @param boolean Is recursive
|
|
* @return string
|
|
*/
|
|
|
|
public function delete($path, $recursive = false) {
|
|
if (is_dir($path)) {
|
|
$dir = opendir($path);
|
|
while(false !== ( $file = readdir($dir)) ) {
|
|
if (( $file != '.' ) && ( $file != '..' )) {
|
|
if ( is_dir($path . '/' . $file) ) {
|
|
if ($recursive) {
|
|
$this->delete($path . '/' . $file, $recursive);
|
|
}
|
|
} else {
|
|
unlink($path . '/' . $file);
|
|
}
|
|
}
|
|
}
|
|
closedir($dir);
|
|
rmdir($path);
|
|
} elseif (is_file($path)) {
|
|
unlink($path);
|
|
}
|
|
}
|
|
|
|
} |