function desinstalar()
 {
     $id = $this->proyecto->get_id();
     $this->manejador_interface->titulo("Desinstalando {$id}");
     $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)) {
         //--- Chequea si existe fisicamente la base creada y la borra
         if ($this->instalacion->existe_base_datos($id_def_base)) {
             $this->manejador_interface->mensaje('Borrando base de datos', false);
             $this->manejador_interface->progreso_avanzar();
             $this->instalacion->borrar_base_datos($id_def_base);
             $this->manejador_interface->progreso_fin();
         }
         $this->instalacion->eliminar_db($id_def_base);
     }
 }
Beispiel #2
0
 function evt__mostrar_opciones()
 {
     $objeto_cmd = $this->get_objeto_comando($this->seleccion);
     $this->opciones = $objeto_cmd->inspeccionar_opciones();
     $this->comp['label_info']->set_markup($objeto_cmd->get_info_extra());
     //------ Cambia algunas cosas de lugar
     if ($objeto_cmd instanceof comando_base) {
         $opciones_a_sacar = array('listar', 'registrar');
         $hay_que_sacar = $objeto_cmd->tiene_definido_base();
         foreach (array_keys($this->opciones) as $id) {
             $existe = in_array($id, $opciones_a_sacar);
             if ($existe && $hay_que_sacar) {
                 unset($this->opciones[$id]);
             }
             if (!$existe && !$hay_que_sacar) {
                 unset($this->opciones[$id]);
             }
         }
     }
     //-----------------------------------
     $i = 0;
     foreach ($this->opciones as $opcion => $atributos) {
         if (!isset($atributos['tags']['gtk_no_mostrar'])) {
             $nombre = ucwords(str_replace('_', ' ', $opcion));
             $boton = new GtkToolButton();
             $boton->set_label($nombre);
             if (isset($atributos['tags']['gtk_icono'])) {
                 $archivo = $atributos['tags']['gtk_icono'];
                 $img = GtkImage::new_from_file(toba_dir() . '/www/img/' . $archivo);
                 $boton->set_property('icon-widget', $img);
             }
             $boton->set_tooltip($this->tooltips, $atributos['ayuda']);
             $boton->connect('clicked', array($this, 'evt__ejecutar'), $opcion, $atributos);
             $this->comp['caja_opciones']->insert($boton, $i);
             //--- Desactivar algunos
             if ($objeto_cmd instanceof comando_instalacion && ($opcion == 'instalar' || $opcion == 'crear') && toba_modelo_instalacion::existe_info_basica()) {
                 $boton->set_sensitive(false);
             }
             //----
             $i++;
         }
         if (isset($atributos['tags']['gtk_separador'])) {
             $boton = new GtkSeparatorToolItem();
             $this->comp['caja_opciones']->insert($boton, $i);
             $i++;
         }
     }
     $this->comp['caja_opciones']->show_all();
 }
