Initialer Commit: Kundenverwaltung (PHP/Smarty)

Bestehende Codebasis als Ausgangsstand aufgenommen.

- .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache
  (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen;
  Verzeichnisstruktur ueber .gitkeep erhalten
- .gitattributes: Zeilenenden normalisiert (LF im Repo),
  Binaerformate markiert
- db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der
  Anwendung aus der externen Konfiguration statt hartkodiert aus der
  Datei; Passwort wird ueber eine temporaere Optionsdatei statt per
  Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet,
  Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 16:41:18 +02:00
co-authored by Claude Opus 5
commit e2124220e5
2225 changed files with 1070301 additions and 0 deletions
@@ -0,0 +1,45 @@
SOLID webKey
------------
-----BEGIN CERTIFICATE-----
MIIHbDCCBVSgAwIBAgIIYON6b/aoGY8wDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNV
BAYTAlpBMTIwMAYDVQQKDClMQVcgVHJ1c3RlZCBUaGlyZCBQYXJ0eSBTZXJ2aWNl
cyBQVFkgTHRkLjEpMCcGA1UECwwgTEFXdHJ1c3QgVHJ1c3QgU2VydmljZXMgUHJv
dmlkZXIxITAfBgNVBAMMGExBV3RydXN0IFByaXZhdGUgUm9vdCBDQTAeFw0xODEw
MTkxMjE5MDVaFw0yODEwMTYxMjE5MDVaMIGRMQswCQYDVQQGEwJaQTEyMDAGA1UE
CgwpTEFXIFRydXN0ZWQgVGhpcmQgUGFydHkgU2VydmljZXMgUFRZIEx0ZC4xKTAn
BgNVBAsMIExBV3RydXN0IFRydXN0IFNlcnZpY2VzIFByb3ZpZGVyMSMwIQYDVQQD
DBpMQVd0cnVzdCBQcml2YXRlIEF1dGggQ0EwMTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAMXId27IVDtPruWUpnOZyrx9VPCxXQqO7sePmPkKyCDm+fhP
ZIpWpi245+9VRshu1KntY3WXNi0/wa1xVYlhkz3TWuwF0aJKhycTXFPg1pF0dGx2
wchawHH4tP38Sl+2/8d3nzsHgCZHO31DYFHmQ2oUXgS6KSULABW0TJ7SghpgJYhs
ScxI1bJWH02qoVPJ5yJoDA77Porc4pxOLltRaA+w76+YkEzEoe7+0lGh9FZpTMAB
TziW1ZP/TyIDw8D8yPN+nc0QGjBk4QEqKUbStaI/0a7U+tLJQIHzoneHL1gJ2Xj9
hk33uf64AfybYrltSrOGCqbltimGPCcpYr1pbVkXLl9JoTSmnU3mSyPeiMuVp1TF
k7Ro/PDscagEb+ue7sauE5hfIX2FCoXPrWISRBgCUKPNA6hRxXDtGBjJ1XokBsEe
bdDHwok7l+crI2ncyEMI1MA445PWDRkt4pT4Q5Aerfsc5/w8HFvcNrV0XT2CncMu
9pFKUEYEtc2VR7po3TZGM6a1JbCOkMG/6340/6s2SBBksMQoUVI96RSi1adma/Ah
enBFZWYSZHijduEaPJ1l5xPYLmFNrvarPLG7ywJ1X7EFSRKWAsnbTIVV3vEhaj3i
H/amL7DUXmOlK3YBEsPC3x1LD0Y+NPs963UYD9BLMHJjGMQ30DpdgMBg8mdbAgMB
AAGjggHGMIIBwjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFIDoUHnm3daj
92RhVv1HrOKvCdFuMDYGCCsGAQUFBwEBBCowKDAmBggrBgEFBQcwAYYaaHR0cDov
L29jc3AubGF3dHJ1c3QuY28uemEwSAYDVR0gBEEwPzA9BgpghkgBhvpsCgIBMC8w
LQYIKwYBBQUHAgEWIWh0dHBzOi8vbGF3dHJ1c3QuY28uemEvcmVwb3NpdG9yeTCB
3AYDVR0fBIHUMIHRMIHOoDSgMoYwaHR0cDovL2NybC5sYXd0cnVzdC5jby56YS9M
VF9Qcml2YXRlX1Jvb3RfQ0EuY3JsooGVpIGSMIGPMSEwHwYDVQQDDBhMQVd0cnVz
dCBQcml2YXRlIFJvb3QgQ0ExMjAwBgNVBAoMKUxBVyBUcnVzdGVkIFRoaXJkIFBh
cnR5IFNlcnZpY2VzIFBUWSBMdGQuMSkwJwYDVQQLDCBMQVd0cnVzdCBUcnVzdCBT
ZXJ2aWNlcyBQcm92aWRlcjELMAkGA1UEBhMCWkEwHQYDVR0OBBYEFMQl6gOgc4V3
4YsppVsTsofTHwzWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEA
uCgBwGLNn+DqabWTY/dPx8fqTJ8De9tg4yvyMoTTw8OYE0OiGqBoDKE4wOacYJwb
+sp8oabb4VU55FXjp3mMFu6snsmKw8OJzZzWMlpB8/ykAa9xBKBpd9AJQQfKuCDr
nRgCJGz5jcMh13zoj4cs9xjyAeTF81QXms5rCyGBnbKb99DWcftG+4nULdVA43ZH
1YMhZ8LGxtUf1e6Xea1tC/GoN0lSNeURGuMKlt0+91AhDmxoawHiVboZ/EuG1OKD
3s4Jz8MNSYAPcFssg28XJB99vLZsVzszBl8F2fMKgVOiL7/CQxF/Qnuo1pqY3jl5
yOyPg7g6ppIF+EqGpPsDMXBc8Np8DBbRJ/HdbRGC6OXyVqpyYyI3Mb0PWMww5Hc5
j36JYhsaImkvb+n5/SgI/yax8oOLEV/og+pWf9xeNjKx7O4/4IaUB48ThSg92OeQ
HBnrLDVTxChySEL9BmaUmGP7BL7nYmTk1+oRGgTdMM1ologhSjc9Kzp2WAZAoTsD
IgUUdwxOlIqkc0mIARtIxCGS3qgZxNSrbzpKZ2psu3fBxSDlOoF3xhx3Rpa5yjfr
UEo4CgsCsUCtx85kwQ8sbvgtLLNUemmCrlMoPWH9a/SxBAzN4iZFKS2kD7sFqxlX
k172+SHFAwR1uIRtbA340EgKW/0OF9WKoL0kQzDKMoU=
-----END CERTIFICATE-----