/** * Retorna los ids de las restricciones funcionales que aplican a un conjunto de grupos de acceso */ static function get_restricciones_funcionales($grupos, $proyecto) { if (empty($grupos)) { return array(); } $db = toba::instancia()->get_db(); $proyecto = $db->quote($proyecto); $grupos = $db->quote($grupos); $sql_grupos = implode(", ", $grupos); $sql = "SELECT \trf.restriccion_funcional\n\t\t\tFROM \n\t\t\t\tapex_grupo_acc_restriccion_funcional rf\n\t\t\tWHERE\n\t\t\t\t\trf.usuario_grupo_acc IN({$sql_grupos})\n\t\t\t\tAND\tproyecto = {$proyecto}\n\t\t"; $datos = $db->consultar($sql); return aplanar_matriz($datos, 'restriccion_funcional'); }
function evt__procesar() { if (!empty($this->s__seleccionadas) && !is_array(current($this->s__seleccionadas))) { $this->s__seleccionadas = array($this->s__seleccionadas); //Por si viene con el formato viejo } $procesables = array(); if (!empty($this->s__seleccionadas)) { $procesables = aplanar_matriz($this->s__seleccionadas, 'tabla'); } $this->s__catalogo->desactivar_no_procesadas($procesables); foreach ($procesables as $tabla) { $this->s__catalogo->confirmar_acciones($tabla); } $this->s__catalogo->resetear(); $this->s__catalogo->cargar(); $this->dep('cuadro')->deseleccionar(); }
/** * Lista de tablas que pueden usarse como gatillos * No puede utilizarse dos veces la misma tabla como gatillo, por eso las utilizadas se excluyen */ function get_tablas_gatillos() { $temp = $this->dependencia('datos')->tabla('dimension')->get(); $datos = toba_info_editores::get_schemas_fuente(toba_editor::get_proyecto_cargado(), $temp['fuente_datos']); $schemas = !empty($datos) ? aplanar_matriz($datos, 'schema') : null; $tablas = toba::db($temp['fuente_datos'], toba_editor::get_proyecto_cargado())->get_lista_tablas(true, $schemas); return $tablas; }
function get_sp_schema($schema) { $sql = "SELECT\n\t\t\t\t\t\t\t\t\t\t\tproname\n\t\t\t\t\t\t FROM pg_proc p\n\t\t\t\t\t\t\tJOIN pg_namespace ns ON (p.pronamespace = ns.oid)\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tnspname = " . $this->quote($schema); $stored_proc = $this->consultar($sql); return aplanar_matriz($stored_proc, 'proname'); //Devuelvo la matriz sin el subindice de nombre de columna }
function purgar_auditoria($tiempo = 0, $tablas = array(), $prefijo_tablas = null, $con_transaccion = true) { $this->manejador_interface->mensaje('Limpiando las tablas de auditoria', true); $fuentes = $this->proyecto->get_indice_fuentes(); toba_logger::instancia()->var_dump($fuentes, 'fuentes activas'); if (empty($fuentes)) { return; } $schemas = array(); foreach ($fuentes as $fuente) { $schemas[$fuente] = aplanar_matriz(toba_info_editores::get_schemas_fuente($this->proyecto->get_id(), $fuente), 'schema'); } toba_logger::instancia()->var_dump($schemas, 'schemas de fuentes'); foreach ($fuentes as $fuente) { try { $base = $this->proyecto->get_db_negocio($fuente); $this->procesar_schemas_fuente($base, $schemas[$fuente], $con_transaccion, $tablas, $prefijo_tablas, 'purgar', $tiempo); unset($base); } catch (toba_error_db $e) { if (isset($base)) { $base->abortar_transaccion(); //Si hay algun error hace revert y anula el objeto de la bd unset($base); } } } }
function grupos_acceso() { if (!isset($this->grupos_acceso)) { $id = toba_contexto_info::get_db()->quote($this->get_id()); $proyecto = toba_contexto_info::get_db()->quote($this->get_proyecto()); $sql = "\n\t\t\t\tSELECT g.usuario_grupo_acc\n\t\t\t\tFROM\n\t\t\t\t\tapex_usuario_grupo_acc_item g\n\t\t\t\tWHERE\n\t\t\t\t\tg.item = {$id} AND\n\t\t\t\t\tg.proyecto = {$proyecto}"; $rs = toba_contexto_info::get_db()->consultar($sql); if (empty($rs)) { $this->grupos_acceso = array(); } else { $this->grupos_acceso = aplanar_matriz($rs); } } return $this->grupos_acceso; }