00001 <?php 00022 class Load 00023 { 00029 protected static $_injected_models = array(); 00038 public static function core($dir, $lib, $convenant=false) 00039 { 00040 if($convenant) { 00041 $file = CORE_PATH . "$dir/$lib/$lib.php"; 00042 } else { 00043 $file = CORE_PATH . "$dir/$lib.php"; 00044 } 00045 00046 if (is_file($file)) { 00047 include_once $file; 00048 } else { 00049 throw new KumbiaException("$dir $lib no encontrada"); 00050 } 00051 } 00058 public static function extensions ($extension) 00059 { 00060 $args = func_get_args(); 00061 foreach ($args as $extension) { 00062 self::core('extensions', $extension, true); 00063 } 00064 } 00071 public static function vendors ($vendor) 00072 { 00073 $args = func_get_args(); 00074 foreach ($args as $vendor) { 00075 self::core('vendors', $vendor, true); 00076 } 00077 } 00084 public static function helpers ($helper) 00085 { 00086 $args = func_get_args(); 00087 foreach ($args as $helper) { 00091 $file = APP_PATH . "helpers/$helper.php"; 00092 if (is_file($file)) { 00093 include_once $file; 00094 } else { 00095 self::core('helpers', $helper); 00096 } 00097 } 00098 } 00105 public static function models ($model=null) 00106 { 00110 if (! class_exists('Db', false) && Config::get('config.application.database')) { 00111 require CORE_PATH . 'extensions/db/db.php'; 00112 } 00113 00114 $controller = Dispatcher::get_controller(); 00115 00116 if(!$model) { 00117 self::_all_models($controller); 00118 return; 00119 } elseif (is_array($model)) { 00120 $args = $model; 00121 } else { 00122 $args = func_get_args(); 00123 } 00124 00125 foreach ($args as $model) { 00126 $file = APP_PATH . "models/$model.php"; 00127 if (is_file($file)) { 00128 include_once $file; 00129 if ($controller) { 00130 $Model = Util::camelcase(basename($model)); 00131 $controller->$Model = new $Model(); 00132 self::$_injected_models[] = $Model; 00133 } 00134 } elseif (is_dir(APP_PATH . "models/$model")) { 00135 self::_all_models($controller, $dir); 00136 } else { 00137 throw new KumbiaException("Modelo $model no encontrado"); 00138 } 00139 } 00140 } 00147 public static function _all_models ($controller, $dir=null) 00148 { 00149 foreach (new DirectoryIterator(APP_PATH . "models/$dir") as $file) { 00150 if ($file->isDot() || $file->isDir()) { 00151 continue; 00152 } 00153 if ($file->isFile()) { 00154 include_once $file->getPathname(); 00155 if ($controller) { 00156 $Model = Util::camelcase(basename($file->getFilename(), '.php')); 00157 $controller->$Model = new $Model(); 00158 self::$_injected_models[] = $Model; 00159 } 00160 } 00161 } 00162 } 00169 public static function get_injected_models () 00170 { 00171 return self::$_injected_models; 00172 } 00177 public static function reset_injected_models () 00178 { 00179 self::$_injected_models = array(); 00180 } 00185 public static function boot () 00186 { 00187 $boot = Config::read('boot.ini'); 00188 if ($boot['modules']['vendors']) { 00189 $vendors = explode(',', str_replace(' ', '', $boot['modules']['vendors'])); 00190 foreach ($vendors as $vendor) { 00191 require VENDORS_PATH . "$vendor/$vendor.php"; 00192 } 00193 unset($vendors); 00194 } 00195 if ($boot['modules']['extensions']) { 00196 $extensions = explode(',', str_replace(' ', '', $boot['modules']['extensions'])); 00197 foreach ($extensions as $extension) { 00198 require CORE_PATH . "extensions/$extension/$extension.php"; 00199 } 00200 unset($extensions); 00201 } 00202 } 00209 public static function model ($model) 00210 { 00214 if (! class_exists('Db', false) && Config::get('config.application.database')) { 00215 require CORE_PATH . 'extensions/db/db.php'; 00216 } 00220 $Model = Util::camelcase(basename($model)); 00224 if (! class_exists($Model, false)) { 00228 $file = APP_PATH . "models/$model.php"; 00229 if (is_file($file)) { 00230 include $file; 00231 } else { 00232 throw new KumbiaException("No existe el modelo $model"); 00233 } 00234 } 00235 return new $Model(); 00236 } 00237 }