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