mirror of
https://github.com/rmontanana/inventario2.git
synced 2025-08-15 15:35:56 +00:00
Cambiado el mensaje de éxito en la grabación de los cambios. -CopiaSeguridad: Añadidos iconos en los botones de aceptar y volver. -Csv: Añadidos iconos en los botones de acción. -Importacion: Añadidos iconos en los botones de acción. Cambiado el control de subida de fichero por el de Jasny. Cambiado el formato para controlar las columnas que ocupa el formulario de subida para que sea 'responsive' -AportaContenido: Quitado 'de' del mensaje de opción actual en Mantenimiento para acortar mensaje. -InformeInventario: Añadidos iconos en los botones de acción. Cambiado el formato para que sea correcto en todas las resoluciones de pantalla. -Mantenimiento: Añadidos iconos en los botones de acción. Añadidas flechas para indicar el campo que marca el orden de visualización. -bootstrap.html: Añadida la opción de cerrar sesión en resolución pequeña. Añadida una textura al fondo de la cabecera. Cambios en las dimensiones de los contenedores para mejorar la visualización. -img/fondos: Añadidos algunos ficheros de texturas para poder utilizarlos en el futuro. -CHANGELOG: Añadido este fichero para llevar un registro de cambios entre versiones.
133 lines
5.8 KiB
PHP
133 lines
5.8 KiB
PHP
<?php
|
|
/**
|
|
* @package Inventario
|
|
* @copyright Copyright (c) 2014, 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 <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
class CopiaSeguridad {
|
|
private $mensaje;
|
|
private $baseDatos;
|
|
private $imagenes;
|
|
|
|
public function __construct()
|
|
{
|
|
$opcion = $_GET['opc'];
|
|
}
|
|
public function creaCopia()
|
|
{
|
|
if (!$this->copiaBaseDatos()) {
|
|
return false;
|
|
}
|
|
if (!$this->copiaImagenes()) {
|
|
return false;
|
|
}
|
|
if (!$this->empaqueta()) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
public function dialogo()
|
|
{
|
|
$dialogo = '<div class="container col-5"><div class="jumbotron">
|
|
<h1>Copia de Seguridad</h1>
|
|
<p>¿Desea realizar una copia de seguridad de todos los datos de la Base de Datos y de todas las Imágenes?</p>
|
|
<p><a class="btn btn-primary btn-lg" role="button" onClick="location.href=' . "'index.php'" . '"><span class="glyphicon glyphicon-arrow-left"></span> Volver</a>
|
|
<a class="btn btn-success btn-lg" role="button" onClick="location.href=' . "'index.php?copiaseg&confirmado=1'" . '">
|
|
<span class="glyphicon glyphicon-cloud-download"></span> Continuar</a></p>
|
|
</div></div>';
|
|
return $dialogo;
|
|
}
|
|
private function copiaBaseDatos()
|
|
{
|
|
$archivo_sql = "tmp/baseDatos" . BASEDATOS . ".sql";
|
|
$baseDatosComprimida = $archivo_sql . ".gz";
|
|
$this->baseDatos = $baseDatosComprimida;
|
|
if (file_exists($baseDatosComprimida)) {
|
|
unlink($baseDatosComprimida);
|
|
}
|
|
$comando = escapeshellcmd(MYSQLDUMP . ' -h ' . SERVIDOR . ' -P ' . PUERTO . ' -u ' . USUARIO . ' --password=' . CLAVE . ' --result-file=' . $archivo_sql . ' ' . BASEDATOS);
|
|
$comando2 = escapeshellcmd(GZIP . ' -9f ' . $archivo_sql);
|
|
exec($comando);
|
|
exec($comando2);
|
|
if (filesize($baseDatosComprimida) < 1024) {
|
|
//No se ha realizado la copia de seguridad
|
|
$mensaje = "La copia de seguridad no se ha realizado correctamente.<br><br>";
|
|
$mensaje .= "Compruebe que las rutas a los programas mysqldump y gzip en configuración están correctamente establecidas ";
|
|
$mensaje .= "y que los datos de acceso a la base de datos sean correctos.<br>";
|
|
$mensaje .= "mysqldump=[" . MYSQLDUMP . "]<br>";
|
|
$mensaje .= "gzip=[" . GZIP . "]";
|
|
$this->mensaje = $mensaje;
|
|
$this->error = true;
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
private function copiaImagenes()
|
|
{
|
|
$copiaImagenes = "tmp/Imagenes.tbz";
|
|
$this->imagenes = $copiaImagenes;
|
|
if (file_exists($copiaImagenes)) {
|
|
unlink($copiaImagenes);
|
|
}
|
|
$comando = escapeshellcmd('tar cf ' . $copiaImagenes . ' ' . IMAGEDATA);
|
|
exec($comando);
|
|
|
|
if (filesize($copiaImagenes) == 0) {
|
|
$this->error = true;
|
|
$mensaje = "No se ha podido comprimir el directorio de las imágenes " . IMAGEDATA . "<br>";
|
|
$mensaje .= "Compruebe que la ruta de acceso al programa tar en configuración está correctamente establecida";
|
|
$this->mensaje = $mensaje;
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
private function empaqueta()
|
|
{
|
|
// Empaqueta los dos archivos en el que va a devolver
|
|
$nombreCopia = "tmp/Copia" . BASEDATOS . strftime("%Y%m%d%H%M") . ".tar";
|
|
if (file_exists($nombreCopia)) {
|
|
unlink($nombreCopia);
|
|
}
|
|
$comando = escapeshellcmd('tar cf ' . $nombreCopia . ' ' . $this->baseDatos . ' ' . $this->imagenes);
|
|
exec($comando);
|
|
if (filesize($nombreCopia) ==0 || !file_exists($nombreCopia)) {
|
|
$this->error = true;
|
|
$mensaje = "No se ha creado el paquete con los archivos de imágenes en [<b>" . $this->imagenes . "</b>] y <br>";
|
|
$mensaje .= " con el archivo de Base de Datos [<b>" . $this->baseDatos . "</b>]<br><br>";
|
|
$mensaje .= "Compruebe que los datos de configuración están correctamente establecidos <br>";
|
|
$mensaje .= "El comando de copia fue [" . $comando . "]<br>";
|
|
$mensaje .= "gzip=[" . GZIP . "]";
|
|
$this->mensaje = $mensaje;
|
|
return false;
|
|
}
|
|
$this->error = false;
|
|
unlink ($this->baseDatos);
|
|
unlink ($this->imagenes);
|
|
$mensaje = 'Copia de seguridad realizada con éxito.<br><br>Pulse sobre el siguiente enlace para descargar:<br><br>';
|
|
$mensaje .= '<a href="' . $nombreCopia . '">Descargar Copia de Seguridad de Datos</a><br><br>';
|
|
$mensaje .= 'El paquete de copia contiene un archivo con la copia de la información de la base de datos y un archivo que contiene el directorio de las fotografías e imágenes asociadas a los datos';
|
|
$this->mensaje = $mensaje;
|
|
return true;
|
|
}
|
|
public function mensaje ()
|
|
{
|
|
return $this->mensaje;
|
|
}
|
|
}
|
|
|
|
?>
|