39519-vm/app_helpers.php
Flatlogic Bot edfa4d1aab first
2026-04-08 10:44:00 +00:00

116 lines
2.9 KiB
PHP

<?php
declare(strict_types=1);
function h(mixed $value): string
{
return htmlspecialchars((string) $value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}
function env_value(string $key, string $fallback = ''): string
{
$serverValue = $_SERVER[$key] ?? null;
if (is_string($serverValue) && trim($serverValue) !== '') {
return $serverValue;
}
$envValue = getenv($key);
if (is_string($envValue) && trim($envValue) !== '') {
return $envValue;
}
return $fallback;
}
function site_project_name(string $fallback = 'Portfolio'): string
{
return env_value('PROJECT_NAME', $fallback);
}
function site_project_description(string $fallback = 'Personal portfolio website.'): string
{
return env_value('PROJECT_DESCRIPTION', $fallback);
}
function base_url(): string
{
$https = $_SERVER['HTTPS'] ?? '';
$scheme = (!empty($https) && $https !== 'off') ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'] ?? 'localhost';
return $scheme . '://' . $host;
}
function set_flash(array $flash): void
{
$_SESSION['flash'] = $flash;
}
function pull_flash(): ?array
{
if (!isset($_SESSION['flash']) || !is_array($_SESSION['flash'])) {
return null;
}
$flash = $_SESSION['flash'];
unset($_SESSION['flash']);
return $flash;
}
function set_old_form(array $values): void
{
$_SESSION['old_form'] = $values;
}
function pull_old_form(): array
{
if (!isset($_SESSION['old_form']) || !is_array($_SESSION['old_form'])) {
return [];
}
$values = $_SESSION['old_form'];
unset($_SESSION['old_form']);
return $values;
}
function text_length(string $value): int
{
return function_exists('mb_strlen') ? mb_strlen($value) : strlen($value);
}
function text_slice(string $value, int $length): string
{
return function_exists('mb_substr') ? mb_substr($value, 0, $length) : substr($value, 0, $length);
}
function text_excerpt(string $value, int $length = 100): string
{
if (function_exists('mb_strimwidth')) {
return mb_strimwidth($value, 0, $length, '…');
}
return strlen($value) > $length ? substr($value, 0, max(0, $length - 1)) . '…' : $value;
}
function ensure_contact_requests_table(PDO $pdo): void
{
$pdo->exec(<<<'SQL'
CREATE TABLE IF NOT EXISTS contact_requests (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(120) NOT NULL,
email VARCHAR(190) NOT NULL,
company VARCHAR(150) NULL,
project_type VARCHAR(80) NULL,
budget VARCHAR(80) NULL,
message TEXT NOT NULL,
status VARCHAR(30) NOT NULL DEFAULT 'new',
source_url VARCHAR(255) NULL,
ip_address VARCHAR(45) NULL,
user_agent VARCHAR(255) NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
SQL);
}