コード例 #1
0
 function __construct($toba_instalador)
 {
     $this->toba_instalador = $toba_instalador;
     $archivo = dirname(__FILE__) . '/toba.glade';
     $glade = new GladeXML($archivo, 'dlg_crear_instancia');
     foreach (self::$comp_req as $comp) {
         $this->comp[$comp] = $glade->get_widget($comp);
     }
     $glade->signal_autoconnect_instance($this);
     //---Bases disponibles
     $store = new GtkListStore(Gtk::TYPE_STRING);
     $instalacion = $this->toba_instalador->get_instalacion();
     foreach ($instalacion->get_lista_bases() as $db) {
         $param = $instalacion->get_parametros_base($db);
         $store->append(array($db));
     }
     $this->comp['combo_base']->set_model($store);
     $cellRenderer = new GtkCellRendererText();
     $this->comp['combo_base']->pack_start($cellRenderer);
     $this->comp['combo_base']->set_active(0);
     //--- Pone los proyectos
     $proyectos = toba_modelo_proyecto::get_lista();
     foreach ($proyectos as $path => $id) {
         $label = $path == $id ? $id : "{$id} (Directorio {$path})";
         $check = new GtkCheckButton($label);
         $check->set_use_underline(false);
         $this->check_proyectos[] = array($id, $path, $check);
         $check->show();
         $this->comp['box_proyectos']->pack_start($check);
     }
 }
コード例 #2
0
 protected function generar_schema_diff()
 {
     $schema_o = $this->get_schema_original();
     $schema_logs_o = $schema_o . '_logs';
     $schema_t = $this->get_schema_personalizacion();
     $schema_logs_t = $schema_t . '_logs';
     $this->get_db()->abrir_transaccion();
     try {
         //1.-  Renombrar el schema actual, al schema personalizado para que no rompa luego
         $this->get_db()->renombrar_schema($schema_logs_o, $schema_logs_t);
         $this->get_db()->renombrar_schema($schema_o, $schema_t);
         //2.-  Indicarle al proyecto cual es el directorio de carga de los metadatos que debe usar
         $this->get_proyecto()->get_instancia()->set_dir_carga_proyecto($this->proyecto->get_id(), self::dir_metadatos_originales);
         //3.- Realizar la carga de la instancia, re-creando previamente el schema original que consta en bases.ini
         $this->get_proyecto()->get_instancia()->crear_schema();
         $this->get_db()->retrazar_constraints();
         $this->get_proyecto()->get_instancia()->cargar_autonomo();
         $this->get_db()->cerrar_transaccion();
         $this->get_db()->set_schema($schema_o);
     } catch (toba_error_db $e) {
         $this->get_db()->abortar_transaccion();
         toba_logger::instancia()->error($e->getMessage());
         throw new toba_error_usuario('Hubo un inconveniente al intentar exportar la personalización, revise el log');
     }
 }
コード例 #3
0
 /**
  *	Devuelve una referencia a un PROYECTO
  * @return toba_modelo_proyecto
  */
 function get_proyecto($id_instancia, $id_proyecto, $manejador_interface = null)
 {
     $instancia = $this->get_instancia($id_instancia, $manejador_interface);
     $archivo_proy = $instancia->get_path_proyecto($id_proyecto) . "/php/extension_toba/modelo_{$id_proyecto}.php";
     if (file_exists($archivo_proy)) {
         require_once $archivo_proy;
         $clase = 'modelo_' . $id_proyecto;
         $proyecto = new $clase($instancia, $id_proyecto);
     } else {
         $proyecto = new toba_modelo_proyecto($instancia, $id_proyecto);
     }
     if (!isset($manejador_interface)) {
         $manejador_interface = new toba_mock_proceso_gui();
     }
     $proyecto->set_manejador_interface($manejador_interface);
     return $proyecto;
 }
