/** * @param array $datos_servidor Asociativo con los parámetros de conexión a la base */ function instalar($datos_servidor) { if (!$this->permitir_instalar) { return; } $version = $this->get_version_nueva(); $id = $this->proyecto->get_id(); $this->manejador_interface->titulo("Instalando {$id} " . $version->__toString()); $id_def_base = $this->proyecto->construir_id_def_base($this->get_fuente_defecto()); //--- Chequea si existe la entrada de la base de negocios en el archivo de bases if (!$this->instalacion->existe_base_datos_definida($id_def_base)) { if (!isset($datos_servidor['base'])) { $id_base = $this->get_id_base(); $datos_servidor['base'] = $id_base; } //-- Cambia el schema $datos_servidor['schema'] = $this->schema_modelo; //-- Agrega la definición de la base $this->instalacion->agregar_db($id_def_base, $datos_servidor); if ($this->permitir_determinar_encoding_bd) { $this->instalacion->determinar_encoding($id_def_base); } } //--- Chequea si existe fisicamente la base creada if (!$this->instalacion->existe_base_datos($id_def_base)) { $this->instalacion->crear_base_datos($id_def_base, false); } //--- Chequea si hay un modelo cargado y decide que hacer en tal caso $base = $this->instalacion->conectar_base($id_def_base); if (!$this->estructura_creada($base)) { $this->cargar_modelo_datos($base); } else { $this->regenerar_modelo_datos($base, $id_def_base); } //Actualiza permisos de la base $this->proyecto->generar_roles_db(); }