<?php /* * SCROTT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * For more information, please refer to UNLICENSE */ require_once "class/database.class.php"; /* * Interface for accessing and updating Scrott administrative settings */ abstract class settings { /* * Get the value stored for the given key, or NULL if key is not * set. */ private static function getValue(string $key) : ?string { $key = database::esc($key); $query = "SELECT value FROM settings WHERE name = '" . $key . "'"; $res = database::query($query); if (count($res) == 0) return NULL; return $res[0]['value']; } /* * Store the given (key, value) pair, overwriting key in the * database if already present. */ private static function setValue(string $key, string $value) : void { $key = database::esc($key); $value = database::esc($value); if (self::getValue($key) === NULL) $query = "INSERT INTO settings (name, value) VALUES ('" . $key . "', '" . $value . "')"; else $query = "UPDATE settings SET value = '" . $value . "' WHERE name = '" . $key . "'"; database::query($query); } /* * Get the value for an option and optionally update it. Returns * the stored value for this option, or the given default value * if not found. If a value update takes place, the new value * is returned. */ private static function option(string $key, string $deflt, ?string $value) : string { if ($value !== NULL) self::setValue($key, $value); if (($res = self::getValue($key)) !== NULL) return $res; return $deflt; } /* * GETTERS AND SETTERS FOR GLOBAL OPTIONS ... */ /* * Do we force connections to use HTTPS? */ public static function sslOnly(?bool $value = NULL) : bool { return self::option("sslOnly", false, $value); } /* * Do we allow anybody to signup their own account? */ public static function allowPublicSignup(?bool $value = NULL) : bool { return self::option("allowPublicSignup", false, $value); } } ?>