Beispiel #3
0
 /**
  * Cambia los permisos de los archivo para que el usuario Apache cree directorios y pueda crear y leer carpetas navegables 
  * @consola_parametros [-u usuario apache, se asume www-data] [-g grupo de usuarios, no se asume ninguno]
  * @gtk_icono  password.png
  */
 function opcion__cambiar_permisos()
 {
     //Si es produccion dar permisos solo a apache, sino a usuario y grupo
     $subject = $this->get_instalacion()->es_produccion() ? "u" : "ug";
     $param = $this->get_parametros();
     $grupo = isset($param['-g']) ? $param['-g'] : null;
     $usuario = isset($param['-u']) ? $param['-u'] : 'www-data';
     $toba_dir = toba_dir();
     $this->consola->subtitulo('Cambiando permisos de archivos navegables');
     $comandos = array(array("chown -R {$usuario} {$toba_dir}/www", "Archivos navegables comunes:\n"), array("chmod -R {$subject}+rw {$toba_dir}/www", ''), array("chown -R {$usuario} {$toba_dir}/instalacion", "Archivos de configuración:\n"), array("chmod -R {$subject}+rw {$toba_dir}/instalacion", ''), array("chown -R {$usuario} {$toba_dir}/temp", "Archivos temporales comunes:\n"), array("chmod {$subject}+rw {$toba_dir}/temp", ''));
     foreach (toba_modelo_instalacion::get_lista_proyectos() as $proyecto) {
         $id_proyecto = basename($proyecto);
         $comandos[] = array("chown -R {$usuario} {$proyecto}/www", "Archivos navegables de {$id_proyecto}:\n");
         $comandos[] = array("chmod -R {$subject}+rw {$proyecto}/www", '');
         $comandos[] = array("chown -R {$usuario} {$proyecto}/temp", "Archivos temporales de {$id_proyecto}:\n");
         $comandos[] = array("chmod -R {$subject}+rw {$proyecto}/temp", '');
     }
     foreach ($comandos as $comando) {
         $this->consola->mensaje($comando[1], false);
         $this->consola->mensaje("   " . $comando[0] . exec($comando[0]));
     }
     if (isset($grupo)) {
         $comando = "chgrp -R {$grupo} {$toba_dir}";
         $this->consola->subtitulo("\nCambiando permisos globales para el grupo {$grupo}");
         $this->consola->mensaje("   " . $comando . exec($comando));
         $comando = "chmod -R g+rw {$toba_dir}";
         $this->consola->mensaje("   " . $comando . exec($comando));
     }
 }
