/** * 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); }
/** * 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(); }