47 lines
1.1 KiB
PHP
47 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Support;
|
|
|
|
/**
|
|
* Нормализация флага onlineMode из query/form/JSON (0, 1, "true", "false", bool).
|
|
*/
|
|
final class OnlineMode
|
|
{
|
|
public static function isOnline(mixed $value): bool
|
|
{
|
|
if (is_bool($value)) {
|
|
return $value;
|
|
}
|
|
|
|
if (is_int($value) || is_float($value)) {
|
|
return (int) $value === 1;
|
|
}
|
|
|
|
if ($value === null) {
|
|
return false;
|
|
}
|
|
|
|
$normalized = strtolower(trim((string) $value));
|
|
|
|
if ($normalized === '') {
|
|
return false;
|
|
}
|
|
|
|
if (in_array($normalized, ['1', 'true', 'yes', 'on'], true)) {
|
|
return true;
|
|
}
|
|
|
|
if (in_array($normalized, ['0', 'false', 'no', 'off'], true)) {
|
|
return false;
|
|
}
|
|
|
|
// Неизвестное непустое значение — считаем offline, чтобы не ломать очный приём.
|
|
return false;
|
|
}
|
|
|
|
public static function toInt(mixed $value): int
|
|
{
|
|
return self::isOnline($value) ? 1 : 0;
|
|
}
|
|
}
|