Beispiel #4
0
        }
    }
}
//ei_arbol($_SESSION, 'SESION', null, true);
//--- VERSION
echo "<style type='text/css'>\n\t#overlay_contenido {\n\t\twidth: 90%;\n\t}\n\t.overlay-mensaje {\n\t\tmax-height: 100%;\n\t\toverflow: visible;\n\t}\n\tli {\n\t\tpadding-top: 5px;\n\t}\n</style>";
$url_trac = get_url_desarrollos();
$url_login = $url_trac . '/trac/toba/login';
if (isset($_GET['phpinfo'])) {
    phpinfo();
    //} elseif (isset($_POST['chequeo'])) {
} else {
    /*echo toba_form::abrir('toba', toba::vinculador()->get_url());
    		echo toba_form::submit('chequeo', "Chequear compatibilidad extensiones");
    		echo toba_form::cerrar();*/
    $version = toba_modelo_instalacion::get_version_actual();
    $cambios = "{$url_trac}/trac/toba/wiki/Versiones/" . ($version->get_release('.') . '.0');
    echo "<div class='logo-inicio'>";
    echo toba_recurso::imagen_proyecto('logo.gif', true);
    echo '<br><br>Editando proyecto <strong>' . toba_editor::get_proyecto_cargado() . '</strong> en la instancia <strong>' . toba_editor::get_id_instancia_activa() . '</strong>.<br>';
    $ayuda = toba_recurso::ayuda(null, 'Ver log de cambios introducidos en esta versión');
    echo "<a target='wiki' style='text-decoration:none; font-size: 16px; font-weight: bold;margin-top: 25px;float:left' href='{$cambios}' {$ayuda}>Versión ";
    echo $version->__toString() . '</a>';
    $vinc = toba::vinculador()->get_url(null, null, array('phpinfo' => 1));
    echo "<a style='text-decoration:none; float:right; text-align: center; ' href='{$vinc}' title='Ver información acerca de la instalación PHP de este servidor'>";
    echo toba_recurso::imagen_proyecto('php-med-trans.png', true);
    echo '<br>' . phpversion();
    echo '</a>';
    if (!toba_manejador_archivos::es_windows()) {
        //Por ahora este mécanismo sólo funciona en linux
        controlar_usuario();
 function ejecutar_ventana_migracion_version($con_transaccion = true)
 {
     toba_logger::instancia()->debug('Ejecutando ventana de migracion de instancia');
     $path_migracion_instancia = toba_dir() . '/php/modelo/migraciones_instancia';
     //Armo la ubicacion en donde se hallan los pasos de migracion de la instancia
     $version_actual = new toba_version($this->get_version_actual());
     //Recupero la version de la instancia existente
     $actual_codigo = new toba_version(toba_modelo_instalacion::get_version_actual());
     //Recupero la version actual del codigo instalado
     $version_actual->set_path_migraciones($path_migracion_instancia);
     //Cambio el path a las migraciones por defecto
     $versiones = $version_actual->get_secuencia_migraciones($actual_codigo, $path_migracion_instancia);
     //Calculo cuales son los pasos a dar
     if (empty($versiones)) {
         return;
     }
     foreach (array_keys($versiones) as $version) {
         $versiones[$version]->set_path_migraciones($path_migracion_instancia);
         //Hago la migracion para cada version intermedia
         $this->migrar_version($versiones[$version], false, $con_transaccion);
     }
 }
 protected function definir_base_motor($param)
 {
     $nombre_toba = 'toba_' . toba_modelo_instalacion::get_version_actual()->get_release('_');
     $nombre_parametro = array('-b', '--base-nombre', 'toba-base-nombre');
     $result = $this->recuperar_dato_y_validez($param, $nombre_parametro);
     if ($result['invalido']) {
         toba::logger()->error("Se selecciono '{$nombre_toba}' como nombre de bd, ya que uno válido no fue provisto");
         return $nombre_toba;
     }
     return $result['resultado'];
 }
Beispiel #7
0
 /**
  * Punto de entrada desde la consola al nucleo
  */
 function acceso_consola($instancia, $proyecto, $item)
 {
     $estado_proceso = null;
     $this->iniciar_contexto_desde_consola($instancia, $proyecto);
     try {
         $this->solicitud = toba_constructor::get_runtime(array('proyecto' => $proyecto, 'componente' => $item), 'toba_item');
         $this->solicitud->procesar();
         //Se llama a la ACTIVIDAD del ITEM
         $this->solicitud->registrar();
         $this->solicitud->finalizar_objetos();
         $estado_proceso = $this->solicitud->get_estado_proceso();
     } catch (toba_error $e) {
         toba::logger()->crit($e, 'toba');
         echo $e;
     }
     $this->finalizar_contexto_ejecucion();
     toba::logger()->debug('Estado Proceso: ' . $estado_proceso, 'toba');
     //toba::logger()->debug('Tiempo utilizado: ' . toba::cronometro()->tiempo_acumulado() . ' seg.');
     $dir_logs = toba_modelo_instalacion::dir_base() . '/logs_comandos';
     toba::logger()->set_directorio_logs($dir_logs);
     toba::logger()->guardar_en_archivo('comandos.log');
     exit($estado_proceso);
 }
Beispiel #8
0
 function crear_instancia($nombre_instancia, $datos_motor)
 {
     $nombre_toba = 'toba_' . toba_modelo_instalacion::get_version_actual()->get_string_partes();
     //--- Agrega la fuente de datos de la instancia
     $datos_motor['base'] = $nombre_toba . '_' . $nombre_instancia;
     $confirmado = false;
     do {
         $this->get_instalacion()->agregar_db($nombre_instancia, $datos_motor);
         //--- Si la base existe, pregunta por un nombre alternativo, por si no quiere pisarla
         if ($this->get_instalacion()->existe_base_datos($nombre_instancia)) {
             $mensaje = "La base <b>{$datos_motor['base']}</b> ya está siendo utiliza en este servidor.";
             $confirmado = inst_fact::gtk()->confirmar_pisar_base($mensaje);
             if ($confirmado !== true) {
                 $datos_motor['base'] = $confirmado;
                 $confirmado = false;
             }
         } else {
             $confirmado = true;
         }
     } while ($confirmado === false);
     //--- Crea la instancia
     $proyectos = toba_modelo_proyecto::get_lista();
     if (isset($proyectos['toba_testing'])) {
         //--- Elimina el proyecto toba_testing
         unset($proyectos['toba_testing']);
     }
     toba_modelo_instancia::crear_instancia($nombre_instancia, $nombre_instancia, $proyectos);
     $instancia = $this->get_instancia($nombre_instancia);
     $instancia->cargar(true);
     //--- Vincula un usuario a todos los proyectos
     $instancia->agregar_usuario('toba', 'Usuario Toba', 'toba');
     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', $grupo_acceso);
     }
     $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();
     }
 }
