feat: add local room overrides
							parent
							
								
									53964f09d9
								
							
						
					
					
						commit
						d5cb336170
					
				@ -0,0 +1,2 @@
 | 
			
		||||
[room+1234]
 | 
			
		||||
staff_count=4
 | 
			
		||||
@ -0,0 +1,54 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
require_once 'php/utils/logging.php';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @var string $CONFIG_ROOT
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
class LocalConfig {
 | 
			
		||||
	private function __construct() {
 | 
			
		||||
		$this->room_overrides =
 | 
			
		||||
			LocalConfig::maybe_parse_ini_file(LocalConfig::ROOM_OVERRIDES_CONFIG)
 | 
			
		||||
			?? array();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private const ROOM_OVERRIDES_CONFIG = "room-overrides.ini";
 | 
			
		||||
 | 
			
		||||
	private readonly array $room_overrides;
 | 
			
		||||
 | 
			
		||||
	private static function maybe_parse_ini_file(string $filename): array | null {
 | 
			
		||||
		global $CONFIG_ROOT;
 | 
			
		||||
		$file = "$CONFIG_ROOT/$filename";
 | 
			
		||||
 | 
			
		||||
		if (!file_exists($file)) {
 | 
			
		||||
			log_warning("config file not found: $file");
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return parse_ini_file($file, process_sections: true, scanner_mode: INI_SCANNER_RAW);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Read local config from the filesystem.
 | 
			
		||||
	 */
 | 
			
		||||
	public static function read_from_files() {
 | 
			
		||||
		return new LocalConfig();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private function get_room_override(string $room_id, string $override_key) {
 | 
			
		||||
		$room_overrides = $this->room_overrides[$room_id] ?? array();
 | 
			
		||||
		return $room_overrides[$override_key] ?? null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function get_room_staff_count_override(string $room_id) {
 | 
			
		||||
		return $this->get_room_override($room_id, 'staff_count');
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @var LocalConfig $LOCAL_CONFIG
 | 
			
		||||
 */
 | 
			
		||||
$LOCAL_CONFIG = LocalConfig::read_from_files();
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
		Reference in New Issue