38960-vm/helpers.php
2026-03-05 05:14:09 +00:00

71 lines
1.7 KiB
PHP

<?php
session_start();
require_once __DIR__ . '/lang.php';
if (!isset($_SESSION['lang'])) {
$_SESSION['lang'] = 'en';
}
if (isset($_GET['lang'])) {
if ($_GET['lang'] === 'ar' || $_GET['lang'] === 'en') {
$_SESSION['lang'] = $_GET['lang'];
// Redirect to remove lang param
header("Location: " . strtok($_SERVER["REQUEST_URI"], '?'));
exit;
}
}
function __($key) {
global $translations;
$lang = $_SESSION['lang'];
return $translations[$lang][$key] ?? $key;
}
function is_rtl() {
return $_SESSION['lang'] === 'ar';
}
function get_dir() {
return is_rtl() ? 'rtl' : 'ltr';
}
function get_lang_name() {
return $_SESSION['lang'] === 'ar' ? 'English' : 'العربية';
}
function get_lang_code() {
return $_SESSION['lang'] === 'ar' ? 'en' : 'ar';
}
function calculate_age($dob) {
if (empty($dob)) return '-';
try {
$birthDate = new DateTime($dob);
$today = new DateTime('today');
return $birthDate->diff($today)->y;
} catch (Exception $e) {
return '-';
}
}
if (!function_exists('mb_strimwidth')) {
function mb_strimwidth($string, $start, $width, $trimmarker = '...', $encoding = null) {
// Simple polyfill using substr
// 1. Handle start offset
$string = (string)$string;
if ($start > 0) {
$string = substr($string, $start);
}
// 2. Check length
if (strlen($string) <= $width) {
return $string;
}
// 3. Truncate
$targetLen = $width - strlen($trimmarker);
if ($targetLen < 0) $targetLen = 0;
return substr($string, 0, $targetLen) . $trimmarker;
}
}