diff --git a/IsAliveCheck.php b/IsAliveCheck.php index 11f9bd6..4b4b3d8 100644 --- a/IsAliveCheck.php +++ b/IsAliveCheck.php @@ -7,7 +7,6 @@ Alphaland 2021 //vars use Alphaland\Web\WebContextManager; -use Alphaland\Web\WebsiteSettings; $thumbalive = false; $gamealive = false; @@ -20,14 +19,18 @@ function checkThumb($override) { if (!$GLOBALS['thumbalive'] or $override) //to prevent flooding mysql calls { - WebsiteSettings::UpdateSetting('isThumbnailerAlive', true); + $GLOBALS['thumbalive'] = true; + $set = $GLOBALS['pdo']->prepare("UPDATE websettings SET isThumbnailerAlive = 1"); + $set->execute(); } } else //thumb arbiter offline { if ($GLOBALS['thumbalive'] or $override) //to prevent flooding mysql calls { - WebsiteSettings::UpdateSetting('isThumbnailerAlive', false); + $GLOBALS['thumbalive'] = false; + $set = $GLOBALS['pdo']->prepare("UPDATE websettings SET isThumbnailerAlive = 0"); + $set->execute(); } } } @@ -39,14 +42,18 @@ function checkGame($override) { if (!$GLOBALS['gamealive'] or $override) //to prevent flooding mysql calls { - WebsiteSettings::UpdateSetting('IsGameServerAlive', true); + $GLOBALS['gamealive'] = true; + $set = $GLOBALS['pdo']->prepare("UPDATE websettings SET IsGameServerAlive = 1"); + $set->execute(); } } else //gameserver arbiter offline { if ($GLOBALS['gamealive'] or $override) //to prevent flooding mysql calls { - WebsiteSettings::UpdateSetting('IsGameServerAlive', false); + $GLOBALS['gamealive'] = false; + $set = $GLOBALS['pdo']->prepare("UPDATE websettings SET IsGameServerAlive = 0"); + $set->execute(); } } } diff --git a/globals/Dependencies/Games/Game.php b/globals/Dependencies/Games/Game.php index 297f97b..833c45d 100644 --- a/globals/Dependencies/Games/Game.php +++ b/globals/Dependencies/Games/Game.php @@ -8,7 +8,6 @@ namespace Alphaland\Games { use Alphaland\Assets\Asset; use Alphaland\Grid\RccServiceHelper; - use Alphaland\Web\WebsiteSettings; use Exception; use PDO; @@ -231,7 +230,12 @@ namespace Alphaland\Games { public static function ArbiterOnline() //the main portion of this check is now a background script { - return WebsiteSettings::GetSetting("isGameServerAlive"); + $check = $GLOBALS['pdo']->prepare("SELECT COUNT(*) FROM websettings WHERE isGameServerAlive = 1"); + $check->execute(); + if ($check->fetchColumn() > 0) { + return true; + } + return false; } public static function RemovePersonalBuildServerRank(int $placeid, int $userid) diff --git a/globals/Dependencies/Web/WebContextManager.php b/globals/Dependencies/Web/WebContextManager.php index 44da04e..ca6f0e0 100644 --- a/globals/Dependencies/Web/WebContextManager.php +++ b/globals/Dependencies/Web/WebContextManager.php @@ -15,7 +15,7 @@ namespace Alphaland\Web { public static function IsCurrentIpAddressWhitelisted() { $currentIp = WebContextManager::GetCurrentIPAddress(); - $ipWhitelist = explode(";", WebsiteSettings::GetSetting("webservice_whitelist", "127.0.0.0/8;192.168.0.0/16;10.0.0.0/8")); + $ipWhitelist = explode(";", $GLOBALS['ws']->webservice_whitelist); return IpHelper::IsIpInCidrNetmaskOrRangeList($currentIp, $ipWhitelist); } @@ -27,10 +27,13 @@ namespace Alphaland\Web { public static function IsUnderMaintenance(bool $status = false) { - $isUnderMaintenance = WebsiteSettings::GetSetting('maintenance'); + $query = $GLOBALS['pdo']->prepare("SELECT * FROM `websettings` WHERE `maintenance` = 1"); + $query->execute(); - if ($isUnderMaintenance === true) { - if ($status) return true; + if ($query->rowCount() > 0) { + if ($status) { + return true; + } return !WebContextManager::CanBypassMaintenance(); } return false; @@ -54,8 +57,13 @@ namespace Alphaland\Web { if (!empty($accesskey)) { - if(WebContextManager::IsCurrentIpAddressWhitelisted()) - return $accesskey == WebsiteSettings::GetSetting('webservice_key', null); + if(WebContextManager::IsCurrentIpAddressWhitelisted()) + { + if($accesskey == $GLOBALS['ws']->webservice_key) + { + return true; + } + } } return false; } diff --git a/globals/Dependencies/Web/WebsiteSettings.php b/globals/Dependencies/Web/WebsiteSettings.php index 7226eab..aee1a37 100644 --- a/globals/Dependencies/Web/WebsiteSettings.php +++ b/globals/Dependencies/Web/WebsiteSettings.php @@ -14,7 +14,7 @@ namespace Alphaland\Web { use PDO; - class WebsiteSettings + /* public static */ class WebsiteSettings { // default return if no settings are found // because there may be a NULL value in the database @@ -84,7 +84,7 @@ namespace Alphaland\Web { */ public static function GetSetting(string $name, $default = null) { - $query = $GLOBALS['pdo']->prepare("SELECT `value`, `type` FROM `websettings_v2` WHERE `name` = :name"); + $query = $GLOBALS['pdo']->prepare("SELECT `value`, `type` FROM `websettings` WHERE `name` = :name"); $query->bindParam(':name', $name); if (!$query->execute()) { @@ -99,6 +99,24 @@ namespace Alphaland\Web { return self::ConvertStringToValue($result['value'], $result['type']); } + /** + * Gets or sets the value of a website setting. + * + * @param string $name The name of the setting. + * @param mixed $value The value of the setting. + * @param string $type The type of the setting. + * + * @return mixed The value of the setting. + */ + public static function GetOrCreateSetting(string $name, $value = null, string $type = null) + { + if (!self::SettingExists($name)) { + self::UpdateSetting($name, $value, $type); + } + + return self::GetSetting($name); + } + /** * Sets a website setting. * @@ -133,9 +151,9 @@ namespace Alphaland\Web { $query = null; if ($remote === self::DOES_NOT_EXIST) { - $query = $GLOBALS['pdo']->prepare("INSERT INTO `websettings_v2` (`name`, `value`, `type`) VALUES (:name, :value, :type)"); + $query = $GLOBALS['pdo']->prepare("INSERT INTO `websettings` (`name`, `value`, `type`) VALUES (:name, :value, :type)"); } else { - $query = $GLOBALS['pdo']->prepare("UPDATE `websettings_v2` SET `value` = :value, `type` = :type WHERE `name` = :name"); + $query = $GLOBALS['pdo']->prepare("UPDATE `websettings` SET `value` = :value, `type` = :type WHERE `name` = :name"); } if (gettype($value) === 'NULL') { @@ -161,7 +179,7 @@ namespace Alphaland\Web { */ public static function DeleteSetting(string $name): bool { - $query = $GLOBALS['pdo']->prepare("DELETE FROM `websettings_v2` WHERE `name` = :name"); + $query = $GLOBALS['pdo']->prepare("DELETE FROM `websettings` WHERE `name` = :name"); $query->bindParam(':name', $name); return $query->execute(); @@ -174,7 +192,7 @@ namespace Alphaland\Web { */ public static function GetAllSettings(): array { - $query = $GLOBALS['pdo']->prepare("SELECT `name`, `value`, `type` FROM `websettings_v2`"); + $query = $GLOBALS['pdo']->prepare("SELECT `name`, `value`, `type` FROM `websettings`"); if (!$query->execute()) { return []; @@ -200,7 +218,7 @@ namespace Alphaland\Web { */ public static function SettingExists(string $name): bool { - $query = $GLOBALS['pdo']->prepare("SELECT `name` FROM `websettings_v2` WHERE `name` = :name"); + $query = $GLOBALS['pdo']->prepare("SELECT `name` FROM `websettings` WHERE `name` = :name"); $query->bindParam(':name', $name); if (!$query->execute()) { @@ -219,7 +237,7 @@ namespace Alphaland\Web { */ public static function DeleteAllSettings(): bool { - $query = $GLOBALS['pdo']->prepare("DELETE FROM `websettings_v2`"); + $query = $GLOBALS['pdo']->prepare("DELETE FROM `websettings`"); return $query->execute(); } diff --git a/globals/config.php b/globals/config.php index affb3de..3b1183e 100644 --- a/globals/config.php +++ b/globals/config.php @@ -42,7 +42,7 @@ try $siteName = "Alphaland"; //site name $domain = "alphaland.cc"; $url = "https://www.".$domain; //site URL - //websettings + $ws = $pdo->query("SELECT * FROM websettings WHERE id = 1")->fetch(PDO::FETCH_OBJ); //websettings $clientUserAgent = "Roblox/WinInet"; $ROBLOXAssetAPI = "https://assetdelivery.roblox.com/v1/asset/?id="; $ROBLOXProductInfoAPI = "https://api.roblox.com/marketplace/productinfo?assetId="; diff --git a/globals/functions.php b/globals/functions.php index 5c57ff7..544eca5 100644 --- a/globals/functions.php +++ b/globals/functions.php @@ -12,7 +12,6 @@ use Alphaland\Games\Game; use Alphaland\Moderation\Filter; use Alphaland\Users\Render as UsersRender; use Alphaland\Web\WebContextManager; -use Alphaland\Web\WebsiteSettings; //safe generation utilities @@ -1496,7 +1495,14 @@ function rewardUserBadge($UserID, $BadgeID, $PlaceID) function isThumbnailerAlive() //the main portion of this check is now a background script { - return WebsiteSettings::GetSetting("isThumbnailerAlive"); + $check = $GLOBALS['pdo']->prepare("SELECT * FROM websettings WHERE isThumbnailerAlive = 1"); + $check->execute(); + + if ($check->rowCount() > 0) + { + return true; + } + return false; } function verifyLuaValue($value) //mostly due to booleans, but maybe something will come up in the future @@ -2376,18 +2382,22 @@ function userPlaceVisits($userid) function enableMaintenance($custom) { - if (!empty($custom)) - WebsiteSettings::UpdateSetting("maintenance_text", $custom); - - WebsiteSettings::UpdateSetting("maintenance", true); + if (!empty($custom)) { + $setmaintenance = $GLOBALS['pdo']->prepare("UPDATE websettings SET maintenance = 1, maintenance_text = :t"); + $setmaintenance->bindParam(":t", $custom, PDO::PARAM_STR); + $setmaintenance->execute(); + } else { + $setmaintenance = $GLOBALS['pdo']->prepare("UPDATE websettings SET maintenance = 1"); + $setmaintenance->execute(); + } soapCloseAllJobs($GLOBALS['gamesArbiter']); } function disableMaintenance() { - WebsiteSettings::UpdateSetting("maintenance", false); - WebsiteSettings::UpdateSetting("maintenance_text", ""); + $setmaintenance = $GLOBALS['pdo']->prepare("UPDATE websettings SET maintenance = 0, maintenance_text = ''"); + $setmaintenance->execute(); } function setUserRank($rank, $userid) @@ -2841,36 +2851,43 @@ function getNav() function fetchAnnouncement() { - $announcement = WebsiteSettings::GetSetting("announcement"); - - if (empty($announcement)) return ""; - - $cleanAnnouncement = cleanOutput($announcement); //clean output - - $announcement_color = WebsiteSettings::GetSetting("announcement_color"); - - $html = ""; - - switch ($announcement_color) + $announcementquery = $GLOBALS['pdo']->prepare("SELECT * FROM websettings"); + $announcementquery->execute(); + $announcementquery = $announcementquery->fetch(PDO::FETCH_OBJ); + $announcement = cleanOutput($announcementquery->announcement); //clean output + if (empty($announcementquery->announcement)) { - case "red": - $html = "
"; - break; - case "green": - $html = ""; - break; - case "blue": - default: - $html = ""; - break; + return ""; + } + else + { + $html = ""; + if ($announcementquery->announcement_color == "red") + { + $html = ""; + } + elseif ($announcementquery->announcement_color == "blue") + { + $html = ""; + } + elseif ($announcementquery->announcement_color == "green") + { + $html = ""; + } + return $html; } - - return $html; } function canRegister() { - return WebsiteSettings::GetSetting("registration", false); + $check = $GLOBALS['pdo']->prepare("SELECT * FROM websettings WHERE registration = 1"); + $check->execute(); + + if($check->rowCount() > 0) + { + return true; + } + return false; } function adminPanelStats() { diff --git a/html/asset/index.php b/html/asset/index.php index 0dd27ad..30faa95 100644 --- a/html/asset/index.php +++ b/html/asset/index.php @@ -32,6 +32,10 @@ function ReturnAsset($hash, $assettypeid) //this determines which cdn to grab an ReturnAssetFromHash($hash); } } + +$websettings = $pdo->prepare("SELECT * FROM websettings"); +$websettings->execute(); +$websettings = $websettings->fetch(PDO::FETCH_OBJ); if ($id) { diff --git a/html/download.php b/html/download.php index 04328f6..0e05914 100644 --- a/html/download.php +++ b/html/download.php @@ -1,13 +1,8 @@ AlphalandVersion."-AlphalandLauncher.exe"; header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=AlphalandLauncher.exe"); echo file_get_contents($loc); @@ -15,7 +10,7 @@ if (isset($_POST['SubmitClient'])) if (isset($_POST['SubmitStudio'])) { - $loc = $GLOBALS['setupHtmlPath'].$alphalandStudioVersion."-AlphalandStudioLauncher.exe"; + $loc = $GLOBALS['setupHtmlPath'].$ws->AlphalandStudioVersion."-AlphalandStudioLauncher.exe"; header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=AlphalandStudioLauncher.exe"); echo file_get_contents($loc); diff --git a/html/maintenance.php b/html/maintenance.php index 08028a7..75be226 100644 --- a/html/maintenance.php +++ b/html/maintenance.php @@ -1,12 +1,25 @@ prepare("SELECT * FROM websettings"); +$websettings->execute(); +$websettings = $websettings->fetch(PDO::FETCH_OBJ); + +$status = ''; +if (!empty($websettings->maintenance_text)) +{ + $status = $websettings->maintenance_text; //use custom text +} +else +{ + $status = $websettings->default_maintenance_text; //default maintenance text +} $body = <<
-