<?php

namespace kernel\helpers;

use FilesystemIterator;

class Files
{
    public function copy_folder($d1, $d2): void
    {
        if (is_dir($d1)) {
            if (!file_exists($d2)){
                $_d2 = mkdir($d2, permissions: 0755, recursive: true);
                if (!$_d2) {
                    return;
                }
            }

            $d = dir($d1);
            while (false !== ($entry = $d->read())) {
                if ($entry != '.' && $entry != '..') {
                    $this->copy_folder("$d1/$entry", "$d2/$entry");
                }
            }
            $d->close();
        } else {
            copy($d1, $d2);
        }
    }

    public function recursiveRemoveDir($dir): void
    {
        $includes = new FilesystemIterator($dir);
        foreach ($includes as $include) {
            if(is_dir($include) && !is_link($include)) {
                $this->recursiveRemoveDir($include);
            }
            else {
                unlink($include);
            }
        }
        rmdir($dir);
    }
}