/** * Método para setear un Objeto * @param string $method Método a ejecutar (create, update) * @param array $data Array para autocargar el objeto * @param array $optData Array con con datos adicionales para autocargar */ public static function setPersona($method, $data = array(), $optData = array()) { $obj = new Persona($data); if (!empty($optData)) { $obj->dump_result_self($optData); } //Creo otro objeto para comparar si existe $old = new Persona($data); $check = $old->_getPersonaRegistrada('find_first'); if ($check) { //Si existe if (empty($obj->id)) { $obj->id = $old->id; //Asigno el id del encontrado al nuevo } else { //Si se actualiza y existe otro con la misma información if ($obj->id != $old->id) { DwMessage::info('Lo sentimos, pero ya existe una persona registrada con el mismo número de identificación'); return FALSE; } } if ($method == 'create') { //Si se crea la persona, pero ya está registrada la actualizo $method = 'update'; } } $rs = $obj->{$method}(); return $rs ? $obj : FALSE; }
/** * Callback que se ejecuta antes de los métodos de todos los controladores */ protected final function initialize() { if (APP_UPDATE) { DwMessage::info('Estamos en labores de mantenimiento y actualización.'); View::select(NULL, 'update'); } }
/** * Método principal */ public function index() { $pais = new Pais(); $estado = new Estado(); $municipio = new Municipio(); if (Input::hasPost('empresa')) { if (DwSecurity::isValidKey(Input::post('empresa_id_key'), 'form_key')) { if (Empresa::setEmpresa('save', Input::post('empresa'))) { DwMessage::valid('Los datos se han actualizado correctamente'); } else { DwMessage::get('error_form'); } } } $empresa = new Empresa(); if (!$empresa->getInformacionEmpresa()) { DwMessage::get('id_no_found'); return DwRedirect::toRoute('module: dashboard', 'controller: index'); } if (!APP_OFFICE) { $sucursal = new Sucursal(); $this->sucursal = $sucursal->getInformacionSucursal(1); $this->ciudades = Load::model('params/ciudad')->getCiudadesToJson(); } $this->empresa = $empresa; $this->pais = $pais->getListadoPais(); $this->estado = $estado->getListadoEstado(); $this->municipio = $municipio->getListadoMunicipio(); $this->page_title = 'Información de la empresa'; }
/** * Método para limpiar los mensajes almacenados */ public static function clean() { //Reinicio la variable de los mensajes self::$_contentMsj = array(); //Elimino los almacenados en sesión Session::delete('dw-messages'); }
/** * Método para cerrar sesión */ public function salir($js = '') { if (Usuario::setSession('close')) { DwMessage::valid("La sesión ha sido cerrada correctamente."); } if ($js == 'no-script') { DwMessage::info('Activa el uso de JavaScript en su navegador para poder continuar.'); } return DwRedirect::toAction('entrar/'); }
/** * Callback que se ejecuta antes de los métodos de todos los controladores */ protected final function initialize() { /** * Si el método de entrada es ajax, el tipo de respuesta es sólo la vista */ if (Input::isAjax()) { View::template('sgc/sgc'); } /** * Verifico que haya iniciado sesión */ if (!DwAuth::isLogged()) { //Verifico que no genere una redirección infinita if ($this->controller_name != 'login' && ($this->action_name != 'entrar' && $this->action_name != 'salir')) { DwMessage::warning('No has iniciado sesión o ha caducado.'); //Verifico que no sea una ventana emergente if ($this->module_name == 'reporte') { View::error(); //TODO: crear el método error() } else { DwRedirect::toLogin('sistema/login/entrar/'); } return false; } } else { if (DwAuth::isLogged() && $this->controller_name != 'login') { $acl = new DwAcl(); //Cargo los permisos y templates if (APP_UPDATE && Session::get('perfil_id') != Perfil::SUPER_USUARIO) { //Solo el super usuario puede hacer todo if ($this->module_name != 'dashboard' && $this->controller_name != 'index') { $msj = 'Estamos en labores de actualización y mantenimiento.'; $msj .= '<br />'; $msj .= 'El servicio se reanudará dentro de ' . APP_UPDATE_TIME; if (Input::isAjax()) { View::update(); } else { DwMessage::info($msj); DwRedirect::to("dashboard"); } return FALSE; } } if (!$acl->check(Session::get('perfil_id'))) { DwMessage::error('Tu no posees privilegios para acceder a <b>' . Router::get('route') . '</b>'); Input::isAjax() ? View::ajax() : View::select(NULL); return false; } if (!defined('SKIN')) { define('SKIN', Session::get('tema')); } } } }
/** * Método para listar las autitorías del sistema * @param type $fecha * @return type */ public function listar($fecha = '', $page = 1) { $fecha = empty($fecha) ? date("Y-m-d") : Filter::get($fecha, 'date'); if (empty($fecha)) { DwMessage::info('Selecciona la fecha del archivo'); return DwRedirect::toAction('index'); } $page = Filter::get($page, 'page') > 0 ? Filter::get($page, 'page') : 1; $audits = Sistema::getAudit($fecha, $page); $this->audits = $audits; $this->fecha = $fecha; $this->page_module = 'Auditorías del sistema ' . $fecha; }
/** * Método para listar las autitorías del sistema * @param type $fecha * @return type */ public function listar($fecha = '', $formato = 'html') { $fecha = empty($fecha) ? date("Y-m-d") : Filter::get($fecha, 'date'); if (empty($fecha)) { DwMessage::info('Selecciona la fecha del archivo'); return View::error(); } $audits = Sistema::getAudit($fecha); $this->audits = $audits; $this->fecha = $fecha; $this->page_module = 'Auditorías del sistema ' . $fecha; $this->page_format = $formato; }
/** * Método para verificar si la llave es válida * * @param string $id * @param string $action * @param string $filter Filtro a aplicar al id devuelto * @return boolean */ public static function isValidKey($valueKey, $action = '', $filter = '', $popup = FALSE) { $key = explode('.', $valueKey); $id = $key[0]; $validKey = self::getKey($id, $action); $valid = $validKey === $valueKey ? TRUE : FALSE; if (!$valid) { DwMessage::error('Acceso denegado. La llave de seguridad es incorrecta.'); if ($popup) { View::error(); } return FALSE; } return $filter ? Filter::get($id, $filter) : $id; }
/** * Método para buscar */ public function buscar($field = 'nombres', $value = 'none', $order = 'order.fecha.asc', $page = 1) { $page = Filter::get($page, 'page') > 0 ? Filter::get($page, 'page') : 1; $field = Input::hasPost('field') ? Input::post('field') : $field; $value = Input::hasPost('field') ? Input::post('value') : $value; $acceso = new Acceso(); $accesos = $acceso->getAjaxAcceso($field, $value, $order, $page); if (empty($accesos->items)) { DwMessage::info('No se han encontrado registros'); } $this->accesos = $accesos; $this->order = $order; $this->field = $field; $this->value = $value; $this->page_title = 'Búsqueda de ingresos al sistema'; }
/** * Método para listar */ public function listar($order = 'order.modulo.asc', $page = 'pag.1') { if (Input::hasPost('privilegios') or Input::hasPost('old_privilegios')) { if (RecursoPerfil::setRecursoPerfil(Input::post('privilegios'), Input::post('old_privilegios'))) { DwMessage::valid('Los privilegios se han registrado correctamente!'); Input::delete('privilegios'); //Para que no queden persistentes Input::delete('old_privilegios'); } } $page = Filter::get($page, 'page') > 0 ? Filter::get($page, 'page') : 1; $recurso = new Recurso(); $this->recursos = $recurso->getListadoRecurso(Recurso::ACTIVO, $order, $page); $perfil = new Perfil(); $this->perfiles = $perfil->getListadoPerfil(Perfil::ACTIVO); $privilegio = new RecursoPerfil(); $this->privilegios = $privilegio->getPrivilegiosToArray(); $this->order = $order; $this->page_title = 'Permisos y privilegios de usuarios'; }
/** * Método principal */ public function index() { $usuario = new Usuario(); if (!$usuario->getInformacionUsuario(Session::get('id'))) { DwMessage::get('id_no_found'); return DwRedirect::to('dashboard'); } $perfil = $usuario->perfil; $app_ajax_old = $usuario->app_ajax; if (Input::hasPost('usuario')) { if (DwSecurity::isValidKey(Input::post('usuario_id_key'), 'form_key')) { ActiveRecord::beginTrans(); //Guardo la persona $persona = Persona::setPersona('update', Input::post('persona'), array('id' => $usuario->persona_id)); if ($persona) { $usuario = Usuario::setUsuario('update', Input::post('usuario'), array('persona_id' => $persona->id, 'repassword' => Input::post('repassword'), 'oldpassword' => Input::post('oldpassword'), 'id' => $usuario->id, 'login' => $usuario->login, 'sucursal_id' => $usuario->sucursal_id, 'perfil_id' => $usuario->perfil_id)); if ($usuario) { ActiveRecord::commitTrans(); DwMessage::valid('El usuario se ha actualizado correctamente.'); if ($app_ajax_old != $usuario->app_ajax) { Session::set('app_ajax', $usuario->app_ajax); if (APP_AJAX) { View::redirect(PUBLIC_PATH . 'sistema/mi_cuenta/'); } else { DwRedirect::to('sistema/mi_cuenta'); } } $usuario->perfil = $perfil; $usuario->fotografia = $persona->fotografia; } } else { ActiveRecord::rollbackTrans(); } } } $this->temas = DwUtils::getFolders(dirname(APP_PATH) . '/public/css/backend/themes/'); $this->usuario = $usuario; $this->page_title = 'Actualizar mis datos'; }
/** * Callback que se ejecuta antes de guardar/modificar */ public function before_save() { $this->modulo = Filter::get($this->modulo, 'string'); $this->controlador = Filter::get($this->controlador, 'string'); $this->accion = Filter::get($this->accion, 'string'); if (empty($this->accion)) { $this->accion = '*'; } $this->recurso = trim($this->modulo . '/' . $this->controlador . '/' . $this->accion . '/', '/'); $this->descripcion = Filter::get($this->descripcion, 'string'); if (!empty($this->id) && $this->id <= 16) { DwMessage::warning('Lo sentimos, pero este recurso no se puede editar.'); return 'cancel'; } }
/** * Método para descargar */ public function descargar($key = '') { if (!($id = DwSecurity::isValidKey($key, 'descargar_backup', 'int'))) { return View::ajax(); } $backup = new Backup(); if (!$backup->find_first($id)) { DwMessage::get('id_no_found'); return DwRedirect::toAction('listar'); } $file = APP_PATH . 'temp/backup/' . $backup->archivo; if (!is_file($file)) { DwMessage::warning('No hemos podido localizar el archivo. Por favor contacta al administrador del sistema.'); DwAudit::error("No se ha podido encontrar la copia de seguridad {$backup->archivo} en el sistema"); return DwRedirect::toAction('listar'); } View::template(NULL); $this->backup = $backup; }
/** * Callback que se ejecuta antes de eliminar */ public function before_delete() { if ($this->id == 1) { //Para no eliminar la información de sucursal DwMessage::warning('Lo sentimos, pero esta sucursal no se puede eliminar.'); return 'cancel'; } }
/** * Callback que se ejecuta despues de insertar un usuario */ protected function after_create() { if (!EstadoUsuario::setEstadoUsuario('registrar', array('usuario_id' => $this->id, 'descripcion' => 'Activado por registro inicial'))) { DwMessage::error('Se ha producido un error interno al activar el usuario. Pofavor intenta nuevamente.'); return 'cancel'; } }
/** * Método para crear/modificar un objeto de base de datos * * @param string $medthod: create, update * @param array $data: Data para autocargar el modelo * @param array $otherData: Data adicional para autocargar * * @return object ActiveRecord */ public static function setClave($method, $data, $optData = null) { $obj = new UsuarioClave($data); if ($optData) { $obj->dump_result_self($optData); } if (!empty($obj->id)) { //Si va a actualizar $old = new UsuarioClave(); $old->find_first($obj->id); if (!empty($obj->oldpassword)) { //Si cambia de claves if (empty($obj->password) or empty($obj->repassword)) { DwMessage::error("Indica la nueva contraseña"); return false; } $obj->oldpassword = md5(sha1(strtoupper($obj->oldpassword))); if ($obj->oldpassword !== $old->password) { DwMessage::error("La contraseña anterior no coincide con la registrada. Verifica los datos e intente nuevamente"); return false; } } } //Verifico si las contraseñas coinciden (password y repassword) if (!empty($obj->password) && !empty($obj->repassword) or $method == 'create') { if ($method == 'create' && empty($obj->password)) { DwMessage::error("Indica la contraseña para el inicio de sesión"); return false; } $obj->password = md5(sha1(strtoupper($obj->password))); //$obj->repassword = md5(sha1($obj->repassword)); mientras luego borrar lo de abajo $obj->repassword = $obj->password; if ($obj->password !== $obj->repassword) { DwMessage::error('Las contraseñas no coinciden. Verifica los datos e intenta nuevamente.'); return 'cancel'; } } else { if (isset($obj->id)) { //Mantengo la contraseña anterior $obj->password = $old->password; } } $obj->fecha_inicio = date('Y-m-d'); $configseg = new Configuracion(); $configseg1 = $configseg->getInformacionConfiguracion(); $nuevafecha = strtotime('+' . $configseg1->dias_caducidad_clave . ' day', strtotime($obj->fecha_inicio)); $nuevafecha = date('Y-m-j', $nuevafecha); $obj->fecha_fin = $nuevafecha; //return DwMessage::error('La configuracion es: '.$configseg1->dias_caducidad_clave.' la fecha inicio es: '.$obj->fecha_inicio.' la fecha final es: '.$nuevafecha.'.'); //$fecha = date('Y-m-j'); //$nuevafecha = strtotime ( '+2 day' , strtotime ( $fecha ) ) ; //$nuevafecha = date ( 'Y-m-j' , $nuevafecha ); //echo $nuevafecha; $rs = $obj->{$method}(); if ($rs) { $method == 'create' ? DwAudit::debug("Se ha registrado el usuario {$obj->usuario_id} en el sistema") : DwAudit::debug("Se ha modificado la información del usuario {$obj->usuario_id}"); } return $rs ? $obj : FALSE; }
/** * Método que muestra el reporte según el formato. Si es un formato desconocido muesra la página de error * * @param string $formato Formato a mostrar: html, pdf, xls, xml, ticket, etc * @return boolean */ public static function report($formato) { $formato = Filter::get($formato, 'string'); $template = $formato == 'html' ? 'backend/impress' : NULL; if ($formato == 'error') { self::error(); } else { if ($formato != 'html' && $formato != 'pdf' && $formato != 'xls' && $formato != 'xlsx' && $formato != 'doc' && $formato != 'docx' && $formato != 'csv' && $formato != 'xml' && $formato != 'ticket' or $formato == null) { DwMessage::error('Error: ACCESO DENEGADO. El formato del reporte es incorrecto.'); self::error(); } else { self::response($formato, $template); } } }
/** * Método para eliminar */ public function eliminar($key) { if (!($id = DwSecurity::isValidKey($key, 'del_fabricante', 'int'))) { return DwRedirect::toAction('listar'); } $fabricante = new Fabricante(); if (!$fabricante->getInformacionFabricante($id)) { DwMessage::get('id_no_found'); return DwRedirect::toAction('listar'); } try { if (Fabricante::setFabricante('delete', array('id' => $fabricante->id))) { DwMessage::valid('La fabricante se ha eliminado correctamente!'); } } catch (KumbiaException $e) { DwMessage::error('Este fabricante no se puede eliminar porque se encuentra relacionada con otro registro.'); } return DwRedirect::toAction('listar'); }
/** * Método para ver */ public function ver($key, $order = 'order.perfil.asc', $page = 'pag.1') { $page = Filter::get($page, 'page') > 0 ? Filter::get($page, 'page') : 1; if (!($id = DwSecurity::isValidKey($key, 'show_perfil', 'int'))) { return DwRedirect::toAction('listar'); } $perfil = new Perfil(); if (!$perfil->find_first($id)) { DwMessage::get('id_no_found'); return DwRedirect::toAction('listar'); } $usuario = new Usuario(); $this->usuarios = $usuario->getUsuarioPorPerfil($perfil->id, $order, $page); $this->perfil = $perfil; $this->order = $order; $this->page_title = 'Información del Perfil'; $this->key = $key; }
/** * Callback que se ejecuta antes de guardar/modificar */ public function before_save() { $this->menu = Filter::get($this->menu, 'string'); $this->url = Filter::get($this->url, 'string'); if (empty($this->url)) { $this->url = '#'; } $this->icono = Filter::get($this->icono, 'string'); $this->posicion = Filter::get($this->posicion, 'int'); if (!empty($this->id) && $this->id <= 2) { //Para no editar el dashboard DwMessage::warning('Lo sentimos, pero este menú no se puede editar.'); return 'cancel'; } }
/** * Método para paginar resultados utilizando el método find_all_by_sql de los modelos <br> * * Retorna un PageObject que tiene los siguientes atributos: <br> * next: numero de pagina siguiente, si no hay pagina siguiente entonces es false <br> * prev: numero de pagina anterior, si no hay pagina anterior entonces es false <br> * current: numero de pagina actual <br> * total: total de paginas que se pueden mostrar <br> * items: array de items de la pagina <br> * counter: Número que lleva el conteo de la página <br> * size: Total de registros <br> * per_page: cantidad de elementos por pagina <br> * * * @param string $model modelo * @param string $sql consulta sql * @return stdClass */ public static function paginate_by_sql($model, $sql) { $params = Util::getParams(func_get_args()); $page_number = isset($params['page']) ? Filter::get($params['page'], 'numeric') : 1; //Numero de la página $per_page = isset($params['per_page']) ? Filter::get($params['per_page'], 'numeric') : DATAGRID; //Datos por página $counter = $page_number > 1 ? $page_number * $per_page - ($per_page - 1) : 1; //Determino el contador para utilizarlo en la vista $start = $per_page * ($page_number - 1); //Determino el offset $page = new stdClass(); //Instancia del objeto contenedor de pagina $total_items = $model->count_by_sql("SELECT COUNT(*) FROM ({$sql}) AS t"); //Se cuentan los registros $page->items = $model->find_all_by_sql($model->limit($sql, "offset: {$start}", "limit: {$per_page}")); //Se efectua la búsqueda //Se efectuan los cálculos para las paginas $page->next = $start + $per_page < $total_items ? $page_number + 1 : false; $page->prev = $page_number > 1 ? $page_number - 1 : false; $page->current = $page_number; $page->total_page = ceil($total_items / $per_page); if ($page->total_page < $page_number && $total_items > 0) { $page->prev = false; $url = Router::get('route'); $url = explode('pag', $url); $url = trim($url[0], '/'); DwMessage::error('La página solicitada no se encuentra en el paginador. <br />' . DwHtml::link($url, 'Regresar a la página 1')); } $page->counter = $total_items >= $counter ? $counter : 1; $page->size = $total_items; $page->per_page = $per_page; return $page; }
/** * Método para ver */ public function ver($key) { if (!($id = DwSecurity::isValidKey($key, 'shw_usuario', 'int'))) { return DwRedirect::toAction('listar'); } $usuario = new Usuario(); if (!$usuario->getInformacionUsuario($id)) { DwMessage::get('id_no_found'); return DwRedirect::toAction('listar'); } $estado = new EstadoUsuario(); $this->estados = $estado->getListadoEstadoUsuario($usuario->id); $acceso = new Acceso(); $this->accesos = $acceso->getListadoAcceso($usuario->id, 'todos', 'order.fecha.desc'); $this->usuario = $usuario; $this->page_title = 'Información del usuario'; }
/** * Método para resetear las configuraciones del sistema * @return type */ public function reset() { try { if (Sistema::reset()) { DwMessage::valid('El sistema se ha reseteado correctamente!'); } } catch (KumbiaException $e) { DwMessage::error('Se ha producido un error al resetear la configuración del sistema.'); } return DwRedirect::toAction('index'); }
/** * Método para restaurar el sistema * @param type $id */ public static function restoreBackup($id, $path = '') { $id = Filter::get($id, 'int'); if (empty($id)) { return FALSE; } $obj = new Backup(); if (!$obj->find_first($id)) { DwMessage::get('id_no_found'); return FALSE; } if (empty($path)) { $path = APP_PATH . 'temp/backup/'; } $file = $path . $obj->archivo; if (!is_file($file)) { DwMessage::error('Error: BKP-RES001. Se ha producido un error en la restauración del sistema. <br />No se pudo localizar el archivo de restaruación.'); return FALSE; } //Almaceno las copias de seguridad anteriores $old_backup = $obj->find('order: registrado_at ASC'); $system = $obj->_getSystem(TRUE); //Verifico el sistema operativo para la restauración $database = Config::get('config.application.database'); //tomo el entorno actual $config = $obj->_getConfig($database); //Tomo la configuración de conexión $exec = "gunzip < {$file} | {$system} -h " . $config['host'] . " -u " . $config['username'] . " --password="******" " . $config['name']; system($exec, $result); if (!$result) { //Inserto los backups anteriores foreach ($old_backup as $backup) { if ($backup->id >= $obj->id) { $obj->sql("REPLACE INTO `backup` (`id`,`usuario_id`,`denominacion`,`tamano`,`archivo`,`registrado_at`) VALUES ('{$backup->id}', '{$backup->usuario_id}', '{$backup->denominacion}', '{$backup->tamano}', '{$backup->archivo}', '{$backup->registrado_at}')"); } } if ($obj) { DwAudit::debug("Se ha restaurado el sistema con la copia de seguridad: {$obj->denominacion}"); } return $obj ? $obj : FALSE; } return FALSE; }
/** * Método para eliminar */ public function eliminar($key) { if (!($id = DwSecurity::isValidKey($key, 'eliminar_recurso', 'int'))) { return DwRedirect::toAction('listar'); } $recurso = new Recurso(); if (!$recurso->find_first($id)) { DwMessage::get('id_no_found'); return DwRedirect::toAction('listar'); } try { if ($recurso->delete()) { DwMessage::valid('El recurso se ha eliminado correctamente!'); } else { DwMessage::warning('Lo sentimos, pero este recurso no se puede eliminar.'); } } catch (KumbiaException $e) { DwMessage::error('Este recurso no se puede eliminar porque se encuentra relacionado con otro registro.'); } return DwRedirect::toAction('listar'); }
/** * Método para eliminar */ public function eliminar($key) { if (!($id = DwSecurity::isValidKey($key, 'del_profesion', 'int'))) { return DwRedirect::toAction('listar'); } $profesion = new Profesion(); if (!$profesion->getInformacionProfesion($id)) { DwMessage::get('id_no_found'); return DwRedirect::toAction('listar'); } try { if (Profesion::setProfesion('delete', array('id' => $profesion->id))) { DwMessage::valid('La profesion se ha eliminado correctamente!'); } } catch (KumbiaException $e) { DwMessage::error('Esta profesion no se puede eliminar porque se encuentra relacionada con otro registro.'); } return DwRedirect::toAction('listar'); }
/** * Método para eliminar */ public function eliminar($key) { if (!($id = DwSecurity::isValidKey($key, 'del_tiposolicitud', 'int'))) { return DwRedirect::toAction('listar'); } $tiposolicitud = new tiposolicitud(); if (!$tiposolicitud->getInformaciontiposolicitud($id)) { DwMessage::get('id_no_found'); return DwRedirect::toAction('listar'); } try { if (tiposolicitud::settiposolicitud('delete', array('id' => $tiposolicitud->id))) { DwMessage::valid('El tipo solicitud se ha eliminado correctamente!'); } } catch (KumbiaException $e) { DwMessage::error('Esta tipo de solicitud no se puede eliminar porque se encuentra relacionada con otro registro.'); } return DwRedirect::toAction('listar'); }
/** * Método para eliminar */ public function eliminar($key) { if (!($id = DwSecurity::isValidKey($key, 'del_sucursal', 'int'))) { return DwRedirect::toAction('listar'); } $sucursal = new Sucursal(); if (!$sucursal->getInformacionSucursal($id)) { DwMessage::get('id_no_found'); return DwRedirect::toAction('listar'); } try { if (Sucursal::setSucursal('delete', array('id' => $sucursal->id))) { DwMessage::valid('La sucursal se ha eliminado correctamente!'); } } catch (KumbiaException $e) { DwMessage::error('Esta sucursal no se puede eliminar porque se encuentra relacionada con otro registro.'); } return DwRedirect::toAction('listar'); }
/** * Callback que se ejecuta antes de guardar/modificar */ public function before_save() { $this->perfil = Filter::get($this->perfil, 'string'); $this->plantilla = Filter::get($this->plantilla, 'string'); $this->plantilla = !empty($this->plantilla) ? DwUtils::getSlug($this->plantilla, '_') : 'default'; if (!empty($this->id)) { if ($this->id == Perfil::SUPER_USUARIO) { DwMessage::warning('Lo sentimos, pero este perfil no se puede editar.'); return 'cancel'; } } $path = APP_PATH . 'views/_shared/templates/backend/' . $this->plantilla . '.phtml'; //Verifico si se encuentra el template if (!is_file($path)) { DwMessage::error('Lo sentimos, pero no hemos podidio ubicar la plantilla ' . $this->plantilla); return 'cancel'; } }