Beispiel #9
0
 /**
  * Migra un proyecto entre dos versiones toba.
  * @consola_parametros Opcionales: [-d 'desde']  [-h 'hasta'] [-R 0|1] [-m metodo puntual de migracion]
  * @gtk_icono convertir.png 
  * @consola_separador 1
  * @gtk_separador 1
  */
 function opcion__migrar_toba()
 {
     $proyecto = $this->get_proyecto();
     //--- Parametros
     $param = $this->get_parametros();
     $desde = isset($param['-d']) ? new toba_version($param['-d']) : $proyecto->get_version_actual();
     $hasta = isset($param['-h']) ? new toba_version($param['-h']) : toba_modelo_instalacion::get_version_actual();
     $desde_texto = $desde->__toString();
     $hasta_texto = $hasta->__toString();
     $this->consola->titulo("Migración el proyecto '{$proyecto->get_id()}'" . " desde la versión {$desde_texto} hacia la {$hasta_texto}.");
     if (!isset($param['-m'])) {
         $versiones = $desde->get_secuencia_migraciones($hasta);
         if (empty($versiones)) {
             $this->consola->mensaje("No es necesario ejecutar una migración entre estas versiones para el proyecto '{$proyecto->get_id()}'");
             return;
         }
         $proyecto->migrar_rango_versiones($desde, $hasta, false);
     } else {
         //Se pidio un método puntual
         $proyecto->ejecutar_migracion_particular($hasta, trim($param['-m']));
     }
 }
