コード例 #1
0
ファイル: toba_gtk_admin.php プロジェクト: emma5021/toba
 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();
 }
コード例 #2
0
ファイル: comando_instalacion.php プロジェクト: emma5021/toba
 /**
  * Muestra información de la instalación.
  * @gtk_icono info_chico.gif
  * @gtk_no_mostrar 1
  * @gtk_separador 1 
  */
 function opcion__info()
 {
     if (toba_modelo_instalacion::existe_info_basica()) {
         $this->consola->enter();
         //VERSION
         $this->consola->lista(array(toba_modelo_instalacion::get_version_actual()->__toString()), "VERSION");
         // INSTANCIAS
         $instancias = toba_modelo_instancia::get_lista();
         if ($instancias) {
             $this->consola->lista($instancias, 'INSTANCIAS');
         } else {
             $this->consola->enter();
             $this->consola->mensaje('ATENCION: No existen INSTANCIAS definidas.');
         }
         // BASES
         $this->mostrar_bases_definidas();
         // ID de grupo de DESARROLLO
         $grupo = $this->get_instalacion()->get_id_grupo_desarrollo();
         if (isset($grupo)) {
             $this->consola->lista(array($grupo), 'ID grupo desarrollo');
         } else {
             $this->consola->enter();
             $this->consola->mensaje('ATENCION: No esta definido el ID del GRUPO de DESARROLLO.');
         }
         // PROYECTOS
         $proyectos = toba_modelo_proyecto::get_lista();
         if ($proyectos) {
             $lista_proyectos = array();
             foreach ($proyectos as $dir => $id) {
                 $lista_proyectos[] = "{$id} ({$dir})";
             }
             $this->consola->lista($lista_proyectos, 'PROYECTOS (sólo en la carpeta por defecto)');
         } else {
             $this->consola->enter();
             $this->consola->mensaje('ATENCION: No existen PROYECTOS definidos.');
         }
     } else {
         $this->consola->enter();
         $this->consola->mensaje('La INSTALACION no ha sido inicializada.');
     }
 }
コード例 #3
0
ファイル: toba_instalador.php プロジェクト: emma5021/toba
 /**
  * Retorna el path del archivo de configuración de apache resultante
  */
 function crear_instalacion_e_instancia($nombre_instancia, $datos_motor, $grupo)
 {
     $instalacion = $this->get_instalacion();
     $nombre_toba = 'toba_' . toba_modelo_instalacion::get_version_actual()->get_string_partes();
     $alias = '/' . $nombre_toba;
     $nombre = $instalacion->get_nombre();
     //--- Borra todo rastro anterior
     if (toba_modelo_instalacion::existe_info_basica()) {
         toba_modelo_instalacion::borrar_directorio();
     }
     //--- Crea el dir instalacion
     toba_modelo_instalacion::crear($grupo, $alias, $nombre);
     //--- Crea la instancia
     $this->crear_instancia($nombre_instancia, $datos_motor);
     $toba_conf = toba_modelo_instalacion::dir_base() . "/toba.conf";
     return $toba_conf;
 }
コード例 #4
0
 /**
  * Crea una instalación básica.
  * @gtk_icono nucleo/agregar.gif
  */
 function opcion__crear()
 {
     if (!toba_modelo_instalacion::existe_info_basica()) {
         $param = $this->get_parametros();
         $id_grupo_desarrollo = self::definir_id_grupo_desarrollo($param);
         $alias = self::definir_alias_nucleo($param);
         $tipo_instalacion = $this->definir_tipo_instalacion_produccion($param);
         $nombre = $this->definir_nombre_instalacion($param);
         toba_modelo_instalacion::crear($id_grupo_desarrollo, $alias, $nombre, $tipo_instalacion);
     }
 }
コード例 #5
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("");
 }