You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							109 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
	
	
							109 lines
						
					
					
						
							2.8 KiB
						
					
					
				<?php
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
use Symfony\Component\Filesystem\Filesystem;
 | 
						|
 | 
						|
/**
 | 
						|
 * Removes a directory recursively.
 | 
						|
 *
 | 
						|
 * @returns true if OK, otherwise false
 | 
						|
 *
 | 
						|
 * @author Amary <MasterNES@aol.com> (from Nexen.net)
 | 
						|
 * @author Olivier Brouckaert <oli.brouckaert@skynet.be>
 | 
						|
 *
 | 
						|
 * @param string $dir directory to remove
 | 
						|
 */
 | 
						|
function removeDir($dir)
 | 
						|
{
 | 
						|
    if (!@$opendir = opendir($dir)) {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    while ($readdir = readdir($opendir)) {
 | 
						|
        if ('..' != $readdir && '.' != $readdir) {
 | 
						|
            if (is_file($dir.'/'.$readdir)) {
 | 
						|
                if (!@unlink($dir.'/'.$readdir)) {
 | 
						|
                    return false;
 | 
						|
                }
 | 
						|
            } elseif (is_dir($dir.'/'.$readdir)) {
 | 
						|
                if (!removeDir($dir.'/'.$readdir)) {
 | 
						|
                    return false;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    closedir($opendir);
 | 
						|
 | 
						|
    if (!@rmdir($dir)) {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    return true;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Moves a directory and its content to an other area.
 | 
						|
 *
 | 
						|
 * @author Hugues Peeters <peeters@ipm.ucl.ac.be>
 | 
						|
 *
 | 
						|
 * @param string $source      the path of the directory to move
 | 
						|
 * @param string $destination the path of the new area
 | 
						|
 * @param bool   $move        Whether we want to remove the source at the end
 | 
						|
 *
 | 
						|
 * @return bool false on error
 | 
						|
 */
 | 
						|
function copyDirTo($source, $destination, $move = true)
 | 
						|
{
 | 
						|
    $fs = new Filesystem();
 | 
						|
    if (is_dir($source)) {
 | 
						|
        $fs->mkdir($destination);
 | 
						|
        if (!is_dir($destination)) {
 | 
						|
            error_log("Chamilo copyDirTo cannot mkdir $destination\n");
 | 
						|
 | 
						|
            return false; // could not create destination dir
 | 
						|
        }
 | 
						|
        $fs->mirror($source, $destination);
 | 
						|
        if ($move) {
 | 
						|
            $fs->remove($source);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    return true;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Get a list of all PHP (.php) files in a given directory. Includes .tpl files.
 | 
						|
 */
 | 
						|
function getAllPhpFiles(string $base_path, bool $includeStatic = false): array
 | 
						|
{
 | 
						|
    $list = scandir($base_path);
 | 
						|
    $files = [];
 | 
						|
    $extensionsArray = ['.php', '.tpl', '.html.twig'];
 | 
						|
    if ($includeStatic) {
 | 
						|
        $extensionsArray[] = 'html';
 | 
						|
        $extensionsArray[] = '.htm';
 | 
						|
        $extensionsArray[] = '.css';
 | 
						|
    }
 | 
						|
    foreach ($list as $item) {
 | 
						|
        if ('.' == substr($item, 0, 1)) {
 | 
						|
            continue;
 | 
						|
        }
 | 
						|
        $special_dirs = []; // Modify this array as needed
 | 
						|
        if (in_array($base_path . $item . '/', $special_dirs)) {
 | 
						|
            continue;
 | 
						|
        }
 | 
						|
        if (is_dir($base_path . $item)) {
 | 
						|
            $files = array_merge($files, getAllPhpFiles($base_path . $item . '/', $includeStatic));
 | 
						|
        } else {
 | 
						|
            foreach ($extensionsArray as $extension) {
 | 
						|
                if (substr($item, -strlen($extension)) == $extension) {
 | 
						|
                    $files[] = $base_path . $item;
 | 
						|
                    break;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    return $files;
 | 
						|
}
 | 
						|
 |