コード例 #4
0
ファイル: toba_modelo_pms.php プロジェクト: emma5021/toba
 /**
  * Shortcut para crear el punto de montaje de la personalización de un proyecto
  */
 function crear_pm_personalizacion()
 {
     $id_proyecto = $this->proyecto->get_id();
     $punto = new toba_punto_montaje_pers();
     $punto->set_etiqueta(toba_modelo_pms::pm_pers);
     $punto->set_proyecto($id_proyecto);
     $punto->set_proyecto_referenciado($id_proyecto);
     $punto->set_descripcion('Punto de montaje por defecto de la personalización de todos los proyectos de toba');
     $punto->set_path('personalizacion/php');
     $this->guardar($punto);
 }
コード例 #5
0
 function conf__inicial()
 {
     require_once 'admin_util.php';
     //*********  FRAMES entorno EDICION ************
     //-- FRAME control
     define('apex_frame_control', 'frame_control');
     //-- FRAME lista
     define('apex_frame_lista', 'frame_lista');
     //-- FRAME central
     define('apex_frame_centro', 'frame_centro');
     // Emular el contexto en el consumo por consola.
     if (php_sapi_name() === 'cli') {
         toba_editor::iniciar(toba::instancia()->get_id(), toba_editor::get_id());
         toba_editor::referenciar_memoria();
     }
     toba_zona::set_modo_url(true);
     $clases = array('ci_editores_toba');
     toba_modelo_proyecto::set_clases_excluidas_autoload($clases);
 }
コード例 #6
0
 function migrar_auditoria_2_4($tablas = array(), $prefijo_tablas = null)
 {
     $fuentes = $this->proyecto->get_indice_fuentes();
     if (empty($fuentes)) {
         return;
     }
     $base = $this->proyecto->get_db_negocio();
     $auditoria = $base->get_manejador_auditoria($this->schema_modelo, $this->schema_auditoria, $this->schema_toba);
     if (is_null($auditoria)) {
         //No existe manejador para el motor en cuestion
         return;
     }
     if (empty($tablas)) {
         $auditoria->agregar_tablas($prefijo_tablas);
     } else {
         foreach ($tablas as $tabla) {
             $auditoria->agregar_tabla($tabla);
         }
     }
     $auditoria->migrar_estructura_campos_toba_2_4();
 }
コード例 #7
0
 function __construct($toba_instalador, $param_comando)
 {
     $this->param_comando = $param_comando;
     $this->toba_instalador = $toba_instalador;
     $archivo = dirname(__FILE__) . '/toba.glade';
     $glade = new GladeXML($archivo, 'dlg_cargar_proyecto');
     foreach (self::$comp_req as $comp) {
         $this->comp[$comp] = $glade->get_widget($comp);
     }
     $glade->signal_autoconnect_instance($this);
     $modelo = new GtkListStore(Gtk::TYPE_STRING, Gtk::TYPE_STRING);
     $opciones = toba_modelo_proyecto::get_lista();
     print_r($opciones);
     $iter = $modelo->append(array($this->label_otro, null));
     foreach ($opciones as $path => $id) {
         $label = $id == $path ? $id : "{$id} ({$path})";
         $modelo->append(array($label, $id));
     }
     $this->comp['combo_proyecto']->set_model($modelo);
     $this->comp['combo_proyecto']->set_active_iter($iter);
     $this->evt__cambio_proyecto();
 }
コード例 #8
0
ファイル: toba_modelo_rest.php プロジェクト: emma5021/toba
 /**
  * @param toba_modelo_proyecto $proyecto
  * @param $id_servicio
  * @return toba_ini
  */
 static function get_ini_cliente(toba_modelo_proyecto $proyecto, $id_servicio)
 {
     $directorio = $proyecto->get_dir_instalacion_proyecto() . "/rest/{$id_servicio}";
     $ini = new toba_ini($directorio . '/cliente.ini');
     return $ini;
 }
