Beispiel #1
0
 /**
  * Para poder leer los metadatos de postgres se necesita hacer una conexión extra a la base
  * ya que la original tiene el error aguardando una resolución (por ejemplo en una transacción)
  * @return toba_db
  */
 protected function get_conexion_extra()
 {
     if (!isset($this->conexion_extra)) {
         $this->conexion_extra = toba_admin_fuentes::instancia()->get_fuente($this->id_db_original, $this->proyecto_original)->get_db(false);
     }
     return $this->conexion_extra;
 }
Beispiel #2
0
 /**
  * @return toba_admin_fuentes
  */
 static function instancia()
 {
     if (!isset(self::$instancia)) {
         self::$instancia = new toba_admin_fuentes();
     }
     return self::$instancia;
 }
Beispiel #3
0
 function get_db($proyecto = null)
 {
     if (!isset($proyecto)) {
         $proyecto = $this->s__filtro['proyecto'];
     }
     $id = toba_info_editores::get_fuente_datos_defecto($proyecto);
     $fuente_datos = toba_admin_fuentes::instancia()->get_fuente($id, $proyecto);
     return $fuente_datos->get_db();
 }
Beispiel #4
0
 function evt__cuadro__explain($seleccion)
 {
     $info = toba::memoria()->get_dato_instancia('previsualizacion_consultas');
     if (!isset($info)) {
         throw new toba_error('No se encontró información de consultas ejecutadas');
     }
     if (isset($info['datos'][$seleccion['id']])) {
         $fuente = $info['fuente'];
         $base = toba_admin_fuentes::instancia()->get_fuente($fuente, toba_editor::get_proyecto_cargado())->get_db();
         $sql = 'EXPLAIN ANALYZE  ' . $info['datos'][$seleccion['id']]['sql'];
         $base->abrir_transaccion();
         $datos = $base->consultar($sql, toba_db_fetch_num);
         $base->abortar_transaccion();
         $salida = '';
         foreach ($datos as $fila) {
             $salida .= $fila[0] . "\n   ";
         }
         $salida = '<pre>' . $salida . '</pre>';
         toba::notificacion()->info($salida);
     }
 }
 /**
  *	Indica las columnas por las que se relacionan dos tablas de un modelo de datos
  *	retorna un array asociativo con un indice por tabla y un array con el listado de columnas en la segunda dimension.
  */
 static function get_relacion($tabla_1, $tabla_2, $fuente_datos = null, $proyecto = null)
 {
     if (!$fuente_datos) {
         $fuente_datos = toba_admin_fuentes::instancia()->get_fuente_predeterminada(true, $proyecto);
     }
     if (!isset(self::$relaciones[$fuente_datos])) {
         self::cargar_relaciones($fuente_datos, $proyecto);
     }
     //Busco la relacion
     if (isset(self::$relaciones[$fuente_datos][$tabla_1][$tabla_2])) {
         $respuesta[$tabla_1] = self::$relaciones[$fuente_datos][$tabla_1][$tabla_2]['cols_1'];
         $respuesta[$tabla_2] = self::$relaciones[$fuente_datos][$tabla_1][$tabla_2]['cols_2'];
     } else {
         //La busco con el indice invertido
         if (isset(self::$relaciones[$fuente_datos][$tabla_2][$tabla_1])) {
             $respuesta[$tabla_1] = self::$relaciones[$fuente_datos][$tabla_2][$tabla_1]['cols_2'];
             $respuesta[$tabla_2] = self::$relaciones[$fuente_datos][$tabla_2][$tabla_1]['cols_1'];
         } else {
             throw new toba_error('Informacion del modelo de datos de la fuente: ' . $fuente_datos . ". No existe la relacion: {$tabla_1} - {$tabla_2}");
         }
     }
     return $respuesta;
 }
Beispiel #6
0
 static function db_proyecto_cargado($id_fuente)
 {
     $fuente_datos = toba_admin_fuentes::instancia()->get_fuente($id_fuente, toba_editor::get_proyecto_cargado());
     return $fuente_datos->get_db();
 }
Beispiel #7
0
 function get_db($proyecto)
 {
     //Instancio la bd para el proyecto en cuestion
     $id = toba_info_editores::get_fuente_datos_defecto($proyecto);
     $fuente_datos = toba_admin_fuentes::instancia()->get_fuente($id, $proyecto);
     return $fuente_datos->get_db();
 }
Beispiel #8
0
 /**
  * Retorna un componente datos_tabla de una tabla específica del sistema
  * @param string $nombre_tabla
  * @param string $fuente Fuente a la que pertenece la tabla, si no se especifica se utiliza la por defecto del proyecto
  * @param boolean $reusar Indica si se reutiliza una instancia existente o se crea un objeto nuevo. Por defecto true.
  * @return toba_datos_tabla
  */
 static function tabla($nombre_tabla, $fuente = null, $reusar = true)
 {
     if (!isset($fuente)) {
         $fuente = toba_admin_fuentes::get_fuente_predeterminada(true);
     }
     $id = array();
     $id['proyecto'] = toba_proyecto::get_id();
     $id['componente'] = toba_admin_fuentes::instancia()->get_fuente($fuente)->get_id_datos_tabla($nombre_tabla);
     //Se pide el dt con el cache activado asi evita duplicar las instancias
     $comp = toba_constructor::get_runtime($id, 'toba_datos_tabla', $reusar);
     if (!$comp->inicializado()) {
         $comp->inicializar();
     }
     return $comp;
 }
Beispiel #9
0
 function get_id_objeto($tabla)
 {
     try {
         $id = toba_admin_fuentes::instancia()->get_fuente($this->_fuente, $this->_proyecto)->get_id_datos_tabla($tabla);
     } catch (toba_error $e) {
         $id = null;
     }
     return $id;
 }