Files
FDMTech/app/Inquiry.php
T

37 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace FDMTech;
final class Inquiry
{
public static function validate(array $input): array
{
$values = [];
$errors = [];
foreach (['name' => 160, 'email' => 254, 'company' => 200, 'phone' => 60, 'message' => 10000, 'source' => 160] as $field => $limit) {
$raw = $input[$field] ?? ($field === 'source' ? 'audit' : '');
if (!is_string($raw) || !mb_check_encoding($raw, 'UTF-8')) {
$errors[$field] = 'Wpisz poprawną wartość.';
$values[$field] = '';
continue;
}
$value = trim(str_replace(["\r\n", "\r"], "\n", $raw));
$values[$field] = $value;
if (mb_strlen($value) > $limit || preg_match('/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/', $value)) {
$errors[$field] = 'Przekroczono limit długości lub użyto niedozwolonych znaków.';
} elseif (in_array($field, ['name', 'email', 'message'], true) && $value === '') {
$errors[$field] = 'To pole jest wymagane.';
}
}
if (!filter_var($values['email'], FILTER_VALIDATE_EMAIL)) {
$errors['email'] = 'Wpisz poprawny adres e-mail.';
}
$values['consent'] = ($input['consent'] ?? null) === '1' ? '1' : '';
if ($values['consent'] === '') {
$errors['consent'] = 'Zgoda na kontakt w sprawie zapytania jest wymagana.';
}
return [$values, $errors];
}
}