/** * Setea un mensaje mkc-flash * * @param string $name Tipo de mensaje y para CSS class='$name'. * @param string $msg Mensaje a mostrar * @param boolean $audit Indica si el mensaje se almacena como auditoría */ public static function set($name, $msg, $audit = FALSE) { //Verifico si hay mensajes almacenados en sesión por otro request. if (self::has('mkc-messages')) { self::$_contentMsj = Session::get('mkc-messages'); } //Guardo el mensaje en el array if (isset($_SERVER['SERVER_SOFTWARE'])) { self::$_contentMsj[] = '<div class="alert alert-block alert-' . $name . '"><button type="button" class="close" data-dismiss="alert">×</button>' . $msg . '</div>' . PHP_EOL; } else { self::$_contentMsj[] = $name . ': ' . Filter::get($msg, 'striptags') . PHP_EOL; } //Almaceno los mensajes guardados en una variable de sesión, para mostrar los mensajes provenientes de otro request. Session::set('mkc-messages', self::$_contentMsj); //Verifico si el mensaje se almacena como looger if ($audit) { $name == 'success' ? MkcAudit::debug($msg) : MkcAudit::$name($msg); } }
/** * 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 setUsuario($method, $data, $optData = null) { $obj = new Usuario($data); if ($optData) { $obj->dump_result_self($optData); } if (!empty($obj->id)) { //Si va a actualizar $old = new Usuario(); $old->find_first($obj->id); if (!empty($obj->oldpassword)) { //Si cambia de claves if (empty($obj->password) or empty($obj->repassword)) { MkcMessage::error("Indica la nueva contraseña"); return false; } $obj->oldpassword = md5(sha1($obj->oldpassword)); if ($obj->oldpassword !== $old->password) { MkcMessage::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)) { MkcMessage::error("Indica la contraseña para el inicio de sesión"); return false; } $obj->password = md5(sha1($obj->password)); $obj->repassword = md5(sha1($obj->repassword)); if ($obj->password !== $obj->repassword) { MkcMessage::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; } } $rs = $obj->{$method}(); if ($rs) { $method == 'create' ? MkcAudit::debug("Se ha registrado el usuario {$obj->login} en el sistema") : MkcAudit::debug("Se ha modificado la información del usuario {$obj->login}"); } return $rs ? $obj : FALSE; }
/** * 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)) { MkcMessage::get('id_no_found'); return FALSE; } if (empty($path)) { $path = APP_PATH . 'temp/backup/'; } $file = $path . $obj->archivo; if (!is_file($file)) { MkcMessage::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) { MkcAudit::debug("Se ha restaurado el sistema con la copia de seguridad: {$obj->denominacion}"); } return $obj ? $obj : FALSE; } return FALSE; }
/** * Callback que se ejecuta desupés de crear un registro */ public function after_create() { //Obtengo el usuario por la relación definida en el initialize $usuario = $this->getUsuario(); if ($this->estado_usuario == self::COD_ACTIVO) { MkcAudit::debug("Se activa el acceso al usuario {$usuario->login}. Motivo: {$this->descripcion}"); } else { if ($this->estado_usuario == self::COD_BLOQUEADO) { MkcAudit::debug("Se bloquea el acceso al sistema al usuario {$usuario->login}. Motivo: {$this->descripcion}"); } } }