コード例 #9
0
 static function extender_clases(toba_modelo_proyecto $proyecto, $consola, $de)
 {
     $seguir = true;
     if ($proyecto->tiene_clases_extendidas($de)) {
         $mensaje = "Las clases ya están extendidas. Si las reextiende se ";
         $mensaje .= "perderán todos los cambios que se introdujeron en las ";
         $mensaje .= "mismas. Desea reextender de cualquier manera?";
         $seguir = $consola->dialogo_simple($mensaje);
     }
     if ($seguir) {
         $prefijo = $de == 'proyecto' ? '/personalizacion' : '';
         $path = $proyecto->get_dir() . $prefijo . '/php/extension_toba/componentes';
         util_modelo_proyecto::extender_componentes($proyecto, $path, $de);
         util_modelo_proyecto::marcar_clases_extendidas($proyecto, $de);
     }
     return $seguir;
 }
コード例 #10
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.');
     }
 }
コード例 #11
0
 function vincular_proyecto($proyecto, $path = null, $url = null)
 {
     if (isset($path) || toba_modelo_proyecto::existe($proyecto, false)) {
         $datos_ini = array();
         $ini = $this->get_ini();
         $datos = explode(',', $ini->get_datos_entrada('proyectos'));
         $proyectos_instancia = array();
         foreach ($datos as $valor) {
             if (trim($valor) != '') {
                 $proyectos_instancia[] = trim($valor);
             }
         }
         $existe_proyecto = in_array($proyecto, $proyectos_instancia);
         if (!$existe_proyecto) {
             //Si el proyecto no existe en la instancia lo agrego
             $proyectos_instancia[] = $proyecto;
             $ini->set_datos_entrada('proyectos', implode(', ', array_unique($proyectos_instancia)));
         } elseif ($ini->existe_entrada($proyecto)) {
             //Si ya estaba, levanto sus datos anteriores
             $datos_ini = $ini->get_datos_entrada($proyecto);
         }
         //Actualizo los datos del proyecto si se cambiaron
         if (isset($path)) {
             $datos_ini['path'] = $path;
         } elseif (is_null($path)) {
             $datos_ini['path'] = $this->get_path_proyecto($proyecto);
             toba_logger::instancia()->debug("El path elegido para el proyecto '{$proyecto}' es {$datos_ini['path']}");
         }
         if (isset($url)) {
             $datos_ini['url'] = $url;
         } elseif (is_null($url)) {
             $datos_ini['url'] = $this->get_url_proyecto($proyecto);
             toba_logger::instancia()->debug("La url elegida para el proyecto '{$proyecto}' es {$datos_ini['url']}");
         }
         $usar_perfiles_propios = $this->get_proyecto_usar_perfiles_propios($proyecto);
         if ($usar_perfiles_propios) {
             $datos_ini['usar_perfiles_propios'] = $usar_perfiles_propios;
             toba_logger::instancia()->debug("El proyecto '{$proyecto}' usa perfiles propios");
         }
         if (!$ini->existe_entrada($proyecto)) {
             //Si no hay entrada previa para los datos del proyecto
             $ini->agregar_entrada($proyecto, $datos_ini);
         } else {
             $ini->set_datos_entrada($proyecto, $datos_ini);
         }
         $ini->guardar();
         toba_logger::instancia()->debug("Vinculado el proyecto '{$proyecto}' a la instancia");
         // Recargo la inicializacion de la instancia
         $this->cargar_info_ini();
         //Genera .ini templates de rest
         $this->generar_ini_rest($proyecto);
     } else {
         throw new toba_error("El proyecto '{$proyecto}' no existe.");
     }
 }
コード例 #12
0
ファイル: comando_toba.php プロジェクト: emma5021/toba
 /**
  *	Interface de seleccion de PROYECTOS
  */
 protected function seleccionar_proyectos($seleccion_multiple = true, $obligatorio = false)
 {
     $titulo = $seleccion_multiple ? "Seleccionar PROYECTOS" : "Seleccionar PROYECTO";
     $proyectos = toba_modelo_proyecto::get_lista();
     if (count($proyectos) > 0) {
         $sel = $this->consola->dialogo_lista_opciones($proyectos, $titulo, $seleccion_multiple, 'Nombre real del proyecto', $obligatorio, array_keys($proyectos), 'todos');
         //--- Se valida que un proyecto no se incluya dos veces
         //--- Ademas se transpone la matriz, ya que ahora proyecto es una PK
         $seleccion = array();
         if ($seleccion_multiple) {
             foreach ($sel as $path) {
                 if (isset($seleccion[$proyectos[$path]])) {
                     throw new toba_error('ERROR: Una instancia no soporta contener el mismo proyecto más de una vez');
                 }
                 $seleccion[$proyectos[$path]] = $path;
             }
         } else {
             //--Arreglo id,path
             return array($proyectos[$sel], $sel);
         }
         return $seleccion;
     } else {
         if ($obligatorio) {
             throw new toba_error('No hay proyectos definidos');
         }
         return array();
     }
 }
