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 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; } }