Beide Module wurden aus einem anderen Kundenprojekt kopiert und bereinigt: Knowledgecenter: - Bild-Cache (1.985 Dateien) geleert, Ordnerstruktur mit .gitkeep behalten - Files-Gallery-Lizenzschlüssel entfernt (config.php) - Kundenspezifische Kategorien gelöscht: Teil I/II/III QM-Struktur, nummerierte QM-Kapitel, Gremien (Präsidium/Finanzausschuss/Landesausschuss), Sitzungsservice-Serie, Protokoll-Abteilungen, Testeinträge - 56 generische Kategorien bleiben (Downloads, Onboarding, Personalthemen …) Tasks: - Alle Betriebsdaten gelöscht (114 Tasks, 914 Submissions, 579 Assignments) - Task-Definitionen und Verlinkungen geleert - Kategoriestruktur bleibt (Allgemein, IT, Personal, Buchhaltung …) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
44 lines
1.1 KiB
PHP
44 lines
1.1 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
class TaskCategoryChangeLogRepository
|
|
{
|
|
public function create(
|
|
int $categoryId,
|
|
string $action,
|
|
int $changedBy,
|
|
?array $beforeSnapshot,
|
|
?array $afterSnapshot,
|
|
?array $diff
|
|
): int {
|
|
return TaskCertDb::insert(
|
|
'INSERT INTO task_category_change_log (
|
|
category_id,
|
|
action,
|
|
changed_by,
|
|
before_json,
|
|
after_json,
|
|
diff_json
|
|
) VALUES (?, ?, ?, ?, ?, ?)',
|
|
'isisss',
|
|
[
|
|
$categoryId,
|
|
$action,
|
|
$changedBy,
|
|
$this->encodeJsonOrNull($beforeSnapshot),
|
|
$this->encodeJsonOrNull($afterSnapshot),
|
|
$this->encodeJsonOrNull($diff),
|
|
]
|
|
);
|
|
}
|
|
|
|
private function encodeJsonOrNull(?array $value): ?string
|
|
{
|
|
if ($value === null) {
|
|
return null;
|
|
}
|
|
|
|
return json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
}
|
|
}
|