コード例 #1
0
 protected function imprimir($texto)
 {
     if (toba_manejador_archivos::es_windows() && function_exists('iconv')) {
         $this->_log .= iconv('latin1', 'IBM850', $texto);
     } else {
         $this->_log .= $texto;
     }
 }
コード例 #2
0
ファイル: toba_vista_xslfo.php プロジェクト: emma5021/toba
 function __construct()
 {
     $this->xml = new toba_vista_xml();
     //$this->fop se debe obtener desde la variable en instalacion.ini
     $fop = toba::instalacion()->get_xslfo_fop();
     $this->fop = $fop ? $fop : (toba_manejador_archivos::es_windows() ? 'fop.bat' : 'fop');
     $this->fop = toba_manejador_archivos::path_a_plataforma($this->fop);
     $prxsl = toba::proyecto()->get_path() . '/exportaciones/pdf_proyecto.xsl';
     $toxsl = toba::nucleo()->toba_dir() . '/exportaciones/pdf.xsl';
     $this->xsl_proyecto = toba_manejador_archivos::existe_archivo_en_path($prxsl) ? $prxsl : $toxsl;
     $this->xsl_proyecto = toba_manejador_archivos::path_a_plataforma($this->xsl_proyecto);
     $this->xml_proyecto = toba_manejador_archivos::path_a_plataforma(tempnam(toba::nucleo()->toba_dir() . '/temp', 'xml'));
 }
コード例 #3
0
ファイル: inicio.php プロジェクト: emma5021/toba
function controlar_usuario()
{
    $usuario_actual = toba_manejador_archivos::get_usuario_actual();
    if (isset($usuario_actual)) {
        $usuarios_defecto = array('system', 'www-data', 'wwwrun', 'nobody', 'nobody');
        if (in_array($usuario_actual, $usuarios_defecto)) {
            $html = "<div style='margin-top: 100px; background-color:white; padding: 10px;'>\n\t\t\t\t\t<strong>Recomendado cambiar usuario APACHE</strong><br><br>\n\t\t\t\t\t<div style='text-align:left'><p>Actualmente el servidor web (incluyendo a PHP y Toba) se está ejecutando con el usuario <strong>{$usuario_actual}</strong> del sistema.\n\t\t\t\t\t\t\tPor seguridad esta configuración es la recomendada para sistemas en <strong>producción</strong>.</p>\n\t\t\t\t\t\t<p>En cambio para ambientes de <strong>desarrollo</strong>, este toba_editor necesita abrir y guardar archivos, ejecutar comandos svn, etc,\n\t\t\t\t\t\t\tnecesita correr con el <strong>usuario de escritorio</strong> actualmente logueado al sistema operativo. Por ello recomendamos seguir los siguentes pasos:</p>\n\t\t\t";
            if (toba_manejador_archivos::es_windows()) {
                $html .= "\n\t\t\t\t\t\t<ol style='background-color: #EEEEEE; border: 1px inset gray;'>\n\t\t\t\t\t\t\t<li>Primero es necesario que el usuario actualmente logueado posea una contraseña. Si no la tiene o desconoce:\n\t\t\t\t\t\t\t\t<ol style='background-color: #E9E8E8; border: 1px inset gray; margin: 10px;'>\n\t\t\t\t\t\t\t\t\t<li>Ir a <em>Inicio > Ejecutar</em>, ingresar\n\t\t\t\t\t\t\t\t\t\t<pre>lusrmgr.msc</pre>\n\t\t\t\t\t\t\t\t\t<li>Hacer click derecho sobre el usuario actual y seleccionar <em>Establecer contraseña</em>\n\t\t\t\t\t\t\t\t\t<li>Luego de pasar todas las advertencias, ingresar la contraseña y aceptar\n\t\t\t\t\t\t\t\t</ol>\n\t\t\t\t\t\t\t<li>Ir a <em>Inicio > Ejecutar</em>, ingresar\n\t\t\t\t\t\t\t\t<pre>services.msc</pre>\n\t\t\t\t\t\t\t<li>Seleccionar servicio Apache 2.x, hacer doble click sobre el mismo\n\t\t\t\t\t\t\t<li>Ir a solapa <em>Iniciar Sesión</em>\n\t\t\t\t\t\t\t<li>Seleccionar <em>Esta cuenta</em> e ingresar el nombre y contraseña de la cuenta de usuario actual.\n\t\t\t\t";
            } else {
                $html .= "\n\t\t\t\t\t\t<ol style='background-color: #EEEEEE; border: 1px inset gray;'>\n\t\t\t\t\t\t\t<li>Configurar que apache ejecute con el usuario actualmente logueado al sistema de ventanas. Editar el archivo\n\t\t\t\t\t\t\t\t<em>/etc/apache2/apache2.conf</em> o <em>/etc/apache2/uid.conf</em> si está presente y cambiar el usuario de la siguiente directiva\n\t\t\t\t\t\t\t\tpor el usuario actual: <pre>User {$usuario_actual}</pre>\n\t\t\t\t\t\t\t<li>Para que apache pueda crear sesiones PHP, hay que cambiar el owner de la carpeta de sesiones (si no encuentra la carpeta de sesiones de php, está en la\n\t\t\t\t\t\t\t\tdirectiva <em>session.save_path</em> en el php.ini\n\t\t\t\t\t\t\t\t<pre>sudo chown mi_usuario /var/lib/php5 -R</pre>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t";
            }
            $html .= '
						<li>Luego de aceptar, reiniciar el servicio apache. En caso de que se siga mostrando esta advertencia al inicio del editor, por favor
							contactarse con el soporte de toba ya que es muy importante para nosotros que estos pasos se sigan y funcionen bien.
					</ol>
					</div></div>
			';
            echo $html;
        }
    }
}
コード例 #4
0
 protected function clonar_schema($schema_viejo, $schema_nuevo)
 {
     $params = $this->db->get_parametros();
     $profile = $params['profile'];
     $base = $params['base'];
     $puerto = isset($params['puerto']) && trim($params['puerto'] != '') ? $params['puerto'] : '5432';
     $usuario = $params['usuario'];
     $clave = $params['clave'];
     if (toba_manejador_archivos::es_windows()) {
         $this->clonar_schema_windows($schema_viejo, $schema_nuevo, $profile, $base, $usuario, $clave, $puerto);
     } else {
         $this->clonar_schema_linux($schema_viejo, $schema_nuevo, $profile, $base, $usuario, $clave, $puerto);
     }
 }
