diff --git a/AportaContenido.php b/AportaContenido.php index 0b38bcb..ab60c27 100644 --- a/AportaContenido.php +++ b/AportaContenido.php @@ -124,14 +124,14 @@ class AportaContenido { public function __call($metodo, $parametros) { switch ($metodo) { // Dependiendo del método invocado case 'titulo': // devolvemos el título - return PROGRAMA.VERSION; + return PROGRAMA." v".VERSION; case 'usuario': if ($this->registrado) return "Usuario=$this->usuario"; else return ''; case 'fecha': return $this->fechaActual(); - case 'aplicacion': return PROGRAMA.VERSION; + case 'aplicacion': return PROGRAMA." v".VERSION; case 'menu': // el menú if ($this->registrado) { return $this->miMenu->insertaMenu(); @@ -187,7 +187,7 @@ class AportaContenido { case 'ubicaciones': case 'test': case 'elementos': - $this->cargaDatosURL(); + $this->DatosURL(); if ($this->datosURL['opc'] == "informe") { if (!$this->pefil['Informe']) { $this->procesaURL(); @@ -284,31 +284,19 @@ class AportaContenido { } case 'copiaseg': if ($this->perfil['Config']) { - $archivo_sql = "tmp/copiaseg.sql"; - $archivo = $archivo_sql . ".gz"; - if (file_exists($archivo)) { - unlink($archivo); - } - $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($archivo) < 1024) { - //No se ha realizado la copia de seguridad - $mensaje = "La copia de seguridad no se ha realizado correctamente.

"; - $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.
"; - $mensaje .= "mysqldump=[" . MYSQLDUMP . "]
"; - $mensaje .= "gzip=[" . GZIP . "]"; - $cabecera = "ERROR"; - $tipo = "danger"; + $copia = new CopiaSeguridad(); + if ($_GET['confirmado'] == "1") { + if (!$copia->creaCopia()) { + $tipo = "danger"; + $cabecera = "ERROR"; + } else { + $tipo = "info"; + $cabecera = "INFORMACIÓN"; + } + return $this->panel($cabecera, $copia->mensaje(), $tipo); } else { - $mensaje .= 'Copia de seguridad realizada con éxito.

Pulse sobre el siguiente enlace para descargar:

'; - $mensaje .= 'Descargar Copia de Seguridad de Datos
'; - $cabecera = "Información"; - $tipo = "success"; + return $copia->dialogo(); } - return $this->panel($cabecera,$mensaje,$tipo); } else { return $this->mensajePermisos("Copias de seguridad"); } diff --git a/CopiaSeguridad.php b/CopiaSeguridad.php new file mode 100644 index 0000000..db5941f --- /dev/null +++ b/CopiaSeguridad.php @@ -0,0 +1,131 @@ +. + * + */ +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 = '
+

Copia de Seguridad

+

¿Desea realizar una copia de seguridad de todos los datos de la Base de Datos y de todas las Imágenes?

+

Volver + Continuar

+
'; + 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.

"; + $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.
"; + $mensaje .= "mysqldump=[" . MYSQLDUMP . "]
"; + $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 . "
"; + $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 [" . $this->imagenes . "] y
"; + $mensaje .= " con el archivo de Base de Datos [" . $this->baseDatos . "]

"; + $mensaje .= "Compruebe que los datos de configuración están correctamente establecidos
"; + $mensaje .= "El comando de copia fue [" . $comando . "]
"; + $mensaje .= "gzip=[" . GZIP . "]"; + $this->mensaje = $mensaje; + return false; + } + $this->error = false; + unlink ($this->baseDatos); + unlink ($this->imagenes); + $mensaje = 'Copia de seguridad realizada con éxito.

Pulse sobre el siguiente enlace para descargar:

'; + $mensaje .= 'Descargar Copia de Seguridad de Datos

'; + $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; + } +} + +?>