<?php

/*
 * Copyright 2017-08-31  Cámara de Comercio de Santa Marta para el Magdalena.
 * Autor: Luis Montoya <lmontoya@ccsm.org.co at www.ccsm.org.co>.
 * Archivo: Autoload.
 *
 * Licenciado bajo la Licencia Apache, Versión 2.0;
 * Usted no puede usar este archivo excepto en conformidad con la Licencia.
 * Usted puede obtener una copia de la Licencia en
 *
 *   	http://www.apache.org/licenses/LICENSE-2.0
 *
 * A menos que sea requerido por la ley aplicable o acordado por escrito, el software
 * Distribuido bajo la licencia se distribuye en una "AS IS" o  "COMO ESTA" BASE,
 * SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, expresas o implícitas.
 * Consulte la Licencia para los permisos y Limitaciones bajo la Licencia.
 */

/**
 * Description of Autoload
 *
 * @author Luis Montoya <lmontoya@ccsm.org.co at www.ccsm.org.co>
 */
class _Autoload {

    //put your code here
    public static function start() {
        spl_autoload_register('Autoload::cargarClasesPrincipales');
        self::cargarModelos(DIR_MODELOS);
    }

    public static function cargarClasesPrincipales($clase) {
        include './libs/sistemas/' . $clase . '.php';
    }

    public static function cargarModelos($directorio) {
        if (is_dir($directorio)):
            $listDireccionCarpetas = self::buscarCarpetas($directorio);
            $listArchivos = self::buscarArchivos($listDireccionCarpetas);
            foreach ($listArchivos as $archivo):
                if (is_file($archivo)) {
                    require_once $archivo;
                }
            endforeach;
        endif;
    }

    private static function buscarCarpetas($directorio) {
        $listDireccionCarpetas = [];
        if (is_dir($directorio)):
            $openDirectorio = scandir($directorio);
            foreach ($openDirectorio as $key => $componente):
                if (!in_array($componente, array('.', '..'))):
                    if (is_dir($directorio . $componente)):
                        array_push($listDireccionCarpetas, $directorio . $componente . '/');
                        array_merge($listDireccionCarpetas, self::buscarCarpetas($directorio . $componente . '/') );
                    endif;
                endif;
            endforeach;
        endif;
        return $listDireccionCarpetas;
    }

    private static function buscarArchivos($listDireccionCarpetas) {
        $listArchivos = [];
        foreach ($listDireccionCarpetas as $carpetas):
            if (is_dir($carpetas)):
                $openCarpetas = scandir($carpetas);
                foreach ($openCarpetas as $key => $clase):
                    if (!in_array($clase, array('.', '..'))):
                        array_push($listArchivos, $carpetas . $clase);
                    endif;
                endforeach;
            endif;
        endforeach;
        return $listArchivos;
    }

}

Autoload::start();

