<?php





/*


 * Copyright 2017-09-07  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() {


        Autoload::cargarModelos(DIR_LIBRERIA . 'clases/');


        Autoload::cargarModelos(DIR_LIBRERIA . 'clases/conexiones/');


        Autoload::cargarModelos(DIR_LIBRERIA . 'sistema/');


        spl_autoload_register('Autoload::cargarClasesPrincipales');


        //self::cargarModelos(DIR_MODELOS);


    }





    public static function cargarClasesPrincipales($clase) {


//        $dirClase = './libs/sistemas/' . $clase . '.php';


//        if (is_file($dirClase)):


//            include $dirClase;


//        else:


        $dirModelo = self::buscarModelos($clase);


        if (is_file($dirModelo)):


            include $dirModelo;


        endif;


//        endif;


    }





    public static function buscarModelos($clase) {


        $listDireccionCarpetas = self::buscarCarpetas(DIR_MODELOS);


        foreach ($listDireccionCarpetas as $directorio):


            $dirModelo = $directorio . $clase . '.php';


            if (is_file($dirModelo)):


                return $dirModelo;


            endif;


        endforeach;


    }





    public static function cargarModelos($directorio) {


        if (is_dir($directorio)):


            $listArchivos = self::buscarArchivos(array($directorio));


            foreach ($listArchivos as $archivo):


                require_once $archivo;


            endforeach;





            $listDireccionCarpetas = self::buscarCarpetas($directorio);


            $listArchivos = self::buscarArchivos($listDireccionCarpetas);


            foreach ($listArchivos as $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 . '/');


                    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('.', '..'))):


                        if (is_file($carpetas . $clase)):


                            array_push($listArchivos, $carpetas . $clase);


                        endif;


                    endif;


                endforeach;


            endif;


        endforeach;


        return $listArchivos;


    }





}





Autoload::start();




