dbXapp 2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Loading...
Searching...
No Matches
dbxDD Class Reference
Inheritance diagram for dbxDD:
dbxDB myDD

Public Member Functions

 __construct ()
 Initialisiert dbxDD.
 set_step_runtime (float $seconds)
 Setzt die maximale Laufzeit eines technischen Prozess-Schritts.
 get_step_runtime ()
 Gibt die maximale Laufzeit eines technischen Prozess-Schritts zurück.
 set_chunk_size (int $chunk_size)
 Setzt die Standard-Chunk-Größe für technische Prozesse.
 get_chunk_size ()
 Gibt die Standard-Chunk-Größe für technische Prozesse zurück.
 load_dd (string $dd)
 Nutzt direkt die bestehende dbxDB-Logik.
 clear_dd_cache (string $dd)
 Löscht den DD-Cache für eine DD.
 get_dd_indexes (string $dd)
 Gibt die Indexdefinitionen einer DD zurück.
 get_dd_model (string $dd)
 Gibt das komplette DD-Modell zurück.
 get_dd_exist ($dd)
 Prüft, ob eine DD-Datei existiert.
 save_dd (string $modul, string $dd, array $table, array $fields, array $indexes=[])
 Speichert eine DD-Datei und leert danach den DD-Cache.
 write_dd (string $modul, string $dd, array $table, array $fields, array $indexes=[])
 Schreibt eine DD-Datei anhand der DD-Templates.
 dd_table_schema_keys ()
 dd_field_schema_keys ()
 dd_index_schema_keys ()
 normalize_dd_field (array $field)
 normalize_dd_index (array $index)
 get_db_fields ($server, $tableName)
 Liest die Feldstruktur einer DB-Tabelle und erzeugt daraus kanonische DD-Felddefinitionen.
 get_db_indexes (string $server, string $tableName)
 Liest die Indexstruktur einer DB-Tabelle.
 build_create_table_sql (string $dd)
 Baut das CREATE-TABLE-SQL aus einem DD.
 create_db_index (string $server, string $table, array $index)
 Erzeugt einen DB-Index aus einer DD-Indexdefinition.
 create_db_tab (string $dd)
 Erzeugt eine Datenbanktabelle aus einem DD.
 add_db_field_from_dd (string $server, string $table, array $field)
 Fügt ein Feld aus DD-Definition in eine bestehende DB-Tabelle ein.
 drop_db_tab (string $server, string $table)
 Löscht eine Datenbanktabelle.
 create_db_tab_from_fields (string $server, string $table, array $fields, array $indexes=[])
 Erzeugt eine DB-Tabelle direkt aus Feld-/Index-Metadaten.
 empty_db_table (string $server, string $table)
 Leert eine konkrete DB-Tabelle ohne DD-Aufloesung.
 find_dd_for_db_table (string $server, string $table)
 Sucht ein DD, das auf eine konkrete DB-Tabelle zeigt.
 get_preferred_table_schema (string $server, string $table)
 Liefert die beste Strukturquelle fuer eine DB-Tabelle.
 transfer_table (string $sourceServer, string $sourceTable, string $targetServer, string $targetTable='', string $mode='step', int $createTarget=1, int $truncateTarget=1)
 Transferiert eine DB-Tabelle serveruebergreifend als Schrittprozess.
 schema_mapping_path (string $kind, array $context)
 Liefert den Pfad zur Mapping-Datei.
 normalize_schema_mapping (array $mapping, array $sourceFields, array $targetFields)
 Normalisiert eine technische Source->Target-Zuordnung.
 load_schema_mapping (string $kind, array $context)
 Laedt ein gespeichertes Schema-Mapping.
 get_schema_mapping_values (string $kind, array $context)
 Gibt nur die gespeicherten Mapping-Werte zurueck.
 build_schema_mapping (string $kind, array $context)
 Baut die Mapping-Ansicht fuer Admin-UI und Prozesse.
 save_schema_mapping (string $kind, array $context, array $mapping)
 Speichert ein Schema-Mapping als wiederverwendbare Mapping-Datei.
 create_dd (string $modul, string $dd, string $server='dbXsystem', string $table='')
 Erzeugt eine DD aus einer vorhandenen DB-Tabelle.
 backup ($server, $table, $file='', $zip=0)
 Erstellt ein tabellenbasiertes Datenbackup.
 restore ($server, $table, $file, $mapping=[], $zip=0)
 Stellt Daten aus einem kompakten Tabellenbackup wieder her.
 is_dd_field_compatible_with_db (array $ddField, array $dbField, string $dbEngine='')
 Prüft, ob ein DD-Feld fachlich zu einem DB-Feld passt.
 merge_dd_field_with_db_field (array $oldField, array $dbField, string $dbEngine='')
 Fuehrt ein vorhandenes DD-Feld mit einer DB-Felddefinition zusammen.
 sync_dd_to_db ($modul, $dd, $mode='step')
 Synchronisiert ein DD technisch in Richtung DB.
 sync_db_to_dd ($modul, $dd, $mode='step', string $server='', string $table='')
 Synchronisiert eine physische Datenbanktabelle technisch in Richtung DD.
 dync_db_to_dd ($modul, $dd, $mode='step', string $server='', string $table='')
 Kompatibilitaetsalias fuer sync_db_to_dd().
 get_dd_tables ($path='')
 Liefert DD-Übersichtsdaten aus einem DD-Verzeichnis.