Beispiel #10
0
 /**
  *	Crea un proyecto NUEVO
  */
 static function crear(toba_modelo_instancia $instancia, $nombre, $usuarios_a_vincular)
 {
     //- 1 - Controles
     $dir_template = toba_dir() . self::template_proyecto;
     if ($nombre == 'toba') {
         throw new toba_error("INSTALACION: No es posible crear un proyecto con el nombre 'toba'");
     }
     if (self::existe($nombre)) {
         throw new toba_error("INSTALACION: Ya existe una carpeta con el nombre '{$nombre}' en la carpeta 'proyectos'");
     }
     try {
         //- 2 - Modificaciones en el sistema de archivos
         $dir_proyecto = $instancia->get_path_proyecto($nombre);
         $url_proyecto = $instancia->get_url_proyecto($nombre);
         // Creo la CARPETA del PROYECTO
         $excepciones = array();
         $excepciones[] = $dir_template . '/www/aplicacion.produccion.php';
         toba_manejador_archivos::copiar_directorio($dir_template, $dir_proyecto, $excepciones);
         // Modifico los archivos
         $editor = new toba_editor_archivos();
         $editor->agregar_sustitucion('|__proyecto__|', $nombre);
         $editor->agregar_sustitucion('|__instancia__|', $instancia->get_id());
         $editor->agregar_sustitucion('|__toba_dir__|', toba_manejador_archivos::path_a_unix(toba_dir()));
         $editor->agregar_sustitucion('|__version__|', '1.0.0');
         $editor->procesar_archivo($dir_proyecto . '/www/aplicacion.php');
         $modelo = $dir_proyecto . '/php/extension_toba/modelo.php';
         $comando = $dir_proyecto . '/php/extension_toba/comando.php';
         $editor->procesar_archivo($comando);
         $editor->procesar_archivo($modelo);
         $editor->procesar_archivo($dir_proyecto . '/www/rest.php');
         $editor->procesar_archivo($dir_proyecto . '/www/servicios.php');
         rename($modelo, str_replace('modelo.php', $nombre . '_modelo.php', $modelo));
         rename($comando, str_replace('comando.php', $nombre . '_comando.php', $comando));
         $ini = $dir_proyecto . '/proyecto.ini';
         $editor->procesar_archivo($ini);
         // Asocio el proyecto a la instancia
         $instancia->vincular_proyecto($nombre, null, $url_proyecto);
         //- 3 - Modificaciones en la BASE de datos
         $db = $instancia->get_db();
         try {
             $db->abrir_transaccion();
             $db->retrazar_constraints();
             $db->ejecutar(self::get_sql_metadatos_basicos($nombre));
             $sql_version = self::get_sql_actualizar_version(toba_modelo_instalacion::get_version_actual(), $nombre);
             $db->ejecutar($sql_version);
             foreach ($usuarios_a_vincular as $usuario) {
                 self::do_vincular_usuario($db, $nombre, $usuario, array('admin'));
             }
             $db->cerrar_transaccion();
         } catch (toba_error $e) {
             $db->abortar_transaccion();
             $txt = 'PROYECTO : Ha ocurrido un error durante la carga de METADATOS del PROYECTO. DETALLE: ' . $e->getMessage();
             throw new toba_error($txt);
         }
     } catch (toba_error $e) {
         // Borro la carpeta creada
         if (is_dir($dir_proyecto)) {
             $instancia->desvincular_proyecto($nombre);
             toba_manejador_archivos::eliminar_directorio($dir_proyecto);
         }
         throw $e;
     }
 }
 /**
  * Toma un proyecto de una instancia de un toba en un versión anterior e importa el mismo a esta versión
  * La instancia origen se debe llamar igual que la destino
  * @param string $id_instancia Instancia origen/destino de la migración
  * @param string $id_proyecto Proyecto origen/destino de la migración
  * @param string $dir_toba_viejo Directorio del toba que contiene la instancia/proyecto a migrar
  */
 function importar_migrar_proyecto($id_instancia, $id_proyecto, $dir_toba_viejo)
 {
     //$path_proyecto = toba_dir().'/proyectos/'.$id_proyecto;
     $excepcion = null;
     $url = null;
     try {
         $dir_original = $this->get_dir();
         $dir_backup = $dir_original . '.' . date('YmdHms');
         //--- Hacer un backup del directorio actual
         $this->manejador_interface->titulo("1.- Haciendo backup directorio instalacion del nuevo toba");
         if (file_exists($dir_original)) {
             if (!toba_manejador_archivos::copiar_directorio($dir_original, $dir_backup)) {
                 throw new toba_error("No es posible hacer una copia de seguridad de la carpeta '{$dir_original}'. Verifique los permisos de escritura del usuario actual");
             }
         }
         //--- Traer configuraciones de la instancia vieja
         $instancia = $this->get_instancia($id_instancia);
         $archivo_ini_bases = $dir_toba_viejo . '/instalacion/bases.ini';
         if (!file_exists($archivo_ini_bases)) {
             throw new toba_error("No se encuentra el archivo {$archivo_ini_bases}");
         }
         $archivo_instancia = $dir_toba_viejo . "/instalacion/i__{$id_instancia}/instancia.ini";
         if (!file_exists($archivo_instancia)) {
             throw new toba_error("No se encuentra el archivo {$archivo_instancia}");
         }
         $conf_instancia = parse_ini_file($archivo_instancia, true);
         $id_base_instancia = $instancia->get_ini_base();
         if (isset($conf_instancia['base'])) {
             $id_base_instancia = $conf_instancia['base'];
         }
         $bases_viejas = parse_ini_file($archivo_ini_bases, true);
         if (!isset($bases_viejas[$id_base_instancia])) {
             throw new toba_error("No se encuentra la definición de la instancia {$id_base_instancia} en el archivo {$archivo_ini_bases}");
         }
         //--- Incluir solo el proyecto a importar en la instancia
         $this->manejador_interface->titulo("2.- Apuntando la instancia nueva a la de la versión anterior");
         $proyectos_vinculados = $instancia->get_lista_proyectos_vinculados();
         $instancia->set_proyectos_vinculados(array($id_proyecto));
         $path_proyecto = $instancia->get_path_proyecto($id_proyecto);
         $instancia->vincular_proyecto($id_proyecto, $path_proyecto, $url);
         //--- Apuntar la instancia actual a la instancia externa
         $this->actualizar_db($instancia->get_ini_base(), $bases_viejas[$id_base_instancia]);
         $this->cargar_info_ini(true);
         //--- Migrar la instancia vieja
         $this->manejador_interface->titulo("3.- Migrando el proyecto de versión toba");
         $instancia->get_db()->destruir();
         $instancia->get_db(true);
         //Refresca la base
         $desde = $instancia->get_version_actual();
         $hasta = toba_modelo_instalacion::get_version_actual();
         $instancia->get_db()->abrir_transaccion();
         $instancia->migrar_rango_versiones($desde, $hasta, 1, false);
         $instancia->get_proyecto($id_proyecto)->exportar();
         $instancia->get_db()->abortar_transaccion();
         //Aborta la transaccion para que no afecte la instancia vieja
         $instancia->get_db()->destruir();
         //---Restaurar el backup
         if (file_exists($dir_backup)) {
             $this->manejador_interface->titulo("4.- Restaurando backup directorio instalacion del nuevo toba");
             if (file_exists($dir_original)) {
                 toba_manejador_archivos::eliminar_directorio($dir_original);
             }
             rename($dir_backup, $dir_original);
         } else {
             throw new toba_error('Imposible restaurar el estado previo a la migración');
         }
         //--- Agrega el proyecto a la instancia nueva (por si no estaba) y regenera la misma
         $this->manejador_interface->titulo("5.- Regenerando la instancia actual para tomar los cambios");
         $this->cargar_info_ini(true);
         $instancia->cargar_info_ini();
         $instancia->get_db(true);
         //Refresca la base
         //Si existe una entrada actual en el instancias.ini viejo, replicarla en el actual
         $instancia->vincular_proyecto($id_proyecto, $path_proyecto, $url);
         $proyecto = $instancia->get_proyecto($id_proyecto);
         $proyecto->regenerar();
     } catch (Exception $e) {
         $excepcion = $e;
         //---Restaurar el backup
         if (file_exists($dir_backup)) {
             $this->manejador_interface->titulo("Restaurando backup directorio instalacion del nuevo toba");
             if (file_exists($dir_original)) {
                 if (!toba_manejador_archivos::eliminar_directorio($dir_original)) {
                     throw new toba_error("Imposible restaurar backup desde '{$dir_backup}' hacia '{$dir_original}', deberá hacerlo manualmente.");
                 }
             }
             rename($dir_backup, $dir_original);
         }
         throw $excepcion;
     }
 }