コード例 #13
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("");
 }
コード例 #14
0
ファイル: toba_fuente_datos.php プロジェクト: emma5021/toba
 function crear_usuario_para_auditoria($db)
 {
     if ($this->definicion['tiene_auditoria'] == '1') {
         $usuario = toba::usuario()->get_id();
         if (!isset($usuario)) {
             $usuario = 'publico';
         }
         $id_solicitud = $db->quote(toba::instancia()->get_id_solicitud());
         $usuario = $db->quote($usuario);
         $sql = 'CREATE TEMP TABLE tt_usuario ( usuario VARCHAR(60), id_solicitud INTEGER);';
         if (isset($this->definicion['permisos_por_tabla']) && $this->definicion['permisos_por_tabla'] == '1') {
             $id_operacion = toba::memoria()->get_item_solicitado();
             $rol_runtime = toba_modelo_proyecto::get_rol_prueba_db_basico($this->definicion['fuente_datos']);
             //Obtengo el rol basico de prueba
             $rol_operacion = toba_modelo_proyecto::get_rol_prueba_db($this->definicion['fuente_datos'], $id_operacion['1']);
             //Obtengo el particular para la operacion
             if ($db->existe_rol($rol_operacion)) {
                 //Si existe el rol para la operacion entonces lo seteo como el apropiado
                 $rol_runtime = $rol_operacion;
             }
             $sql .= "GRANT SELECT, INSERT ON tt_usuario TO {$rol_runtime} ;";
         }
         $sql .= "INSERT INTO tt_usuario (usuario, id_solicitud) VALUES ({$usuario}, {$id_solicitud})";
         $db->ejecutar($sql);
     }
 }
コード例 #15
0
 /**
  * Genera los archivos para los certificados del proyecto
  * @param toba_modelo_proyecto $proyecto
  * @param string $directorio
  * @throws toba_error_usuario 
  */
 static function generar_certificados(toba_modelo_proyecto $proyecto, $directorio = null)
 {
     //Si no se pasa directorio de salida, asigno por defecto el de instalacion del proyecto
     if (is_null($directorio)) {
         $directorio = $proyecto->get_dir_instalacion_proyecto();
     }
     //Busco en el directorio de la instalacion de Toba el archivo de configuracion para openssl
     $dir_inst = $proyecto->get_instalacion()->get_dir();
     if (!file_exists($dir_inst . '/openssl.ini')) {
         throw new toba_error_usuario("No existe el archivo '{$dir_inst}/openssl.ini'. Necesita copiarlo de la carpeta toba/php/modelo/var");
     }
     $cmd = "openssl req -x509 -nodes -days 20000 -newkey rsa:1024 -keyout {$directorio}/privada.key.sign -config {$dir_inst}/openssl.ini -out {$directorio}/publica.crt";
     $exito = toba_manejador_archivos::ejecutar($cmd, $stdout, $stderr);
     if ($exito != '0') {
         throw new toba_error_usuario($stderr . "\n Asegurese tener instalados los binarios de OpenSSL y disponibles en el path. Para comprobar ejecute 'openssl version'");
     }
     $cmd = "openssl rsa -in {$directorio}/privada.key.sign -out {$directorio}/privada.key";
     $exito = toba_manejador_archivos::ejecutar($cmd, $stdout, $stderr);
     if ($exito != '0') {
         throw new toba_error_usuario($stderr);
     }
     unlink("{$directorio}/privada.key.sign");
 }
コード例 #16
0
ファイル: toba_instalador.php プロジェクト: emma5021/toba
 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();
     }
 }
