public function actionIndex() { $modelo = new ExportarForm(); if (isset($_POST['ExportarForm'])) { $modelo->attributes = $_POST['ExportarForm']; //Además de validar el propio modeloo, se deberán validar también las tablas (que al menos haya una marcada) if ($modelo->validate() && $modelo->validarTablas()) { //Guardamos un array booleano con que tablas deben ser guardadas $tablas = array($modelo->aseguradoras, $modelo->authassignment, $modelo->authitem, $modelo->authitemchild, $modelo->facturas, $modelo->pacientes, $modelo->perfiles, $modelo->perfilesusuarios, $modelo->pruebas, $modelo->tiposdiagnosticos, $modelo->usuarios, $modelo->visitas); //Comprobamos si hay que exportar en SQL o XML if ($modelo->opcion) { CopiaDeSeguridad::exportarSQL($tablas, true); } else { CopiaDeSeguridad::exportarXML($tablas); } } else { Yii::app()->user->setFlash('error', 'Debes elegir al menos una tabla'); } } $this->render('index', array('exportar' => $modelo)); }
public function actionIndex() { $modelo = new ExportarForm(); if (isset($_POST['ExportarForm'])) { $modelo->attributes = $_POST['ExportarForm']; //Además de validar el propio modeloo, se deberán validar también las tablas (que al menos haya una marcada) if ($modelo->validate() && $modelo->validarTablas()) { //Guardamos un array booleano con que tablas deben ser guardadas $tablas = array($modelo->authassignment, $modelo->authitem, $modelo->authitemchild, $modelo->autor, $modelo->categoria, $modelo->cliente, $modelo->configuracion, $modelo->editorial, $modelo->estado, $modelo->forma_pago, $modelo->idioma, $modelo->libro, $modelo->libro_autor, $modelo->libro_categoria, $modelo->linea, $modelo->nacionalidad, $modelo->pedido, $modelo->usuario); //Comprobamos si hay que exportar en SQL o XML if ($modelo->opcion) { CopiaDeSeguridad::exportarSQL($tablas, true); } else { CopiaDeSeguridad::exportarXML($tablas); } } else { Yii::app()->user->setFlash('error', 'Debes elegir al menos una tabla'); } } $this->render('index', array('exportar' => $modelo)); }
public function actionIndex() { $modelo = new ImportarForm(); if (isset($_POST['datos'])) { //Activamos el escenario de la segunda pantalla $modelo->scenario = 'conArchivo'; } elseif (isset($_POST['estructura'])) { CopiaDeSeguridad::importarSQL(Yii::app()->basePath . '/data/estructuraTablas.sql'); Yii::app()->user->setFlash('informacion', 'Se ha importado correctamente la estructura de la base de datos'); } elseif (isset($_POST['importarDatos'])) { //Recogemos la instancia del archivo subido $modelo->archivo = CUploadedFile::getInstance($modelo, 'archivo'); //Guardamos en variables la ruta del archivo y la extensión $ruta = Yii::app()->basePath . '/runtime/' . strtolower($modelo->archivo); $archivoPartido = explode(".", strtolower($modelo->archivo)); $extension = end($archivoPartido); //Subimos el archivo al servidor $modelo->archivo->saveAs($ruta); //Importamos el archivo eligiendo si es xml o sql if ($extension == 'xml') { if (CopiaDeSeguridad::importarXML($ruta, $modelo->foraneas)) { Yii::app()->user->setFlash('informacion', 'Los datos del archivo XML han sido importados correctamente'); } } elseif ($extension == 'sql') { if (CopiaDeSeguridad::importarSQL($ruta)) { Yii::app()->user->setFlash('informacion', 'Los datos del archivo SQL han sido importados correctamente'); } } else { Yii::app()->user->setFlash('error', 'Error: El archivo importado debe ser xml o sql'); } //Borramos el archivo $borrado = unlink($ruta); while (!$borrado) { unlink($ruta); } } elseif (isset($_POST['ImportarForm'])) { $modelo->attributes = $_POST['ImportarForm']; } $this->render('index', array('modelo' => $modelo)); }
public static function importarSQL($archivo) { try { //Instanciamos la base de datos $bbDD = Yii::app()->db->pdoInstance; if (file_exists($archivo)) { //Exportamos el estado actual de la base de datos CopiaDeSeguridad::exportarSQL(array(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true), false); //Desactivamos las claves foráneas para evitar un error de este tipo $bbDD->query("SET FOREIGN_KEY_CHECKS=0;"); //Recogemos las órdenes del archivo SQL y las preparamos $ordenSQL = file_get_contents($archivo); $ordenSQL = rtrim($ordenSQL); $nuevaOrden = preg_replace_callback("/\\((.*)\\)/", create_function('$matches', 'return str_replace(";"," $$$ ", $matches[0]);'), $ordenSQL); $arraySQL = explode(";", $nuevaOrden); //Recorremos cada una de las órdenes foreach ($arraySQL as $valor) { //Vamos procesando cada órden que nos encontremos if (!empty($valor)) { $sql = str_replace(" \$\$\$ ", ";", $valor) . ";"; $bbDD->exec($sql); } } //Borramos el archivo $borrado = unlink(Yii::app()->basePath . '/runtime/temporal.sql'); return true; } else { Yii::app()->user->setFlash('error', "Error: El archivo no existe"); return false; } } catch (PDOException $excepcion) { Yii::app()->user->setFlash('error', "Error: " . $excepcion->getMessage()); //Restablecemos la base de datos a su estado anterior CopiaDeSeguridad::importarSQL(Yii::app()->basePath . '/runtime/temporal.sql'); //Borramos el archivo $borrado = unlink(Yii::app()->basePath . '/runtime/temporal.sql'); return false; } }