<?php namespace App\Traits; use ZipArchive; trait UploadTheme { private $files = []; function recurse_copy($src, $dst) { try { $dir = opendir($src); @mkdir($dst); while (false !== ($file = readdir($dir))) { if (($file != '.') && ($file != '..')) { if (is_dir($src . '/' . $file)) { $this->recurse_copy($src . '/' . $file, $dst . '/' . $file); } else { copy($src . '/' . $file, $dst . '/' . $file); } } } closedir($dir); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } function delete_directory($dirname) { try { if (is_dir($dirname)) { $dir_handle = opendir($dirname); if (!$dir_handle) return false; while ($file = readdir($dir_handle)) { if ($file != "." && $file != "..") { if (!is_dir($dirname . "/" . $file)) unlink($dirname . "/" . $file); else $this->delete_directory($dirname . '/' . $file); } } closedir($dir_handle); rmdir($dirname); return true; } else { return false; } } catch (\Exception $e) { return false; } } function backup($src, $dst) { $zipname = storage_path('/' . 'update-' . Settings('system_version') . '.zip'); $new_zip = new ZipArchive; $new_zip->open($zipname, ZipArchive::CREATE | ZipArchive::OVERWRITE); $this->recurse($src, $dst); foreach ($this->files as $file) { if (!is_dir($file) && file_exists($file)) { $new_zip->addFile($file); } } $new_zip->close(); } function recurse($src, $dst) { $dir = opendir($src); @mkdir($dst); while (false !== ($file = readdir($dir))) { if (($file != '.') && ($file != '..')) { if (is_dir($src . '/' . $file)) { $this->files[] = $dst . '/' . $file; $this->recurse($src . '/' . $file, $dst . '/' . $file); } else { $file_location = str_replace('storage\app/tempUpdate', '', $src); $this->files[] = $file_location . '/' . $file; } } } closedir($dir); } }