Duffer Derek
<?php namespace App\Repository\Utils;
use ZipArchive;
Class ZipAndFileHandler
{
/**
* @param $filePath
*/
public static function GetFileList($filePath)
{
try {
$getDirectory = self::unzip($filePath);
if ($getDirectory) {
$files = scandir($getDirectory, 1);
$files = array_diff($files, array('.', '..'));
$files = preg_filter('/^/', $getDirectory . '/', $files);
return array('files' => $files, 'dir' => $getDirectory);
}
return false;
} catch (\Exception $e) {
}
}
/**
* @param $filePath
* @return bool
*/
public static function unzip($filePath)
{
try {
$zip = new ZipArchive;
if ($zip->open($filePath) === TRUE) {
$dir = sys_get_temp_dir() . '/' . time();
mkdir($dir);
$zip->extractTo($dir);
$zip->close();
return $dir;
}
return false;
} catch (\Exception $e) {
return false;
}
}
/**
* @param $filesAndDirectory
* @return array|bool
*/
public static function readXml($filesAndDirectory)
{
try {
$output = array();
$output['status']['total_file_count'] = count($filesAndDirectory['files']);
$readCount = 0;
$output['data'] = array();
foreach ($filesAndDirectory['files'] as $fileKey => $file) {
$xml = (array)simplexml_load_file($file);
if ($xml) {
$output['data'][] = $xml;
$readCount++;
}
}
$output['status']['read_file_count'] = $readCount;
if (is_dir($filesAndDirectory['dir'])) {
self::recursiveDelete($filesAndDirectory['dir']);
}
return $output;
} catch (\Exception $e) {
return false;
}
}
/**
* @param $dir
*/
public static function recursiveDelete($dir)
{
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (is_dir($dir . "/" . $object))
self::recursiveDelete($dir . "/" . $object);
else
unlink($dir . "/" . $object);
}
}
rmdir($dir);
}
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists