/** * Retorna los metadatos de un componente, tal cual existen en las tablas * del mismo. Este metodo es utilizado por el exportador de componentes * El parametro DB tiene como objetivo brindar este servicio a la consola */ function get_metadatos_simples($componente, $tipo = null, $db = null) { $metadatos = array(); if (!isset($tipo)) { $tipo = self::get_tipo($componente); } if (!isset($db)) { //Estoy entrando por el nucleo $db = toba::instancia()->get_db(); } $clase_def = $tipo . '_def'; $estructura = call_user_func(array($clase_def, 'get_estructura')); if (isset($this->cache_metadatos_simples)) { // Con CACHE! //Saco el componente del CACHE foreach ($estructura as $seccion) { $tabla = $seccion['tabla']; $id = $componente['componente']; $datos = $this->cache_metadatos_simples->get_datos_tabla($tabla, $id); if (count($datos) > 1) { //SI los registros de la tabla son mas de 1, ordeno. $definicion = toba_db_tablas_componente::$tabla(); $columnas_orden = array_map('trim', explode(',', $definicion['dump_order_by'])); $datos = rs_ordenar_por_columnas($datos, $columnas_orden); } $metadatos[$tabla] = $datos; } } else { // Sin CACHE! foreach ($estructura as $seccion) { $tabla = $seccion['tabla']; $id = $db->quote($componente['componente']); $proyecto = $db->quote($componente['proyecto']); $definicion = toba_db_tablas_componente::$tabla(); //Genero el SQL $sql = 'SELECT ' . implode(', ', $definicion['columnas']) . " FROM {$tabla} " . " WHERE {$definicion['dump_clave_proyecto']} = {$proyecto} " . " AND {$definicion['dump_clave_componente']} = {$id} " . " ORDER BY {$definicion['dump_order_by']} ;\n"; $metadatos[$tabla] = $db->consultar($sql); } } return $metadatos; }
/** * Ordena el conjunto de datos recibido segun lo especificado en $this->_info_orden_col * @param recordset $datos_orig Conjunto de datos a ordenar * @return recordset $datos_destino Conjunto de datos ordenados * @ignore */ function ordenar_datos_x_columnas($datos_orig) { if (!empty($this->_info_orden_col) && !empty($datos_orig)) { $columnas = array_keys($this->_info_orden_col); $datos_destino = rs_ordenar_por_columnas($datos_orig, $columnas, $this->_info_orden_col); } else { $datos_destino = $datos_orig; } return $datos_destino; }
private function exportar_tablas_global($metodo_lista_tablas, $path, $texto) { $contenido = ""; foreach (toba_db_tablas_instancia::$metodo_lista_tablas() as $tabla) { $definicion = toba_db_tablas_instancia::$tabla(); //Genero el SQL $sql = 'SELECT ' . implode(', ', $definicion['columnas']) . " FROM {$tabla} " . " ORDER BY {$definicion['dump_order_by']} ;\n"; //$this->manejador_interface->mensaje( $sql ); $datos = $this->get_db()->consultar($sql); toba_logger::instancia()->debug("Tabla {$texto} -- {$tabla} (" . count($datos) . ' reg.)'); if (count($datos) > 1) { //SI los registros de la tabla son mas de 1, ordeno. $columnas_orden = array_map('trim', explode(',', $definicion['dump_order_by'])); $datos = rs_ordenar_por_columnas($datos, $columnas_orden); } for ($a = 0; $a < count($datos); $a++) { if ($tabla != 'apex_checksum_proyectos') { $contenido .= sql_array_a_insert($tabla, $datos[$a], $this->get_db()) . "\n"; } else { $contenido .= sql_array_a_insert_condicional($tabla, $datos[$a], $this->get_db()) . "\n"; } } $this->manejador_interface->progreso_avanzar(); } if (trim($contenido) != '') { $this->guardar_archivo($path, $contenido); } }
private function get_contenido_tabla_datos($tabla, $where_extra = null) { $definicion = toba_db_tablas_proyecto::$tabla(); //Genero el SQL if (isset($definicion['dump_where']) && trim($definicion['dump_where']) != '') { $w = stripslashes($definicion['dump_where']); $where = str_replace("%%", $this->get_id(), $w); } else { $where = " ( proyecto = '" . $this->get_id() . "')"; } if (isset($where_extra)) { $where = $where . ' AND (' . $where_extra . ')'; } $sql = 'SELECT ' . implode(', ', $definicion['columnas']) . " FROM {$tabla} " . " WHERE {$where} " . " ORDER BY {$definicion['dump_order_by']} ;\n"; $datos = $this->db->consultar($sql); $regs = count($datos); if ($regs > 1) { $columnas_orden = array_map('trim', explode(',', $definicion['dump_order_by'])); $datos = rs_ordenar_por_columnas($datos, $columnas_orden); } toba_logger::instancia()->debug("TABLA {$tabla} ({$regs} reg.)"); return $datos; }
private function exportar_tablas_nucleo_multiproyecto(toba_modelo_instancia $instancia) { $this->manejador_interface->titulo("Tablas NUCLEO - PROYECTO"); foreach (toba_db_tablas_nucleo::get_lista_nucleo_multiproyecto() as $tabla) { $definicion = toba_db_tablas_nucleo::$tabla(); //Genero el SQL if (isset($definicion['dump_where']) && trim($definicion['dump_where']) != '') { $w = stripslashes($definicion['dump_where']); $where = str_replace("%%", 'toba', $w); } else { $where = " ( proyecto = 'toba')"; } $sql = 'SELECT ' . implode(', ', $definicion['columnas']) . " FROM {$tabla} " . " WHERE {$where} " . " ORDER BY {$definicion['dump_order_by']} ;\n"; //$this->manejador_interface->mensaje( $sql ); $contenido = ""; $datos = $instancia->get_db()->consultar($sql); $regs = count($datos); if ($regs > 1) { $columnas_orden = array_map('trim', explode(',', $definicion['dump_order_by'])); $datos = rs_ordenar_por_columnas($datos, $columnas_orden); } $this->manejador_interface->mensaje("TABLA {$tabla} -- {$regs}"); for ($a = 0; $a < $regs; $a++) { $contenido .= sql_array_a_insert($tabla, $datos[$a], $instancia->get_db()) . "\n"; } if (trim($contenido) != '') { $this->guardar_tabla_archivo($tabla, $contenido); } } }
function recuperar_datos_compilados_grupo($prefijo_clase, $grupos, $metodo, $reindexar = true, $orden = null) { $temp = array(); foreach ($grupos as $grupo) { $clase = $prefijo_clase . $grupo; $temp = array_merge($temp, call_user_func(array($clase, $metodo))); } if ($reindexar) { $temp = array_values($temp); } if (isset($orden)) { $temp = rs_ordenar_por_columnas($temp, $orden); } return $temp; }