Ejemplo n.º 1
0
 /**
  * Inicialización de la clase en el entorno consumidor
  * @param toba_modelo_instalacion $instalacion Representante de la instalación de toba como un todo
  * @param toba_modelo_instancia $instancia Representante de la instancia actualmente utilizada
  * @param toba_modelo_proyecto $proyecto Representante del proyecto como un proyecto toba (sin la lógica de admin. de la aplicación)
  * @param $default_schema Esquema por defecto del proyecto
  * 
  */
 function set_entorno($manejador_interface, toba_modelo_instalacion $instalacion, toba_modelo_instancia $instancia, toba_modelo_proyecto $proyecto, $default_schema = 'public')
 {
     $this->manejador_interface = $manejador_interface;
     $this->instalacion = $instalacion;
     $this->instancia = $instancia;
     $this->proyecto = $proyecto;
     $db = $instancia->get_db();
     $schema_toba = $instancia->get_id();
     if ($db->existe_schema($schema_toba)) {
         $this->schema_toba = $schema_toba;
     }
     //Si no se harcodeo el schema del proyecto, trata de averiguarlo
     if (!isset($this->schema_modelo)) {
         $encontrado = false;
         $id_def_base = $this->proyecto->construir_id_def_base($this->get_fuente_defecto());
         if ($this->instalacion->existe_base_datos_definida($id_def_base)) {
             $parametros = $this->instalacion->get_parametros_base($id_def_base);
             if (isset($parametros['schema'])) {
                 $this->schema_modelo = $parametros['schema'];
                 $encontrado = true;
             }
         }
         if (!$encontrado) {
             $this->schema_modelo = $default_schema;
         }
     }
     //Construye el schema de la auditoria
     $this->schema_auditoria = $this->schema_modelo . '_auditoria';
 }
Ejemplo n.º 2
0
 /**
  *	Crea un proyecto NUEVO
  */
 static function crear(toba_modelo_instancia $instancia, $nombre, $usuarios_a_vincular)
 {
     //- 1 - Controles
     $dir_template = toba_dir() . self::template_proyecto;
     if ($nombre == 'toba') {
         throw new toba_error("INSTALACION: No es posible crear un proyecto con el nombre 'toba'");
     }
     if (self::existe($nombre)) {
         throw new toba_error("INSTALACION: Ya existe una carpeta con el nombre '{$nombre}' en la carpeta 'proyectos'");
     }
     try {
         //- 2 - Modificaciones en el sistema de archivos
         $dir_proyecto = $instancia->get_path_proyecto($nombre);
         $url_proyecto = $instancia->get_url_proyecto($nombre);
         // Creo la CARPETA del PROYECTO
         $excepciones = array();
         $excepciones[] = $dir_template . '/www/aplicacion.produccion.php';
         toba_manejador_archivos::copiar_directorio($dir_template, $dir_proyecto, $excepciones);
         // Modifico los archivos
         $editor = new toba_editor_archivos();
         $editor->agregar_sustitucion('|__proyecto__|', $nombre);
         $editor->agregar_sustitucion('|__instancia__|', $instancia->get_id());
         $editor->agregar_sustitucion('|__toba_dir__|', toba_manejador_archivos::path_a_unix(toba_dir()));
         $editor->agregar_sustitucion('|__version__|', '1.0.0');
         $editor->procesar_archivo($dir_proyecto . '/www/aplicacion.php');
         $modelo = $dir_proyecto . '/php/extension_toba/modelo.php';
         $comando = $dir_proyecto . '/php/extension_toba/comando.php';
         $editor->procesar_archivo($comando);
         $editor->procesar_archivo($modelo);
         $editor->procesar_archivo($dir_proyecto . '/www/rest.php');
         $editor->procesar_archivo($dir_proyecto . '/www/servicios.php');
         rename($modelo, str_replace('modelo.php', $nombre . '_modelo.php', $modelo));
         rename($comando, str_replace('comando.php', $nombre . '_comando.php', $comando));
         $ini = $dir_proyecto . '/proyecto.ini';
         $editor->procesar_archivo($ini);
         // Asocio el proyecto a la instancia
         $instancia->vincular_proyecto($nombre, null, $url_proyecto);
         //- 3 - Modificaciones en la BASE de datos
         $db = $instancia->get_db();
         try {
             $db->abrir_transaccion();
             $db->retrazar_constraints();
             $db->ejecutar(self::get_sql_metadatos_basicos($nombre));
             $sql_version = self::get_sql_actualizar_version(toba_modelo_instalacion::get_version_actual(), $nombre);
             $db->ejecutar($sql_version);
             foreach ($usuarios_a_vincular as $usuario) {
                 self::do_vincular_usuario($db, $nombre, $usuario, array('admin'));
             }
             $db->cerrar_transaccion();
         } catch (toba_error $e) {
             $db->abortar_transaccion();
             $txt = 'PROYECTO : Ha ocurrido un error durante la carga de METADATOS del PROYECTO. DETALLE: ' . $e->getMessage();
             throw new toba_error($txt);
         }
     } catch (toba_error $e) {
         // Borro la carpeta creada
         if (is_dir($dir_proyecto)) {
             $instancia->desvincular_proyecto($nombre);
             toba_manejador_archivos::eliminar_directorio($dir_proyecto);
         }
         throw $e;
     }
 }
