diff --git a/AportaContenido.php b/AportaContenido.php index 5c15cb5..822ebc1 100644 --- a/AportaContenido.php +++ b/AportaContenido.php @@ -118,14 +118,14 @@ class AportaContenido { public function __call($metodo, $parametros) { switch ($metodo) { // Dependiendo del método invocado case 'titulo': // devolvemos el título - return APLICACION; + return PROGRAMA.VERSION; case 'usuario': if ($this->registrado) return "Usuario=$this->usuario"; else return ''; case 'fecha': return $this->fechaActual(); - case 'aplicacion': return APLICACION; + case 'aplicacion': return PROGRAMA.VERSION; case 'menu': // el menú if ($this->registrado) { return $this->miMenu->insertaMenu(); diff --git a/Configuracion.php b/Configuracion.php index 496998f..45dfd02 100644 --- a/Configuracion.php +++ b/Configuracion.php @@ -1,231 +1,164 @@ . - * - */ - class Configuracion { - private $nombreCentro; - private $numFilas; - private $estilo; - private $servidor; - private $baseDatos; - private $usuario; - private $clave; - private $configuracion="inc/configuracion.inc"; - private $confNueva="inc/configuracion.new"; - private $confAnterior="inc/configuracion.ant"; - private $plantilla; - private $colorLateral; - private $colorFondo; - private $mysqldump; //comando mysqldump para la copia de seguridad - private $gzip; //comando gzip para comprimir la copia de seguridad - - public function ejecuta() - { - $fichero=file_get_contents($this->configuracion,FILE_TEXT); - $datos=explode("\n",$fichero); - $grabar=isset($_POST['servidor']); - if ($grabar) { - $fsalida=@fopen($this->confNueva,"wb"); - } - foreach($datos as $linea) { - if (stripos($linea,"DEFINE")!==false) { - $filtro=str_replace("'","",$linea); - list($clave,$valor)=explode(",",$filtro); - list($resto,$campo)=explode("(",$clave); - list($valor,$resto)=explode(")",$valor); - //$salida.="[$campo]=[$valor]
\n"; - switch ($campo) { - case 'CENTRO': - $this->nombreCentro=$valor; - if ($grabar) { - $linea=str_replace($valor, $_POST['centro'],$linea); - $this->nombreCentro=$_POST['centro']; - } - break; - case 'NUMFILAS': - $this->numFilas=$valor; - if ($grabar) { - $linea=str_replace($valor, $_POST['filas'],$linea); - $this->numFilas=$_POST['filas']; - } - break; - case 'ESTILO': - $this->estilo=$valor; - if ($grabar) { - $linea=str_replace($valor, $_POST['estilo'],$linea); - $this->estilo=$_POST['estilo']; - } - break; - case 'PLANTILLA': - $this->plantilla=$valor; - if ($grabar) { - $linea=str_replace($valor, $_POST['plantilla'],$linea); - $this->plantilla=$_POST['plantilla']; - } - break; - case 'SERVIDOR': - $this->servidor=$valor; - if ($grabar) { - $linea=str_replace($valor, $_POST['servidor'],$linea); - $this->servidor=$_POST['servidor']; - } - break; - case 'BASEDATOS': - $this->baseDatos=$valor; - if ($grabar) { - $linea=str_replace($valor, $_POST['baseDatos'],$linea); - $this->baseDatos=$_POST['baseDatos']; - } - break; - case 'USUARIO': - $this->usuario=$valor; - if ($grabar) { - $linea=str_replace($valor, $_POST['usuario'],$linea); - $this->usuario=$_POST['usuario']; - } - break; - case 'CLAVE': - $this->clave=$valor; - if ($grabar) { - $linea=str_replace($valor, $_POST['clave'],$linea); - $this->clave=$_POST['clave']; - } - break; - case 'COLORLAT': - $valor = trim($valor); - $this->colorLateral = $valor; - if ($grabar) { - $linea=str_replace($valor,$_POST['colorLat'],$linea); - $this->colorLateral=$_POST['colorLat']; - } - break; - case 'COLORFON': - $valor = trim($valor); - $this->colorFondo = $valor; - if ($grabar) { - $linea=str_replace($valor,$_POST['colorFon'],$linea); - $this->colorFondo=$_POST['colorFon']; - } - break; - case 'MYSQLDUMP': - $valor = trim($valor); - $this->mysqldump = $valor; - if ($grabar) { - $linea=str_replace($valor,$_POST['mysqldump'],$linea); - $this->mysqldump=$_POST['mysqldump']; - } - break; - case 'GZIP': - $valor = trim($valor); - $this->gzip = $valor; - if ($grabar) { - $linea=str_replace($valor,$_POST['gzip'],$linea); - $this->gzip=$_POST['gzip']; - } - break; - } - } - if ($grabar) { - $registro=substr($linea,0,2)=="?>"?$linea:$linea."\n"; - fwrite($fsalida,$registro); - } - } - $salida.=$this->formulario(); - if ($grabar) { - //$salida.=''; - $salida.='

Configuración guardada correctamente

'; - fclose($fsalida); - //unlink($this->confAnterior); - rename($this->configuracion,$this->confAnterior); - rename($this->confNueva,$this->configuracion); - unlink($this->confAnterior); - } - return $salida; + +/** + * @package Inventario + * @copyright Copyright (c) 2008, Ricardo Montañana Gómez + * @license http://www.gnu.org/licenses/gpl-3.0.txt + * This file is part of Inventario. + * Inventario is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Inventario is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Inventario. If not, see . + * + */ +class Configuracion { + private $configuracion = "inc/configuracion.inc"; + private $confNueva = "inc/configuracion.new"; + private $confAnterior = "inc/configuracion.ant"; + private $datosConf; + //Campos del fichero de configuración que se van a editar. + private $lista = array('SERVIDOR', 'BASEDATOS', 'BASEDATOSTEST', 'USUARIO', 'CLAVE', 'CENTRO', 'NUMFILAS', 'ESTILO', 'PLANTILLA', 'COLORLAT', 'COLORFON', 'MYSQLDUMP', 'GZIP'); + private $campos; + + public function __construct() + { + $this->campos = implode(",", $this->lista); + } + + //Hecho público para poder efectuar los tests correspondientes. + public function obtieneFichero() + { + return file_get_contents($this->configuracion, FILE_TEXT); + } + + public function obtieneLista() + { + return $this->lista; + } + + public function obtieneDatos($linea, &$clave, &$valor) + { + $filtro = str_replace("'", "", $linea); + list($clave, $valor) = explode(",", $filtro); + list($resto, $campo) = explode("(", $clave); + list($valor, $resto) = explode(")", $valor); + list($resto, $clave) = explode("(", $clave); + $valor = trim($valor); + } + + public function ejecuta() { + $fichero = $this->obtieneFichero(); + $datos = explode("\n", $fichero); + $grabar = isset($_POST['SERVIDOR']); + if ($grabar) { + $fsalida = @fopen($this->confNueva, "wb"); } - private function formulario() - { - $coloresLateral = array( "Original" => "#C4FAEC", "Verde" => "#7bd148", "Azul marino" => "#5484ed", "Azul" => "#a4bdfc", "Turquesa" => "#46d6db", - "Verde claro" => "#7ae7bf", "Verde oscuro" => "#51b749", "Amarillo" => "#fbd75b", "Naranja" => "#ffb878", "Morado" => "#6633FF", - "Rojo oscuro" => "#dc2127", "Púrpura" => "#dbadff", "Gris" => "#e1e1e1"); - $coloresFondo = array( "Verde" => "#7bd148", "Azul marino" => "#5484ed", "Azul" => "#a4bdfc", "Turquesa" => "#46d6db", - "Verde claro" => "#7ae7bf", "Verde oscuro" => "#51b749", "Amarillo" => "#fbd75b", "Naranja" => "#ffb878", "Rojo" => "#ff887c", - "Rojo oscuro" => "#dc2127", "Púrpura" => "#dbadff", "Gris" => "#e1e1e1", "Original" => '#F3FEC8'); - $personal=$this->estilo=="personal"?'selected':' '; - $bluecurve=$this->estilo=="bluecurve"?'selected':' '; - $cristal=$this->estilo=="cristal"?'selected':' '; - $normal=$this->plantilla=="normal"? 'selected':' '; - $bootstrap=$this->plantilla=="bootstrap" ? 'selected':' '; - $salida='
'; - //$salida.='

'; - $salida.='

'; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.=''; - $salida.='

'; - $salida.=''; - $salida.=""; - //$salida.="
fondo=[$this->colorFondo] lateral=[$this->colorLateral]
"; - return $salida; - } + return $salida; } + +} + ?> \ No newline at end of file diff --git a/InformePDF.php b/InformePDF.php index d6ad37d..b94088b 100644 --- a/InformePDF.php +++ b/InformePDF.php @@ -55,7 +55,7 @@ class InformePDF { //echo $def->Titulo.$def->Cabecera; $this->pdf->Open(); $this->pdf->setAuthor(AUTOR,true); - $creador = CENTRO . " " . APLICACION; + $creador = CENTRO . " " . PROGRAMA.VERSION; $this->pdf->setCreator(html_entity_decode($creador),true); $this->pdf->setSubject($this->def->Titulo,true); $this->pdf->setAutoPageBreak(true, 10); diff --git a/Pdf_mysql_table.php b/Pdf_mysql_table.php index a9d99a9..402a9e9 100644 --- a/Pdf_mysql_table.php +++ b/Pdf_mysql_table.php @@ -61,7 +61,7 @@ class Pdf_mysql_table extends Fpdf //Titulo $fecha=strftime("%d-%b-%Y %H:%M"); $this->SetFont('Arial','',8); - $this->Cell(0,4,html_entity_decode(CENTRO . " " . APLICACION,ENT_COMPAT | ENT_HTML401,'ISO-8859-1'),0,1,'L'); + $this->Cell(0,4,html_entity_decode(CENTRO . " " . PROGRAMA . VERSION,ENT_COMPAT | ENT_HTML401,'ISO-8859-1'),0,1,'L'); $this->SetFont('Arial','',18); $this->Cell(0,6,utf8_decode($this->titulo),0,1,'C'); $this->SetFont('Arial','',8); diff --git a/inc/configuracion.inc b/inc/configuracion.inc index ae07b2b..b06ed34 100644 --- a/inc/configuracion.inc +++ b/inc/configuracion.inc @@ -20,20 +20,20 @@ * along with Inventario. If not, see . * */ -define('AUTOR','Ricardo Montañana Gómez'); -define('SERVIDOR','localhost'); //Ubicación del servidor MySQL -define('BASEDATOS','Inventario4'); //Nombre de la base de datos. -define('USUARIO','test'); //Usuario con permisos de lectura/escritura en la base de datos -define('CLAVE','tset'); //contraseña del usuario. -define('VERSION','1.02'); -define('PROGRAMA','Gestión de Inventario.'); -define('CENTRO','I.E.S.O. Pascual Serrano'); -define('APLICACION',PROGRAMA.VERSION); -define('NUMFILAS',17); // Número de registros a mostrar en las pantallas de consulta iniciales -define('PAUSA',2);//Nº segundos de pausa para mostrar mensaje id insertado -define('ESTILO','personal'); //Estilo de los iconos de edición (personal, personal, personal) -define('PLANTILLA','bootstrap'); //Estilo de la plantilla y recursos a utilizar -define('COLORLAT', '#7ae7bf'); //Color de la barra de menú lateral +define('AUTOR', 'Ricardo Montañana Gómez'); +define('SERVIDOR', 'localhost'); //Ubicación del servidor MySQL +define('BASEDATOS', 'Inventario4'); //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. +define('VERSION', '1.02'); +define('PROGRAMA', 'Gestión de Inventario.'); +define('CENTRO', 'I.E.S.O. Pascual Serrano'); +define('NUMFILAS', '17'); // Número de registros a mostrar en las pantallas de consulta iniciales +define('PAUSA', '2');//Nº segundos de pausa para mostrar mensaje id insertado +define('ESTILO', 'personal'); //Estilo de los iconos de edición (personal, personal, personal) +define('PLANTILLA', 'bootstrap'); //Estilo de la plantilla y recursos a utilizar +define('COLORLAT', '#46d6db'); //Color de la barra de menú lateral define('COLORFON', '#a4bdfc'); //Color del fondo de la pantalla define('MYSQLDUMP', '/usr/local/bin/mysqldump'); //camino a mysqldump define('GZIP', '/usr/bin/gzip'); //Camino a gzip diff --git a/tests/ConfiguracionTest.php b/tests/ConfiguracionTest.php new file mode 100644 index 0000000..c71ceac --- /dev/null +++ b/tests/ConfiguracionTest.php @@ -0,0 +1,71 @@ +config = new Configuracion; + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() { + + } + + /** + * @covers Configuracion::ejecuta + */ + public function testEjecuta() { + $this->assertFileExists('inc/Configuracion.inc', "El fichero de configuración no existe"); + $permisos = fileperms('inc/Configuracion.inc'); + //Comprueba que el propietario o el grupo tengan derecho de escritura + $test = $permisos & 0x0080 || $permisos & 0x0010; + $this->assertTrue($test, "El fichero de configuración no tiene los permisos adecuados"); + //Comprueba que existan todas las claves editables en el fichero de configuración. + $fichero = $this->config->obtieneFichero(); + $this->assertNotNull($fichero,"El fichero de configuración no se ha leído o no tiene contenido"); + $lineas = explode("\n", $fichero); + $campos = $this->config->obtieneLista(); + $numero = 0; + $lista = implode(",", $campos); + //var_dump($campos); + //var_dump($lista); + foreach ($lineas as $linea) { + if (stripos($linea, "DEFINE") !== false) { + $this->assertStringMatchesFormat("define('%s', '%s');%S", $linea, "La línea [" . $linea . "] del fichero de configuración no tiene el formato correcto"); + $this->config->obtieneDatos($linea, $clave, $valor); + if (stripos($lista, $clave) !== false) { + $this->assertContains($clave, $campos, "El fichero de configuración no tiene la clave [" . $clave . "]"); + $numero++; + $verificados[] = $clave; + } + } + } + $this->assertCount($numero, $campos, "No se han verificado todas las claves"); + if ($numero != count($campos)) { + echo "Las claves verificadas han sido: \n"; + var_export($verificados); + } + // @todo comprobar que la salida incluye una tabla con todos los campos editables. + // @todo comprobar que los valores seleccionados se corresponden co los del fichero + $salida = $this->config->ejecuta(); + } + +} +?> \ No newline at end of file diff --git a/tests/MenuTest.php b/tests/MenuTest.php new file mode 100644 index 0000000..e1560fc --- /dev/null +++ b/tests/MenuTest.php @@ -0,0 +1,43 @@ +object = new Menu('inc/inventario.menu'); + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Menu::insertaMenu + * @todo Implement testInsertaMenu(). + */ + public function testInsertaMenu() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} +?> \ No newline at end of file diff --git a/tests/SqlTest.php b/tests/SqlTest.php new file mode 100644 index 0000000..58176c5 --- /dev/null +++ b/tests/SqlTest.php @@ -0,0 +1,201 @@ +bd = new Sql(SERVIDOR, USUARIO, CLAVE, BASEDATOSTEST); + $this->assertFalse($this->bd->error(),"No se ha conectado a la base de datos de pruebas [".BASEDATOSTEST."]"); + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Sql::__destruct + * @todo Implement test__destruct(). + */ + public function test__destruct() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::filtra + * @todo Implement testFiltra(). + */ + public function testFiltra() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::ejecuta + * @todo Implement testEjecuta(). + */ + public function testEjecuta() + { + + + + } + + /** + * @covers Sql::procesaResultado + * @todo Implement testProcesaResultado(). + */ + public function testProcesaResultado() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::camposResultado + * @todo Implement testCamposResultado(). + */ + public function testCamposResultado() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::numeroTuplas + * @todo Implement testNumeroTuplas(). + */ + public function testNumeroTuplas() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::error + * @todo Implement testError(). + */ + public function testError() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::mensajeError + * @todo Implement testMensajeError(). + */ + public function testMensajeError() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::estructura + * @todo Implement testEstructura(). + */ + public function testEstructura() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::ultimoId + * @todo Implement testUltimoId(). + */ + public function testUltimoId() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::obtieneManejador + * @todo Implement testObtieneManejador(). + */ + public function testObtieneManejador() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::comienzaTransaccion + * @todo Implement testComienzaTransaccion(). + */ + public function testComienzaTransaccion() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::abortaTransaccion + * @todo Implement testAbortaTransaccion(). + */ + public function testAbortaTransaccion() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Sql::confirmaTransaccion + * @todo Implement testConfirmaTransaccion(). + */ + public function testConfirmaTransaccion() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} +?> \ No newline at end of file
Preferencias
Nombre del Centro
Número de filas
Plantilla
Estilo
Color Lateral (bootstrap)
Color Fondo (bootstrap)
Base de datos
Servidor
Base de datos
Usuario
Clave
mysqldump
gzip