Beim Test der Oberflaeche im Browser gefunden:
- addrechnung.tpl fragte die gespeicherte Anrede als $rechnung.anr1 ab
(die Daten heissen anrede1) und gab sie ohne Klammern aus. Beim
Bearbeiten von Angeboten/Briefen erschien deshalb immer die
Standard-Anrede, eine geaenderte ging beim erneuten Speichern verloren.
- |escape innerhalb von {if}-Bedingungen wieder entfernt (dort ohne
Wirkung, gehoert nicht dorthin).
- UTF-8-BOM aus sechs Dateien entfernt; makepdf.php gab es auf jeder
Rechnungsseite vor dem HTML aus.
- makeImageFromPDF() loeschte bei der Aufraeumrunde auch .gitkeep;
Pfade fuer convert per escapeshellarg().
- constants.php: Instanzname auch unter Windows (getcwd() mit
Backslashes) korrekt; KV_CONFIG_PATH als Config-Pfad fuer lokale Tests.
Im Browser getestet (lokaler PHP-Webserver, migrierte Testdatenbank):
Login mit Sonderzeichen-Passwort, Entwurf automatisch speichern und
laden, Rechnung mit Umlauten/Anfuehrungszeichen/HTML im Artikelnamen und
Komma-Betraegen speichern, Anzeige als PDF (Original und Kopie),
Kundensuche nach Dokumenten mit Umlaut, Artikelnamen escaped, Storno,
Kopie auf andere Adresse, Umschlag, Angebot mit eigener Anrede anlegen und
wieder bearbeiten.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
76 lines
2.4 KiB
PHP
76 lines
2.4 KiB
PHP
<?php
|
|
// Unter Windows liefert getcwd() Backslashes
|
|
$dirs = preg_split('#[/\\\\]#', getcwd());
|
|
|
|
$dir = $dirs[count($dirs)-1];
|
|
if($dir == "ajax")
|
|
$dir = $dirs[count($dirs)-2];
|
|
else if($dir == "auto")
|
|
$dir = $dirs[count($dirs)-3];
|
|
|
|
// KV_CONFIG_PATH erlaubt einen anderen Ort, etwa für eine lokale Testumgebung
|
|
if(getenv("KV_CONFIG_PATH"))
|
|
define("CONFIG_PATH", rtrim(getenv("KV_CONFIG_PATH"), "/\\")."/");
|
|
elseif(DIRECTORY_SEPARATOR == "/")
|
|
define("CONFIG_PATH", "/volume1/homes/wagner/kundenconfig/");
|
|
else
|
|
define("CONFIG_PATH", "c:/kundenverwaltung/config/");
|
|
define("CONFIG_FILE", $dir."_settings.conf");
|
|
|
|
/*
|
|
* Der Verzeichnisname wählt nur noch aus, welche Konfigurationsdatei
|
|
* geladen wird. Der Name der Instanz steht dort als $instanz und bestimmt
|
|
* Uploads-Verzeichnis und Session-Name. Fehlt $instanz (ältere Configs,
|
|
* Ersteinrichtung), gilt wie bisher der Verzeichnisname.
|
|
*/
|
|
function instanzAusKonfiguration($datei, $fallback)
|
|
{
|
|
if(!is_file($datei))
|
|
return $fallback;
|
|
// Leerzeilen hinter dem schließenden PHP-Tag der Config würden sonst
|
|
// ausgegeben und den Session-Cookie verhindern, weil das hier vor
|
|
// session_start() läuft.
|
|
ob_start();
|
|
include($datei);
|
|
ob_end_clean();
|
|
if(!isset($instanz) || $instanz === "")
|
|
return $fallback;
|
|
// Landet in Dateipfaden und im Session-Namen (dort nur alphanumerisch zulässig).
|
|
if(!is_string($instanz) || !preg_match('/^[A-Za-z0-9]+$/', $instanz))
|
|
die("Ungültiger Instanzname in ".$datei.": nur Buchstaben und Ziffern erlaubt.");
|
|
return $instanz;
|
|
}
|
|
|
|
define("INSTANZ", instanzAusKonfiguration(CONFIG_PATH.CONFIG_FILE, $dir));
|
|
define("UPLOADS_PATH", "uploads_".INSTANZ."/");
|
|
define("SESSION_NAME",strtoupper(INSTANZ)."SESS");
|
|
define("RIGHTS_KUNDEN", 0);
|
|
define("RIGHTS_TERMINE", 1);
|
|
define("RIGHTS_ANGEBOTE", 2);
|
|
define("RIGHTS_LIEFER", 3);
|
|
define("RIGHTS_RECHNUNGEN", 4);
|
|
define("RIGHTS_SUPERADMIN", 5);
|
|
|
|
define("RIGHTS_LOOK", 1);
|
|
define("RIGHTS_CHANGE", 2);
|
|
define("RIGHTS_ADD", 4);
|
|
define("RIGHTS_ALL", 7);
|
|
define("RIGHTS_LOOKCHANGE", 3);
|
|
define("RIGHTS_LOOKADD", 5);
|
|
define("RIGHTS_CHANGEADD", 6);
|
|
define("RIGHTS_NONE", 0);
|
|
|
|
define("ADRFIELD_FIRMAANR", 0);
|
|
define("ADRFIELD_FIRMA", 1);
|
|
define("ADRFIELD_ANR1", 2);
|
|
define("ADRFIELD_TITEL1", 3);
|
|
define("ADRFIELD_NAME1", 4);
|
|
define("ADRFIELD_ANR2", 5);
|
|
define("ADRFIELD_TITEL2", 6);
|
|
define("ADRFIELD_NAME2", 7);
|
|
define("ADRFIELD_STR", 8);
|
|
define("ADRFIELD_ORT", 9);
|
|
define("ADRFIELD_LAND", 10);
|
|
define("ADRFIELD_ZUSATZ", 11);
|
|
|
|
?>
|