Ejemplo n.º 1
0
 protected function generar_schema_diff()
 {
     $schema_o = $this->get_schema_original();
     $schema_logs_o = $schema_o . '_logs';
     $schema_t = $this->get_schema_personalizacion();
     $schema_logs_t = $schema_t . '_logs';
     $this->get_db()->abrir_transaccion();
     try {
         //1.-  Renombrar el schema actual, al schema personalizado para que no rompa luego
         $this->get_db()->renombrar_schema($schema_logs_o, $schema_logs_t);
         $this->get_db()->renombrar_schema($schema_o, $schema_t);
         //2.-  Indicarle al proyecto cual es el directorio de carga de los metadatos que debe usar
         $this->get_proyecto()->get_instancia()->set_dir_carga_proyecto($this->proyecto->get_id(), self::dir_metadatos_originales);
         //3.- Realizar la carga de la instancia, re-creando previamente el schema original que consta en bases.ini
         $this->get_proyecto()->get_instancia()->crear_schema();
         $this->get_db()->retrazar_constraints();
         $this->get_proyecto()->get_instancia()->cargar_autonomo();
         $this->get_db()->cerrar_transaccion();
         $this->get_db()->set_schema($schema_o);
     } catch (toba_error_db $e) {
         $this->get_db()->abortar_transaccion();
         toba_logger::instancia()->error($e->getMessage());
         throw new toba_error_usuario('Hubo un inconveniente al intentar exportar la personalización, revise el log');
     }
 }
Ejemplo n.º 2
0
 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);
             }
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * Shortcut para crear el punto de montaje de la personalización de un proyecto
  */
 function crear_pm_personalizacion()
 {
     $id_proyecto = $this->proyecto->get_id();
     $punto = new toba_punto_montaje_pers();
     $punto->set_etiqueta(toba_modelo_pms::pm_pers);
     $punto->set_proyecto($id_proyecto);
     $punto->set_proyecto_referenciado($id_proyecto);
     $punto->set_descripcion('Punto de montaje por defecto de la personalización de todos los proyectos de toba');
     $punto->set_path('personalizacion/php');
     $this->guardar($punto);
 }
Ejemplo n.º 4
0
 /**
  * Marca las clases como extendidas del tipo $tipo
  * @param toba_modelo_proyecto $proyecto
  * @param string $tipo valores posibles: toba | proyecto
  */
 static function marcar_clases_extendidas(toba_modelo_proyecto $proyecto, $tipo = 'toba')
 {
     $db = $proyecto->get_db();
     $id_proyecto = $db->quote($proyecto->get_id());
     $set = $tipo == 'toba' ? 'extension_toba=true' : 'extension_proyecto=true';
     $sql = "UPDATE apex_proyecto SET {$set} WHERE proyecto={$id_proyecto}";
     $db->ejecutar($sql);
 }