コード例 #5
0
ファイル: comando_instalacion.php プロジェクト: emma5021/toba
 /**
  * Ejecuta una instalacion completa del framework para desarrollar un nuevo proyecto
  * @consola_parametros Opcionales: [-d 'iddesarrollo'] [-t 0| 1] [-n 'nombre inst'] [-h 'ubicacion bd'] [-p 'puerto'] [-u 'usuario bd'] [-b nombre bd] [-c 'archivo clave bd'] [-k 'archivo clave toba'] [--no-interactive].
  * @gtk_icono instalacion.png
  */
 function opcion__instalar()
 {
     $nombre_toba = 'toba_' . toba_modelo_instalacion::get_version_actual()->get_release('_');
     $alias = '/' . 'toba_' . toba_modelo_instalacion::get_version_actual()->get_release();
     $this->consola->titulo("Instalacion Toba " . toba_modelo_instalacion::get_version_actual()->__toString());
     //--- Verificar instalacion
     /*
     		if (get_magic_quotes_gpc()) {
     			$this->consola->mensaje("------------------------------------");
     			throw new toba_error("ERROR: Necesita desactivar las 'magic_quotes_gpc' en el archivo php.ini (ver http://www.php.net/manual/es/security.magicquotes.disabling.php)");	
     		}*/
     if (!extension_loaded('pdo')) {
         $this->consola->mensaje("------------------------------------");
         throw new toba_error("ERROR: Necesita activar la extension 'pdo' en el archivo php.ini");
     }
     if (!extension_loaded('pdo_pgsql')) {
         $this->consola->mensaje("------------------------------------");
         throw new toba_error("ERROR: Necesita activar la extension 'pdo_pgsql' en el archivo php.ini");
     }
     $version_php = shell_exec('php -v');
     if ($version_php == '') {
         $this->consola->mensaje("------------------------------------");
         throw new toba_error("ERROR: El comando 'php' no se encuentra en el path actual del sistema");
     }
     $param = $this->get_parametros();
     $interactive = !isset($param['--no-interactive']);
     if (isset($param['help'])) {
         $this->mostrar_ayuda_desatendida();
         return;
     }
     //--- Borra la instalacion anterior??
     if (toba_modelo_instalacion::existe_info_basica()) {
         toba_modelo_instalacion::borrar_directorio();
     }
     //--- Crea la INSTALACION
     $id_desarrollo = isset($param['-d']) ? $param['-d'] : $this->definir_id_grupo_desarrollo();
     $tipo_instalacion = isset($param['-t']) ? $param['-t'] : $this->definir_tipo_instalacion_produccion();
     $nombre = isset($param['-n']) ? $param['-n'] : $this->definir_nombre_instalacion();
     toba_modelo_instalacion::crear($id_desarrollo, $alias, $nombre, $tipo_instalacion);
     $id_instancia = $tipo_instalacion == '1' ? 'produccion' : $this->get_entorno_id_instancia(true);
     //--- Crea la definicion de bases
     $base = $nombre_toba;
     $puerto = '5432';
     //Asumo el puerto por defecto del servidor;
     if (!$this->get_instalacion()->existe_base_datos_definida($base)) {
         do {
             $profile = $this->recuperar_parametro($param, '-h', 'PostgreSQL - Ubicación (ENTER utilizará localhost)');
             if (trim($profile) == '') {
                 $profile = 'localhost';
             }
             $puerto_tmp = $this->recuperar_parametro($param, '-p', "PostgreSQL - Puerto (ENTER utilizará: {$puerto})");
             if (trim($puerto_tmp) != '') {
                 $puerto = $puerto_tmp;
             }
             $usuario = $this->recuperar_parametro($param, '-u', 'PostgreSQL - Usuario (ENTER utilizará postgres)');
             if (trim($usuario) == '') {
                 $usuario = 'postgres';
             }
             if (!isset($param['-c'])) {
                 $clave = $this->consola->dialogo_ingresar_texto('PostgreSQL - Clave  (ENTER para usar sin clave)', false);
             } else {
                 $clave = $this->recuperar_contenido_archivo($param['-c']);
             }
             $base_temp = $this->recuperar_parametro($param, '-b', "PostgreSQL - Base de datos (ENTER utilizará {$base})");
             if (trim($base_temp) != '') {
                 $base = $base_temp;
             }
             $datos = array('motor' => 'postgres7', 'profile' => $profile, 'usuario' => $usuario, 'clave' => $clave, 'base' => $base, 'puerto' => $puerto, 'encoding' => 'LATIN1', 'schema' => $id_instancia);
             $this->get_instalacion()->agregar_db($base, $datos);
             $puede_conectar = true;
             if ($interactive) {
                 //--- Intenta conectar al servidor
                 $puede_conectar = $this->get_instalacion()->existe_base_datos($base, array('base' => 'template1'), true);
                 if ($puede_conectar !== true) {
                     $this->consola->mensaje("\nNo es posible conectar con el servidor, por favor reeingrese la información de conexión. Mensaje:");
                     $this->consola->mensaje($puede_conectar . "\n");
                     sleep(1);
                 }
             }
         } while ($puede_conectar !== true);
     }
     //--- Pido el password para el usuario por defecto
     if (!isset($param['-k'])) {
         $pwd = $this->definir_clave_usuario_admin();
     } else {
         $pwd = $this->recuperar_contenido_archivo($param['-k']);
     }
     //--- Si la base existe, pregunta por un nombre alternativo, por si no quiere pisarla
     if ($interactive && $this->get_instalacion()->existe_base_datos($base, array(), false, $id_instancia)) {
         $nueva_base = $this->consola->dialogo_ingresar_texto("La base '{$base}' ya contiene un schema '{$id_instancia}', puede ingresar un nombre " . "de base distinto sino quiere sobrescribir los datos actuales: (ENTER sobrescribe la actual)", false);
         if ($nueva_base != '') {
             $datos['base'] = $nueva_base;
             $this->get_instalacion()->agregar_db($base, $datos);
         }
     }
     //--- Crea la instancia
     $proyectos = toba_modelo_proyecto::get_lista();
     if (isset($proyectos['toba_testing'])) {
         //--- Elimina el proyecto toba_testing
         unset($proyectos['toba_testing']);
     }
     if (isset($proyectos['curso_intro'])) {
         //--- Elimina el proyecto curso_intro
         unset($proyectos['curso_intro']);
     }
     toba_modelo_instancia::crear_instancia($id_instancia, $base, $proyectos);
     //-- Carga la instancia
     $instancia = $this->get_instancia($id_instancia);
     $instancia->cargar(true, !$interactive);
     //Si no es interactivo, crea siempre la BD
     //--- Vincula un usuario a todos los proyectos y se instala el proyecto
     $instancia->agregar_usuario('toba', 'Usuario Toba', $pwd);
     foreach ($instancia->get_lista_proyectos_vinculados() as $id_proyecto) {
         $proyecto = $instancia->get_proyecto($id_proyecto);
         $grupo_acceso = $proyecto->get_grupo_acceso_admin();
         $proyecto->vincular_usuario('toba', array($grupo_acceso));
     }
     //--- Crea el login y exporta el proyecto
     /*if (isset($nuevo_proyecto)) {
     			$nuevo_proyecto->actualizar_login();					//WTH??
     			$nuevo_proyecto->exportar();	
     		}*/
     $instancia->exportar_local();
     //--- Crea los nuevos alias
     $instancia->crear_alias_proyectos();
     //--- Ejecuta instalaciones particulares de cada proyecto
     foreach ($instancia->get_lista_proyectos_vinculados() as $id_proyecto) {
         $instancia->get_proyecto($id_proyecto)->instalar();
     }
     //--- Mensajes finales
     if ($interactive) {
         $this->consola->titulo("Configuraciones Finales");
         $toba_conf = toba_modelo_instalacion::dir_base() . "/toba.conf";
         if (toba_manejador_archivos::es_windows()) {
             $toba_conf = toba_manejador_archivos::path_a_unix($toba_conf);
             $this->consola->mensaje("1) Agregar al archivo '\\Apache2\\conf\\httpd.conf' la siguiente directiva: ");
             $this->consola->mensaje("");
             $this->consola->mensaje("     Include \"{$toba_conf}\"");
         } else {
             $this->consola->mensaje("1) Ejecutar el siguiente comando como superusuario: ");
             $this->consola->mensaje("");
             $this->consola->mensaje("     ln -s {$toba_conf} /etc/apache2/sites-enabled/{$nombre_toba}.conf");
         }
         $this->consola->mensaje("");
         $url = $instancia->get_proyecto('toba_editor')->get_url();
         $this->consola->mensaje("Reiniciar el servicio apache e ingresar al framework navegando hacia ");
         $this->consola->mensaje("");
         $this->consola->mensaje("     http://localhost{$url}");
         $this->consola->mensaje("");
         $this->consola->mensaje("");
     }
     $release = toba_modelo_instalacion::get_version_actual()->get_release();
     $instal_dir = toba_modelo_instalacion::dir_base();
     if (toba_manejador_archivos::es_windows()) {
         if (isset($_SERVER['USERPROFILE'])) {
             $path = $_SERVER['USERPROFILE'];
         } else {
             $path = $instal_dir;
         }
         $path .= "\\entorno_toba_{$release}.bat";
         $bat = "@echo off\n";
         $bat .= "set TOBA_DIR=" . toba_dir() . "\n";
         $bat .= "set TOBA_INSTANCIA={$id_instancia}\n";
         $bat .= "set TOBA_INSTALACION_DIR={$instal_dir}\n";
         $bat .= "set PATH=%PATH%;%TOBA_DIR%/bin\n";
         $bat .= "echo Entorno cargado.\n";
         $bat .= "echo Ejecute 'toba' para ver la lista de comandos disponibles.\n";
         file_put_contents($path, $bat);
         if ($interactive) {
             $this->consola->mensaje("2) Se genero el siguiente .bat:");
             $this->consola->mensaje("");
             $this->consola->mensaje("   {$path}");
             $this->consola->mensaje("");
             $this->consola->mensaje("Para usar los comandos toba ejecute el .bat desde una sesión de consola (cmd.exe)");
         }
     } else {
         $path = $instal_dir;
         $path .= "/entorno_toba.env";
         $bat = "export TOBA_DIR=" . toba_dir() . "\n";
         $bat .= "export TOBA_INSTANCIA={$id_instancia}\n";
         $bat .= "export TOBA_INSTALACION_DIR={$instal_dir}\n";
         $bat .= 'export PATH="$TOBA_DIR/bin:$PATH"' . "\n";
         $bat .= "echo \"Entorno cargado.\"\n";
         $bat .= "echo \"Ejecute 'toba' para ver la lista de comandos disponibles.\"\n";
         file_put_contents($path, $bat);
         chmod($path, 0755);
         if ($interactive) {
             $this->consola->mensaje("2) Se genero el siguiente archivo:");
             $this->consola->mensaje("");
             $this->consola->mensaje("   {$path}");
             $this->consola->mensaje("");
             $sh = basename($path);
             $this->consola->mensaje("Para usar los comandos toba ejecute antes el .env precedido por un punto y espacio");
         }
     }
     if ($interactive) {
         $this->consola->mensaje("");
         $this->consola->mensaje("3) Entre otras cosas puede crear un nuevo proyecto ejecutando el comando");
         $this->consola->mensaje("");
         $this->consola->mensaje("   toba proyecto crear");
     }
 }
