/** * Instancia el cliente RDI * @return \RDICliente * @throws toba_error * @ignore */ protected function instanciar_cliente() { $id_proyecto = $this->proyecto->get_id(); $ini = new toba_ini($this->instalacion->get_path_carpeta_instalacion() . self::nombre_archivo); if (!$ini->existe_entrada($id_proyecto)) { throw new toba_error('Falta el archivo de configuración rdi.ini'); } $parametros = $ini->get($id_proyecto); $nombre = $this->instalacion->get_nombre(); if (trim($nombre) == '' && !isset($parametros['instalacion'])) { throw new toba_error('Falta especificar el nombre de la instalacion en el archivo instalacion.ini'); } $nombre_inst = trim($nombre) != '' ? $nombre : $parametros['instalacion']; $rdi = new RDICliente($parametros['conector'], $parametros['repositorio'], $parametros['usuario'], $parametros['clave'], $id_proyecto, $nombre_inst); //Agrego un log para desarrollo if (!$this->instalacion->es_produccion()) { $log = new toba_logger_rdi($id_proyecto); $rdi->asociarLog($log); } //Reviso si existen servicios redefinidos y los asigno $serv_personalizados = toba::proyecto()->get_parametro('servicios_rdi', null, false); if (!is_null($serv_personalizados)) { foreach ($serv_personalizados as $servicio => $clase) { $rdi->mapeoServicios()->redefinir($servicio, $clase); } } return $rdi; }
function get_path() { if (empty($this->path)) { $path_instancia_ini = toba::instancia()->get_path_ini(); $instancia_ini = new toba_ini($path_instancia_ini); $datos = $instancia_ini->get($this->get_proyecto()); $nombre = toba_modelo_pms::prefijo_ini . $this->get_etiqueta(); if (!isset($datos[$nombre])) { throw new toba_error("Punto de montaje: el punto de montaje\n\t\t\t\t\t'{$this->get_etiqueta()}' no existe en {$path_instancia_ini}.\n\t\t\t\t\tDebe agregar en instancia.ini la entrada\n\t\t\t\t\t'pm_{$this->get_etiqueta()} = path' donde path es la ubicación\n\t\t\t\t\tabsoluta en el sistema de archivos. Esta entrada debe ir en\n\t\t\t\t\tla sección [{$this->get_proyecto()}]"); } $this->path = $datos[$nombre]; } return $this->path; }
/** * 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; }
/** * Retorna la versión a la cual se debe migrar la aplicación (si ya esta migrada debería ser igual a la 'version_actual') * @return toba_version */ function get_version_nueva() { if (file_exists($this->proyecto->get_dir() . '/proyecto.ini')) { $ini = new toba_ini($this->proyecto->get_dir() . '/proyecto.ini'); if ($ini->existe_entrada('proyecto', 'version')) { return new toba_version($ini->get('proyecto', 'version', null, true)); } } return $this->instalacion->get_version_actual(); }