コード例 #17
0
ファイル: comando_proyecto.php プロジェクト: emma5021/toba
 /**
  * Crea un proyecto NUEVO.
  * @consola_parametros Opcional: [-x] Si se utiliza esta opción el proyecto creado será personalizable
  * @gtk_icono nucleo/agregar.gif 
  * @gtk_no_mostrar 1
  */
 function opcion__crear()
 {
     $id_instancia = $this->get_id_instancia_actual();
     $id_proyecto = $this->get_id_proyecto_actual();
     $instancia = $this->get_instancia($id_instancia);
     $params = $this->get_parametros();
     // --  Creo el proyecto
     $this->consola->mensaje("Creando el proyecto '{$id_proyecto}' en la instancia '{$id_instancia}'...", false);
     $usuarios = $this->seleccionar_usuarios($instancia);
     toba_modelo_proyecto::crear($instancia, $id_proyecto, $usuarios);
     $this->consola->progreso_fin();
     // Extendemos las clases de toba a clases del proyecto
     $proyecto = $this->get_proyecto($id_proyecto);
     $pms = $proyecto->get_pms();
     util_modelo_proyecto::extender_clases($proyecto, $this->consola, 'toba');
     $pms->crear_pm_proyecto();
     // -- Modifica el proyecto para que sea apto para personalizaciones
     if (isset($params['-x'])) {
         $this->hacer_personalizable(false);
     }
     $proyecto->generar_autoload($this->consola);
     // -- Asigno un nuevo item de login
     $proyecto->actualizar_login();
     // -- Exporto el proyecto creado
     $proyecto->exportar();
     if (isset($params['-d'])) {
         //Como necesita si o si, ser creado en el dir proyectos.. luego de creado lo muevo
         $origen = $proyecto->get_dir();
         // lo revinculo con el directorio nuevo y re-instancio el proyecto para que arme bien el alias
         $path = $params['-d'];
         $instancia->vincular_proyecto($id_proyecto, $path);
         toba_manejador_archivos::copiar_directorio($origen, $path);
         toba_manejador_archivos::eliminar_directorio($origen);
         $proyecto = $this->get_proyecto($id_proyecto);
     }
     $instancia->exportar_local();
     if (!$proyecto->esta_publicado()) {
         $this->consola->separador();
         $agregar = $this->consola->dialogo_simple("El proyecto ha sido creado. ¿Desea agregar el alias de apache al archivo toba.conf?", true);
         if ($agregar) {
             $proyecto->publicar();
             $this->consola->mensaje('OK. Debe reiniciar el servidor web para que los cambios tengan efecto');
         }
     }
 }
コード例 #18
0
 /**
  *	Devuelve la lista de proyectos existentes en la carpeta por defecto de la instalación
  * 	Es posible que existan proyectos en otros lugares del sistema de archivos y no se listen con este método
  * 	@return array Arreglo asociativo path relativo => id proyecto
  */
 static function get_lista($usar_cache = true)
 {
     if (!isset(self::$lista_proyectos) || !$usar_cache) {
         $proyectos = array();
         $directorio_proyectos = toba_dir() . '/proyectos';
         if (is_dir($directorio_proyectos)) {
             if ($dir = opendir($directorio_proyectos)) {
                 while (false !== ($archivo = readdir($dir))) {
                     if (is_dir($directorio_proyectos . '/' . $archivo) && $archivo != '.' && $archivo != '..' && $archivo != '.svn') {
                         $arch_nombre = $directorio_proyectos . '/' . $archivo . '/proyecto.ini';
                         $id = $archivo;
                         //--- Si no se encuentra el archivo PROYECTO, se asume que dir=id
                         if (file_exists($arch_nombre)) {
                             $ini = new toba_ini($arch_nombre);
                             $id = $ini->get('proyecto', 'id', null, true);
                         }
                         $proyectos[$archivo] = $id;
                     }
                 }
                 closedir($dir);
             }
         }
         self::$lista_proyectos = $proyectos;
     }
     return self::$lista_proyectos;
 }