| Server IP : 173.209.174.21 / Your IP : 216.73.216.89 Web Server : Apache/2.4.58 (Ubuntu) System : Linux wcfs-server 6.8.0-124-generic #124-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 13:00:45 UTC 2026 x86_64 User : nodor ( 1000) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/thelittlebigshow/self-hosted/ |
Upload File : |
<?php
function ensureAppSettingsTable(mysqli $conn): void
{
static $tableReady = false;
if ($tableReady) {
return;
}
$sql = "
CREATE TABLE IF NOT EXISTS app_settings (
setting_key VARCHAR(100) NOT NULL PRIMARY KEY,
setting_value VARCHAR(255) DEFAULT NULL,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
";
if (!$conn->query($sql)) {
throw new RuntimeException('Could not create app settings table: ' . $conn->error);
}
$tableReady = true;
}
function getStoreTaxRate(mysqli $conn): float
{
ensureAppSettingsTable($conn);
$defaultRate = 0.082;
$stmt = $conn->prepare("SELECT setting_value FROM app_settings WHERE setting_key = 'sales_tax_rate' LIMIT 1");
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
$stmt->close();
if (!$row || !isset($row['setting_value']) || $row['setting_value'] === '') {
$stored = number_format($defaultRate, 4, '.', '');
$insert = $conn->prepare("
INSERT INTO app_settings (setting_key, setting_value)
VALUES ('sales_tax_rate', ?)
ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)
");
$insert->bind_param("s", $stored);
$insert->execute();
$insert->close();
return $defaultRate;
}
$rate = (float) $row['setting_value'];
return $rate < 0 ? 0.0 : $rate;
}
function getAppSettingValue(mysqli $conn, string $key, string $default = ''): string
{
ensureAppSettingsTable($conn);
$stmt = $conn->prepare("SELECT setting_value FROM app_settings WHERE setting_key = ? LIMIT 1");
$stmt->bind_param("s", $key);
$stmt->execute();
$result = $stmt->get_result();
$row = $result ? $result->fetch_assoc() : null;
$stmt->close();
if (!$row || !array_key_exists('setting_value', $row) || $row['setting_value'] === null) {
return $default;
}
return (string) $row['setting_value'];
}
function setAppSettingValue(mysqli $conn, string $key, string $value): void
{
ensureAppSettingsTable($conn);
$stmt = $conn->prepare("
INSERT INTO app_settings (setting_key, setting_value)
VALUES (?, ?)
ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)
");
$stmt->bind_param("ss", $key, $value);
$stmt->execute();
$stmt->close();
}
function setStoreTaxRate(mysqli $conn, float $rate): void
{
ensureAppSettingsTable($conn);
if ($rate < 0 || $rate > 1) {
throw new RuntimeException('Tax rate must be between 0 and 1.');
}
$stored = number_format($rate, 4, '.', '');
$stmt = $conn->prepare("
INSERT INTO app_settings (setting_key, setting_value)
VALUES ('sales_tax_rate', ?)
ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)
");
$stmt->bind_param("s", $stored);
$stmt->execute();
$stmt->close();
}
function formatTaxRatePercent(float $rate): string
{
return number_format($rate * 100, 2);
}