Files
web_work/public/includes/functions.php
kirill.khorkov 8a93cf8657 Delete comment
2025-12-16 19:18:03 +03:00

98 lines
3.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
function isLoggedIn(): bool {
return isset($_SESSION['isLoggedIn']) && $_SESSION['isLoggedIn'] === true;
}
function isAdmin(): bool {
return isset($_SESSION['isAdmin']) && $_SESSION['isAdmin'] === true;
}
function requireAuth(string $redirectUrl = 'login.php'): void {
if (!isLoggedIn()) {
header('Location: ' . $redirectUrl . '?error=auth_required&redirect=' . urlencode($_SERVER['REQUEST_URI']));
exit();
}
}
function requireAdmin(string $redirectUrl = 'login.php'): void {
if (!isAdmin()) {
header('Location: ' . $redirectUrl . '?error=admin_required');
exit();
}
}
function getCurrentUser(): ?array {
if (!isLoggedIn()) {
return null;
}
return [
'user_id' => $_SESSION['user_id'] ?? 0,
'email' => $_SESSION['user_email'] ?? '',
'full_name' => $_SESSION['full_name'] ?? '',
'is_admin' => isAdmin()
];
}
function formatPrice(float $price): string {
return number_format($price, 0, '', ' ') . ' ₽';
}
function e(string $str): string {
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}
function generateOrderNumber(): string {
return 'AET-' . date('Ymd') . '-' . strtoupper(substr(uniqid(), -6));
}
function generateSKU(string $productName): string {
$prefix = strtoupper(substr(preg_replace('/[^a-zA-Z0-9]/', '', transliterate($productName)), 0, 6));
return $prefix . '-' . rand(100, 999);
}
function transliterate(string $str): string {
$converter = [
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i',
'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't',
'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch',
'ш' => 'sh', 'щ' => 'sch', 'ь' => '', 'ы' => 'y', 'ъ' => '',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D',
'Е' => 'E', 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I',
'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N',
'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T',
'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch',
'Ш' => 'Sh', 'Щ' => 'Sch', 'Ь' => '', 'Ы' => 'Y', 'Ъ' => '',
'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya',
];
return strtr($str, $converter);
}
function createSlug(string $str): string {
$slug = transliterate($str);
$slug = strtolower($slug);
$slug = preg_replace('/[^a-z0-9]+/', '-', $slug);
$slug = trim($slug, '-');
return $slug;
}
function setFlashMessage(string $type, string $message): void {
$_SESSION['flash_message'] = [
'type' => $type,
'message' => $message
];
}
function getFlashMessage(): ?array {
if (isset($_SESSION['flash_message'])) {
$message = $_SESSION['flash_message'];
unset($_SESSION['flash_message']);
return $message;
}
return null;
}