<?php


function chownr($path, $owner = 'www')
{
    if (!is_dir($path)) {
        // return chown($path, $owner);
    }

    $dh = opendir($path);
    while (($file = readdir($dh)) !== false) {
        if ($file != '.' && $file != '..') {
            $fullpath = $path . '/' . $file;
            if (is_link($fullpath)) {
                return FALSE;
            } elseif (!is_dir($fullpath) && !chown($fullpath, $owner)) {
                return FALSE;
            } elseif (!chownr($fullpath, $owner)) {
                return FALSE;
            }
        }
    }

    closedir($dh);
    try {
        if (chown($path, $owner)) {
            return TRUE;
        } else {
            return FALSE;
        }
    } catch (\Throwable $th) {
        return TRUE;
    }
}
function rrename($src, $target)
{
    $src = str_replace('//', '/', $src);
    $target = str_replace('//', '/', $target);
    if (is_dir($src)) {
        if ($dh = opendir($src)) {
            while (($file = readdir($dh)) !== false) {
                //exclude unwanted 
                if ($file == ".") continue;
                if ($file == "..") continue;
                rrename($src . '/' . $file, $target . '/' . $file);
            }
            closedir($dh);
        }
    } else {
        rename($src, $target);
    }
    return true;
}
function recurse_copy($src, $dst)
{
    $src = str_replace('//', '/', $src);
    $dst = str_replace('//', '/', $dst);
    $dir = opendir($src);
    if (!file_exists($dst)) {
        @mkdir($dst, 0777, true);
    }
    while (false !== ($file = readdir($dir))) {
        if (($file != '.') && ($file != '..')) {
            if (is_dir($src . '/' . $file)) {
                recurse_copy($src . '/' . $file, $dst . '/' . $file);
            } else {
                copy($src . '/' . $file, $dst . '/' . $file);
            }
        }
    }
    closedir($dir);
}
function rrmdir($src)
{
    $dir = opendir($src);
    while (false !== ($file = readdir($dir))) {
        if (($file != '.') && ($file != '..')) {
            $full = $src . '/' . $file;
            if (is_dir($full)) {
                rrmdir($full);
            } else {
                unlink($full);
            }
        }
    }
    closedir($dir);
    rmdir($src);
    return true;
}
