Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
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;
 }
Exemplo n.º 4
0
 /**
  * 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();
 }