コード例 #6
0
 /**
  * Ejecuta una instalacion completa del framework para desarrollar un nuevo proyecto
  * @consola_parametros Opcionales: [-d 'iddesarrollo'] [-t 0| 1] [-n 'nombre inst'] [-h 'ubicacion bd'] [-p 'puerto'] [-u 'usuario bd'] [-b nombre bd] [-c 'archivo clave bd'] [-k 'archivo clave usuario admin']  [--usuario-admin 'usuario admin']
  * @gtk_icono instalacion.png
  */
 function opcion__instalar()
 {
     $nombre_toba = 'toba_' . toba_modelo_instalacion::get_version_actual()->get_release('_');
     $alias = '/' . 'toba_' . toba_modelo_instalacion::get_version_actual()->get_release();
     //--- Verificar instalacion
     $param = $this->get_parametros();
     //--- Borra la instalacion anterior??
     if (toba_modelo_instalacion::existe_info_basica()) {
         toba_modelo_instalacion::borrar_directorio();
     }
     //--- Crea la INSTALACION
     $id_desarrollo = $this->definir_id_grupo_desarrollo($param);
     $tipo_instalacion = $this->definir_tipo_instalacion_produccion($param);
     $nombre = $this->definir_nombre_instalacion($param);
     toba_modelo_instalacion::crear($id_desarrollo, $alias, $nombre, $tipo_instalacion);
     $id_instancia = $tipo_instalacion == '1' ? 'produccion' : $this->get_entorno_id_instancia(true);
     //--- Crea la definicion de bases
     $base = $nombre_toba;
     if (!$this->get_instalacion()->existe_base_datos_definida($base)) {
         $datos = array('motor' => 'postgres7', 'profile' => $this->definir_profile_motor($param), 'usuario' => $this->definir_usuario_motor($param), 'clave' => $this->definir_clave_motor($param), 'base' => $this->definir_base_motor($param), 'puerto' => $this->definir_puerto_motor($param), 'encoding' => 'LATIN1', 'schema' => $id_instancia);
         $this->get_instalacion()->agregar_db($base, $datos);
     }
     //--- Crea la instancia
     $proyectos = array();
     toba_modelo_instancia::crear_instancia($id_instancia, $base, $proyectos);
     //-- Carga la instancia
     $instancia = $this->get_instancia($id_instancia);
     $instancia->cargar(true);
     //Si no es interactivo, crea siempre la BD
     //--- Pido el password para el usuario por defecto
     $pwd = $this->definir_clave_usuario_admin($param);
     $usr = $this->definir_usuario_admin($param);
     //--- Vincula un usuario a todos los proyectos y se instala el proyecto
     $instancia->agregar_usuario($usr, 'Usuario Administrador', $pwd);
     $instancia->exportar_local();
     //--- Crea los nuevos alias
     $instancia->crear_alias_proyectos();
     $release = toba_modelo_instalacion::get_version_actual()->get_release();
     $instal_dir = toba_modelo_instalacion::dir_base();
     if (toba_manejador_archivos::es_windows()) {
         if (isset($_SERVER['USERPROFILE'])) {
             $path = $_SERVER['USERPROFILE'];
         } else {
             $path = $instal_dir;
         }
         $path .= "\\entorno_toba_{$release}.bat";
         $bat = "@echo off\n";
         $bat .= "set TOBA_DIR=" . toba_dir() . "\n";
         $bat .= "set TOBA_INSTANCIA={$id_instancia}\n";
         $bat .= "set TOBA_INSTALACION_DIR={$instal_dir}\n";
         $bat .= "set PATH=%PATH%;%TOBA_DIR%/bin\n";
         $bat .= "echo Entorno cargado.\n";
         $bat .= "echo Ejecute 'toba' para ver la lista de comandos disponibles.\n";
         file_put_contents($path, $bat);
     } else {
         $path = $instal_dir;
         $path .= "/entorno_toba.env";
         $bat = "export TOBA_DIR=" . toba_dir() . "\n";
         $bat .= "export TOBA_INSTANCIA={$id_instancia}\n";
         $bat .= "export TOBA_INSTALACION_DIR={$instal_dir}\n";
         $bat .= 'export PATH="$TOBA_DIR/bin:$PATH"' . "\n";
         $bat .= "echo \"Entorno cargado.\"\n";
         $bat .= "echo \"Ejecute 'toba' para ver la lista de comandos disponibles.\"\n";
         file_put_contents($path, $bat);
         chmod($path, 0755);
     }
 }