Beispiel #12
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("");
 }
Beispiel #13
0
 function comprimir_js()
 {
     $archivos = $this->get_archivos_js_propios();
     $total = 0;
     require_once toba_dir() . '/php/3ros/jscomp/JavaScriptCompressor.class.php';
     require_once toba_dir() . '/php/3ros/jscomp/BaseConvert.class.php';
     $comp = new JavaScriptCompressor(false);
     $salida = array();
     $this->manejador_interface->mensaje('Comprimiendo ' . count($archivos) . ' archivo/s', false);
     foreach ($archivos as $archivo) {
         if (strpos($archivo, "www/js/toba_") !== false) {
             //--- Evita comprimir dos veces
             continue;
         }
         $atr = stat($archivo);
         $total += $atr['size'];
         $nuevo = $comp->getClean(array('code' => file_get_contents($archivo), 'name' => basename($archivo)));
         $salida[] = $nuevo;
         $this->manejador_interface->progreso_avanzar();
     }
     $this->manejador_interface->progreso_fin();
     $todo = implode("\n", $salida);
     $version = toba_modelo_instalacion::get_version_actual();
     $version = $version->__toString();
     $archivo = toba_dir() . "/www/js/toba_{$version}.js";
     file_put_contents($archivo, $todo);
     $atr = stat($archivo);
     $nuevo_total = $atr['size'];
     $this->manejador_interface->mensaje("Antes: {$total} bytes");
     $this->manejador_interface->mensaje("Despues: " . $nuevo_total . " bytes");
     $this->manejador_interface->mensaje("Radio: " . number_format($nuevo_total / $total, 2));
     toba_modelo_instalacion::cambiar_info_basica(array('js_comprimido' => 1));
 }
 /**
  * @return \toba_modelo_proyecto
  * @throws \Exception
  */
 protected function getModeloProyecto()
 {
     return $this->instalacion->get_instancia($this->getInstanciaId())->get_proyecto($this->getProyectoId());
 }
