{
"event": "PreToolUse",
"tool_name": "Edit",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/View\/docs\/code-show.php",
"old_string": " <a href=\"\/docs\/code\">Code-Analyse<\/a> »",
"new_string": " <a href=\"\/docs\/code-hygiene\">Code Hygiene<\/a> »"
}
}
{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/View\/docs\/code-show.php",
"oldString": " <a href=\"\/docs\/code\">Code-Analyse<\/a> »",
"newString": " <a href=\"\/docs\/code-hygiene\">Code Hygiene<\/a> »",
"originalFile": "<?php\n\ndeclare(strict_types=1);\n\n\/\/ @responsibility: View für Code-Analyse-Detailansicht (KISS)\n\nob_start();\n$shortPath = str_replace('\/var\/www\/dev.campus.systemische-tools.de\/', '', $file['file_path']);\n$hygieneScore = $file['hygiene_score'] ?? null;\n$factorScores = json_decode($file['factor_scores'] ?? '{}', true) ?: [];\n$qualityIssues = json_decode($file['issues_json'] ?? '[]', true) ?: [];\n?>\n\n<nav class=\"breadcrumb\">\n <a href=\"\/docs\/code\">Code-Analyse<\/a> »\n <span><?= htmlspecialchars($file['file_name']) ?><\/span>\n<\/nav>\n\n<h1><?= htmlspecialchars($file['file_name']) ?><\/h1>\n\n<?php if ($file['parse_error']): ?>\n<div class=\"alert alert--danger\" style=\"margin-bottom: 1rem;\">\n <strong>Parse-Fehler:<\/strong> <?= htmlspecialchars($file['parse_error']) ?>\n<\/div>\n<?php endif; ?>\n\n<ul style=\"list-style: none; padding: 0; margin: 0 0 1.5rem 0; font-size: 0.9rem;\">\n <li><strong>Pfad:<\/strong> <code><?= htmlspecialchars($shortPath) ?><\/code><\/li>\n <li><strong>Namespace:<\/strong> <?= htmlspecialchars($file['namespace'] ?? '-') ?><\/li>\n <li><strong>Zeilen:<\/strong> <?= number_format($file['line_count']) ?> | <strong>Größe:<\/strong> <?= number_format($file['file_size']) ?> Bytes<\/li>\n <li><strong>Geändert:<\/strong> <?= htmlspecialchars($file['modified_at']) ?> | <strong>Gescannt:<\/strong> <?= htmlspecialchars($file['scanned_at']) ?><\/li>\n<\/ul>\n\n<?php if ($hygieneScore !== null): ?>\n<h2>Code Hygiene Score: <?= $hygieneScore ?><\/h2>\n<ul style=\"list-style: none; padding: 0; margin: 0 0 1.5rem 0; font-size: 0.9rem;\">\n <li><strong>Dependencies:<\/strong> <?= $factorScores['dependencies'] ?? 0 ?> <small>(25%)<\/small><\/li>\n <li><strong>LOC:<\/strong> <?= $factorScores['loc'] ?? 0 ?> <small>(20%)<\/small><\/li>\n <li><strong>Methods:<\/strong> <?= $factorScores['methods'] ?? 0 ?> <small>(20%)<\/small><\/li>\n <li><strong>Secrets:<\/strong> <?= $factorScores['secrets'] ?? 0 ?> <small>(15%)<\/small><\/li>\n <li><strong>Classes:<\/strong> <?= $factorScores['classes'] ?? 0 ?> <small>(10%)<\/small><\/li>\n <li><strong>Magic Numbers:<\/strong> <?= $factorScores['magic_numbers'] ?? 0 ?> <small>(10%)<\/small><\/li>\n<\/ul>\n\n<?php if (!empty($qualityIssues)): ?>\n<h3>Issues <span class=\"badge badge--danger\"><?= count($qualityIssues) ?><\/span><\/h3>\n<table class=\"data-table\">\n <thead>\n <tr>\n <th>Zeile<\/th>\n <th>Typ<\/th>\n <th>Beschreibung<\/th>\n <\/tr>\n <\/thead>\n <tbody>\n <?php foreach ($qualityIssues as $issue): ?>\n <tr>\n <td><?= $issue['line'] ?? '-' ?><\/td>\n <td><span class=\"badge badge--warning\"><?= htmlspecialchars($issue['type'] ?? '') ?><\/span><\/td>\n <td><?= htmlspecialchars($issue['message'] ?? '') ?><\/td>\n <\/tr>\n <?php endforeach; ?>\n <\/tbody>\n<\/table>\n<?php else: ?>\n<p style=\"color: var(--color-success);\">Keine Issues gefunden.<\/p>\n<?php endif; ?>\n<?php endif; ?>\n\n<?php if ($hygieneScore === null): ?>\n<div class=\"alert alert--warning\" style=\"margin-bottom: 1rem;\">\n <strong>Hinweis:<\/strong> Keine Hygiene-Daten vorhanden. Bitte \"Jetzt scannen\" auf der Code-Übersicht ausführen.\n<\/div>\n<?php endif; ?>\n\n<?php\n$totalDeps = count($uses) + ($extendsClass ? 1 : 0) + count($implements) + count($traits) + count($constructorDeps);\n?>\n<?php if ($totalDeps > 0): ?>\n<h2>Dependencies <span class=\"badge badge--info\"><?= $totalDeps ?><\/span><\/h2>\n<ul style=\"list-style: none; padding: 0; margin: 0 0 1.5rem 0; font-size: 0.9rem; font-family: monospace;\">\n <?php if ($extendsClass): ?>\n <li><span class=\"badge badge--warning\">extends<\/span> <?= htmlspecialchars($extendsClass) ?><\/li>\n <?php endif; ?>\n <?php foreach ($implements as $iface): ?>\n <li><span class=\"badge badge--info\">implements<\/span> <?= htmlspecialchars($iface) ?><\/li>\n <?php endforeach; ?>\n <?php foreach ($traits as $trait): ?>\n <li><span class=\"badge badge--success\">trait<\/span> <?= htmlspecialchars($trait) ?><\/li>\n <?php endforeach; ?>\n <?php foreach ($constructorDeps as $dep): ?>\n <li><span class=\"badge badge--primary\">constructor<\/span> <?= htmlspecialchars($dep) ?><\/li>\n <?php endforeach; ?>\n <?php foreach ($uses as $use): ?>\n <li><span class=\"badge\">use<\/span> <?= htmlspecialchars($use) ?><\/li>\n <?php endforeach; ?>\n<\/ul>\n<?php endif; ?>\n\n<?php if (!empty($classes)): ?>\n<h2>Klassen <span class=\"badge badge--info\"><?= count($classes) ?><\/span><\/h2>\n<ul style=\"list-style: none; padding: 0; margin: 0 0 1.5rem 0; font-size: 0.9rem;\">\n <?php foreach ($classes as $class): ?>\n <li>\n <code><?= htmlspecialchars($class['name']) ?><\/code>\n <span class=\"badge badge--<?= $class['type'] === 'interface' ? 'warning' : ($class['type'] === 'trait' ? 'info' : 'default') ?>\"><?= $class['type'] ?><\/span>\n <small style=\"color: var(--text-muted);\">Zeile <?= $class['line'] ?><\/small>\n <\/li>\n <?php endforeach; ?>\n<\/ul>\n<?php endif; ?>\n\n<?php if (!empty($functions)): ?>\n<h2>Funktionen <span class=\"badge badge--success\"><?= count($functions) ?><\/span><\/h2>\n<ul style=\"list-style: none; padding: 0; margin: 0 0 1.5rem 0; font-size: 0.9rem;\">\n <?php foreach ($functions as $func): ?>\n <li>\n <code><?= htmlspecialchars($func['name']) ?>()<\/code>\n <?php if ($func['visibility']): ?>\n <span class=\"badge badge--<?= $func['visibility'] === 'private' ? 'danger' : ($func['visibility'] === 'protected' ? 'warning' : 'success') ?>\"><?= $func['visibility'] ?><\/span>\n <?php endif; ?>\n <small style=\"color: var(--text-muted);\">Zeile <?= $func['line'] ?><\/small>\n <\/li>\n <?php endforeach; ?>\n<\/ul>\n<?php endif; ?>\n\n<?php if (!empty($dependents)): ?>\n<h2>Verwendet von <span class=\"badge badge--warning\"><?= count($dependents) ?><\/span><\/h2>\n<ul style=\"list-style: none; padding: 0; margin: 0 0 1.5rem 0; font-size: 0.9rem;\">\n <?php foreach ($dependents as $dep): ?>\n <li>\n <a href=\"\/docs\/code\/<?= $dep['id'] ?>\"><?= htmlspecialchars($dep['file_name']) ?><\/a>\n <span class=\"badge badge--<?= match($dep['dependency_type']) {\n 'extends' => 'warning',\n 'implements' => 'info',\n 'constructor' => 'primary',\n default => 'default'\n } ?>\"><?= $dep['dependency_type'] ?><\/span>\n <\/li>\n <?php endforeach; ?>\n<\/ul>\n<?php endif; ?>\n\n<?php if (!empty($backupHistory)): ?>\n<h2>Versionen <span class=\"badge badge--secondary\"><?= count($backupHistory) ?><\/span><\/h2>\n<ul style=\"list-style: none; padding: 0; margin: 0 0 1.5rem 0; font-size: 0.9rem;\">\n <?php foreach ($backupHistory as $backup): ?>\n <li style=\"margin-bottom: 0.5rem;\">\n <a href=\"\/backup-restore\/<?= $backup['id'] ?>\">v<?= $backup['version'] ?><\/a>\n <small style=\"color: var(--text-muted);\">\n <?= htmlspecialchars(substr($backup['changed_at'], 0, 16)) ?>\n | <?= htmlspecialchars($backup['changed_by']) ?>\n | <?= htmlspecialchars($backup['change_type']) ?>\n <\/small>\n <?php if ($backup['reason']): ?>\n <br><small style=\"color: var(--text-muted); margin-left: 3rem;\"><?= htmlspecialchars(substr($backup['reason'], 0, 80)) ?><?= strlen($backup['reason']) > 80 ? '...' : '' ?><\/small>\n <?php endif; ?>\n <\/li>\n <?php endforeach; ?>\n<\/ul>\n<?php endif; ?>\n\n<h2>Code<\/h2>\n<?php if (!empty($file['file_content'])): ?>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 1rem; border-radius: 8px; overflow-x: auto; font-size: 0.85rem; line-height: 1.5;\"><code><?= htmlspecialchars($file['file_content']) ?><\/code><\/pre>\n<?php else: ?>\n<p style=\"color: var(--text-muted);\">Kein Inhalt verfügbar - Scan erforderlich.<\/p>\n<?php endif; ?>\n\n<div style=\"margin-top: 2rem;\">\n <a href=\"\/docs\/code\" class=\"btn btn--secondary\">← Übersicht<\/a>\n <?php if (!empty($classes)): ?>\n <a href=\"\/docs\/code\/<?= $file['id'] ?>\/graph\" class=\"btn btn--primary\">Graph<\/a>\n <?php endif; ?>\n<\/div>\n\n<?php $content = ob_get_clean(); ?>\n<?php require VIEW_PATH . '\/layout.php'; ?>\n",
"structuredPatch": [
{
"oldStart": 12,
"oldLines": 7,
"newStart": 12,
"newLines": 7,
"lines": [
" ?>",
" ",
" <nav class=\"breadcrumb\">",
"- <a href=\"\/docs\/code\">Code-Analyse<\/a> »",
"+ <a href=\"\/docs\/code-hygiene\">Code Hygiene<\/a> »",
" <span><?= htmlspecialchars($file['file_name']) ?><\/span>",
" <\/nav>",
" "
]
}
],
"userModified": false,
"replaceAll": false
}
}