diff --git a/classes/Settings.php b/classes/Settings.php index 05e5a1f..218784e 100644 --- a/classes/Settings.php +++ b/classes/Settings.php @@ -4,6 +4,83 @@ namespace ICEcoder; class Settings { + public function __construct() + { + // Set version number and document root as core settings + $this->versionNo = "7.0"; + $this->docRoot = $_SERVER['DOCUMENT_ROOT']; + } + + public function getConfigGlobalFileDetails() + { + // Return details about the global config file + $fileName = 'config-global.php'; + $fullPath = dirname(__FILE__) . "/../data/" . $fileName; + $exists = file_exists($fullPath); + $readable = is_readable($fullPath); + $writable = is_writable($fullPath); + return [ + "fileName" => $fileName, + "fullPath" => $fullPath, + "exists" => $exists, + "readable" => $readable, + "writable" => $writable, + ]; + } + + public function getConfigGlobalTemplate() + { + // Return the serialized global config template + $fileName = 'template-config-global.php'; + $fullPath = dirname(__FILE__) . "/../lib/" . $fileName; + if (function_exists('opcache_invalidate')) { + opcache_invalidate($fullPath, true); + } + $settings = file_get_contents($fullPath); + return $settings; + } + + public function getConfigGlobalSettings() + { + // Start an array with version number and document root + $settings = []; + $settings['versionNo'] = $this->versionNo; + $settings['docRoot'] = $this->docRoot; + // Get global config file details + $fullPath = $this->getConfigGlobalFileDetails()['fullPath']; + // Load serialized data from the global config and convert to an array + if (function_exists('opcache_invalidate')) { + opcache_invalidate($fullPath, true); + } + $settingsFromFile = file_get_contents($fullPath); + $settingsFromFile = str_replace("", "", $settingsFromFile); + $settingsFromFile = unserialize($settingsFromFile); + // Merge that with the array we started with and return + $settings = array_merge($settings, $settingsFromFile); + return $settings; + } + + public function setConfigGlobalSettings($settings) + { + // Get the global config file details + $fullPath = $this->getConfigGlobalFileDetails()['fullPath']; + if ($fConfigSettings = fopen($fullPath, 'w')) { + // If the settings we've received aren't in serialized format yet, do that now + // As $settings could be a serialized string or array + if (is_array($settings)) { + unset($settings['versionNo']); + unset($settings['docRoot']); + $settings = ""; + } + // Now we have a serialized string, save it in the global config file + fwrite($fConfigSettings, $settings); + fclose($fConfigSettings); + return true; + } else { + return false; + } + } public function updateConfigCreateDate(): void { @@ -74,20 +151,12 @@ class Settings public function disableFurtherRegistration(): void { - global $configSettings; - // Disable the enableRegistration config setting if the user had that option chosen if (true === isset($_POST['disableFurtherRegistration'])) { - $updatedConfigSettingsFile = getData(dirname(__FILE__) . "/../data/" . $configSettings); - if ($fUConfigSettings = fopen(dirname(__FILE__) . "/../data/" . $configSettings, 'w')) { - $updatedConfigSettingsFile = str_replace('"enableRegistration" => true','"enableRegistration" => false', $updatedConfigSettingsFile); - fwrite($fUConfigSettings, $updatedConfigSettingsFile); - fclose($fUConfigSettings); - } else { - $reqsPassed = false; - $reqsFailures = ["phpUpdateConfig"]; - include dirname(__FILE__)."/../lib/requirements.php"; - } + // Update global config settings file + $ICEcoderSettingsFromFile = $this->getConfigGlobalSettings(); + $ICEcoderSettingsFromFile['enableRegistration'] = false; + $this->setConfigGlobalSettings($ICEcoderSettingsFromFile); } } } diff --git a/lib/requirements.php b/lib/requirements.php index 5f90c73..6fe853d 100644 --- a/lib/requirements.php +++ b/lib/requirements.php @@ -1,4 +1,8 @@ -ICEcoder <?php echo $ICEcoderSettings['versionNo'];?> : Requirements problem! +ICEcoder <?php echo $settingsClass->versionNo;?> : Requirements problem! @@ -53,7 +48,7 @@ if (false === $reqsPassed) {
ICEcoder -
v
+
v versionNo;?>
Requirements problem!



@@ -65,15 +60,21 @@ if (false === $reqsPassed) { if (true === in_array("phpSession", $reqsFailures)) { echo "You don't appear to have a
working PHP session

"; } + if (true === in_array("phpCreateConfig", $reqsFailures)) { + echo "Cannot create config file:
data/" . $settingsClass->getConfigGlobalFileDetails()['fileName'] . "
Please check write permissions
on data dir and reload page

"; + } + if (true === in_array("phpFileExists", $reqsFailures)) { + echo "You don't seem to have
the config file

"; + } if (true === in_array("phpReadFile", $reqsFailures)) { echo "You don't seem to be able
to read the config file

"; } + if (true === in_array("phpWriteFile", $reqsFailures)) { + echo "You don't seem to be able
to write to the config file

"; + } if (true === in_array("phpAllowURLFOpen", $reqsFailures)) { echo "You don't seem to have
allow_url_fopen enabled

"; } - if (true === in_array("phpCreateConfig", $reqsFailures)) { - echo "Cannot update config file:
data/".$configSettings."
Please check write permissions
on data dir and reload page

"; - } if (true === in_array("phpCreateSettings", $reqsFailures)) { echo "Couldn't create:
data/$settingsFile
Maybe you need write
permissions on the data dir?

"; }