/** * Carga modelos * * @param string $model * @throw KumbiaException **/ public static function models($model = null) { /** * Si se utiliza base de datos **/ if (!class_exists('Db', false)) { require CORE_PATH . 'libs/db/db.php'; } $controller = Dispatcher::get_controller(); if (!$model) { self::_all_models($controller); return; } elseif (is_array($model)) { $args = $model; } else { $args = func_get_args(); } foreach ($args as $model) { $file = APP_PATH . "models/{$model}.php"; if (is_file($file)) { include_once $file; if ($controller) { $Model = Util::camelcase(basename($model)); $controller->{$Model} = new $Model(); self::$_injected_models[] = $Model; } } elseif (is_dir(APP_PATH . "models/{$model}")) { self::_all_models($controller, $dir); } else { throw new KumbiaException("Modelo {$model} no encontrado"); } } }
/** * Maneja las excepciones no capturadas * * @param Exception $e **/ public static function handle_exception($e) { if (isset($e->_view) && ($e->_view == 'no_controller' || $e->_view == 'no_action')) { header('HTTP/1.1 404 Not Found'); } else { header('HTTP/1.1 500 Internal Server Error'); } extract(Router::get(), EXTR_OVERWRITE); $Controller = Util::camelcase($controller); ob_start(); if (!PRODUCTION) { $Template = 'views/templates/exception.phtml'; $boot = Config::read('boot'); if (isset($e->_view)) { include CORE_PATH . "views/errors/{$e->_view}.phtml"; } else { include CORE_PATH . "views/errors/exception.phtml"; } } else { include APP_PATH . 'views/errors/404.phtml'; $Template = 'views/templates/error.phtml'; } $content = ob_get_clean(); // termina los buffers abiertos while (ob_get_level()) { ob_end_clean(); } // verifica si esta cargado el dispatcher if (class_exists('Dispatcher')) { $controller = Dispatcher::get_controller(); if ($controller && $controller->response == 'view') { echo $content; exit; } } include CORE_PATH . $Template; }
/** * Obtiene el valor de un componente tomado * del mismo valor del nombre del campo en el modelo * del mismo nombre del controlador o el indice en * $_REQUEST * * @param string $name * @return mixed */ function get_value_from_action($name) { $p = explode('.', $name); if (count($p) > 1) { $value = get_value_from_action($p[0]); if (is_object($value) && isset($value->{$p}[1])) { return $value->{$p}[1]; } elseif (is_array($value) && isset($value[$p[1]])) { return $value[$p[1]]; } else { return ''; } } else { $controller = Dispatcher::get_controller(); if (isset($controller->{$name})) { return $controller->{$name}; } else { return ""; } } }
/** * Obtiene el valor del campo por autocarga de valores * * @param string $field nombre de campo * @return mixed retorna NULL si no existe valor por autocarga */ public static function getFieldValue($field) { // Obtiene considerando el patron de formato form.field $formField = explode('.', $field, 2); // Obtiene el controller $controller = Dispatcher::get_controller(); // Valor por defecto $value = NULL; // Si tiene el formato form.field if (isset($formField[1])) { // Si existe un valor cargado if (isset($controller->{$formField[0]})) { $form = $controller->{$formField[0]}; if (is_object($form) && isset($form->{$formField[1]})) { $value = $form->{$formField[1]}; } elseif (is_array($form) && isset($form[$formField[1]])) { $value = $form[$formField[1]]; } } elseif (isset($_POST[$formField[0]][$formField[1]])) { $value = $_POST[$formField[0]][$formField[1]]; } } else { // Formato de campo comun // Si existe un valor cargado if (isset($controller->{$field})) { $value = $controller->{$field}; } elseif (isset($_POST[$field])) { $value = $_POST[$field]; } } // Retorna el valor de campo return $value; }
/** * Updates a Row using values from $_REQUEST * * @param string $form form name for request, equivalent to $_REQUEST[$form] * @return boolean success */ public function update_from_request($form = null) { if (!$form) { $form = $this->source; } $result = $this->update($_REQUEST[$form]); if (!$result) { Dispatcher::get_controller()->{$form} = $_REQUEST[$form]; } return $result; }