<?php

/**
 * @class GHelper
 * @brief Clase con funciones generales de ayuda.
 *
 * @package application.helpers
 */
class GHelper {

    /**
     * @brief Borrado recursivo de un directorio y su contenido
     * 
     * @param string directorio
     * @param boolean Si es TRUE vacía el directorio pero no elimina
     * @return boolean
     */
    public static function recursiveRemoveDirectory($directory, $empty = FALSE) {
        if (substr($directory, -1) == '/') {
            $directory = substr($directory, 0, -1);
        }
        if (!file_exists($directory) || !is_dir($directory)) {
            return FALSE;
        } elseif (is_readable($directory)) {
            $handle = opendir($directory);
            while (FALSE !== ($item = readdir($handle))) {
                if ($item != '.' && $item != '..') {
                    $path = $directory . '/' . $item;
                    if (is_dir($path)) {
                        recursive_remove_directory($path);
                    } else {
                        unlink($path);
                    }
                }
            }
            closedir($handle);
            if ($empty == FALSE) {
                if (!rmdir($directory)) {
                    return FALSE;
                }
            }
        }
        return TRUE;
    }

}

?>