コード例 #7
0
ファイル: toba_archivo_php.php プロジェクト: emma5021/toba
 /**
  * Utiliza una llamada al sist. operativo para que abra el archivo en un edtiro del sist. de ventanas del servidor
  */
 function abrir()
 {
     $cmd = toba::instalacion()->get_editor_php();
     if (strlen($cmd) == 0) {
         throw new toba_error_def("No se encuentra definido el editor por defecto a utilizar en la instalación");
     }
     if (toba_manejador_archivos::es_windows()) {
         $archivo = toba_manejador_archivos::path_a_windows($this->nombre);
         $com = "{$cmd} {$archivo}";
         toba::logger()->debug("Intentando abrir archivo con comando: '{$com}'");
         exec($com);
     } else {
         $archivo = toba_manejador_archivos::path_a_unix($this->nombre);
         $archivo = str_replace(" ", "\\ ", $archivo);
         $com = "{$cmd} {$archivo}";
         toba::logger()->debug("Intentando abrir archivo con comando: '{$com}'");
         $fp = popen($com . ' 2>&1', 'r');
         stream_set_blocking($fp, 0);
         sleep(1);
         $salida = fgets($fp, 2096);
         pclose($fp);
         if ($salida != '') {
             throw new toba_error("Intentando abrir archivo con comando: '{$com}'<br><br>Mensaje de error:<br>" . $salida);
         }
     }
 }
