diff --git a/AportaContenido.php b/AportaContenido.php index 27cbb57..325daf1 100644 --- a/AportaContenido.php +++ b/AportaContenido.php @@ -28,6 +28,25 @@ define('FORMULARIO_ACCESO', '
Iniciar
'); define('MENSAJE_DEMO', 'Puede Iniciar sesión con
usuario demo
contraseña demo
'); define('USUARIO_INCORRECTO', '

'); +define('CREDITOS', ''); // Esta clase aportará el contenido a la plantilla class AportaContenido { @@ -181,8 +200,9 @@ class AportaContenido { list($opcion, $parametro) = explode("&", $this->opcionActual); switch ($opcion) { case 'principal': // contenido inicial - return '

' . PROGRAMA . '' . - '


' . PIE; + $creditos = "$('#creditos').modal({keyboard: false});"; + return '

' . PROGRAMA . '' . + '


' . PIE . CREDITOS; case 'articulos': case 'ubicaciones': case 'test': diff --git a/CHANGELOG b/CHANGELOG index 6d8ea7d..c6da419 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +-Inventario.php llama al instalador si la aplicación no está instalada +-Añadido dialogo modal de Créditos cuando se pulsa sobre el gráfico de código de barras de la aplicación -Quitados los usuarios de ejemplo en el archivo setup.sql -Creado el programa instalar.php que permitirá configurar el acceso a la base de datos, comprobar la configuración del servidor y la creación del usuario administrador -Añadido un parámetro en el archivo configuracion.inc que permite o no ejecutar el programa instalar.php diff --git a/Instalar.php b/Instalar.php index 72269b6..d031f7d 100644 --- a/Instalar.php +++ b/Instalar.php @@ -24,7 +24,8 @@ function __autoload($class_name) { require_once $class_name . '.php'; } -include 'inc/configuracion.inc'; + +require_once 'inc/configuracion.inc'; define('NUMPASOS', 3); //Para el Paso 1 define('MINBYTES', 4096000); // post_max_size y max_upload van con esto @@ -35,13 +36,11 @@ define('TMP', './tmp'); define('INC', './inc'); $instalar = new Instalar(); -if (!$instalar->error) { - echo $instalar->ejecuta(); -} else { - echo $instalar->cabecera(); - echo $instalar->panelMensaje($instalar->error_msj, "danger", "¡ERROR!"); - echo ""; +if ($instalar->error) { + echo $instalar->panelError(); + return; } +echo $instalar->ejecuta(); class Instalar { private $contenido; @@ -173,6 +172,12 @@ class Instalar { } } + private function botonVolver($enlace) + { + $boton = ''; + return $boton; + } + private function retornaLabel($error, $mensaje, $tipo = "danger") { if ($error) { @@ -230,18 +235,61 @@ class Instalar { return $validar; } + private function actualizaConfiguracion($grabar, $campos, &$datos) + { + $conf = new Configuracion(); + $fichero = $conf->obtieneFichero(); + $datosFichero = explode("\n", $fichero); + if ($grabar) { + $fsalida = @fopen(CONFIGTMP, "wb"); + } + foreach ($datosFichero as $linea) { + if (stripos($linea, "DEFINE") !== false) { + $conf->obtieneDatos($linea, $clave, $valor); + if (stripos($campos, $clave) !== false) { + if ($grabar) { + $linea = str_replace($valor, $datos[$clave], $linea); + $valor = $datos[$clave]; + } + } + $datos[$clave] = $valor; + } + $registro = substr($linea, 0, 2) == "?>" ? $linea : $linea . "\n"; + if ($grabar) { + fwrite($fsalida, $registro); + } + } + if ($grabar) { + fclose($fsalida); + unlink(CONFIGURACION); + rename(CONFIGTMP, CONFIGURACION); + } + } + // Cuestiones de la base de datos private function paso1() { - $grabar = isset($_POST['SERVIDOR']); - //Lee y si hace falta actualiza los datos del formulario en el fichero de configuración - $conf = new Configuracion(); + $grabar = isset($_POST['SERVIDOR']); + $campos = 'SERVIDOR,PUERTO,BASEDATOS,USUARIO,CLAVE'; + //Lee y si hace falta actualiza los datos del formulario en el fichero de configuración + if ($grabar) { + foreach ($_POST as $clave => $valor) { + $datos[$clave] = $valor; + } + } else { + $datos = array(); + } + $this->actualizaConfiguracion($grabar, $campos, $datos); + if ($grabar && $this->validaPaso1()) { + //Pasa al paso siguiente + return $this->paso2(); + } + /*$conf = new Configuracion(); $fichero = $conf->obtieneFichero(); $datos = explode("\n", $fichero); if ($grabar) { $fsalida = @fopen(CONFIGTMP, "wb"); } - $campos = 'SERVIDOR,PUERTO,BASEDATOS,USUARIO,CLAVE'; foreach ($datos as $linea) { if (stripos($linea, "DEFINE") !== false) { $conf->obtieneDatos($linea, $clave, $valor); @@ -266,7 +314,7 @@ class Instalar { //Pasa al paso siguiente return $this->paso2(); } - } + }*/ $info = '
'; $info .= ''; + $info .= $this->botonVolver("instalar.php"); $info .= $this->validaPaso1() ? $this->retornaBoton(false, "instalar.php?paso=1", false) : $this->retornaBoton(true, "instalar.php?paso=1", false); $info .= '
'; $panel = $this->panelMensaje($info, 'primary', 'PASO 2: Configuración de la Base de Datos.'); @@ -311,7 +360,7 @@ class Instalar { if (isset($_POST['usuario'])) { //ha enviado el formulario. //Crea la base de datos - $borra_database = "DROP DATABASE IF EXISTS " . BASEDATOS . ";"; + $borra_database = "DROP DATABASE " . BASEDATOS . " ;"; $database = "CREATE DATABASE " . BASEDATOS . " DEFAULT CHARACTER SET utf8;"; $articulos = "CREATE TABLE `Articulos` ( `id` smallint(6) NOT NULL auto_increment COMMENT 'ordenable', @@ -391,6 +440,9 @@ class Instalar { if ($sql->error()) { return $this->panelMensaje($sql->mensajeError(), "danger", "ERROR"); } + $campos="INSTALADO"; + $datos['INSTALADO'] = "sí"; + $this->actualizaConfiguracion(true, $campos, $datos); return $this->resumen(); } @@ -415,7 +467,8 @@ class Instalar {
- + ' . $this->botonVolver("instalar.php?paso=1") . ' +
@@ -507,9 +560,29 @@ class Instalar { '; } + public function panelError() + { + $mensaje = $this->cabecera(); + $mensaje .= $this->panelMensaje($this->error_msj, "danger", "¡ERROR!"); + $mensaje .= ""; + return $mensaje; + } + private function resumen() { - return 'Todo se ha hecho correctamente'; + $info = ''; + $info .= $this->retornaBoton(false, "index.php", true); + $panel = $this->panelMensaje($info, 'success', 'Instalación finalizada.'); + return $panel; } } diff --git a/Inventario.php b/Inventario.php index 2e94ec3..7fb52d9 100644 --- a/Inventario.php +++ b/Inventario.php @@ -40,6 +40,11 @@ class Inventario { // Analizamos la cadena de solicitud para saber // qué opción es la actual $this->opcActual = $_SERVER['QUERY_STRING'] == '' ? 'principal' : $_SERVER['QUERY_STRING']; + //Si el programa no está instalado, llama al instalador. + if (INSTALADO == "no") { + header('location: instalar.php'); + return; + } // Iniciamos una sesión session_start(); //Conexión con la base de datos. diff --git a/Sql.php b/Sql.php index 65a1f14..12aa9b3 100644 --- a/Sql.php +++ b/Sql.php @@ -63,7 +63,7 @@ class Sql { */ public function __construct($servidor,$usuario,$clave,$baseDatos) { - $this->bdd=new mysqli($servidor,$usuario,$clave,$baseDatos); + $this->bdd = @new mysqli($servidor,$usuario,$clave,$baseDatos); if (mysqli_connect_errno()) { $this->mensajeError='

Fallo al conectar con el servidor MySQL.

'; $this->mensajeError.="Servidor [".$servidor ."] usuario=[".$usuario."] clave [".$clave."] base [".$baseDatos."]"; diff --git a/inc/configuracion.inc b/inc/configuracion.inc index 0e9a2e9..e075ade 100644 --- a/inc/configuracion.inc +++ b/inc/configuracion.inc @@ -25,7 +25,7 @@ require_once 'version.inc'; define('SERVIDOR', 'localhost'); //Ubicación del servidor MySQL define('PUERTO', '3306'); //Puerto donde se conecta a MySQL -define('BASEDATOS', 'Inventario2'); //Nombre de la base de datos. +define('BASEDATOS', 'Inventario'); //Nombre de la base de datos. define('BASEDATOSTEST', 'Inventario_test'); //Base de datos para los tests. define('USUARIO', 'test'); //Usuario con permisos de lectura/escritura en la base de datos define('CLAVE', 'tset'); //contraseña del usuario. @@ -40,5 +40,5 @@ define('COLORFON', '#ffb878'); //Color del fondo de la pantalla define('MYSQLDUMP', '/usr/local/bin/mysqldump'); //camino a mysqldump define('GZIP', '/usr/bin/gzip'); //Camino a gzip define('IMAGEDATA', 'img.data'); //Directorio donde se almacenarán las imágenes -define('INSTALADO', 'no'); //no = permite la ejecución de instalar.php +define('INSTALADO', 'sí') //Indicador que permite ejecutar instalar.php ?>