protected function init_dirs() { $this->dir = $this->proyecto->get_dir() . '/' . self::dir_personalizacion . '/'; $this->dir_metadatos = $this->dir . self::dir_metadatos_xml; $this->dir_tablas = $this->dir_metadatos . self::dir_tablas; $this->dir_componentes = $this->dir_metadatos . self::dir_componentes; }
static function extender_clases(toba_modelo_proyecto $proyecto, $consola, $de) { $seguir = true; if ($proyecto->tiene_clases_extendidas($de)) { $mensaje = "Las clases ya están extendidas. Si las reextiende se "; $mensaje .= "perderán todos los cambios que se introdujeron en las "; $mensaje .= "mismas. Desea reextender de cualquier manera?"; $seguir = $consola->dialogo_simple($mensaje); } if ($seguir) { $prefijo = $de == 'proyecto' ? '/personalizacion' : ''; $path = $proyecto->get_dir() . $prefijo . '/php/extension_toba/componentes'; util_modelo_proyecto::extender_componentes($proyecto, $path, $de); util_modelo_proyecto::marcar_clases_extendidas($proyecto, $de); } return $seguir; }
/** * Crea los triggers, store_procedures y esquema para la auditoría de tablas del sistema * En caso que el schema exista, busca nuevos campos y tablas * @param array $tablas Tablas especificas a auditar * @param string $prefijo_tablas Tomar todas las tablas que tienen este prefijo, si es null se toman todas * @param boolean $con_transaccion Crea el esquema dentro de una transaccion * @param string $fuente Indica que se va a procesar solo una de las fuentes del proyecto * @param boolean $guardar_datos Indica que se deben guardar y restaurar los datos actuales luego del proceso */ function crear_auditoria($tablas = array(), $prefijo_tablas = null, $con_transaccion = true, $fuente = null, $lista_schemas = array(), $guardar_datos = false) { if (!is_null($fuente)) { $fuentes = array($fuente); } else { $fuentes = $this->proyecto->get_indice_fuentes(); } toba_logger::instancia()->var_dump($fuentes, 'fuentes activas'); if (empty($fuentes)) { return; } //Recorro los schemas de las fuentes del proyecto $schemas = array(); foreach ($fuentes as $id_fuente) { $schemas[$id_fuente] = aplanar_matriz(toba_info_editores::get_schemas_fuente($this->proyecto->get_id(), $id_fuente), 'schema'); } if (!is_null($fuente) && !empty($lista_schemas)) { $aux = array_intersect($schemas[$fuente], $lista_schemas); if ($aux !== false) { $schemas[$fuente] = $aux; } } toba_logger::instancia()->var_dump($schemas, 'schemas de fuentes'); //--- Tablas de auditoría $this->manejador_interface->mensaje('Creando auditoria', true); $archivo = $this->proyecto->get_dir() . '/sql/datos_auditoria.sql'; $bases = array(); foreach ($fuentes as $fuente) { try { $bases[$fuente] = $this->proyecto->get_db_negocio($fuente); if ($guardar_datos) { $id_def_base = $this->proyecto->construir_id_def_base($fuente); //Guarda los datos actuales de auditoria $this->exportar_esquema_base($id_def_base, $archivo, false, " '*_auditoria' "); } // Hace la migracion y restauracion de datos if ($con_transaccion) { $bases[$fuente]->abrir_transaccion(); } $this->procesar_schemas_fuente($bases[$fuente], $schemas[$fuente], false, $tablas, $prefijo_tablas, 'crear'); if ($guardar_datos) { $bases[$fuente]->ejecutar_archivo($archivo); } } catch (toba_error_db $e) { if (isset($bases[$fuente])) { $bases[$fuente]->abortar_transaccion(); //Si hay algun error hace revert y anula el objeto de la bd unset($bases[$fuente]); } } } $this->proyecto->generar_roles_db(); if ($con_transaccion) { foreach ($fuentes as $fuente) { if (isset($bases[$fuente])) { //Cierra la transaccion en aquellas bases presentes y sin errores $bases[$fuente]->cerrar_transaccion(); } } } }