Ejemplo n.º 1
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.");
     }
 }