Skip to content

Commit

Permalink
Allow selecting an MC server to use for group sync options (#2991)
Browse files Browse the repository at this point in the history
  • Loading branch information
tadhgboyle committed Aug 12, 2022
1 parent 26525ec commit 5b996f3
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 13 deletions.
4 changes: 3 additions & 1 deletion custom/languages/en_UK.json
Expand Up @@ -252,7 +252,8 @@
"admin/group_sync": "Group Sync",
"admin/group_sync_info": "You can configure the API to automatically update a user's website group when their integration group is changed. Simply enter the integration group name\/ID and the website group it will be synchronised with the below rules.",
"admin/group_sync_logs": "Group Sync Changes",
"admin/group_sync_plugin_not_set_up": "In-game plugin is not set up",
"admin/group_sync_server": "Select a Minecraft server to use for group sync",
"admin/group_sync_plugin_not_set_up": "In-game plugin is not set up or no group sync server has been selected",
"admin/group_sync_rule_created_successfully": "The group sync rule has been created successfully.",
"admin/group_sync_rule_deleted_successfully": "The group sync rule has been deleted successfully.",
"admin/group_sync_rules_updated_successfully": "Group sync rules have been updated successfully.",
Expand Down Expand Up @@ -392,6 +393,7 @@
"admin/no_custom_pages": "No pages have been created yet.",
"admin/no_default_server": "No default server",
"admin/no_email_errors": "No email errors logged.",
"admin/no_group_sync_server": "No group sync server",
"admin/no_hooks_yet": "There are no webhooks yet.",
"admin/no_item_selected": "No items selected",
"admin/no_notices": "No notices.",
Expand Down
Expand Up @@ -77,13 +77,27 @@
<div class="form-group">
<label for="inputDefaultServer">{$DEFAULT_SERVER}</label>
<select id="inputDefaultServer" class="form-control" name="default_server">
{if $SERVERS|count > 1}
<option value="none" {if $DEFAULT_SERVER_VALUE eq 0} selected{/if}>{$NO_DEFAULT_SERVER}</option>
{if isset($SERVERS) && count($SERVERS)}
<option value="none" {if $DEFAULT_SERVER_VALUE eq 0} selected{/if}>{$NO_DEFAULT_SERVER}</option>
{foreach from=$SERVERS item=server}
<option value="{$server.id}" {if $server.is_default eq 1} selected{/if}>{$server.name}</option>
{/foreach}
{else}
<option value="none" selected>{$NO_SERVERS}</option>
{/if}
</select>
</div>

<div class="form-group">
<label for="inputGroupSyncServer">{$GROUP_SYNC_SERVER}</label>
<select id="inputGroupSyncServer" class="form-control" name="group_sync_server">
{if isset($SERVERS) && count($SERVERS)}
{foreach from=$SERVERS item=server}
<option value="{$server.id}" {if $server.is_default eq 1} selected{/if}>{$server.name}</option>
{/foreach}
<option value="none" {if $GROUP_SYNC_SERVER_VALUE eq 0}selected{/if}>{$NO_GROUP_SYNC_SERVER}</option>
{foreach from=$SERVERS item=server}
<option value="{$server.id}" {if $GROUP_SYNC_SERVER_VALUE eq $server.id} selected{/if}>{$server.name}</option>
{/foreach}
{else}
<option value="none" selected>{$NO_SERVERS}</option>
{/if}
</select>
</div>
Expand Down Expand Up @@ -208,4 +222,4 @@
</body>
</html>
</html>
Expand Up @@ -26,14 +26,17 @@ public function getColumnType(): string {
}

public function shouldEnable(): bool {
return count($this->getSelectionOptions()) > 0;
return Util::getSetting('group_sync_mc_server') != 0 && count($this->getSelectionOptions()) > 0;
}

public function getSelectionOptions(): array {
$row = DB::getInstance()->query('SELECT `groups` FROM `nl2_query_results` ORDER BY `id` DESC LIMIT 1')->first();
$row = DB::getInstance()->query(
'SELECT `groups` FROM `nl2_query_results` WHERE `server_id` = ? ORDER BY `id` DESC LIMIT 1',
[Util::getSetting('group_sync_mc_server')]
)->first();

if ($row === null) {
// Plugin is not set up
// Plugin is not set up and/or they did not select a server to source groups from/default server
return [];
}

Expand Down
10 changes: 7 additions & 3 deletions modules/Core/includes/endpoints/ServerInfoEndpoint.php
Expand Up @@ -65,6 +65,7 @@ public function execute(Nameless2API $api): void {
}

$group_sync_log = [];
$should_group_sync = $serverId == Util::getSetting('group_sync_mc_server');

try {
$integration = Integrations::getInstance()->getIntegration('Minecraft');
Expand All @@ -73,9 +74,12 @@ public function execute(Nameless2API $api): void {
$integrationUser = new IntegrationUser($integration, $uuid, 'identifier');
if ($integrationUser->exists()) {
$this->updateUsername($integrationUser, $player);
$log = $this->updateGroups($integrationUser, $player);
if (count($log)) {
$group_sync_log[] = $log;

if ($should_group_sync) {
$log = $this->updateGroups($integrationUser, $player);
if (count($log)) {
$group_sync_log[] = $log;
}
}

if (isset($player['placeholders']) && count($player['placeholders'])) {
Expand Down
2 changes: 2 additions & 0 deletions modules/Core/module.php
Expand Up @@ -1602,6 +1602,7 @@ public static function addUserAction($title, $link): void {

public function getDebugInfo(): array {
$servers = [];
$group_sync_server_id = Util::getSetting('group_sync_mc_server');
foreach (DB::getInstance()->get('mc_servers', ['id', '<>', 0])->results() as $server) {
$servers[(int)$server->id] = [
'id' => (int)$server->id,
Expand All @@ -1611,6 +1612,7 @@ public function getDebugInfo(): array {
'port' => $server->port,
'query_port' => $server->query_port,
'bedrock' => (bool)$server->bedrock,
'group_sync_server' => $server->id == $group_sync_server_id,
];
}

Expand Down
15 changes: 15 additions & 0 deletions modules/Core/pages/panel/minecraft_servers.php
Expand Up @@ -496,6 +496,12 @@
$new_default = 0;
}

if (isset($_POST['group_sync_server']) && is_numeric($_POST['group_sync_server'])) {
$new_group_sync_server = $_POST['group_sync_server'];
} else {
$new_group_sync_server = 0;
}

if (isset($_POST['external_query']) && $_POST['external_query'] == 1) {
$external = 1;
} else {
Expand Down Expand Up @@ -526,6 +532,9 @@
}
}

// Group sync server
Util::setSetting('group_sync_mc_server', $new_group_sync_server);

// External query
$external_query_id = DB::getInstance()->get('settings', ['name', 'external_query'])->results();
$external_query_id = $external_query_id[0];
Expand Down Expand Up @@ -600,6 +609,9 @@
$status_page = DB::getInstance()->get('settings', ['name', 'status_page'])->results();
$status_page = $status_page[0]->value;

$group_sync_server = DB::getInstance()->get('settings', ['name', 'group_sync_mc_server'])->results();
$group_sync_server = $group_sync_server[0]->value;

// Query interval
$cache->setCache('server_query_cache');
if ($cache->isCached('query_interval')) {
Expand Down Expand Up @@ -632,6 +644,9 @@
'DEFAULT_SERVER' => $language->get('admin', 'default_server'),
'DEFAULT_SERVER_VALUE' => $default,
'NO_DEFAULT_SERVER' => $language->get('admin', 'no_default_server'),
'GROUP_SYNC_SERVER' => $language->get('admin', 'group_sync_server'),
'GROUP_SYNC_SERVER_VALUE' => $group_sync_server,
'NO_GROUP_SYNC_SERVER' => $language->get('admin', 'no_group_sync_server'),
'QUERY_INTERVAL' => $language->get('admin', 'query_interval'),
'QUERY_INTERVAL_VALUE' => $query_interval,
'EXTERNAL_QUERY' => $language->get('admin', 'external_query'),
Expand Down

0 comments on commit 5b996f3

Please sign in to comment.