コード例 #8
0
 /**
  * Crea el archivo con la informacion basica sobre la instalacion	
  */
 static function crear_info_basica($clave_qs, $clave_db, $id_grupo_desarrollo, $editor, $url, $nombre_inst, $es_produccion = 0)
 {
     $ini = new toba_ini();
     $ini->agregar_titulo(self::info_basica_titulo);
     $ini->agregar_entrada('nombre', $nombre_inst);
     $ini->agregar_entrada('id_grupo_desarrollo', $id_grupo_desarrollo);
     $ini->agregar_entrada('clave_querystring', $clave_qs);
     $ini->agregar_entrada('clave_db', $clave_db);
     $ini->agregar_entrada('editor_php', $editor);
     $ini->agregar_entrada('url', $url);
     $ini->agregar_entrada('es_produccion', $es_produccion);
     $ini->agregar_entrada(';autenticacion', 'toba|openid|ldap|cas|saml|saml_onelogin');
     $ini->agregar_entrada(';session_name', 'TOBA_SESSID');
     if (!toba_manejador_archivos::es_windows()) {
         $ini->agregar_entrada(';fonts_path', '/usr/share/fonts/truetype/');
     }
     $ini->guardar(self::archivo_info_basica());
     toba_logger::instancia()->debug("Creado archivo " . self::archivo_info_basica());
 }
コード例 #9
0
ファイル: toba_svn.php プロジェクト: emma5021/toba
 function __construct()
 {
     $this->es_windows = toba_manejador_archivos::es_windows();
 }
コード例 #10
0
 protected function exportar_esquema_base($id_def_base, $archivo, $obligatorio, $esquema = null)
 {
     $parametros = $this->instalacion->get_parametros_base($id_def_base);
     if (file_exists($archivo)) {
         copy($archivo, $archivo . '.old');
     }
     $esquema = !is_null($esquema) ? " -n {$esquema} " : '';
     $comando = "pg_dump -a --disable-triggers {$esquema} -h {$parametros['profile']} -U {$parametros['usuario']}  -p {$parametros['puerto']} -f \"{$archivo}\"  {$parametros['base']}";
     if (!toba_manejador_archivos::es_windows() && $parametros['clave'] != '') {
         $clave = "export PGPASSWORD="******"Ejecutando: {$comando}");
     $salida = array();
     echo exec($comando, $salida, $exito);
     echo implode("\n", $salida);
     if ($obligatorio && $exito > 0) {
         throw new toba_error('No se pudo exportar correctamente los datos');
     }
 }