Ejemplo n.º 3
0
 function parsear_editores(toba_modelo_instancia $instancia)
 {
     toba_contexto_info::set_db($instancia->get_db());
     //--- Se busca el CI asociado a cada clase
     $sql = "SELECT\n\t\t\t\t\tc.clase,\n\t\t\t\t \to.proyecto,\n\t\t\t\t\to.objeto\n\t\t\t\tFROM\n\t\t\t\t\tapex_clase c,\n\t\t\t\t\tapex_item_objeto io,\n\t\t\t\t\tapex_objeto o\n\t\t\t\tWHERE\n\t\t\t\t\tc.clase IN ('" . implode("','", toba_info_editores::get_lista_tipo_componentes()) . "')\tAND\n\t\t\t\t\tc.proyecto = 'toba' AND\n\t\t\t\t\tc.editor_item = io.item AND\t\t\t\t-- Se busca el item editor\n\t\t\t\t\tc.editor_proyecto = io.proyecto AND\n\t\t\t\t\tio.objeto = o.objeto AND\t\t\t\t-- Se busca el CI del item\n\t\t\t\t\tio.proyecto = o.proyecto AND\n\t\t\t\t\to.clase = 'toba_ci'";
     $rs = $instancia->get_db()->consultar($sql);
     $clase_php = new toba_clase_datos("toba_datos_editores");
     foreach ($rs as $datos) {
         //--- Se buscan las pantallas asociadas a un CI especifico
         $this->manejador_interface->mensaje("Procesando " . $datos['clase'] . "...");
         $proyecto = $instancia->get_db()->quote($datos['proyecto']);
         $objeto = $instancia->get_db()->quote($datos['objeto']);
         $sql = "\n\t\t\t\tSELECT\n\t\t\t\t\tpant.identificador,\n\t\t\t\t\tpant.etiqueta,\n\t\t\t\t\tpant.imagen,\n\t\t\t\t\tpant.imagen_recurso_origen\n\t\t\t\tFROM\n\t\t\t\t\tapex_objeto_ci_pantalla pant\n\t\t\t\tWHERE\n\t\t\t\t\t\tpant.objeto_ci_proyecto = {$proyecto}\n\t\t\t\t\tAND pant.objeto_ci = {$objeto}\n\t\t\t\tORDER BY pant.orden\n\t\t\t";
         $pantallas = $instancia->get_db()->consultar($sql);
         $clase_php->agregar_metodo_datos('get_pantallas_' . $datos['clase'], $pantallas);
     }
     $dir = toba_dir() . "/php/modelo/info";
     $clase_php->guardar($dir . '/toba_datos_editores.php');
 }