Beispiel #15
0
 /**
  * Migra un instancia entre dos versiones toba.
  * @consola_parametros Opcionales: [-d 'desde']  [-h 'hasta'] [-R 0|1] [-m metodo puntual de migracion]
  * @gtk_icono convertir.png
  */
 function opcion__migrar_toba()
 {
     $instancia = $this->get_instancia();
     //--- Parametros
     $param = $this->get_parametros();
     $desde = isset($param['-d']) ? new toba_version($param['-d']) : $instancia->get_version_actual();
     $hasta = isset($param['-h']) ? new toba_version($param['-h']) : toba_modelo_instalacion::get_version_actual();
     $recursivo = !isset($param['-R']) || $param['-R'] == 1;
     if ($recursivo) {
         $texto_recursivo = " y proyectos contenidos";
     }
     $desde_texto = $desde->__toString();
     $hasta_texto = $hasta->__toString();
     $this->consola->titulo("Migración de la instancia '{$instancia->get_id()}'" . $texto_recursivo . " desde la versión {$desde_texto} hacia la {$hasta_texto}.");
     if (!isset($param['-m'])) {
         $versiones = $desde->get_secuencia_migraciones($hasta);
         if (empty($versiones)) {
             $this->consola->mensaje("No es necesario ejecutar una migración entre estas versiones para la instancia '{$instancia->get_id()}'");
             return;
         }
         $instancia->migrar_rango_versiones($desde, $hasta, $recursivo);
     } else {
         //Se pidio un método puntual
         $this->consola->mensaje("Ejecutando método particular:" . trim($param['-m']));
         $instancia->ejecutar_migracion_particular($hasta, trim($param['-m']));
     }
 }
Beispiel #16
0
/*
	Este script abre una consola del SIU-TOBA 
*/
if (!isset($_SERVER['TOBA_DIR']) && isset($_SERVER['toba_dir'])) {
    $_SERVER['TOBA_DIR'] = $_SERVER['toba_dir'];
}
if (!isset($_SERVER['TOBA_INSTANCIA']) && isset($_SERVER['toba_instancia'])) {
    $_SERVER['TOBA_INSTANCIA'] = $_SERVER['toba_instancia'];
}
if (isset($_SERVER['TOBA_DIR'])) {
    //----------------------------------------------
    // Defino el 'include_path'
    //----------------------------------------------
    $dir = $_SERVER['TOBA_DIR'] . "/php";
    $separador = substr(PHP_OS, 0, 3) == 'WIN' ? ';.;' : ':.:';
    ini_set('include_path', ini_get('include_path') . $separador . $dir);
    //----------------------------------------------
    // Invoco la consola
    //----------------------------------------------
    require_once 'consola/consola.php';
    $directorio_comandos = $dir . "/consola/comandos";
    $clase_menu = 'menu_toba';
    array_shift($argv);
    $consola = new consola($directorio_comandos, $clase_menu);
    $consola->run($argv);
    $dir_logs = toba_modelo_instalacion::dir_base() . "/logs_comandos";
    toba_logger::instancia()->set_directorio_logs($dir_logs);
    toba_logger::instancia()->guardar_en_archivo('comandos.log');
} else {
    echo "  ATENCION: La variable de entorno 'toba_dir' no esta definida!";
}