{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Framework\/Controller\/InputTrait.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Framework\\Controller;\n\n\/\/ @responsibility: HTTP-Input-Helpers für Controller\n\nuse Domain\\Constants;\n\ntrait InputTrait\n{\n \/**\n * @return array<string, mixed>\n *\/\n protected function getJsonInput(): array\n {\n $input = file_get_contents('php:\/\/input');\n if ($input === false || $input === '') {\n return [];\n }\n\n $decoded = json_decode($input, true);\n\n return is_array($decoded) ? $decoded : [];\n }\n\n \/**\n * Decode JSON string to array with safe defaults.\n *\n * @return array<mixed>\n *\/\n protected function decodeJson(?string $json): array\n {\n if ($json === null || $json === '') {\n return [];\n }\n\n $decoded = json_decode($json, true);\n\n return is_array($decoded) ? $decoded : [];\n }\n\n protected function getInput(string $key, mixed $default = null): mixed\n {\n return $_GET[$key] ?? $_POST[$key] ?? $default;\n }\n\n protected function getString(string $key, string $default = ''): string\n {\n $value = $this->getInput($key, $default);\n\n return is_string($value) ? trim($value) : $default;\n }\n\n protected function getInt(string $key, int $default = 0): int\n {\n return (int) ($this->getInput($key, $default));\n }\n\n protected function getPage(): int\n {\n return max(1, $this->getInt('page', 1));\n }\n\n protected function getLimit(int $max = 50, int $default = 10): int\n {\n return min($max, max(1, $this->getInt('limit', $default)));\n }\n\n protected function getOffset(int $limit): int\n {\n return ($this->getPage() - 1) * $limit;\n }\n\n protected function getPagination(int $defaultLimit = 50, int $maxLimit = Constants::DEFAULT_LIMIT): \\Domain\\ValueObject\\Pagination\n {\n $page = $this->getPage();\n $limit = $this->getLimit($maxLimit, $defaultLimit);\n\n return \\Domain\\ValueObject\\Pagination::create($page, $limit, $maxLimit);\n }\n}\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Framework\/Controller\/InputTrait.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Framework\\Controller;\n\n\/\/ @responsibility: HTTP-Input-Helpers für Controller\n\nuse Domain\\Constants;\n\ntrait InputTrait\n{\n \/**\n * @return array<string, mixed>\n *\/\n protected function getJsonInput(): array\n {\n $input = file_get_contents('php:\/\/input');\n if ($input === false || $input === '') {\n return [];\n }\n\n $decoded = json_decode($input, true);\n\n return is_array($decoded) ? $decoded : [];\n }\n\n \/**\n * Decode JSON string to array with safe defaults.\n *\n * @return array<mixed>\n *\/\n protected function decodeJson(?string $json): array\n {\n if ($json === null || $json === '') {\n return [];\n }\n\n $decoded = json_decode($json, true);\n\n return is_array($decoded) ? $decoded : [];\n }\n\n protected function getInput(string $key, mixed $default = null): mixed\n {\n return $_GET[$key] ?? $_POST[$key] ?? $default;\n }\n\n protected function getString(string $key, string $default = ''): string\n {\n $value = $this->getInput($key, $default);\n\n return is_string($value) ? trim($value) : $default;\n }\n\n protected function getInt(string $key, int $default = 0): int\n {\n return (int) ($this->getInput($key, $default));\n }\n\n protected function getPage(): int\n {\n return max(1, $this->getInt('page', 1));\n }\n\n protected function getLimit(int $max = 50, int $default = 10): int\n {\n return min($max, max(1, $this->getInt('limit', $default)));\n }\n\n protected function getOffset(int $limit): int\n {\n return ($this->getPage() - 1) * $limit;\n }\n\n protected function getPagination(int $defaultLimit = 50, int $maxLimit = Constants::DEFAULT_LIMIT): \\Domain\\ValueObject\\Pagination\n {\n $page = $this->getPage();\n $limit = $this->getLimit($maxLimit, $defaultLimit);\n\n return \\Domain\\ValueObject\\Pagination::create($page, $limit, $maxLimit);\n }\n}\n",
"structuredPatch": [],
"originalFile": null
}
}