Beispiel #1
0
 /**
  * La definición del archivo instancias.php se mueve hacia archivos y directorios
  * en el directorio instalacion dentro de $toba_dir
  */
 function instalacion__construir_inis()
 {
     // Estos defines se necesitan aca porque no se incluye el archivo de funciones planas db.php
     define("apex_db_motor", 0);
     define("apex_db_profile", 1);
     // host-dsn
     define("apex_db_usuario", 2);
     define("apex_db_clave", 3);
     define("apex_db_base", 4);
     define("apex_db_con", 5);
     define("apex_db_link", 6);
     define("apex_db", 7);
     define("apex_db_link_id", 8);
     if (!is_file(toba_dir() . '/php/instancias.php')) {
         throw new toba_error("No existe el archivo 'instancias.php'. No es posible realizar la conversion.");
     }
     require_once 'instancias.php';
     //*** 0) Creo la carpeta INSTALACION
     toba_modelo_instalacion::crear_directorio();
     //*** 1) BASES
     $bases_registradas = array();
     $this->manejador_interface->mensaje("Migrar la definicion de BASES. (php/instancias.php)");
     if (!toba_modelo_instalacion::existe_info_bases()) {
         foreach ($instancia as $i => $datos) {
             $base['motor'] = $datos[apex_db_motor];
             $base['profile'] = $datos[apex_db_profile];
             $base['usuario'] = $datos[apex_db_usuario];
             $base['clave'] = $datos[apex_db_clave];
             $base['base'] = $datos[apex_db_base];
             $bases_registradas[] = $i;
             $bases[$i] = $base;
         }
         toba_modelo_instalacion::crear_info_bases($bases);
         $this->manejador_interface->mensaje("la definicion de BASES se encuentra ahora en '" . toba_modelo_instalacion::archivo_info_bases() . "'");
     } else {
         $this->manejador_interface->mensaje("ya existe una archivo '" . toba_modelo_instalacion::archivo_info_bases() . "'");
     }
     // *** 2) CLAVES
     $this->manejador_interface->mensaje("Migrar la definicion de CLAVES. (php/instancias.php)");
     if (!toba_modelo_instalacion::existe_info_basica()) {
         $this->manejador_interface->enter();
         $id_grupo_desarrollo = self::definir_id_grupo_desarrollo();
         toba_modelo_instalacion::crear_info_basica(apex_clave_get, apex_clave_db, $id_grupo_desarrollo);
     } else {
         $this->manejador_interface->mensaje("ya existe una archivo '" . toba_modelo_instalacion::archivo_info_basica() . "'");
     }
     // *** 3) INSTANCIAS
     $this->manejador_interface->enter();
     $this->manejador_interface->subtitulo("Migrar INSTANCIAS toba");
     $this->manejador_interface->mensaje("Indique que BASES son INSTANCIAS toba");
     //Busco la lista de proyectos de la instalacion
     $proyectos = toba_modelo_proyecto::get_lista();
     if (!in_array('toba', $proyectos)) {
         $proyectos[] = 'toba';
     }
     //Creo las instancias, preguntando en cada caso
     //Existe la opcion de conectarse a la base y preguntar si existe la tabla 'apex_objeto',
     //pero puede ser que por algun motivo la base no este online y sea una instancia
     foreach ($instancia as $i => $datos) {
         if ($datos[apex_db_motor] == 'postgres7') {
             $this->manejador_interface->separador("BASE: {$i}");
             $this->manejador_interface->lista($datos, 'Parametros CONEXION');
             $this->manejador_interface->enter();
             if ($this->manejador_interface->dialogo_simple("La base '{$i}' corresponde a una INSTANCIA TOBA?")) {
                 if (toba_modelo_instancia::existe_carpeta_instancia($i)) {
                     $this->manejador_interface->error("No es posible crearla instancia '{$i}'");
                     $this->manejador_interface->mensaje("Ya exite una instancia: {$i}");
                 } else {
                     toba_modelo_instancia::crear_instancia($i, $i, $proyectos);
                 }
             }
         }
     }
     $this->manejador_interface->mensaje("Ya es posible borrar el archivo 'toba_dir/php/instancias.php'");
     $this->manejador_interface->separador("");
 }
 function existe_instancia($id)
 {
     return toba_modelo_instancia::existe_carpeta_instancia($id);
 }
Beispiel #3
0
 /**
  * Crea una instancia NUEVA. 
  * 
  * @gtk_icono nucleo/agregar.gif 
  * @gtk_no_mostrar 1
  */
 function opcion__crear($datos = null)
 {
     if (isset($datos)) {
         list($id_instancia, $tipo, $base, $proyectos, $usuario) = $datos;
     } else {
         $id_instancia = $this->get_id_instancia_actual();
         $tipo = $this->get_tipo_instancia();
         $usuario = null;
     }
     $instalacion = $this->get_instalacion();
     if (toba_modelo_instancia::existe_carpeta_instancia($id_instancia)) {
         throw new toba_error("Ya existe una INSTANCIA con el nombre '{$id_instancia}'");
     }
     if (!$instalacion->hay_bases()) {
         throw new toba_error("Para crear una INSTANCIA, es necesario definir al menos una BASE. Utilice el comando 'toba base registrar'");
     }
     $this->consola->titulo("Creando la INSTANCIA: {$id_instancia} TIPO: {$tipo}");
     //---- A: Creo la definicion de la instancia
     $this->consola->enter();
     if (!isset($base)) {
         $base = $this->seleccionar_base();
     }
     if (!isset($proyectos)) {
         $proyectos = $this->seleccionar_proyectos();
     }
     toba_modelo_instancia::crear_instancia($id_instancia, $base, $proyectos, $tipo);
     //---- B: Cargo la INSTANCIA en la BASE
     $instancia = $this->get_instancia($id_instancia);
     $metodo_carga = 'cargar';
     /*if($tipo == 'mini') {
     			$metodo_carga = 'cargar_tablas_minimas';
     		} else {
     			$metodo_carga = 'cargar';
     		}*/
     try {
         $instancia->{$metodo_carga}();
     } catch (toba_error_modelo_preexiste $e) {
         $this->consola->error('ATENCION: Ya existe una instancia en la base de datos seleccionada');
         $this->consola->lista($instancia->get_parametros_db(), 'BASE');
         if ($this->consola->dialogo_simple('Desea ELIMINAR la instancia y luego CARGARLA (La informacion local previa se perdera!)?')) {
             $instancia->{$metodo_carga}(true);
         } else {
             return;
         }
     } catch (toba_error $e) {
         $this->consola->error('Ha ocurrido un error durante la importacion de la instancia.');
         $this->consola->error($e->getMessage());
     }
     //---- C: Actualizo la versión, Creo un USUARIO y lo asigno a los proyectos
     $instancia->set_version(toba_modelo_instalacion::get_version_actual());
     $this->opcion__crear_usuario($usuario, false, $id_instancia);
     if ($tipo != 'mini') {
         //---- D: Exporto la informacion LOCAL
         $instancia->exportar_local();
         //-- Agregar los alias
         $this->consola->enter();
         $crear_alias = $this->consola->dialogo_simple("Desea crear automáticamente los alias de apache en el archivo toba.conf?", true);
         if ($crear_alias) {
             $instancia->crear_alias_proyectos();
         }
     }
     //Creo el esquema basico de logs de Toba.
     //$instancia->crear_modelo_logs_toba();
 }