<?php

class Credentials {
	public static function servername() {
		return getenv('DB_SERVERNAME');
	}

	public static function username() {
		return getenv('DB_USERNAME');
	}

	public static function password() {
		return getenv('DB_PASSWORD');
	}

	public static function dbname() {
		return getenv('DB_NAME');
	}

	public static function usersdb() {
		return getenv('DB_USERS_DB');
	}

	public static function mortsdb() {
		return getenv('DB_MORTS_DB');
	}

	public static function adminToken() {
		return getenv('ADMIN_TOKEN');
	}

	public static function isAllVsAllModeEnabled() {
		return self::allVsAllMode() == 1 || self::allVsAllMode() == 'true';
	}

	public static function allVsAllMode() {
		return getenv('ALL_VS_ALL_MODE');
	}
};