Public Member Functions inherited from dbxDB
 __destruct ()
 Gibt interne Referenzen beim Zerstören des Objekts frei.
 clear_db_error ()
 Setzt den letzten DB-Fehlerzustand zurueck.
 get_error_status ()
 Liefert die Fehlerart des letzten DB-Aufrufs.
 get_error_text ()
 Liefert den Fehlertext des letzten DB-Aufrufs.
 get_insert_id ()
 Liefert die letzte Insert-ID nach erfolgreichem insert().
 isSQLiteDatabaseLocked ($databasePath)
 Prüft, ob eine SQLite-Datenbank aktuell gelockt ist.
 dbConnect ($server, $dbType, $dbHost, $dbName='', $dbUser='', $dbPass='', $dbPort='')
 Stellt eine Verbindung zu einer Datenbank her und speichert sie in $this->db[$server].
 can_connect_database_config (array $dbConfig, bool $withDatabase=false)
 ensure_database_exists (string $server, array $dbConfig)
 connect_db_server (string $server)
 Verbindet sich mit einem angegebenen Datenbankserver.
 db_server_config_is_active (string $server, array $dbConfig)
 Prueft den Aktivstatus eines konfigurierten SQL-Servers.
 get_db_type ($server)
 Ermittelt den Datenbanktyp für einen Server.
 get_dd_server (string $dd)
 Ermittelt den Server einer Datenbeschreibung (DD).
 get_csv_seperator ($dd)
 Gibt das CSV-Trennzeichen für eine DD zurück.
 get_dd_primary (string $dd)
 Ermittelt den Primärschlüssel einer Datenbeschreibung (DD).
 get_dd_sort_flds ($dd)
 Platzhalter für Sortierfelder einer DD.
 get_dd_sort_desc ($dd)
 Platzhalter für Sortierrichtung einer DD.
 add_db_fld ($server, $table, $field)
 Fügt ein neues Feld zu einer bestehenden Tabelle in der Datenbank hinzu.
 get_dd_table ($dd, $rec=0)
 Gibt den Tabellennamen oder die komplette Table-Definition einer DD zurück.
 get_dd_autosync ($dd, $rec=0)
 Gibt das Autosync-Flag einer DD zurück.
 get_dd_file (string $dd)
 Liefert den Dateipfad einer geladenen DD fuer Editor-Marker.
 query (string $server, string $sql)
 Führt eine SQL-Abfrage auf dem angegebenen Server aus.
 begin (string $dd)
 Startet eine Transaktion für die Datenbank der angegebenen DD.
 rollback (string $dd)
 Führt ein Rollback für die Datenbank der angegebenen DD aus.
 commit ($dd)
 Committet eine laufende Transaktion der Datenbank einer DD.
 exec (string $server, string $sql)
 Führt eine SQL-Anweisung aus, die keine Daten zurückgibt (z.
 select_query (string $server, string $sql, string $dd='')
 Fuehrt eine rohe SELECT-Abfrage auf einem konfigurierten DB-Server aus.
 create_select (string $select, array $flds, int $and=1)
 Erzeugt eine SQL-WHERE-Bedingung für eine Volltextsuche über mehrere Felder.
 insert_query ($server, $sql)
 Führt eine INSERT-Abfrage aus und gibt die zuletzt eingefügte ID zurück.
 delete_query ($server, $sql)
 Führt eine DELETE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.
 exec_query ($server, $sql)
 Führt eine generische SQL-Exec-Anweisung aus.
 rawQuery (string $server, string $query)
 Führt eine rohe SQL-Abfrage auf dem angegebenen Server aus.
 select (string $dd='', $where='', $columns=' *', $orderby='', $asc_desc='ASC', $groupby='', $max=0, $offset=0, $verify_access=1)
 Führt eine SELECT-Abfrage auf der angegebenen DD aus.
 select1 (string $dd, $where='', $columns=' *', $verify_access=1)
 Führt eine SELECT-Abfrage aus und gibt genau einen Datensatz zurück.
 select_tree (string $folder_dd, string $item_dd='', array $opt=[])
 Liefert generische Tree-Daten aus einer Parent-Tabelle und optionalen Items.
 get_new_record (string $dd, array $field_values=[])
 Erstellt einen neuen Datensatz mit Standardwerten.
 insert ($dd, $field_values, $verify_access=1, $verify_fields=1, $verify_values=1, $trace=1)
 Fügt einen neuen Datensatz in die Datenbank ein.
 update ($dd, $field_values, $where, $verify_access=1, $verify_fields=1, $verify_values=1, $trace=1)
 Führt ein UPDATE-Statement auf einer Tabelle aus.
 update_query ($server, $sql)
 Führt eine UPDATE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.
 save ($dd, $field_values, $where, $verify_access=1, $verify_fields=1, $verify_values=1, $trace=1)
 Speichert einen Datensatz mit UPSERT-ähnlichem Verhalten.
 delete ($dd, $where, $verify_access=1, $trace=1)
 Löscht Datensätze aus einer Tabelle anhand einer WHERE-Bedingung.
 count ($dd, $where='', $server='')
 Zählt Datensätze einer DD oder Tabelle.
 empty ($dd)
 Leert eine Tabelle anhand ihrer DD.
 delete_tab ($dd)
 Leert eine Datenbank-Tabelle anhand ihrer DD und setzt die ID zurueck.
 optimize_tab ($dd)
 Optimiert eine Tabelle anhand ihrer DD nach Wartungsaktionen.
 get_table_exist ($dd, $dbtab='')
 Prueft, ob eine Tabelle existiert.
 get_db_tables ($server, $not='sqlite_sequence')
 Liefert alle Tabellen eines Servers mit Datensatzanzahl zurück.
 get_dd_table_def ($dd)
 Gibt die komplette Table-Definition einer DD zurück.
 get_dd_fields ($dd, $label=0)
 Gibt die Felddefinitionen einer DD zurück.
 get_rpt_fields ($dd, $flds, $label=1)
 Ermittelt die Report-Felder einer DD für eine übergebene Feldliste.
 get_dd_cols (string $dd)
 Gibt alle DD-Spaltennamen als CSV-String zurück.
 get_dd_grid_cols (string $dd)
 Erzeugt die neue Grid-Column-Syntax aus einer DD.
 map_dd_type_to_grid_type (string $ddType)
 Mappt DD-Feldtypen auf Grid-Feldtypen.
 get_convert_array ($field, $array, $convert='auto')
 Konvertiert Array-Werte automatisch in String-/Serialisierungsformate.
 check_access (string $mode, string $dd)
 Prüft die Zugriffsrechte für eine Operation auf einer DD.
 check_values ($dd, $field_values, $verify_values=1)
 Überprüft und validiert übergebene Feldwerte anhand der DD-Regeln.
 check_fields ($dd, $field_values)
 Filtert ungültige Felder aus einem Eingabearray heraus.
 empty_record (string $dd)
 Erstellt einen leeren Datensatz mit Standardwerten basierend auf der DD.
 normalize_where (string $dd, $where='', int $owner=0)
 Normalisiert und erweitert eine WHERE-Bedingung für SQL-Abfragen.
 check_where ($where, $owner=0, $dd='')
 escape ($string, $server)
 Escaped einen String für die sichere Verwendung in einer SQL-Abfrage.
 escape_like ($value, $server)
 Escaped einen User-Suchwert fuer SQL-LIKE.
 build_search_where (string $dd, $search, array $likeFields, array $equalFields=array(), string $mode='starts_with')
 Baut eine sichere Such-WHERE fuer einfache Report-Suchen.

Protected Member Functions

 get_dd_cache_info (string $dd)
 Ermittelt die aufgelöste Cache-Position einer DD.
 get_dd_template_file (string $name)
 Ermittelt den absoluten Dateipfad eines DD-Templates.
 dd_template_value (mixed $value)
 render_dd_template (string $template_name, array $vars=[])
 Rendert ein DD-Template lokal als PHP-Quelltext.
 get_dd_file_path (string $modul, string $dd)
 Ermittelt den Dateipfad einer DD-Datei.
 normalize_table_record (string $dd, array $table)
 Normalisiert einen DD-Tabellensatz.
 normalize_field_record (array $field)
 Normalisiert einen DD-Feldsatz.
 normalize_index_record (array $index)
 Normalisiert einen DD-Indexsatz.
 is_system_field (string $name)
 Prüft, ob ein Feld ein DBX-Systemfeld ist.
 infer_label_from_name (string $name)
 Leitet ein Standard-Label aus dem Feldnamen ab.
 infer_rules_from_field (array $field)
 Leitet eine Standard-Regel aus einem Feld ab.
 infer_tpl_from_field (array $field)
 Leitet ein sinnvolles Form-Template aus einer Felddefinition ab.
 normalize_default_value (mixed $value)
 Normalisiert einen Default-Wert aus DB-Metadaten.
 parse_sql_type (string $type)
 Zerlegt einen SQL-Typ in Basis-Typ und Länge.
 map_db_type_to_dd_type (string $dbType, string $rawType, string $length='')
 Mappt einen DB-Roh-Typ auf einen kanonischen DD-Typ.
 build_dd_field_from_db_meta (string $name, string $dbType, string $rawType, string $length, string $isNull, mixed $default, string $index='')
 Baut aus gelesenen DB-Metadaten einen DD-Feldsatz.
 sql_quote (string $server, mixed $value)
 Quotet einen SQL-Wert für Roh-SQL.
 quote_ident (string $server, string $name)
 Quotet einen SQL-Identifier abhängig vom DB-Typ.
 map_dd_type_to_sql_type (string $dbType, string $type, string $length='')
 Mappt einen kanonischen DD-Typ auf einen konkreten SQL-Typ des Zielsystems.
 build_default_sql (string $server, mixed $default, string $ddType)
 Baut einen DEFAULT-SQL-Teil für einen DD-Default.
 build_sql_column_from_dd (string $server, array $field)
 Baut eine SQL-Spaltendefinition aus einem DD-Feld.
 enforce_auto_increment_id (array $fields)
 Erzwingt die globale Tabellenidentitaet fuer jede neue Fachtabelle.
 uses_inline_auto_increment_id (string $dbType)
 Liefert, ob der Treiber die Auto-ID zusammen mit PRIMARY KEY direkt an der Spalte definiert.
 ensure_sqlite_db_file_for_dd (string $dd)
 Legt eine fehlende SQLite-Datei fuer ein DD an, damit die Tabelle anschliessend ueber die bestehende DB-Logik erzeugt werden kann.
 proc_key (string $type, array $parts)
 Erzeugt einen technischen Prozessschlüssel.
 get_proc_state (string $key)
 Liest einen technischen Prozessstatus.
 set_proc_state (string $key, array $state)
 Speichert einen technischen Prozessstatus.
 clear_proc_state (string $key)
 Löscht einen technischen Prozessstatus.
 init_proc_state (string $type, string $key, array $state)
 Initialisiert einen technischen Prozessstatus.
 proc_is_waiting (array $state)
 Prueft, ob ein Prozess aktuell keine weitere Arbeit ausfuehren darf.
 control_proc_state (string $key, string $cmd)
 Steuert einen vorhandenen Prozessstatus.
 proc_response (array $state)
 Aktualisiert einen Prozessstatus für Rückgabe.
 proc_error (array $state, string $message)
 Erzeugt einen Fehlerstatus für einen Prozess.
 proc_finish (array $state, string $message='finished')
 Erzeugt einen Fertig-Status für einen Prozess.
 step_start_time ()
 Liefert einen Step-Startzeitpunkt.
 step_time_left (float $started_at, float $max_seconds)
 Prüft, ob noch Laufzeit für den aktuellen Prozessschritt übrig ist.
 normalize_schema_field_key (string $name)
 Normalisiert einen Feldnamen fuer robuste Auto-Zuordnung.
 schema_mapping_file_part (string $value)
 Baut einen sicheren Dateinamenbestandteil.
 schema_mapping_dir ()
 Liefert das Verzeichnis fuer gespeicherte Schema-Mappings.
 schema_fields_by_name (array $fields)
 Baut einen Feldindex nach echtem Feldnamen.
 sort_schema_record (array $record, array $keys)
 auto_schema_mapping (array $sourceFields, array $targetFields, array $stored=[])
 Baut ein Auto-Mapping und uebersteuert es mit gespeicherter Zuordnung.
 build_backup_file_name (string $server, string $table, bool $zip=false)
 Baut einen Backup-Dateinamen.
 finalize_backup_file (string $tmpFile, string $finalFile, bool $zip)
 Finalisiert eine Backup-Datei optional als ZIP.
 prepare_restore_source_file (string $file, bool $zip)
 Bereitet eine Restore-Quelldatei vor.
 is_semantic_type_match (string $ddType, string $dbType)
 Prüft, ob zwei Typen semantisch kompatibel sind.
 schema_type_group (string $type, string $length='')
 Gruppiert DD-/DB-Feldtypen fachlich.
 is_db_sync_field_match (string $dbEngine, array $ddField, array $dbField)
 Prüft, ob ein DB-Feld physisch synchron zu einem DD-Feld ist.
 build_sync_plan_dd_to_db (string $dd)
 Baut einen technischen Sync-Plan DD -> DB.
Protected Member Functions inherited from dbxDB
 sqlite_sequence_exists (string $server)
 Prueft ohne Schema-Warnung, ob SQLite seine AUTOINCREMENT-Tabelle hat.

Protected Attributes

string $_remember_modul = 'dbx'
float $_max_step_runtime = 3.0
int $_chunk_size = 500

Additional Inherited Members

Public Attributes inherited from dbxDB
 $db = array()
 $pdo = null
 $_connected = 0
 $_server = ''
 $_dbtype = ''
 $_insert_id = 0
 $_update_count = 0
 $_delete_count = 0
 $_insert_count = 0
 $_dbMessage = ''
 $oValidator = null
 $_validation_error = 0
 $_validation_warning = 0
 $_validation_error_flds = array()
 $_validation_warning_flds = array()
 $_validatior_rules = 0
 $_validatior_type = 1
 $_validatior_error = 0
 $_validatior_mode = 'clean'
 $_fld_id
 $_error = ''
 $_query = ''
 $_report_error = 1
 1 = DB-Fehler automatisch in dbxSysMsg schreiben, 0 = nicht
 $_error_status = ''
 db|sql|access
 $_error_text = ''
int $_connect_timeout = 3
 Maximale Wartezeit fuer einen DB-Verbindungsaufbau in Sekunden.

Detailed Description


DBX DD SYSTEMCLASS (dbxDD)

Zweck

dbxDD ist die technische Infrastruktur für DD-Verwaltung, DD-Datei-Erzeugung, Schema-Lesen, Schema-Vergleich, Backup/Restore sowie DB <-> DD Synchronisationsprozesse.

Wichtige Architekturregel

  • dbxDD ist eine Erweiterung von dbxDB.
  • Bestehende Funktionen aus dbxDB sollen genutzt werden, nicht parallel neu erfunden werden.
  • dbxDD stellt nur die benötigte Infrastruktur bereit.
  • Die eigentliche Prozesssteuerung, Benutzerentscheidungen, Feld-Zuordnungen und Konfliktauflösungen sollen später über eine Admin-Verwaltung und/oder externe Mapping-Dateien erfolgen.

Mapping-Grundsatz

  • Es wird immer zuerst ein Auto-Mapping versucht.
  • Benutzer-/Admin-Mapping oder externe Mapping-Dateien müssen dieses Auto-Mapping gezielt übersteuern können.
  • Das DD ist das fachliche Soll-Modell und hat Vorrang.

Typ-Grundsatz

  • DD-Feldtypen sollen kanonisch und DB-unabhängig sein.
  • Als kanonische Basis werden MySQL-nahe DD-Typen verwendet (int, char, varchar, text, date, datetime, ...)
  • SQLite/db3-Roh-Typen wie TEXT, INTEGER usw. sollen nicht ungefiltert ins DD übernommen werden.
  • Die konkrete Umsetzung auf die jeweilige Ziel-DB übernimmt dbxDB.

Beispiel

$oDD = dbx()->get_system_obj('dbxDD');
// DD aus vorhandener Tabelle erzeugen
$oDD->create_dd('crm', 'kunden', 'crm|kunden.db3', 'kunden');
// Sync-Plan prüfen
$plan = $oDD->sync_dd_to_db('crm', 'kunden', 'check');
// DB -> DD synchronisieren
$res = $oDD->sync_db_to_dd('crm', 'kunden', 'merge');
DBX schema administration.

Definition at line 56 of file dbxDD.class.php.

Constructor & Destructor Documentation

◆ __construct()

dbxDD::__construct ( )

Initialisiert dbxDD.

Returns
void

Reimplemented from dbxDB.

Definition at line 67 of file dbxDD.class.php.

Member Function Documentation

◆ add_db_field_from_dd()

dbxDD::add_db_field_from_dd ( string $server,
string $table,
array $field )

Fügt ein Feld aus DD-Definition in eine bestehende DB-Tabelle ein.

Parameters
string$serverServername
string$tableTabellenname
array$fieldDD-Feldsatz
Returns
int 1 bei Erfolg, sonst 0

Definition at line 1726 of file dbxDD.class.php.

References $field, $server, $table, build_sql_column_from_dd(), dbxDB\exec_query(), and quote_ident().

Referenced by sync_dd_to_db().

◆ auto_schema_mapping()

dbxDD::auto_schema_mapping ( array $sourceFields,
array $targetFields,
array $stored = [] )
protected

Baut ein Auto-Mapping und uebersteuert es mit gespeicherter Zuordnung.

Parameters
array$sourceFieldsQuellfelder
array$targetFieldsZielfelder
array$storedGespeichertes Mapping
Returns
array Source->Target Mapping

Definition at line 2542 of file dbxDD.class.php.

References $field, dbxDB\empty(), normalize_schema_field_key(), and normalize_schema_mapping().

Referenced by build_schema_mapping().

◆ backup()

dbxDD::backup ( $server,
$table,
$file = '',
$zip = 0 )

Erstellt ein tabellenbasiertes Datenbackup.

Format:

  • kompakter JSON-Zeilenexport
  • erste Zeilen enthalten Metadaten und Spaltenliste
  • danach Records chunkweise

Hinweis:

  • bewusst kein SQL-INSERT-pro-Zeile-Backup
  • für große Tabellen stepweise ausführbar
Parameters
string$serverServername
string$tableTabellenname
string$fileZieldatei
int$zipZip-Flag 0|1
Returns
array Prozessstatus

Definition at line 2969 of file dbxDD.class.php.

References $count, $fields, $server, $table, build_backup_file_name(), dbxDB\count(), dbxDB\empty(), finalize_backup_file(), get_db_fields(), dbxDB\get_db_type(), get_proc_state(), dbxDB\get_table_exist(), init_proc_state(), proc_error(), proc_finish(), proc_is_waiting(), proc_key(), proc_response(), quote_ident(), dbxDB\rawQuery(), set_proc_state(), step_start_time(), and step_time_left().

Referenced by sync_dd_to_db().

◆ build_backup_file_name()

dbxDD::build_backup_file_name ( string $server,
string $table,
bool $zip = false )
protected

Baut einen Backup-Dateinamen.

Parameters
string$serverServername
string$tableTabellenname
bool$zipZip-Flag
Returns
string Absoluter Backup-Dateiname

Definition at line 2900 of file dbxDD.class.php.

References $dir, $server, $table, dbx_get_file_dir(), and dbx_os_path_file().

Referenced by backup(), and sync_dd_to_db().

◆ build_create_table_sql()

dbxDD::build_create_table_sql ( string $dd)

Baut das CREATE-TABLE-SQL aus einem DD.

Parameters
string$ddDD-Name
Returns
string CREATE TABLE SQL

Definition at line 1533 of file dbxDD.class.php.

References $field, $fields, $server, $table, build_sql_column_from_dd(), enforce_auto_increment_id(), dbxDB\get_db_type(), dbxDB\get_dd_fields(), dbxDB\get_dd_server(), dbxDB\get_dd_table(), quote_ident(), and uses_inline_auto_increment_id().

Referenced by create_db_tab().

◆ build_dd_field_from_db_meta()

dbxDD::build_dd_field_from_db_meta ( string $name,
string $dbType,
string $rawType,
string $length,
string $isNull,
mixed $default,
string $index = '' )
protected

Baut aus gelesenen DB-Metadaten einen DD-Feldsatz.

Parameters
string$nameFeldname
string$dbTypeDB-Typ
string$rawTypeRoh-Typ
string$lengthLänge
string$isNullNull-Flag
mixed$defaultDefault-Wert
string$indexIndexkennzeichen
Returns
array DD-Feldsatz

Definition at line 1188 of file dbxDD.class.php.

References $field, $index, and map_db_type_to_dd_type().

Referenced by get_db_fields().

◆ build_default_sql()

dbxDD::build_default_sql ( string $server,
mixed $default,
string $ddType )
protected

Baut einen DEFAULT-SQL-Teil für einen DD-Default.

Parameters
string$serverServername
mixed$defaultDefault-Wert
string$ddTypeDD-Typ
Returns
string DEFAULT-SQL-Teil

Definition at line 1396 of file dbxDD.class.php.

References $server, and sql_quote().

Referenced by build_sql_column_from_dd().

◆ build_schema_mapping()

dbxDD::build_schema_mapping ( string $kind,
array $context )

Baut die Mapping-Ansicht fuer Admin-UI und Prozesse.

Parameters
string$kinddd_to_db|db_to_dd|transfer
array$contextKontextdaten
Returns
array Mapping-Modell

Definition at line 2674 of file dbxDD.class.php.

References $server, $table, auto_schema_mapping(), dbxDB\empty(), get_db_fields(), dbxDB\get_db_type(), get_dd_exist(), get_dd_model(), get_preferred_table_schema(), dbxDB\get_table_exist(), is_dd_field_compatible_with_db(), load_schema_mapping(), schema_fields_by_name(), and schema_mapping_path().

Referenced by save_schema_mapping().

◆ build_sql_column_from_dd()

dbxDD::build_sql_column_from_dd ( string $server,
array $field )
protected

Baut eine SQL-Spaltendefinition aus einem DD-Feld.

Parameters
string$serverServername
array$fieldDD-Feldsatz
Returns
string SQL-Spaltendefinition

Definition at line 1425 of file dbxDD.class.php.

References $field, $index, $server, build_default_sql(), dbxDB\get_db_type(), map_dd_type_to_sql_type(), and quote_ident().

Referenced by add_db_field_from_dd(), build_create_table_sql(), and create_db_tab_from_fields().

◆ build_sync_plan_dd_to_db()

dbxDD::build_sync_plan_dd_to_db ( string $dd)
protected

Baut einen technischen Sync-Plan DD -> DB.

Wichtige Regel:

  • DD ist das Soll-Modell
  • bei SQLite/db3 sollen textartige physische Typen nicht automatisch als Konflikt gegen varchar/char gewertet werden
Parameters
string$ddDD-Name
Returns
array Technischer Sync-Plan

SQLite/db3: physisch oft TEXT/INTEGER/REAL ohne echte MySQL-Präzision. Die DD-Definition bleibt kanonisch und ist hier das Soll.

Definition at line 3614 of file dbxDD.class.php.

References $field, $server, $table, dbxDB\empty(), get_db_fields(), get_db_indexes(), dbxDB\get_db_type(), get_dd_model(), dbxDB\get_table_exist(), and is_db_sync_field_match().

Referenced by sync_dd_to_db().

◆ clear_dd_cache()

dbxDD::clear_dd_cache ( string $dd)

Löscht den DD-Cache für eine DD.

Wichtig:

  • nutzt die neue Cache-Struktur aus dbxDB
  • löscht gezielt die aufgelöste DD-Position
Parameters
string$ddDD-Name
Returns
void

Fallback: Falls DD noch nicht geladen werden konnte, versuchen wir die Zielposition trotzdem direkt über die Aufruflogik aufzulösen.

Definition at line 183 of file dbxDD.class.php.

References get_dd_cache_info().

Referenced by save_dd(), and sync_db_to_dd().

◆ clear_proc_state()

dbxDD::clear_proc_state ( string $key)
protected

Löscht einen technischen Prozessstatus.

Parameters
string$keyProzessschlüssel
Returns
void

Definition at line 2189 of file dbxDD.class.php.

Referenced by control_proc_state(), sync_db_to_dd(), and sync_dd_to_db().

◆ control_proc_state()

dbxDD::control_proc_state ( string $key,
string $cmd )
protected

Steuert einen vorhandenen Prozessstatus.

Parameters
string$keyProzessschluessel
string$cmdpause|resume|continue|cancel|restart
Returns
array Prozessstatus

Definition at line 2239 of file dbxDD.class.php.

References clear_proc_state(), get_proc_state(), proc_response(), and set_proc_state().

Referenced by sync_db_to_dd(), and sync_dd_to_db().

◆ create_db_index()

dbxDD::create_db_index ( string $server,
string $table,
array $index )

Erzeugt einen DB-Index aus einer DD-Indexdefinition.

Parameters
string$serverServername
string$tableTabellenname
array$indexDD-Indexsatz
Returns
int 1 bei Erfolg, sonst 0

Definition at line 1578 of file dbxDD.class.php.

References $fields, $index, $server, $table, dbxDB\exec_query(), and quote_ident().

Referenced by create_db_tab(), create_db_tab_from_fields(), and sync_dd_to_db().

◆ create_db_tab()

dbxDD::create_db_tab ( string $dd)

Erzeugt eine Datenbanktabelle aus einem DD.

Parameters
string$ddDD-Name
Returns
int 1 bei Erfolg, sonst 0

Definition at line 1682 of file dbxDD.class.php.

References $index, $indexes, $server, $table, build_create_table_sql(), create_db_index(), ensure_sqlite_db_file_for_dd(), dbxDB\exec_query(), get_dd_indexes(), dbxDB\get_dd_server(), dbxDB\get_dd_table(), and dbxDB\get_table_exist().

Referenced by sync_dd_to_db().

◆ create_db_tab_from_fields()

dbxDD::create_db_tab_from_fields ( string $server,
string $table,
array $fields,
array $indexes = [] )

Erzeugt eine DB-Tabelle direkt aus Feld-/Index-Metadaten.

Parameters
string$serverServername
string$tableTabellenname
array$fieldsDD-kompatible Feldliste
array$indexesDD-kompatible Indexliste
Returns
int 1 bei Erfolg, sonst 0

Definition at line 1762 of file dbxDD.class.php.

References $field, $fields, $index, $indexes, $server, $table, build_sql_column_from_dd(), create_db_index(), dbxDB\empty(), enforce_auto_increment_id(), dbxDB\exec_query(), dbxDB\get_db_type(), dbxDB\get_table_exist(), quote_ident(), and uses_inline_auto_increment_id().

◆ create_dd()

dbxDD::create_dd ( string $modul,
string $dd,
string $server = 'dbXsystem',
string $table = '' )

Erzeugt eine DD aus einer vorhandenen DB-Tabelle.

Hinweis:

  • dbxDD liefert hier nur die technische Infrastruktur
  • spätere Admin-/Mapping-Logik kann dieses Ergebnis gezielt anpassen
Parameters
string$modulZielmodul
string$ddDD-Name
string$serverServername
string$tableTabellenname
Returns
int 1 bei Erfolg, sonst 0

Definition at line 2864 of file dbxDD.class.php.

References $fields, $indexes, $server, $table, get_db_fields(), get_db_indexes(), dbxDB\get_table_exist(), normalize_table_record(), and save_dd().

◆ dd_field_schema_keys()

dbxDD::dd_field_schema_keys ( )

Definition at line 511 of file dbxDD.class.php.

◆ dd_index_schema_keys()

dbxDD::dd_index_schema_keys ( )

Definition at line 536 of file dbxDD.class.php.

Referenced by schema_fields_by_name().

◆ dd_table_schema_keys()

dbxDD::dd_table_schema_keys ( )

Definition at line 484 of file dbxDD.class.php.

Referenced by normalize_table_record().

◆ dd_template_value()

dbxDD::dd_template_value ( mixed $value)
protected

Definition at line 328 of file dbxDD.class.php.

Referenced by render_dd_template().

◆ drop_db_tab()

dbxDD::drop_db_tab ( string $server,
string $table )

Löscht eine Datenbanktabelle.

Parameters
string$serverServername
string$tableTabellenname
Returns
int 1 bei Erfolg, sonst 0

Definition at line 1742 of file dbxDD.class.php.

References $server, $table, dbxDB\exec_query(), dbxDB\get_table_exist(), and quote_ident().

Referenced by sync_dd_to_db().

◆ dync_db_to_dd()

dbxDD::dync_db_to_dd ( $modul,
$dd,
$mode = 'step',
string $server = '',
string $table = '' )

Kompatibilitaetsalias fuer sync_db_to_dd().

Der Name bleibt erhalten, damit bestehende Admin-Routen oder aeltere Modulaufrufe weiter funktionieren. Neue Aufrufe sollen direkt sync_db_to_dd() verwenden.

Beispiel:

$state = dbx()->get_system_obj('dbxDD')->dync_db_to_dd(
'dbxContact',
'contactRequest',
'status',
'dbXsystem',
'contact_request'
);
Parameters
string$modulZielmodul.
string$ddDD-Name ohne Dateiendung.
string$modeSync-Modus oder Prozesssteuerung.
string$serverOptionaler DB-Server.
string$tableOptionaler physischer Tabellenname.
Returns
array Prozessstatus wie bei sync_db_to_dd().

Definition at line 4351 of file dbxDD.class.php.

References $server, $table, and sync_db_to_dd().

◆ empty_db_table()

dbxDD::empty_db_table ( string $server,
string $table )

Leert eine konkrete DB-Tabelle ohne DD-Aufloesung.

Parameters
string$serverServername
string$tableTabellenname
Returns
int 1 bei Erfolg, sonst 0

Definition at line 1833 of file dbxDD.class.php.

References $server, $table, dbxDB\exec_query(), dbxDB\get_db_type(), dbxDB\get_table_exist(), quote_ident(), sql_quote(), and dbxDB\sqlite_sequence_exists().

Referenced by restore().

◆ enforce_auto_increment_id()

dbxDD::enforce_auto_increment_id ( array $fields)
protected

Erzwingt die globale Tabellenidentitaet fuer jede neue Fachtabelle.

id steht immer an erster Stelle, ist Integer und der alleinige Primaerschluessel. Die treiberspezifische Auto-ID-Syntax wird danach in build_sql_column_from_dd() erzeugt. Eventuelle weitere PRI-Markierungen werden entfernt; fachliche Eindeutigkeit gehoert in UNIQUE-Indizes.

Parameters
array$fieldsDD-kompatible Feldliste
Returns
array Normalisierte Feldliste

Definition at line 1480 of file dbxDD.class.php.

References $field, and $fields.

Referenced by build_create_table_sql(), and create_db_tab_from_fields().

◆ ensure_sqlite_db_file_for_dd()

dbxDD::ensure_sqlite_db_file_for_dd ( string $dd)
protected

Legt eine fehlende SQLite-Datei fuer ein DD an, damit die Tabelle anschliessend ueber die bestehende DB-Logik erzeugt werden kann.

Parameters
string$ddDD-Name
Returns
int 1 wenn kein Fehler vorliegt, sonst 0

Definition at line 1619 of file dbxDD.class.php.

References $dir, $server, dbxDB\dbConnect(), dbx_config_path_store(), dbx_get_base_dir(), dbx_os_path_file(), get_dd_cache_info(), and dbxDB\get_dd_server().

Referenced by create_db_tab().

◆ finalize_backup_file()

dbxDD::finalize_backup_file ( string $tmpFile,
string $finalFile,
bool $zip )
protected

Finalisiert eine Backup-Datei optional als ZIP.

Parameters
string$tmpFileTemporäre Datei
string$finalFileZieldatei
bool$zipZip-Flag
Returns
int 1 bei Erfolg, sonst 0

Definition at line 2924 of file dbxDD.class.php.

Referenced by backup().

◆ find_dd_for_db_table()

dbxDD::find_dd_for_db_table ( string $server,
string $table )

Sucht ein DD, das auf eine konkrete DB-Tabelle zeigt.

Parameters
string$serverServername
string$tableTabellenname
Returns
array Treffer mit Modul, DD, Referenz und Modell

Definition at line 1878 of file dbxDD.class.php.

References $base, $server, $table, dbx_get_base_dir(), and get_dd_model().

Referenced by get_preferred_table_schema().

◆ get_chunk_size()

dbxDD::get_chunk_size ( )

Gibt die Standard-Chunk-Größe für technische Prozesse zurück.

Returns
int Chunk-Größe

Definition at line 120 of file dbxDD.class.php.

References $_chunk_size.

◆ get_db_fields()

dbxDD::get_db_fields ( $server,
$tableName )

Liest die Feldstruktur einer DB-Tabelle und erzeugt daraus kanonische DD-Felddefinitionen.

Hinweis:

  • Die erzeugten Feldtypen sollen DD-/MySQL-nah sein.
  • SQLite/db3-Roh-Typen werden nicht 1:1 ins DD übernommen.
Parameters
string$serverServername
string$tableNameTabellenname
Returns
array DD-Feldliste

Definition at line 941 of file dbxDD.class.php.

References $index, $server, build_dd_field_from_db_meta(), dbxDB\get_db_type(), dbxDB\get_table_exist(), parse_sql_type(), quote_ident(), dbxDB\rawQuery(), and sql_quote().

Referenced by backup(), build_schema_mapping(), build_sync_plan_dd_to_db(), create_dd(), get_preferred_table_schema(), restore(), and sync_db_to_dd().

◆ get_db_indexes()

dbxDD::get_db_indexes ( string $server,
string $tableName )

Liest die Indexstruktur einer DB-Tabelle.

Parameters
string$serverServername
string$tableNameTabellenname
Returns
array DD-Indexliste

Definition at line 1068 of file dbxDD.class.php.

References $fields, $indexes, $server, dbxDB\get_db_type(), dbxDB\get_table_exist(), quote_ident(), dbxDB\rawQuery(), and sql_quote().

Referenced by build_sync_plan_dd_to_db(), create_dd(), get_preferred_table_schema(), and sync_db_to_dd().

◆ get_dd_cache_info()

dbxDD::get_dd_cache_info ( string $dd)
protected

Ermittelt die aufgelöste Cache-Position einer DD.

Diese Hilfsfunktion nutzt die bestehende parent::load_dd()-Logik und liefert daraus Modul-/DD-Name für den neuen DD-Cache.

Parameters
string$ddDD-Name
Returns
array{ dd_status:int, dd_modul:string, dd_name:string }

Definition at line 161 of file dbxDD.class.php.

References load_dd().

Referenced by clear_dd_cache(), ensure_sqlite_db_file_for_dd(), get_dd_indexes(), and get_dd_model().

◆ get_dd_exist()

dbxDD::get_dd_exist ( $dd)

Prüft, ob eine DD-Datei existiert.

Unterstützt:

  • dd
  • modul|dd
  • modul|dd mit modul als Platzhalter
Parameters
string$ddDD-Name
Returns
bool True wenn Datei existiert

Reimplemented from dbxDB.

Definition at line 283 of file dbxDD.class.php.

References dbx_get_base_dir(), and dbx_os_path_file().

Referenced by build_schema_mapping(), and sync_db_to_dd().

◆ get_dd_file_path()

dbxDD::get_dd_file_path ( string $modul,
string $dd )
protected

Ermittelt den Dateipfad einer DD-Datei.

Parameters
string$modulModulname
string$ddDD-Name
Returns
string Absoluter DD-Dateipfad

Definition at line 386 of file dbxDD.class.php.

References dbx_get_base_dir(), and dbx_os_path_file().

Referenced by write_dd().

◆ get_dd_indexes()

dbxDD::get_dd_indexes ( string $dd)

Gibt die Indexdefinitionen einer DD zurück.

Parameters
string$ddDD-Name
Returns
array DD-Indexdefinitionen

Definition at line 227 of file dbxDD.class.php.

References get_dd_cache_info().

Referenced by create_db_tab().

◆ get_dd_model()

dbxDD::get_dd_model ( string $dd)

Gibt das komplette DD-Modell zurück.

Rückgabe:

  • table
  • fields
  • indexes
Parameters
string$ddDD-Name
Returns
array DD-Modell

Definition at line 253 of file dbxDD.class.php.

References get_dd_cache_info().

Referenced by build_schema_mapping(), build_sync_plan_dd_to_db(), find_dd_for_db_table(), and sync_db_to_dd().

◆ get_dd_tables()

dbxDD::get_dd_tables ( $path = '')

Liefert DD-Übersichtsdaten aus einem DD-Verzeichnis.

Hinweis:

  • dient als technische Infrastruktur
  • aktuell liest diese Funktion die DD-Dateien des angegebenen Pfads
  • für spätere Admin-Oberflächen geeignet
Parameters
string$pathDD-Verzeichnispfad
Returns
array DD-Tabellenübersicht

Definition at line 4373 of file dbxDD.class.php.

References $count, $server, $table, dbxDB\count(), dbx_get_base_dir(), dbx_os_path_file(), dbxDB\get_dd_autosync(), dbxDB\get_dd_server(), dbxDB\get_dd_table(), dbxDB\get_table_exist(), and load_dd().

◆ get_dd_template_file()

dbxDD::get_dd_template_file ( string $name)
protected

Ermittelt den absoluten Dateipfad eines DD-Templates.

Parameters
string$nameTemplate-Name ohne .php
Returns
string Absoluter Template-Dateipfad

Definition at line 318 of file dbxDD.class.php.

References dbx_get_base_dir(), and dbx_os_path_file().

Referenced by render_dd_template().

◆ get_preferred_table_schema()

dbxDD::get_preferred_table_schema ( string $server,
string $table )

Liefert die beste Strukturquelle fuer eine DB-Tabelle.

Wenn ein DD existiert, hat dessen kanonische Definition Vorrang. Sonst werden die physischen DB-Metadaten gelesen.

Parameters
string$serverServername
string$tableTabellenname
Returns
array Schema mit source, fields und indexes

Definition at line 1940 of file dbxDD.class.php.

References $server, $table, dbxDB\empty(), find_dd_for_db_table(), get_db_fields(), and get_db_indexes().

Referenced by build_schema_mapping().

◆ get_proc_state()

dbxDD::get_proc_state ( string $key)
protected

Liest einen technischen Prozessstatus.

Parameters
string$keyProzessschlüssel
Returns
array Prozessstatus

Definition at line 2163 of file dbxDD.class.php.

Referenced by backup(), control_proc_state(), restore(), sync_db_to_dd(), and sync_dd_to_db().

◆ get_schema_mapping_values()

dbxDD::get_schema_mapping_values ( string $kind,
array $context )

Gibt nur die gespeicherten Mapping-Werte zurueck.

Parameters
string$kindMapping-Art
array$contextKontextdaten
Returns
array Source->Target Mapping

Definition at line 2659 of file dbxDD.class.php.

References load_schema_mapping().

Referenced by sync_db_to_dd(), and sync_dd_to_db().

◆ get_step_runtime()

dbxDD::get_step_runtime ( )

Gibt die maximale Laufzeit eines technischen Prozess-Schritts zurück.

Returns
float Maximale Schritt-Laufzeit in Sekunden

Definition at line 96 of file dbxDD.class.php.

References $_max_step_runtime.

◆ infer_label_from_name()

dbxDD::infer_label_from_name ( string $name)
protected

Leitet ein Standard-Label aus dem Feldnamen ab.

Parameters
string$nameFeldname
Returns
string Abgeleitetes Label

Definition at line 694 of file dbxDD.class.php.

References is_system_field().

Referenced by merge_dd_field_with_db_field().

◆ infer_rules_from_field()

dbxDD::infer_rules_from_field ( array $field)
protected

Leitet eine Standard-Regel aus einem Feld ab.

Parameters
array$fieldFeldbereich
Returns
string Regel-String

Definition at line 710 of file dbxDD.class.php.

References $field.

Referenced by merge_dd_field_with_db_field().

◆ infer_tpl_from_field()

dbxDD::infer_tpl_from_field ( array $field)
protected

Leitet ein sinnvolles Form-Template aus einer Felddefinition ab.

Parameters
array$fieldFeldbereich
Returns
string Template-Name

Definition at line 758 of file dbxDD.class.php.

References $field.

Referenced by merge_dd_field_with_db_field().

◆ init_proc_state()

dbxDD::init_proc_state ( string $type,
string $key,
array $state )
protected

Initialisiert einen technischen Prozessstatus.

Parameters
string$typeProzesstyp
string$keyProzessschlüssel
array$stateStartstatus
Returns
array Initialisierter Prozessstatus

Definition at line 2203 of file dbxDD.class.php.

References set_proc_state().

Referenced by backup(), restore(), sync_db_to_dd(), and sync_dd_to_db().

◆ is_db_sync_field_match()

dbxDD::is_db_sync_field_match ( string $dbEngine,
array $ddField,
array $dbField )
protected

Prüft, ob ein DB-Feld physisch synchron zu einem DD-Feld ist.

Parameters
string$dbEngineDatenbanktyp
array$ddFieldDD-Feld
array$dbFieldDB-Feld in DD-kompatibler Form
Returns
bool True wenn physisch synchron

Definition at line 3525 of file dbxDD.class.php.

References is_dd_field_compatible_with_db(), and schema_type_group().

Referenced by build_sync_plan_dd_to_db().

◆ is_dd_field_compatible_with_db()

dbxDD::is_dd_field_compatible_with_db ( array $ddField,
array $dbField,
string $dbEngine = '' )

Prüft, ob ein DD-Feld fachlich zu einem DB-Feld passt.

Diese Prüfung ist bewusst tolerant, weil sie für DB -> DD und Mapping verwendet wird. Die strenge physische DB-Sync-Prüfung erfolgt separat.

Parameters
array$ddFieldDD-Feld
array$dbFieldDB-Feld in DD-kompatibler Form
string$dbEngineDatenbanktyp der physischen Tabelle
Returns
bool True wenn kompatibel

Definition at line 3486 of file dbxDD.class.php.

References is_semantic_type_match(), and schema_type_group().

Referenced by build_schema_mapping(), is_db_sync_field_match(), and merge_dd_field_with_db_field().

◆ is_semantic_type_match()

dbxDD::is_semantic_type_match ( string $ddType,
string $dbType )
protected

Prüft, ob zwei Typen semantisch kompatibel sind.

Wichtig:

  • dient nur als technische Infrastruktur
  • fachliche Endentscheidung kann später durch Mapping/Admin kommen
Parameters
string$ddTypeDD-Typ
string$dbTypeDB-/DD-Typ
Returns
bool True wenn semantisch kompatibel

Definition at line 3378 of file dbxDD.class.php.

References schema_type_group().

Referenced by is_dd_field_compatible_with_db().

◆ is_system_field()

dbxDD::is_system_field ( string $name)
protected

Prüft, ob ein Feld ein DBX-Systemfeld ist.

Parameters
string$nameFeldname
Returns
bool True wenn Systemfeld

Definition at line 682 of file dbxDD.class.php.

Referenced by infer_label_from_name().

◆ load_dd()

dbxDD::load_dd ( string $dd)

Nutzt direkt die bestehende dbxDB-Logik.

Wichtiger Hinweis:

  • dbxDB\load_dd() liefert bereits table, fields und indexes im neuen namespaced DD-Cache.
  • dbxDD ergänzt hier keine parallele Cache-Logik.
Parameters
string$ddDD-Name
Returns
array DD-Systeminfo aus dbxDB\load_dd()

Reimplemented from dbxDB.

Definition at line 142 of file dbxDD.class.php.

Referenced by get_dd_cache_info(), and get_dd_tables().

◆ load_schema_mapping()

dbxDD::load_schema_mapping ( string $kind,
array $context )

Laedt ein gespeichertes Schema-Mapping.

Parameters
string$kindMapping-Art
array$contextKontextdaten
Returns
array Mapping-Dateiinhalt

Definition at line 2625 of file dbxDD.class.php.

References schema_mapping_path().

Referenced by build_schema_mapping(), and get_schema_mapping_values().

◆ map_db_type_to_dd_type()

dbxDD::map_db_type_to_dd_type ( string $dbType,
string $rawType,
string $length = '' )
protected

Mappt einen DB-Roh-Typ auf einen kanonischen DD-Typ.

Wichtige Regel:

  • DD-Typen sollen MySQL-nahe, kanonische Typen sein.
  • SQLite/db3-Roh-Typen wie TEXT sollen nicht ungefiltert ins DD übernommen werden.
  • Für SQLite/db3 wird nur dann varchar/char erkannt, wenn die Tabelle diese Typen so deklariert. Reines TEXT bleibt als kanonischer MySQL-DD-Typ text.

Das DD bleibt das Soll-Modell. Feineres Mapping kann später durch Admin-/Mappinglogik übersteuert werden.

Parameters
string$dbTypeQuell-DB-Typ
string$rawTypeRoh-Typ aus DB-Metadaten
string$lengthRoh-Länge
Returns
string Kanonischer DD-Typ

Definition at line 854 of file dbxDD.class.php.

Referenced by build_dd_field_from_db_meta().

◆ map_dd_type_to_sql_type()

dbxDD::map_dd_type_to_sql_type ( string $dbType,
string $type,
string $length = '' )
protected

Mappt einen kanonischen DD-Typ auf einen konkreten SQL-Typ des Zielsystems.

Wichtig:

  • DD bleibt kanonisch
  • konkrete Dialekt-Umsetzung erfolgt hier
Parameters
string$dbTypeZiel-DB-Typ
string$typeDD-Typ
string$lengthLänge
Returns
string SQL-Typ

Definition at line 1277 of file dbxDD.class.php.

Referenced by build_sql_column_from_dd().

◆ merge_dd_field_with_db_field()

dbxDD::merge_dd_field_with_db_field ( array $oldField,
array $dbField,
string $dbEngine = '' )

Fuehrt ein vorhandenes DD-Feld mit einer DB-Felddefinition zusammen.

Parameters
array$oldFieldVorhandenes DD-Feld
array$dbFieldDB-Feld
string$dbEngineDatenbanktyp
Returns
array Gemergtes DD-Feld

Definition at line 3570 of file dbxDD.class.php.

References dbxDB\empty(), infer_label_from_name(), infer_rules_from_field(), infer_tpl_from_field(), is_dd_field_compatible_with_db(), and normalize_field_record().

Referenced by sync_db_to_dd().

◆ normalize_dd_field()

dbxDD::normalize_dd_field ( array $field)

Definition at line 547 of file dbxDD.class.php.

References $field, and normalize_field_record().

◆ normalize_dd_index()

dbxDD::normalize_dd_index ( array $index)

Definition at line 552 of file dbxDD.class.php.

References $index, and normalize_index_record().

◆ normalize_default_value()

dbxDD::normalize_default_value ( mixed $value)
protected

Normalisiert einen Default-Wert aus DB-Metadaten.

Parameters
mixed$valueRohwert
Returns
string Normalisierter Default-Wert

Definition at line 794 of file dbxDD.class.php.

◆ normalize_field_record()

dbxDD::normalize_field_record ( array $field)
protected

Normalisiert einen DD-Feldsatz.

Parameters
array$fieldFeldbereich
Returns
array Normalisierter Feldbereich

Definition at line 616 of file dbxDD.class.php.

References $field.

Referenced by merge_dd_field_with_db_field(), normalize_dd_field(), sync_db_to_dd(), and write_dd().

◆ normalize_index_record()

dbxDD::normalize_index_record ( array $index)
protected

Normalisiert einen DD-Indexsatz.

Parameters
array$indexIndexbereich
Returns
array Normalisierter Indexbereich

Definition at line 656 of file dbxDD.class.php.

References $index.

Referenced by normalize_dd_index(), sync_db_to_dd(), and write_dd().

◆ normalize_schema_field_key()

dbxDD::normalize_schema_field_key ( string $name)
protected

Normalisiert einen Feldnamen fuer robuste Auto-Zuordnung.

Parameters
string$nameFeldname
Returns
string Normalisierter Vergleichsschluessel

Definition at line 2376 of file dbxDD.class.php.

Referenced by auto_schema_mapping().

◆ normalize_schema_mapping()

dbxDD::normalize_schema_mapping ( array $mapping,
array $sourceFields,
array $targetFields )

Normalisiert eine technische Source->Target-Zuordnung.

Parameters
array$mappingSource->Target Mapping
array$sourceFieldsQuellfelder
array$targetFieldsZielfelder
Returns
array Valides Source->Target Mapping

Definition at line 2486 of file dbxDD.class.php.

References $field.

Referenced by auto_schema_mapping(), and save_schema_mapping().

◆ normalize_table_record()

dbxDD::normalize_table_record ( string $dd,
array $table )
protected

Normalisiert einen DD-Tabellensatz.

Ziel:

  • sinnvolle Defaults setzen
  • vorhandene Werte erhalten
  • DD selbst bleibt fachliches Soll-Modell
Parameters
string$ddDD-Name
array$tableTabellenbereich
Returns
array Normalisierter Tabellenbereich

Definition at line 570 of file dbxDD.class.php.

References $table, dd_table_schema_keys(), and sort_schema_record().

Referenced by create_dd(), sync_db_to_dd(), and write_dd().

◆ parse_sql_type()

dbxDD::parse_sql_type ( string $type)
protected

Zerlegt einen SQL-Typ in Basis-Typ und Länge.

Beispiel:

  • varchar(28) -> varchar, 28
  • text -> text, (leer)
Parameters
string$typeRoh-Typ
Returns
array{type:string,length:string}

Definition at line 817 of file dbxDD.class.php.

Referenced by get_db_fields().

◆ prepare_restore_source_file()

dbxDD::prepare_restore_source_file ( string $file,
bool $zip )
protected

Bereitet eine Restore-Quelldatei vor.

Parameters
string$fileQuelldatei
bool$zipZip-Flag
Returns
string Lesbarer Quelldateipfad oder leer

Definition at line 3133 of file dbxDD.class.php.

References dbx_get_file_dir(), and dbx_os_path_file().

Referenced by restore().

◆ proc_error()

dbxDD::proc_error ( array $state,
string $message )
protected

Erzeugt einen Fehlerstatus für einen Prozess.

Parameters
array$stateProzessstatus
string$messageFehlermeldung
Returns
array Fehlerstatus

Definition at line 2314 of file dbxDD.class.php.

References proc_response().

Referenced by backup(), restore(), sync_db_to_dd(), and sync_dd_to_db().

◆ proc_finish()

dbxDD::proc_finish ( array $state,
string $message = 'finished' )
protected

Erzeugt einen Fertig-Status für einen Prozess.

Parameters
array$stateProzessstatus
string$messageMeldung
Returns
array Fertig-Status

Definition at line 2331 of file dbxDD.class.php.

References proc_response().

Referenced by backup(), restore(), sync_db_to_dd(), and sync_dd_to_db().

◆ proc_is_waiting()

dbxDD::proc_is_waiting ( array $state)
protected

Prueft, ob ein Prozess aktuell keine weitere Arbeit ausfuehren darf.

Parameters
array$stateProzessstatus
Returns
bool True wenn der Prozess warten oder beendet ist

Definition at line 2226 of file dbxDD.class.php.

Referenced by backup(), restore(), sync_db_to_dd(), and sync_dd_to_db().

◆ proc_key()

dbxDD::proc_key ( string $type,
array $parts )
protected

Erzeugt einen technischen Prozessschlüssel.

Parameters
string$typeProzesstyp
array$partsSchlüsselteile
Returns
string Prozessschlüssel

Definition at line 2151 of file dbxDD.class.php.

Referenced by backup(), restore(), sync_db_to_dd(), and sync_dd_to_db().

◆ proc_response()

dbxDD::proc_response ( array $state)
protected

Aktualisiert einen Prozessstatus für Rückgabe.

Parameters
array$stateProzessstatus
Returns
array Rückgabe-Prozessstatus

Definition at line 2300 of file dbxDD.class.php.

Referenced by backup(), control_proc_state(), proc_error(), proc_finish(), restore(), sync_db_to_dd(), and sync_dd_to_db().

◆ quote_ident()

dbxDD::quote_ident ( string $server,
string $name )
protected

Quotet einen SQL-Identifier abhängig vom DB-Typ.

Parameters
string$serverServername
string$nameIdentifier
Returns
string Gequoteter Identifier

Definition at line 1252 of file dbxDD.class.php.

References $server, and dbxDB\get_db_type().

Referenced by add_db_field_from_dd(), backup(), build_create_table_sql(), build_sql_column_from_dd(), create_db_index(), create_db_tab_from_fields(), drop_db_tab(), empty_db_table(), get_db_fields(), get_db_indexes(), restore(), and sync_dd_to_db().

◆ render_dd_template()

dbxDD::render_dd_template ( string $template_name,
array $vars = [] )
protected

Rendert ein DD-Template lokal als PHP-Quelltext.

Sonderfall für DD:

  • Template ist PHP-Datei
  • wird lokal ausgeführt
  • liefert den erzeugten DD-Quelltext als String zurück
Parameters
string$template_nameTemplate-Name ohne .php
array$varsTemplate-Variablen
Returns
string Gerenderter DD-Template-Inhalt

Definition at line 350 of file dbxDD.class.php.

References dd_template_value(), and get_dd_template_file().

Referenced by write_dd().

◆ restore()

dbxDD::restore ( $server,
$table,
$file,
$mapping = [],
$zip = 0 )

Stellt Daten aus einem kompakten Tabellenbackup wieder her.

Mapping

  • Auto-Zuordnung erfolgt über identische Feldnamen
  • zusätzlich kann ein externes Mapping übergeben werden
  • dieses Mapping ist technische Infrastruktur, nicht Adminlogik

Wichtiger Punkt

Restore arbeitet tabellenbezogen und technisch. Es nutzt bewusst keine DD-Workflowlogik wie Access/Trace/Validator.

Parameters
string$serverZielserver
string$tableZieltabelle
string$fileQuelldatei
array$mappingOptionales technisches Feldmapping
int$zipZip-Flag 0|1
Returns
array Prozessstatus

Definition at line 3198 of file dbxDD.class.php.

References $fields, $server, $table, dbxDB\connect_db_server(), dbxDB\count(), dbxDB\empty(), empty_db_table(), get_db_fields(), get_proc_state(), dbxDB\get_table_exist(), init_proc_state(), prepare_restore_source_file(), proc_error(), proc_finish(), proc_is_waiting(), proc_key(), proc_response(), quote_ident(), set_proc_state(), step_start_time(), and step_time_left().

Referenced by sync_dd_to_db().

◆ save_dd()

dbxDD::save_dd ( string $modul,
string $dd,
array $table,
array $fields,
array $indexes = [] )

Speichert eine DD-Datei und leert danach den DD-Cache.

Parameters
string$modulModulname
string$ddDD-Name
array$tableTabellenbereich
array$fieldsFeldbereich
array$indexesIndexbereich
Returns
int 1 bei Erfolg, sonst 0

Definition at line 406 of file dbxDD.class.php.

References $fields, $indexes, $table, clear_dd_cache(), and write_dd().

Referenced by create_dd().

◆ save_schema_mapping()

dbxDD::save_schema_mapping ( string $kind,
array $context,
array $mapping )

Speichert ein Schema-Mapping als wiederverwendbare Mapping-Datei.

Parameters
string$kindMapping-Art
array$contextKontextdaten
array$mappingSource->Target Mapping
Returns
int 1 bei Erfolg, sonst 0

Definition at line 2825 of file dbxDD.class.php.

References build_schema_mapping(), normalize_schema_mapping(), and schema_mapping_path().

◆ schema_fields_by_name()

dbxDD::schema_fields_by_name ( array $fields)
protected

Baut einen Feldindex nach echtem Feldnamen.

Parameters
array$fieldsFeldliste
Returns
array Feldindex

Definition at line 2445 of file dbxDD.class.php.

References $field, $fields, $index, dd_index_schema_keys(), and sort_schema_record().

Referenced by build_schema_mapping().

◆ schema_mapping_dir()

dbxDD::schema_mapping_dir ( )
protected

Liefert das Verzeichnis fuer gespeicherte Schema-Mappings.

Returns
string Absoluter Pfad

Definition at line 2401 of file dbxDD.class.php.

References $dir, dbx_get_file_dir(), and dbx_os_path_file().

Referenced by schema_mapping_path().

◆ schema_mapping_file_part()

dbxDD::schema_mapping_file_part ( string $value)
protected

Baut einen sicheren Dateinamenbestandteil.

Parameters
string$valueRohwert
Returns
string Sicherer Dateinamenbestandteil

Definition at line 2388 of file dbxDD.class.php.

Referenced by schema_mapping_path().

◆ schema_mapping_path()

dbxDD::schema_mapping_path ( string $kind,
array $context )

Liefert den Pfad zur Mapping-Datei.

Parameters
string$kindMapping-Art
array$contextKontextdaten
Returns
string Absoluter Dateipfad

Definition at line 2419 of file dbxDD.class.php.

References schema_mapping_dir(), and schema_mapping_file_part().

Referenced by build_schema_mapping(), load_schema_mapping(), and save_schema_mapping().

◆ schema_type_group()

dbxDD::schema_type_group ( string $type,
string $length = '' )
protected

Gruppiert DD-/DB-Feldtypen fachlich.

Parameters
string$typeTypname
string$lengthOptionale Länge
Returns
string Typgruppe

Definition at line 3406 of file dbxDD.class.php.

Referenced by is_db_sync_field_match(), is_dd_field_compatible_with_db(), and is_semantic_type_match().

◆ set_chunk_size()

dbxDD::set_chunk_size ( int $chunk_size)

Setzt die Standard-Chunk-Größe für technische Prozesse.

Parameters
int$chunk_sizeChunk-Größe
Returns
void

Definition at line 108 of file dbxDD.class.php.

◆ set_proc_state()

dbxDD::set_proc_state ( string $key,
array $state )
protected

Speichert einen technischen Prozessstatus.

Parameters
string$keyProzessschlüssel
array$stateProzessstatus
Returns
void

Definition at line 2177 of file dbxDD.class.php.

Referenced by backup(), control_proc_state(), init_proc_state(), restore(), sync_db_to_dd(), and sync_dd_to_db().

◆ set_step_runtime()

dbxDD::set_step_runtime ( float $seconds)

Setzt die maximale Laufzeit eines technischen Prozess-Schritts.

Parameters
float$secondsMaximale Schritt-Laufzeit in Sekunden
Returns
void

Definition at line 84 of file dbxDD.class.php.

◆ sort_schema_record()

dbxDD::sort_schema_record ( array $record,
array $keys )
protected

Definition at line 2459 of file dbxDD.class.php.

Referenced by normalize_table_record(), and schema_fields_by_name().

◆ sql_quote()

dbxDD::sql_quote ( string $server,
mixed $value )
protected

Quotet einen SQL-Wert für Roh-SQL.

Parameters
string$serverServername
mixed$valueWert
Returns
string SQL-quoted String

Definition at line 1239 of file dbxDD.class.php.

References $server, and dbxDB\escape().

Referenced by build_default_sql(), empty_db_table(), get_db_fields(), and get_db_indexes().

◆ step_start_time()

dbxDD::step_start_time ( )
protected

Liefert einen Step-Startzeitpunkt.

Returns
float Startzeitpunkt

Definition at line 2346 of file dbxDD.class.php.

Referenced by backup(), restore(), and sync_dd_to_db().

◆ step_time_left()

dbxDD::step_time_left ( float $started_at,
float $max_seconds )
protected

Prüft, ob noch Laufzeit für den aktuellen Prozessschritt übrig ist.

Parameters
float$started_atStartzeitpunkt
float$max_secondsMaximale Laufzeit
Returns
bool True wenn noch Zeit übrig

Definition at line 2359 of file dbxDD.class.php.

Referenced by backup(), restore(), and sync_dd_to_db().

◆ sync_db_to_dd()

dbxDD::sync_db_to_dd ( $modul,
$dd,
$mode = 'step',
string $server = '',
string $table = '' )

Synchronisiert eine physische Datenbanktabelle technisch in Richtung DD.

Der Ablauf liest Felder und Indizes aus der Datenbank, fuehrt sie mit vorhandenen DD-Metadaten zusammen und schreibt daraus wieder eine DD-Datei. Bestehende DD-Werte haben Vorrang: Typen, Laengen, Rechte, Cache-/Trace-Flags und fachliche Metadaten werden nicht blind durch physische SQLite/db3-Typen ueberschrieben. Das verhindert Struktur-Drift ueber mehrere Sync-Durchlaeufe.

Typische Modi:

  • merge oder step: schema lesen, Metadaten mergen, DD schreiben
  • restart: vorhandenen Prozesszustand loeschen und neu starten
  • status: aktuellen Prozesszustand lesen
  • reset: Prozesszustand loeschen
  • pause, resume, continue, cancel: Prozesssteuerung

Beispiel:

$dd = dbx()->get_system_obj('dbxDD');
$state = $dd->sync_db_to_dd(
'dbxContact',
'contactRequest',
'merge',
'dbXsystem',
'contact_request'
);

Ergebnis:

[
'status' => 'running',
'phase' => 'write_dd',
'percent' => 70,
]
Parameters
string$modulZielmodul, in dessen dd/-Verzeichnis geschrieben wird.
string$ddDD-Name ohne Dateiendung.
string$modeSync-Modus oder Prozesssteuerung.
string$serverOptionaler DB-Server; leer nutzt DD- oder System-Fallback.
string$tableOptionaler physischer Tabellenname; leer nutzt DD- oder Namens-Fallback.
Returns
array Prozessstatus mit status, message, percent und optional phase.

Definition at line 4114 of file dbxDD.class.php.

References $field, $index, $server, $table, clear_dd_cache(), clear_proc_state(), control_proc_state(), get_db_fields(), get_db_indexes(), dbxDB\get_db_type(), get_dd_exist(), get_dd_model(), get_proc_state(), get_schema_mapping_values(), dbxDB\get_table_exist(), init_proc_state(), merge_dd_field_with_db_field(), normalize_field_record(), normalize_index_record(), normalize_table_record(), proc_error(), proc_finish(), proc_is_waiting(), proc_key(), proc_response(), set_proc_state(), and write_dd().

Referenced by dync_db_to_dd().

◆ sync_dd_to_db()

dbxDD::sync_dd_to_db ( $modul,
$dd,
$mode = 'step' )

Synchronisiert ein DD technisch in Richtung DB.

Modus

  • check / plan
  • apply
  • force / rebuild
  • status
  • reset

Hinweis:

  • dies ist reine Infrastruktur
  • spätere Admin-/Mappinglogik entscheidet fachlich genauer, wie Konflikte wirklich behandelt werden
Parameters
string$modulModulname
string$ddDD-Name
string$modeModus
Returns
array Prozessstatus / Plan

Definition at line 3765 of file dbxDD.class.php.

References $field, $fields, $indexes, $server, $table, add_db_field_from_dd(), backup(), build_backup_file_name(), build_sync_plan_dd_to_db(), clear_proc_state(), control_proc_state(), dbxDB\count(), create_db_index(), create_db_tab(), drop_db_tab(), dbxDB\empty(), dbxDB\exec_query(), get_proc_state(), get_schema_mapping_values(), init_proc_state(), proc_error(), proc_finish(), proc_is_waiting(), proc_key(), proc_response(), quote_ident(), restore(), set_proc_state(), step_start_time(), and step_time_left().

◆ transfer_table()

dbxDD::transfer_table ( string $sourceServer,
string $sourceTable,
string $targetServer,
string $targetTable = '',
string $mode = 'step',
int $createTarget = 1,
int $truncateTarget = 1 )

Transferiert eine DB-Tabelle serveruebergreifend als Schrittprozess.

Ablauf:

  • Zielstruktur bei Bedarf aus Quellschema erzeugen
  • Ziel leeren
  • Quelle sichern
  • Sicherung in Ziel wiederherstellen
Returns
array Prozessstatus

Definition at line 1971 of file dbxDD.class.php.

◆ uses_inline_auto_increment_id()

dbxDD::uses_inline_auto_increment_id ( string $dbType)
protected

Liefert, ob der Treiber die Auto-ID zusammen mit PRIMARY KEY direkt an der Spalte definiert.

Definition at line 1518 of file dbxDD.class.php.

Referenced by build_create_table_sql(), and create_db_tab_from_fields().

◆ write_dd()

dbxDD::write_dd ( string $modul,
string $dd,
array $table,
array $fields,
array $indexes = [] )

Schreibt eine DD-Datei anhand der DD-Templates.

Wichtige Architekturregel:

  • dbxDD erzeugt hier nur die technische DD-Datei
  • keine Admin-/Mapping-Logik in dieser Funktion
Parameters
string$modulModulname
string$ddDD-Name
array$tableTabellenbereich
array$fieldsFeldbereich
array$indexesIndexbereich
Returns
int 1 bei Erfolg, sonst 0

Definition at line 432 of file dbxDD.class.php.

References $dir, $field, $fields, $index, $indexes, $table, get_dd_file_path(), normalize_field_record(), normalize_index_record(), normalize_table_record(), and render_dd_template().

Referenced by save_dd(), and sync_db_to_dd().

Member Data Documentation

◆ $_chunk_size

int dbxDD::$_chunk_size = 500
protected

Definition at line 60 of file dbxDD.class.php.

Referenced by get_chunk_size().

◆ $_max_step_runtime

float dbxDD::$_max_step_runtime = 3.0
protected

Definition at line 59 of file dbxDD.class.php.

Referenced by get_step_runtime().

◆ $_remember_modul

string dbxDD::$_remember_modul = 'dbx'
protected

Definition at line 58 of file dbxDD.class.php.


The documentation for this class was generated from the following file: