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 }