Zentrale Datenbank- und DD-Systemklasse von DBX. More...
Public Member Functions | |
| __construct () | |
| Initialisiert das DBX-Datenbankobjekt mit Standardwerten und lädt den zentralen Validator. | |
| __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_binding_info (string $dd) | |
| Liefert Herkunft und Ergebnis der Serveraufloesung einer DD. | |
| get_dd_server (string $dd) | |
| Ermittelt den lokal wirksamen Server einer Datenbeschreibung. | |
| 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. | |
| load_dd (string $dd) | |
| Lädt eine Datenbeschreibung (DD) aus Datei und speichert sie im Session-Cache. | |
| 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_dd_exist ($dd) | |
| Prüft, ob eine DD-Datei im Standardmodul dbx 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. | |
Public Attributes | |
| $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. | |
Protected Member Functions | |
| get_dd_server_bindings () | |
| Liefert die installationsbezogenen Serverbindungen der DDs. | |
| is_valid_dd_server_binding (string $server) | |
| Prueft eine lokale DD-Serverbindung, ohne eine Verbindung aufzubauen. | |
| sqlite_sequence_exists (string $server) | |
| Prueft ohne Schema-Warnung, ob SQLite seine AUTOINCREMENT-Tabelle hat. | |
Zentrale Datenbank- und DD-Systemklasse von DBX.
Diese Klasse ist die zentrale Infrastruktur für:
DD-Dateien liegen unter: dbx/modules/{modul}/dd/*.dd.php
Eine DD definiert typischerweise:
Definition at line 62 of file dbxDB.class.php.
| dbxDB::__construct | ( | ) |
Initialisiert das DBX-Datenbankobjekt mit Standardwerten und lädt den zentralen Validator.
Reimplemented in dbxDD.
Definition at line 121 of file dbxDB.class.php.
| dbxDB::__destruct | ( | ) |
Gibt interne Referenzen beim Zerstören des Objekts frei.
Definition at line 143 of file dbxDB.class.php.
| dbxDB::add_db_fld | ( | $server, | |
| $table, | |||
| $field ) |
Fügt ein neues Feld zu einer bestehenden Tabelle in der Datenbank hinzu.
Erzeugt abhängig vom DB-Typ das passende SQL für ALTER TABLE ... ADD COLUMN. Die Methode erzeugt aktuell das SQL und verbindet sich mit dem Server. Zusätzliche Index-/Primary-SQLs werden geloggt.
Diese Funktion ist bewusst minimal gehalten und ändert die bestehende DBX-Logik nicht grundsätzlich.
| string | $server | Der Name des Datenbankservers |
| string | $table | Der Name der Tabelle |
| array | $field | Felddefinition:
|
Definition at line 1121 of file dbxDB.class.php.
References $field, $ok, $server, $table, connect_db_server(), empty(), and get_db_type().
| dbxDB::begin | ( | string | $dd | ) |
Startet eine Transaktion für die Datenbank der angegebenen DD.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1641 of file dbxDB.class.php.
References $dd, $server, and get_dd_server().
| dbxDB::build_search_where | ( | string | $dd, |
| $search, | |||
| array | $likeFields, | ||
| array | $equalFields = array(), | ||
| string | $mode = 'starts_with' ) |
Baut eine sichere Such-WHERE fuer einfache Report-Suchen.
| string | $dd | Datenbeschreibung |
| mixed | $search | User-Suchwert |
| array | $likeFields | Felder fuer LIKE |
| array | $equalFields | Felder fuer exakte Suche |
| string | $mode | starts_with|contains|ends_with|exact |
Definition at line 4470 of file dbxDB.class.php.
| dbxDB::can_connect_database_config | ( | array | $dbConfig, |
| bool | $withDatabase = false ) |
Definition at line 482 of file dbxDB.class.php.
| dbxDB::check_access | ( | string | $mode, |
| string | $dd ) |
Prüft die Zugriffsrechte für eine Operation auf einer DD.
| string | $mode | Operation: insert|update|delete|select |
| string | $dd | Datenbeschreibung |
Definition at line 3961 of file dbxDB.class.php.
References $dd, $groups, $mode, $table, can(), get_dd_table(), and user().
Referenced by count(), delete(), insert(), save(), select(), and update().
| dbxDB::check_fields | ( | $dd, | |
| $field_values ) |
Filtert ungültige Felder aus einem Eingabearray heraus.
Es werden nur Felder übernommen, die in der DD definiert sind. Bei ungültiger oder leerer DD-Feldliste wird defensiv ein leeres Ergebnis zurückgegeben.
| string | $dd | Datenstrukturdefinition |
| array | $field_values | Eingabewerte |
Definition at line 4153 of file dbxDB.class.php.
References $dd, $field, empty(), and get_dd_fields().
| dbxDB::check_values | ( | $dd, | |
| $field_values, | |||
| $verify_values = 1 ) |
Überprüft und validiert übergebene Feldwerte anhand der DD-Regeln.
Die bestehende DBX-Logik bleibt erhalten:
| string | $dd | Datenstrukturdefinition |
| array | $field_values | Zu überprüfende Feldwerte |
| int | $verify_values | Gibt an, ob Werte überprüft werden sollen |
Definition at line 4042 of file dbxDB.class.php.
References $dd, $field, $fields, $ok, $rules, $value, get_convert_array(), and get_dd_fields().
| dbxDB::check_where | ( | $where, | |
| $owner = 0, | |||
| $dd = '' ) |
Definition at line 4372 of file dbxDB.class.php.
References $dd, $owner, get_dd_primary(), get_dd_table_def(), and is_int_value().
Referenced by normalize_where(), and save().
| dbxDB::clear_db_error | ( | ) |
Setzt den letzten DB-Fehlerzustand zurueck.
Definition at line 152 of file dbxDB.class.php.
Referenced by connect_db_server(), insert(), save(), select(), and update().
| dbxDB::commit | ( | $dd | ) |
Committet eine laufende Transaktion der Datenbank einer DD.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1770 of file dbxDB.class.php.
References $dd, $pdo, $server, connect_db_server(), empty(), get_db_type(), and get_dd_server().
| dbxDB::connect_db_server | ( | string | $server | ) |
Verbindet sich mit einem angegebenen Datenbankserver.
| string | $server | Name des Datenbankservers |
Definition at line 643 of file dbxDB.class.php.
References $ok, $server, clear_db_error(), and get_db_type().
Referenced by add_db_fld(), commit(), escape(), exec(), get_db_tables(), get_table_exist(), insert(), dbxDD\restore(), and update().
| dbxDB::count | ( | $dd, | |
| $where = '', | |||
| $server = '' ) |
Zählt Datensätze einer DD oder Tabelle.
Der DB-Zugriff läuft über den zentralen Query-Pfad, damit Fehlerbehandlung und Retry-Verhalten konsistent bleiben.
| string | $dd | DD-Name oder Tabellenname |
| string | $where | WHERE-Bedingung |
| string | $server | Optional expliziter Server |
Definition at line 3084 of file dbxDB.class.php.
References $count, $dd, $server, check_access(), empty(), get_dd_server(), get_dd_table(), get_error_status(), normalize_where(), and query().
Referenced by dbxDD\backup(), get_db_tables(), dbxDD\get_dd_tables(), insert(), dbxDD\restore(), save(), and dbxDD\sync_dd_to_db().
| dbxDB::create_select | ( | string | $select, |
| array | $flds, | ||
| int | $and = 1 ) |
Erzeugt eine SQL-WHERE-Bedingung für eine Volltextsuche über mehrere Felder.
| string | $select | Suchbegriff(e), getrennt durch Leerzeichen |
| array | $flds | Array der zu durchsuchenden Spalten |
| int | $and | 1 = AND, 0 = OR |
Definition at line 1949 of file dbxDB.class.php.
| dbxDB::db_server_config_is_active | ( | string | $server, |
| array | $dbConfig ) |
Prueft den Aktivstatus eines konfigurierten SQL-Servers.
SQLite-/db3-Dateien sind immer aktiv. Bestehende SQL-Server ohne activ-Eintrag gelten aus Kompatibilitaetsgruenden ebenfalls als aktiv.
Definition at line 810 of file dbxDB.class.php.
References $server.
| dbxDB::dbConnect | ( | $server, | |
| $dbType, | |||
| $dbHost, | |||
| $dbName = '', | |||
| $dbUser = '', | |||
| $dbPass = '', | |||
| $dbPort = '' ) |
Stellt eine Verbindung zu einer Datenbank her und speichert sie in $this->db[$server].
sqlite, mysql, pgsql, sqlsrv, oci, firebird, cubrid, dblib, ibm, informix, odbc.
Bei unbekanntem Datenbanktyp wird sauber ein Fehler gesetzt und protokolliert, ohne unkontrolliert nach außen abzubrechen.
| string | $server | Name des Servers (Schlüssel im $this->db-Array) |
| string | $dbType | Typ der Datenbank |
| string | $dbHost | Hostname oder Datei für SQLite |
| string | $dbName | Name der Datenbank |
| string | $dbUser | Benutzername |
| string | $dbPass | Passwort |
| string | $dbPort | Port |
Definition at line 366 of file dbxDB.class.php.
Referenced by dbxDD\ensure_sqlite_db_file_for_dd().
| dbxDB::delete | ( | $dd, | |
| $where, | |||
| $verify_access = 1, | |||
| $trace = 1 ) |
Löscht Datensätze aus einer Tabelle anhand einer WHERE-Bedingung.
| string | $dd | Datenbeschreibung |
| mixed | $where | WHERE-Bedingung |
| int | $verify_access | Zugriff prüfen |
| int | $trace | Trace aktivieren |
Definition at line 2960 of file dbxDB.class.php.
References $count, $dd, $now, $ok, $owner, $server, $source, check_access(), delete_query(), get_dd_primary(), get_dd_server(), get_dd_table(), get_dd_table_def(), insert(), normalize_where(), and select().
| dbxDB::delete_query | ( | $server, | |
| $sql ) |
Führt eine DELETE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.
| string | $server | Datenbankserver |
| string | $sql | SQL-Delete-Statement |
Definition at line 2017 of file dbxDB.class.php.
References $count, $server, and query().
Referenced by delete().
| dbxDB::delete_tab | ( | $dd | ) |
Leert eine Datenbank-Tabelle anhand ihrer DD und setzt die ID zurueck.
Verwendung: Admin-/Wartungsfunktionen koennen damit gezielt Tabellen leeren, wenn die Datenquelle wirklich dbxDB ist.
| string | $dd | Datenbeschreibung |
Definition at line 3268 of file dbxDB.class.php.
References $dd, $ok, empty(), and optimize_tab().
| dbxDB::empty | ( | $dd | ) |
Leert eine Tabelle anhand ihrer DD.
Je nach DB-Typ werden passende Statements verwendet.
| string | $dd | Datenbeschreibung |
Definition at line 3184 of file dbxDB.class.php.
References $dd, $ok, $server, exec_query(), get_db_type(), get_dd_server(), get_dd_table(), load_dd(), rawQuery(), and sqlite_sequence_exists().
Referenced by add_db_fld(), dbxDD\auto_schema_mapping(), dbxDD\backup(), dbxDD\build_schema_mapping(), dbxDD\build_sync_plan_dd_to_db(), check_fields(), commit(), count(), dbxDD\create_db_tab_from_fields(), delete_tab(), dbxDD\get_preferred_table_schema(), insert(), dbxDD\merge_dd_field_with_db_field(), dbxDD\restore(), select_tree(), dbxDD\sync_dd_to_db(), and update().
| dbxDB::empty_record | ( | string | $dd | ) |
Erstellt einen leeren Datensatz mit Standardwerten basierend auf der DD.
| string | $dd | Datenstrukturdefinition |
Definition at line 4187 of file dbxDB.class.php.
References $dd, and get_dd_fields().
Referenced by get_new_record(), and select1().
| dbxDB::ensure_database_exists | ( | string | $server, |
| array | $dbConfig ) |
Definition at line 521 of file dbxDB.class.php.
References $server.
| dbxDB::escape | ( | $string, | |
| $server ) |
Escaped einen String für die sichere Verwendung in einer SQL-Abfrage.
Diese Methode dient nur zum Escapen einzelner Strings. Für INSERT/UPDATE wird weiterhin mit Prepared Statements gearbeitet.
| string | $string | Zu escapender String |
| string | int | $server | Serverindex |
Definition at line 4426 of file dbxDB.class.php.
References $server, and connect_db_server().
Referenced by escape_like(), and dbxDD\sql_quote().
| dbxDB::escape_like | ( | $value, | |
| $server ) |
Escaped einen User-Suchwert fuer SQL-LIKE.
Der Wert wird zuerst als LIKE-Pattern neutralisiert (%/_/) und danach fuer den konkreten Datenbankserver quoted. Die Rueckgabe ist ohne aeussere Quotes und wird von build_search_where() eingefasst.
| string | $value | User-Suchwert |
| string | $server | Datenbankserver |
Definition at line 4446 of file dbxDB.class.php.
| dbxDB::exec | ( | string | $server, |
| string | $sql ) |
Führt eine SQL-Anweisung aus, die keine Daten zurückgibt (z.
B. UPDATE, DELETE, DDL).
| string | $server | Datenbankserver |
| string | $sql | SQL-Abfrage |
Definition at line 1829 of file dbxDB.class.php.
References $server, connect_db_server(), and if.
Referenced by exec_query(), and optimize_tab().
| dbxDB::exec_query | ( | $server, | |
| $sql ) |
Führt eine generische SQL-Exec-Anweisung aus.
| string | $server | Datenbankserver |
| string | $sql | SQL-Anweisung |
Definition at line 2042 of file dbxDB.class.php.
References $ok, $server, and exec().
Referenced by dbxDD\add_db_field_from_dd(), dbxDD\create_db_index(), dbxDD\create_db_tab(), dbxDD\create_db_tab_from_fields(), dbxDD\drop_db_tab(), empty(), dbxDD\empty_db_table(), and dbxDD\sync_dd_to_db().
| dbxDB::get_convert_array | ( | $field, | |
| $array, | |||
| $convert = 'auto' ) |
Konvertiert Array-Werte automatisch in String-/Serialisierungsformate.
| string | $field | Feldname |
| mixed | $array | Wert oder Array |
| string | $convert | Modus: auto|serial|list |
Definition at line 3893 of file dbxDB.class.php.
References $array, $field, and $value.
Referenced by check_values(), and update().
| dbxDB::get_csv_seperator | ( | $dd | ) |
Gibt das CSV-Trennzeichen für eine DD zurück.
Falls in der DD kein CSV-Separator definiert ist, wird ; verwendet.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1030 of file dbxDB.class.php.
| dbxDB::get_db_tables | ( | $server, | |
| $not = 'sqlite_sequence' ) |
Liefert alle Tabellen eines Servers mit Datensatzanzahl zurück.
Die Rückgabestruktur bleibt unverändert:
Falls das Zählen fehlschlägt, wird count auf -1 gesetzt.
| string | $server | Datenbankserver |
| string | $not | Tabellenname, der ausgeschlossen werden soll |
Definition at line 3552 of file dbxDB.class.php.
References $count, $ok, $server, connect_db_server(), count(), get_db_type(), and rawQuery().
| dbxDB::get_db_type | ( | $server | ) |
Ermittelt den Datenbanktyp für einen Server.
Liest die Konfiguration aus dbx-Config und gibt den Typ zurück. Fallback ist immer sqlite.
Unterstützt zusätzlich SQLite-Dateiangaben:
| string | $server | Name des DB-Servers |
Definition at line 840 of file dbxDB.class.php.
References $config, and $server.
Referenced by add_db_fld(), dbxDD\backup(), dbxDD\build_create_table_sql(), dbxDD\build_schema_mapping(), dbxDD\build_sql_column_from_dd(), dbxDD\build_sync_plan_dd_to_db(), commit(), connect_db_server(), dbxDD\create_db_tab_from_fields(), empty(), dbxDD\empty_db_table(), dbxDD\get_db_fields(), dbxDD\get_db_indexes(), get_db_tables(), get_table_exist(), optimize_tab(), dbxDD\quote_ident(), dbxDD\restore(), select(), sqlite_sequence_exists(), and dbxDD\sync_db_to_dd().
| dbxDB::get_dd_autosync | ( | $dd, | |
| $rec = 0 ) |
Gibt das Autosync-Flag einer DD zurück.
| string | $dd | Name der Datenbeschreibung |
| int | $rec | 0 = Wert, 1 = kompletter Datensatzbereich |
Definition at line 1209 of file dbxDB.class.php.
References $_SESSION, $dd, and load_dd().
Referenced by dbxDD\get_dd_tables().
| dbxDB::get_dd_cols | ( | string | $dd | ) |
Gibt alle DD-Spaltennamen als CSV-String zurück.
| string | $dd | Name der Datenbeschreibung |
Definition at line 3735 of file dbxDB.class.php.
References $dd, $fields, and get_dd_fields().
| dbxDB::get_dd_exist | ( | $dd | ) |
Prüft, ob eine DD-Datei im Standardmodul dbx existiert.
| string | $dd | Name der DD |
Reimplemented in dbxDD.
Definition at line 3529 of file dbxDB.class.php.
References $dd, and get_base_dir().
| dbxDB::get_dd_fields | ( | $dd, | |
| $label = 0 ) |
Gibt die Felddefinitionen einer DD zurück.
Optional können die Felder als Key/Label-Liste zurückgegeben werden.
Die Funktion arbeitet defensiv:
| string | $dd | Name der Datenbeschreibung |
| int | $label | 0 = komplette Felddefinitionen, 1 = Name => Label |
Definition at line 3659 of file dbxDB.class.php.
References $_SESSION, $dd, $field, $fields, and load_dd().
Referenced by dbxDD\build_create_table_sql(), check_fields(), check_values(), empty_record(), get_dd_cols(), get_dd_grid_cols(), and get_rpt_fields().
| dbxDB::get_dd_file | ( | string | $dd | ) |
Liefert den Dateipfad einer geladenen DD fuer Editor-Marker.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1446 of file dbxDB.class.php.
| dbxDB::get_dd_grid_cols | ( | string | $dd | ) |
Erzeugt die neue Grid-Column-Syntax aus einer DD.
Die Funktion arbeitet defensiv bei unvollständigen DD-Felddefinitionen.
| string | $dd | Name der Datenbeschreibung |
Definition at line 3770 of file dbxDB.class.php.
References $dd, $fields, and get_dd_fields().
| dbxDB::get_dd_primary | ( | string | $dd | ) |
Ermittelt den Primärschlüssel einer Datenbeschreibung (DD).
Gibt den in der DD definierten Primärschlüssel zurück. Falls keiner vorhanden ist, wird id verwendet.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1055 of file dbxDB.class.php.
References $_SESSION, $dd, and load_dd().
Referenced by check_where(), delete(), insert(), and update().
| dbxDB::get_dd_server | ( | string | $dd | ) |
Ermittelt den lokal wirksamen Server einer Datenbeschreibung.
Vorrang:
Definition at line 1015 of file dbxDB.class.php.
References $binding, $dd, and get_dd_server_binding_info().
Referenced by begin(), dbxDD\build_create_table_sql(), commit(), count(), dbxDD\create_db_tab(), delete(), empty(), dbxDD\ensure_sqlite_db_file_for_dd(), dbxDD\get_dd_model(), get_dd_table(), dbxDD\get_dd_tables(), get_table_exist(), insert(), optimize_tab(), rollback(), select(), and update().
| dbxDB::get_dd_server_binding_info | ( | string | $dd | ) |
Liefert Herkunft und Ergebnis der Serveraufloesung einer DD.
Jede DD kann unabhaengig gebunden werden. Dadurch sind auch innerhalb eines Moduls beliebige Mischungen aus DB3- und SQL-Servern moeglich.
Definition at line 953 of file dbxDB.class.php.
References $dd, and load_dd().
Referenced by get_dd_server().
|
protected |
Liefert die installationsbezogenen Serverbindungen der DDs.
Die Bindungen liegen absichtlich in der lokalen dbx-Konfiguration. Release-DDs bleiben damit portabel und ein Update kann eine lokale SQLite-/MySQL-Entscheidung nicht ueberschreiben.
Reimplemented in dbxDBBindingContractTest.
Definition at line 862 of file dbxDB.class.php.
References $config.
| dbxDB::get_dd_sort_desc | ( | $dd | ) |
Platzhalter für Sortierrichtung einer DD.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1091 of file dbxDB.class.php.
References $dd.
| dbxDB::get_dd_sort_flds | ( | $dd | ) |
Platzhalter für Sortierfelder einer DD.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1079 of file dbxDB.class.php.
References $dd.
| dbxDB::get_dd_table | ( | $dd, | |
| $rec = 0 ) |
Gibt den Tabellennamen oder die komplette Table-Definition einer DD zurück.
Bei fehlender oder ungültiger DD wird 0 zurückgegeben.
| string | $dd | Name der Datenbeschreibung |
| int | $rec | 0 = nur Tabellenname, 1 = komplette Table-Definition |
Definition at line 1176 of file dbxDB.class.php.
References $_SESSION, $dd, get_dd_server(), and load_dd().
Referenced by dbxDD\build_create_table_sql(), check_access(), count(), dbxDD\create_db_tab(), delete(), empty(), dbxDD\get_dd_tables(), get_table_exist(), insert(), optimize_tab(), select(), and update().
| dbxDB::get_dd_table_def | ( | $dd | ) |
Gibt die komplette Table-Definition einer DD zurück.
Bei fehlender oder ungültiger DD wird 0 zurückgegeben.
| string | $dd | Name der Datenbeschreibung |
Definition at line 3626 of file dbxDB.class.php.
References $_SESSION, $dd, $table, and load_dd().
Referenced by check_where(), delete(), insert(), select_tree(), and update().
| dbxDB::get_error_status | ( | ) |
Liefert die Fehlerart des letzten DB-Aufrufs.
Definition at line 163 of file dbxDB.class.php.
Referenced by count(), insert(), save(), select_query(), and update().
| dbxDB::get_error_text | ( | ) |
Liefert den Fehlertext des letzten DB-Aufrufs.
Definition at line 172 of file dbxDB.class.php.
| dbxDB::get_insert_id | ( | ) |
Liefert die letzte Insert-ID nach erfolgreichem insert().
Definition at line 181 of file dbxDB.class.php.
| dbxDB::get_new_record | ( | string | $dd, |
| array | $field_values = [] ) |
Erstellt einen neuen Datensatz mit Standardwerten.
Falls field_values nicht angegeben ist, wird der leere Datensatz des DD-Objekts verwendet. Nicht gesetzte Felder erhalten Standardwerte.
| string | $dd | Datenbank-Objekt |
| array | $field_values | Initialwerte |
Definition at line 2426 of file dbxDB.class.php.
References $dd, $field, $value, and empty_record().
Referenced by insert().
| dbxDB::get_rpt_fields | ( | $dd, | |
| $flds, | |||
| $label = 1 ) |
Ermittelt die Report-Felder einer DD für eine übergebene Feldliste.
| string | $dd | Name der Datenbeschreibung |
| string | $flds | Feldliste oder * |
| int | $label | 1 = Label verwenden |
Definition at line 3706 of file dbxDB.class.php.
References $dd, $field, $fields, and get_dd_fields().
| dbxDB::get_table_exist | ( | $dd, | |
| $dbtab = '' ) |
Prueft, ob eine Tabelle existiert.
| string | $dd | DD-Name oder Servername |
| string | $dbtab | Optional expliziter Tabellenname |
Definition at line 3383 of file dbxDB.class.php.
References $dbFile, $dd, $server, connect_db_server(), get_db_type(), get_dd_server(), and get_dd_table().
Referenced by dbxDD\backup(), dbxDD\build_schema_mapping(), dbxDD\build_sync_plan_dd_to_db(), dbxDD\create_db_tab(), dbxDD\create_db_tab_from_fields(), dbxDD\create_dd(), dbxDD\drop_db_tab(), dbxDD\empty_db_table(), dbxDD\get_db_fields(), dbxDD\get_db_indexes(), dbxDD\get_dd_tables(), dbxDD\restore(), and dbxDD\sync_db_to_dd().
| dbxDB::insert | ( | $dd, | |
| $field_values, | |||
| $verify_access = 1, | |||
| $verify_fields = 1, | |||
| $verify_values = 1, | |||
| $trace = 1 ) |
Fügt einen neuen Datensatz in die Datenbank ein.
Bei retry-fähigen Lock-/Deadlock-Fehlern wird außerhalb aktiver Transaktionen mehrfach erneut versucht.
| string | $dd | Datenbank-Definition |
| array | $field_values | Zu speichernde Werte |
| int | $verify_access | Zugriff prüfen |
| int | $verify_fields | Felder prüfen |
| int | $verify_values | Werte prüfen |
| int | $trace | Trace aktivieren |
Beispiel:
Definition at line 2474 of file dbxDB.class.php.
References $dd, $fields, $now, $server, $source, check_access(), check_fields(), check_values(), clear_db_error(), connect_db_server(), count(), empty(), get_dd_primary(), get_dd_server(), get_dd_table(), get_dd_table_def(), get_error_status(), get_new_record(), and insert().
| dbxDB::insert_query | ( | $server, | |
| $sql ) |
Führt eine INSERT-Abfrage aus und gibt die zuletzt eingefügte ID zurück.
| string | $server | Name des Datenbankservers |
| string | $sql | SQL-Insert-Statement |
Definition at line 1983 of file dbxDB.class.php.
|
protected |
Prueft eine lokale DD-Serverbindung, ohne eine Verbindung aufzubauen.
DB3-Bindungen duerfen nur aus optionalem Modulnamen und Dateinamen bestehen. SQL-Bindungen muessen auf einen aktiven, lokal konfigurierten Server zeigen. Bei einer fehlerhaften Bindung gibt es keinen stillen Fallback auf die im DD genannte Datenbank.
Reimplemented in dbxDBBindingContractTest.
Definition at line 913 of file dbxDB.class.php.
References $server.
| dbxDB::isSQLiteDatabaseLocked | ( | $databasePath | ) |
Prüft, ob eine SQLite-Datenbank aktuell gelockt ist.
SQLite sperrt bei Schreibzugriffen die Datenbank bzw. Teile davon. Diese Funktion versucht defensiv, eine Transaktion zu starten. Scheitert das, wird die DB als gelockt betrachtet.
| string | $databasePath | Vollständiger Pfad zur SQLite-Datei |
Definition at line 320 of file dbxDB.class.php.
References $pdo.
| dbxDB::load_dd | ( | string | $dd | ) |
Lädt eine Datenbeschreibung (DD) aus Datei und speichert sie im Session-Cache.
Zentraler DD-Resolver für alle Folgeoperationen wie:
Ein expliziter Modulaufruf modulX|dd darf nicht durch einen bereits vorhandenen dbx-Cacheeintrag derselben DD übersteuert werden. Der dbx-Cache-Fallback wird daher nur bei nicht explizitem Modulaufruf verwendet.
| string | $dd | Name der Datenbeschreibung, optional mit Modulpräfix |
Reimplemented in dbxDD.
Definition at line 1267 of file dbxDB.class.php.
References $dd.
Referenced by empty(), get_csv_seperator(), get_dd_autosync(), get_dd_fields(), get_dd_file(), get_dd_primary(), get_dd_server_binding_info(), get_dd_table(), get_dd_table_def(), and optimize_tab().
| dbxDB::map_dd_type_to_grid_type | ( | string | $ddType | ) |
Mappt DD-Feldtypen auf Grid-Feldtypen.
| string | $ddType | DD-Typ |
Definition at line 3836 of file dbxDB.class.php.
| dbxDB::normalize_where | ( | string | $dd, |
| $where = '', | |||
| int | $owner = 0 ) |
Normalisiert und erweitert eine WHERE-Bedingung für SQL-Abfragen.
Für numerische WHERE-Werte wird, wenn möglich, der Primärschlüssel der übergebenen DD verwendet. Dadurch bleiben Aufrufe wie select('kunden', 15) oder update('kunde', [...], 15) stabil, auch wenn der Primärschlüssel nicht id heißt.
Die DD ist optional. Ohne DD bleibt der Fallback wie bisher $this->_fld_id bzw. id.
| mixed | $where | WHERE-Bedingung |
| int | $owner | 1 = Owner-Filter aktiv |
| string | null | $dd | Optionaler DD-Name für Primärschlüssel-Auflösung |
Bestehende String-WHEREs bleiben kompatibel. Neue Array-WHEREs werden anhand der DD-Felder gebaut und User-Suchwerte zentral validiert/escaped.
| string | $dd | Datenstrukturdefinition |
| mixed | $where | String oder strukturierte WHERE-Definition |
| int | $owner | Owner-Filter aktiv |
Definition at line 4284 of file dbxDB.class.php.
References $dd, $owner, check_where(), and if.
| dbxDB::optimize_tab | ( | $dd | ) |
Optimiert eine Tabelle anhand ihrer DD nach Wartungsaktionen.
MySQL nutzt OPTIMIZE TABLE. SQLite nutzt VACUUM fuer die ganze Datenbankdatei, weil SQLite keine einzelne Tabellen-Vacuum kennt.
| string | $dd | Datenbeschreibung |
Definition at line 3288 of file dbxDB.class.php.
References $dd, $server, $table, exec(), get_db_type(), get_dd_server(), get_dd_table(), and load_dd().
Referenced by delete_tab().
| dbxDB::query | ( | string | $server, |
| string | $sql ) |
Führt eine SQL-Abfrage auf dem angegebenen Server aus.
Stellt sicher, dass eine Verbindung besteht, bereitet die SQL-Abfrage vor und führt sie aus. Bei retry-fähigen Lock-/Deadlock-Fehlern wird außerhalb aktiver Transaktionen mehrfach erneut versucht.
| string | $server | Datenbankserver |
| string | $sql | SQL-Abfrage |
Definition at line 1481 of file dbxDB.class.php.
Referenced by count(), delete_query(), insert_query(), select_query(), and update_query().
| dbxDB::rawQuery | ( | string | $server, |
| string | $query ) |
Führt eine rohe SQL-Abfrage auf dem angegebenen Server aus.
Unterstützt verschiedene SQL-Abfragetypen (SELECT, INSERT, UPDATE, DELETE, DDL usw.) und delegiert intern an die passende Methode.
Der interne Transaktionsstatus ($_tx) wird hier nicht verändert. Transaktionen werden ausschließlich über begin(), commit() und rollback() gesteuert.
| string | $server | Datenbankserver |
| string | $query | SQL-Abfrage |
Definition at line 2065 of file dbxDB.class.php.
Referenced by dbxDD\backup(), empty(), dbxDD\get_db_fields(), dbxDD\get_db_indexes(), and get_db_tables().
| dbxDB::rollback | ( | string | $dd | ) |
Führt ein Rollback für die Datenbank der angegebenen DD aus.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1658 of file dbxDB.class.php.
References $dd, $server, and get_dd_server().
| dbxDB::save | ( | $dd, | |
| $field_values, | |||
| $where, | |||
| $verify_access = 1, | |||
| $verify_fields = 1, | |||
| $verify_values = 1, | |||
| $trace = 1 ) |
Speichert einen Datensatz mit UPSERT-ähnlichem Verhalten.
Verhindert das frühere Fehlverhalten:
| string | $dd | Datenbankdefinition |
| array | $field_values | Zu speichernde Werte |
| string | $where | WHERE-Bedingung |
| int | $verify_access | Zugriff prüfen |
| int | $verify_fields | Felder prüfen |
| int | $verify_values | Werte prüfen |
| int | $trace | Trace aktivieren |
Beispiel:
Definition at line 2896 of file dbxDB.class.php.
References $dd, $ok, $owner, check_access(), check_where(), clear_db_error(), count(), get_error_status(), insert(), and update().
| dbxDB::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.
| string | $dd | Datenbank-Definition |
| string | $where | WHERE-Bedingung |
| string | array | $columns | Spaltenliste oder * |
| string | $orderby | ORDER BY-Feld/Clause |
| string | $asc_desc | Sortierreihenfolge |
| string | $groupby | GROUP BY-Clause |
| int | $max | Maximale Anzahl Datensätze |
| int | $offset | Offset |
| int | $verify_access | Zugriff prüfen |
Beispiel:
Definition at line 2141 of file dbxDB.class.php.
References $dd, $field, $fields, $owner, $server, check_access(), clear_db_error(), get_db_type(), get_dd_server(), get_dd_table(), normalize_where(), and select_query().
| dbxDB::select1 | ( | string | $dd, |
| $where = '', | |||
| $columns = '*', | |||
| $verify_access = 1 ) |
Führt eine SELECT-Abfrage aus und gibt genau einen Datensatz zurück.
Gibt bei leerem oder ungültigem Ergebnis einen leeren Standarddatensatz der DD zurück.
| string | $dd | Datenbank-Definition |
| string | $where | WHERE-Bedingung |
| string | array | $columns | Spaltenliste |
| int | $verify_access | Zugriff prüfen |
Definition at line 2232 of file dbxDB.class.php.
References $dd, empty_record(), and select().
| dbxDB::select_query | ( | string | $server, |
| string | $sql, | ||
| string | $dd = '' ) |
Fuehrt eine rohe SELECT-Abfrage auf einem konfigurierten DB-Server aus.
Diese Methode ist die Infrastrukturvariante fuer Faelle, in denen ein normaler DD-basierter select() nicht passt. Der optionale DD-Name wird nur fuer Performance-Messung und Kontextprotokollierung verwendet; die SQL-Anweisung selbst muss bereits vollstaendig und gueltig sein.
Beispiel:
Ergebnis:
| string | $server | Logischer DB-Server aus der dbxDB-Konfiguration. |
| string | $sql | Vollstaendige SELECT-Anweisung. |
| string | $dd | Optionaler DD-Kontext fuer Timer, Logging und Diagnose. |
Definition at line 1887 of file dbxDB.class.php.
References $dd, $server, get_error_status(), and query().
Referenced by select().
| dbxDB::select_tree | ( | string | $folder_dd, |
| string | $item_dd = '', | ||
| array | $opt = [] ) |
Liefert generische Tree-Daten aus einer Parent-Tabelle und optionalen Items.
Die Methode ist bewusst klein konfigurierbar, damit Module nur DD-Namen und abweichende Feldnamen uebergeben muessen. Typischer CMS-Fall: Ordner aus dbxContentFolder, Seiten aus dbxContent.
| string | $folder_dd | DD fuer die Baum-/Ordner-Tabelle |
| string | $item_dd | Optional DD fuer Kind-Items/Seiten |
| array | $opt | Feld- und Filteroptionen |
Definition at line 2259 of file dbxDB.class.php.
References empty(), and get_dd_table_def().
|
protected |
Prueft ohne Schema-Warnung, ob SQLite seine AUTOINCREMENT-Tabelle hat.
sqlite_sequence existiert erst, nachdem in der Datenbank mindestens eine Tabelle mit AUTOINCREMENT angelegt wurde. Ihr Fehlen ist deshalb kein Datenbankfehler.
Definition at line 3162 of file dbxDB.class.php.
References $server, get_db_type(), and if.
Referenced by empty(), and dbxDD\empty_db_table().
| dbxDB::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.
Bei retry-fähigen Lock-/Deadlock-Fehlern wird außerhalb aktiver Transaktionen mehrfach erneut versucht.
| string | $dd | Datenbankdefinition oder Tabellenname |
| array | $field_values | Zu aktualisierende Werte |
| string | $where | WHERE-Bedingung |
| int | $verify_access | Zugriff prüfen |
| int | $verify_fields | Felder prüfen |
| int | $verify_values | Werte prüfen |
| int | $trace | Trace aktivieren |
Beispiel:
Definition at line 2669 of file dbxDB.class.php.
References $count, $dd, $delta, $field, $now, $owner, $server, $source, $value, check_access(), check_fields(), check_values(), clear_db_error(), connect_db_server(), empty(), get_convert_array(), get_dd_primary(), get_dd_server(), get_dd_table(), get_dd_table_def(), get_error_status(), insert(), normalize_where(), and select().
Referenced by save().
| dbxDB::update_query | ( | $server, | |
| $sql ) |
Führt eine UPDATE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.
| string | $server | Datenbankserver |
| string | $sql | SQL-Update-Statement |
Definition at line 2843 of file dbxDB.class.php.
| int dbxDB::$_connect_timeout = 3 |
Maximale Wartezeit fuer einen DB-Verbindungsaufbau in Sekunden.
Definition at line 107 of file dbxDB.class.php.
| dbxDB::$_connected = 0 |
Definition at line 68 of file dbxDB.class.php.
| dbxDB::$_dbMessage = '' |
Definition at line 80 of file dbxDB.class.php.
| dbxDB::$_dbtype = '' |
Definition at line 70 of file dbxDB.class.php.
| dbxDB::$_delete_count = 0 |
Definition at line 76 of file dbxDB.class.php.
| dbxDB::$_error = '' |
Definition at line 95 of file dbxDB.class.php.
| dbxDB::$_error_status = '' |
db|sql|access
Definition at line 102 of file dbxDB.class.php.
| dbxDB::$_error_text = '' |
Definition at line 104 of file dbxDB.class.php.
| dbxDB::$_fld_id |
Definition at line 93 of file dbxDB.class.php.
| dbxDB::$_insert_count = 0 |
Definition at line 78 of file dbxDB.class.php.
| dbxDB::$_insert_id = 0 |
Definition at line 72 of file dbxDB.class.php.
| dbxDB::$_query = '' |
Definition at line 96 of file dbxDB.class.php.
| dbxDB::$_report_error = 1 |
1 = DB-Fehler automatisch in dbxSysMsg schreiben, 0 = nicht
Definition at line 99 of file dbxDB.class.php.
| dbxDB::$_server = '' |
Definition at line 69 of file dbxDB.class.php.
| dbxDB::$_update_count = 0 |
Definition at line 74 of file dbxDB.class.php.
| dbxDB::$_validation_error = 0 |
Definition at line 83 of file dbxDB.class.php.
| dbxDB::$_validation_error_flds = array() |
Definition at line 85 of file dbxDB.class.php.
| dbxDB::$_validation_warning = 0 |
Definition at line 84 of file dbxDB.class.php.
| dbxDB::$_validation_warning_flds = array() |
Definition at line 86 of file dbxDB.class.php.
| dbxDB::$_validatior_error = 0 |
Definition at line 90 of file dbxDB.class.php.
| dbxDB::$_validatior_mode = 'clean' |
Definition at line 91 of file dbxDB.class.php.
| dbxDB::$_validatior_rules = 0 |
Definition at line 88 of file dbxDB.class.php.
| dbxDB::$_validatior_type = 1 |
Definition at line 89 of file dbxDB.class.php.
| dbxDB::$db = array() |
Definition at line 64 of file dbxDB.class.php.
| dbxDB::$oValidator = null |
Definition at line 82 of file dbxDB.class.php.
| dbxDB::$pdo = null |
Definition at line 66 of file dbxDB.class.php.
Referenced by commit(), and isSQLiteDatabaseLocked().