/** * 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) { MkcMessage::info('Lo sentimos, pero ya existe una persona registrada con el mismo número y tipo 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; }
/** * Método para cerrar sesión */ public function salir($js = '') { if (Usuario::setSession('close')) { MkcMessage::valid("La sesión ha sido cerrada correctamente."); } if ($js == 'no-script') { MkcMessage::info('Activa el uso de JavaScript en su navegador para poder continuar.'); } return MkcRedirect::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(null); } /** * Verifico que haya iniciado sesión */ if (!MkcAuth::isLogged()) { //Verifico que no genere una redirección infinita if ($this->controller_name != 'login' && ($this->action_name != 'entrar' && $this->action_name != 'salir')) { MkcMessage::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 { MkcRedirect::toLogin('sistema/login/entrar/'); } return false; } } else { if (MkcAuth::isLogged() && $this->controller_name != 'login') { $acl = new MkcAcl(); //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 { MkcMessage::info($msj); MkcRedirect::to("dashboard"); } return FALSE; } } if (!$acl->check(Session::get('perfil_id'))) { MkcMessage::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 los logs 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)) { MkcMessage::info('Selecciona la fecha del archivo'); return MkcRedirect::toAction('index'); } $page = Filter::get($page, 'page') > 0 ? Filter::get($page, 'page') : 1; $loggers = Sistema::getLogger($fecha, $page); $this->loggers = $loggers; $this->fecha = $fecha; $this->page_module = 'Logs 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)) { MkcMessage::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 abrir y cerrar sesión * @param type $opt * @return boolean */ public static function setSession($opt = 'open', $user = NULL, $pass = NULL, $mode = NULL) { if ($opt == 'close') { $usuario = Session::get('id'); if (MkcAuth::logout()) { //Registro la salida Acceso::setAcceso(Acceso::SALIDA, $usuario); return true; } MkcMessage::error(MkcAuth::getError()); } else { if ($opt == 'open') { if (MkcAuth::isLogged()) { return true; } else { if (MkcForm::isValidToken()) { if (MkcAuth::login(array('login' => $user), array('password' => sha1($pass)), $mode)) { $usuario = self::getUsuarioLogueado(); if ($usuario->id != 2 && $usuario->estado_usuario != EstadoUsuario::ACTIVO) { MkcAuth::logout(); MkcMessage::error('Lo sentimos pero tu cuenta se encuentra inactiva. <br />Si esta información es incorrecta contacta al administrador del sistema.'); return false; } Session::set('nombre', $usuario->nombre); Session::set('apellido', $usuario->apellido); Session::set('cargo', $usuario->cargo); Session::set('fotografia', $usuario->fotografia); Session::set("ip", MkcUtils::getIp()); Session::set('perfil', $usuario->perfil); Session::set('tema', $usuario->tema); Session::set('app_ajax', $usuario->app_ajax); //Registro el acceso Acceso::setAcceso(Acceso::ENTRADA, $usuario->id); MkcMessage::info("¡ Bienvenido <strong>{$usuario->login}</strong> !."); return true; } else { MkcMessage::error(MkcAuth::getError()); } } else { MkcMessage::info('La llave de acceso ha caducado. <br />Por favor ' . Html::link('sistema/login/entrar/', 'recarga la página <b>aquí</b>')); } } } else { MkcMessage::error('No se ha podido establecer la sesión actual.'); } } return false; }
/** * Método para buscar */ public function buscar($field = 'nombre', $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)) { MkcMessage::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 buscar */ public function buscar($field = 'denominacion', $value = 'none', $order = 'order.id.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; $backup = new Backup(); $backups = $backup->getAjaxBackup($field, $value, $order, $page); if (empty($backups->items)) { MkcMessage::info('No se han encontrado registros'); } $this->backups = $backups; $this->order = $order; $this->field = $field; $this->value = $value; $this->page_title = 'Búsqueda de copias de seguridad'; }
/** * Método para las execpciones */ public static function exception(KumbiaException $e) { if (PRODUCTION) { $counter = Session::has('exception_counter') ? Session::get('exception_counter') : 1; Session::set('exception_counter', $counter++); MkcMessage::warning('Oops! hemos realizado algún procedimiento mal... <br />Inténtalo nuevamente!'); } else { MkcMessage::error($e->getMessage()); MkcMessage::error("Detalle del error: " . $e->getTraceAsString()); } if (Session::has('exception_counter')) { if (Session::get('exception_counter') > 2) { MkcMessage::info('Si el problema persiste contacta con el administrador del sistema.'); Sesion::set('exception_counter', 0); } } }
/** * 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 $optData: Data adicional para autocargar * * return object ActiveRecord */ public static function setRecurso($method, $data, $optData = null) { $obj = new Recurso($data); //Se carga los datos con los de las tablas if ($optData) { //Se carga información adicional al objeto $obj->dump_result_self($optData); } //Verifico que no exista otro recurso, y si se encuentra inactivo lo active $conditions = empty($obj->id) ? "modulo='{$obj->modulo}' AND controlador='{$obj->controlador}' AND accion='{$obj->accion}'" : "modulo='{$obj->modulo}' AND controlador='{$obj->controlador}' AND accion='{$obj->accion}' AND id != '{$obj->id}'"; $old = new Recurso(); if ($old->find_first($conditions)) { if ($method == 'create' && $old->activo != Recurso::ACTIVO) { $obj->id = $old->id; $obj->activo = Recurso::ACTIVO; $method = 'update'; } else { MkcMessage::info('Ya existe un recurso registrado bajo esos parámetros.'); return FALSE; } } return $obj->{$method}() ? $obj : FALSE; }
/** * Método para inactivar/reactivar */ public function estado($tipo, $key) { if (!($id = MkcSecurity::isValidKey($key, $tipo . '_usuario', 'int'))) { return MkcRedirect::toAction('listar'); } $usuario = new Usuario(); if (!$usuario->getInformacionUsuario($id)) { MkcMessage::get('id_no_found'); return MkcRedirect::toAction('listar'); } if ($tipo == 'reactivar' && $usuario->estado_usuario == EstadoUsuario::ACTIVO) { MkcMessage::info('El usuario ya se encuentra activo.'); return MkcRedirect::toAction('listar'); } else { if ($tipo == 'bloquear' && $usuario->estado_usuario == EstadoUsuario::BLOQUEADO) { MkcMessage::info('El usuario ya se encuentra bloqueado.'); return MkcRedirect::toAction('listar'); } } if (Input::hasPost('estado_usuario')) { if (EstadoUsuario::setEstadoUsuario($tipo, Input::post('estado_usuario'), array('usuario_id' => $usuario->id))) { $tipo == 'reactivar' ? MkcMessage::valid('El usuario se ha reactivado correctamente!') : MkcMessage::valid('El usuario se ha bloqueado correctamente!'); return MkcRedirect::toAction('listar'); } } $this->page_title = $tipo == 'reactivar' ? 'Reactivación de usuario' : 'Bloqueo de usuario'; $this->usuario = $usuario; }
/** * Método para inactivar/reactivar */ public function estado($tipo, $key) { if (!($id = MkcSecurity::isValidKey($key, $tipo . '_recurso', 'int'))) { return MkcRedirect::toAction('listar'); } $recurso = new Recurso(); if (!$recurso->find_first($id)) { MkcMessage::get('id_no_found'); } else { if ($recurso->id <= 16) { MkcMessage::warning('Lo sentimos, pero este recurso no se puede editar.'); return MkcRedirect::toAction('listar'); } if ($tipo == 'inactivar' && $recurso->activo == Recurso::INACTIVO) { MkcMessage::info('El recurso ya se encuentra inactivo'); } else { if ($tipo == 'reactivar' && $recurso->activo == Recurso::ACTIVO) { MkcMessage::info('El recurso ya se encuentra activo'); } else { $estado = $tipo == 'inactivar' ? Recurso::INACTIVO : Recurso::ACTIVO; if (Recurso::setRecurso('update', $recurso->to_array(), array('id' => $id, 'activo' => $estado))) { $estado == Recurso::ACTIVO ? MkcMessage::valid('El recurso se ha reactivado correctamente!') : MkcMessage::valid('El recurso se ha inactivado correctamente!'); } } } } return MkcRedirect::toAction('listar'); }
/** * Método para inactivar/reactivar */ public function estado($tipo, $key) { if (!($id = MkcSecurity::isValidKey($key, $tipo . '_menu', 'int'))) { return MkcRedirect::toAction('listar'); } $menu = new Menu(); if (!$menu->find_first($id)) { MkcMessage::get('id_no_found'); } else { if ($menu->id <= 2) { MkcMessage::warning('Lo sentimos, pero este menú no se puede editar.'); return MkcRedirect::toAction('listar'); } if ($tipo == 'inactivar' && $menu->activo == Menu::INACTIVO) { MkcMessage::info('El menú ya se encuentra inactivo'); } else { if ($tipo == 'reactivar' && $menu->activo == Menu::ACTIVO) { MkcMessage::info('El menú ya se encuentra activo'); } else { $estado = $tipo == 'inactivar' ? Menu::INACTIVO : Menu::ACTIVO; if (Menu::setMenu('update', $menu->to_array(), array('id' => $id, 'activo' => $estado))) { $estado == Menu::ACTIVO ? MkcMessage::valid('El menú se ha reactivado correctamente!') : MkcMessage::valid('El menú se ha inactivado correctamente!'); } } } } return MkcRedirect::toAction('listar'); }
/** * 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 $optData: Data adicional para autocargar * * return object ActiveRecord */ public static function setPerfil($method, $data, $optData = null) { $obj = new Perfil($data); //Se carga los datos con los de las tablas if ($optData) { //Se carga información adicional al objeto $obj->dump_result_self($optData); } //Verifico que no exista otro perfil, y si se encuentra inactivo lo active $conditions = empty($obj->id) ? "perfil = '{$obj->perfil}'" : "perfil = '{$obj->perfil}' AND id != '{$obj->id}'"; $old = new Perfil(); if ($old->find_first($conditions)) { if ($method == 'create' && $old->estado != Perfil::ACTIVO) { $obj->id = $old->id; $obj->estado = Perfil::ACTIVO; $method = 'update'; } else { MkcMessage::info('Ya existe un perfil registrado bajo ese nombre.'); return FALSE; } } return $obj->{$method}() ? $obj : FALSE; }
/** * 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 $optData: Data adicional para autocargar * * return object ActiveRecord */ public static function setMenu($method, $data, $optData = null) { $obj = new Menu($data); //Se carga los datos con los de las tablas if ($optData) { //Se carga información adicional al objeto $obj->dump_result_self($optData); } //Verifico que no exista otro menu, y si se encuentra inactivo lo active $conditions = empty($obj->id) ? "recurso_id='{$obj->recurso_id}' AND visibilidad={$obj->visibilidad}" : "recurso_id='{$obj->recurso_id}' AND visibilidad={$obj->visibilidad} AND id != '{$obj->id}'"; $old = new Menu(); if ($old->find_first($conditions)) { if ($method == 'create' && $old->activo != Menu::ACTIVO) { $obj->id = $old->id; $obj->activo = Menu::ACTIVO; $method = 'update'; } else { MkcMessage::info('Ya existe un menú registrado para ese recurso y visibilidad.'); return FALSE; } } return $obj->{$method}() ? $obj : FALSE; }
/** * Método para inactivar/reactivar */ public function estado($tipo, $key) { if (!($id = MkcSecurity::isValidKey($key, $tipo . '_perfil', 'int'))) { return MkcRedirect::toAction('listar'); } $perfil = new Perfil(); if (!$perfil->find_first($id)) { MkcMessage::get('id_no_found'); } else { if ($tipo == 'inactivar' && $perfil->estado == Perfil::INACTIVO) { MkcMessage::info('El perfil ya se encuentra inactivo'); } else { if ($tipo == 'reactivar' && $perfil->estado == Perfil::ACTIVO) { MkcMessage::info('El perfil ya se encuentra activo'); } else { $estado = $tipo == 'inactivar' ? Perfil::INACTIVO : Perfil::ACTIVO; if (Perfil::setPerfil('update', $perfil->to_array(), array('id' => $id, 'estado' => $estado))) { $estado == Perfil::ACTIVO ? MkcMessage::valid('El perfil se ha reactivado correctamente!') : MkcMessage::valid('El perfil se ha inactivado correctamente!'); } } } } return MkcRedirect::toAction('listar'); }