Duffer Derek

Current Path : /var/www/podiomigration.bitkit.dk/httpdocs/src/classes/Repository/Utils/
Upload File :
Current File : /var/www/podiomigration.bitkit.dk/httpdocs/src/classes/Repository/Utils/ZipAndFileHandler.php

<?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