Add public domain day banner

This commit is contained in:
Alex Cabal 2024-11-27 12:42:18 -06:00
parent 1b604ca97f
commit c65035630f
16 changed files with 293 additions and 105 deletions

View file

@ -1,30 +1,35 @@
<?
use Safe\DateTimeImmutable;
$hideDonationAlert = HttpInput::Bool(POST, 'hide-donation-alert');
$colorScheme = HttpInput::Str(POST, 'color-scheme');
$httpMethod = HttpInput::ValidateRequestMethod([Enums\HttpMethod::Patch]);
if($hideDonationAlert !== null){
setcookie('hide-donation-alert', $hideDonationAlert ? 'true' : 'false', ['expires' => intval((new DateTimeImmutable('+1 month'))->format(Enums\DateTimeFormat::UnixTimestamp->value)), 'path' => '/', 'domain' => SITE_DOMAIN, 'secure' => true, 'httponly' => true, 'samesite' => 'Lax']);
// PATCHing settings.
if($httpMethod == Enums\HttpMethod::Patch){
$hideDonationAlert = HttpInput::Bool(POST, 'hide-donation-alert');
$hidePublicDomainDayBanner = HttpInput::Bool(POST, 'hide-public-domain-day-banner');
$colorScheme = Enums\ColorSchemeType::tryFrom(HttpInput::Str(POST, 'color-scheme') ?? '');
if($hideDonationAlert !== null){
setcookie('hide-donation-alert', $hideDonationAlert ? 'true' : 'false', ['expires' => intval((new DateTimeImmutable('+1 month'))->format(Enums\DateTimeFormat::UnixTimestamp->value)), 'path' => '/', 'domain' => SITE_DOMAIN, 'secure' => true, 'httponly' => true, 'samesite' => 'Lax']);
}
if($hidePublicDomainDayBanner !== null){
setcookie('hide-public-domain-day-banner', $hidePublicDomainDayBanner ? 'true' : 'false', ['expires' => intval((new DateTimeImmutable('+1 month'))->format(Enums\DateTimeFormat::UnixTimestamp->value)), 'path' => '/', 'domain' => SITE_DOMAIN, 'secure' => true, 'httponly' => true, 'samesite' => 'Lax']);
}
if($colorScheme !== null){
if($colorScheme == Enums\ColorSchemeType::Auto){
// Delete the cookie; auto is the default
setcookie('color-scheme', '', ['expires' => 0, 'path' => '/', 'domain' => SITE_DOMAIN, 'secure' => true, 'httponly' => true, 'samesite' => 'Lax']);
}
else{
setcookie('color-scheme', $colorScheme->value, ['expires' => intval((new DateTimeImmutable('+1 year'))->format(Enums\DateTimeFormat::UnixTimestamp->value)), 'path' => '/', 'domain' => SITE_DOMAIN, 'secure' => true, 'httponly' => true, 'samesite' => 'Lax']);
}
}
// HTTP 303, See other
http_response_code(Enums\HttpCode::SeeOther->value);
$redirect = $_SERVER['HTTP_REFERER'] ?? '/';
header('Location: ' . $redirect);
}
if($colorScheme !== null){
if($colorScheme !== 'dark' && $colorScheme !== 'light' && $colorScheme !== 'auto'){
$colorScheme = 'auto';
}
if($colorScheme == 'auto'){
// Delete the cookie; auto is the default
setcookie('color-scheme', '', ['expires' => 0, 'path' => '/', 'domain' => SITE_DOMAIN, 'secure' => true, 'httponly' => true, 'samesite' => 'Lax']);
}
else{
setcookie('color-scheme', $colorScheme, ['expires' => intval((new DateTimeImmutable('+1 year'))->format(Enums\DateTimeFormat::UnixTimestamp->value)), 'path' => '/', 'domain' => SITE_DOMAIN, 'secure' => true, 'httponly' => true, 'samesite' => 'Lax']);
}
}
// HTTP 303, See other
http_response_code(Enums\HttpCode::SeeOther->value);
$redirect = $_SERVER['HTTP_REFERER'] ?? '/';
header('Location: ' . $redirect);
?>