84 lines
3.1 KiB
PHP
84 lines
3.1 KiB
PHP
<?php
|
|
/**
|
|
* Plugin Name: AeroMC Freunde
|
|
* Description: Backend für das Freundesystem des AeroMC Launchers - meldet, wer gerade online/im Spiel ist, und verwaltet Freundschaftsanfragen. Keine eigene Anmeldung: der Launcher meldet sich direkt mit der Minecraft-UUID des jeweiligen Kontos.
|
|
* Version: 1.1.0
|
|
* Author: M_Viper
|
|
*/
|
|
|
|
if (!defined('ABSPATH')) {
|
|
exit; // kein direkter Aufruf der Datei
|
|
}
|
|
|
|
define('AEROMC_FRIENDS_VERSION', '1.1.0');
|
|
define('AEROMC_FRIENDS_PRESENCE_TABLE', 'aeromc_presence');
|
|
define('AEROMC_FRIENDS_FRIENDS_TABLE', 'aeromc_friends');
|
|
define('AEROMC_FRIENDS_INVITES_TABLE', 'aeromc_invites');
|
|
|
|
/**
|
|
* Legt die beiden Tabellen an (bzw. bringt sie bei einem Update auf den
|
|
* neuesten Stand - dbDelta erkennt bestehende Tabellen/Spalten selbst).
|
|
*/
|
|
function aeromc_friends_install() {
|
|
global $wpdb;
|
|
$charset_collate = $wpdb->get_charset_collate();
|
|
$presence_table = $wpdb->prefix . AEROMC_FRIENDS_PRESENCE_TABLE;
|
|
$friends_table = $wpdb->prefix . AEROMC_FRIENDS_FRIENDS_TABLE;
|
|
$invites_table = $wpdb->prefix . AEROMC_FRIENDS_INVITES_TABLE;
|
|
|
|
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
|
|
|
// uuid ohne Bindestriche gespeichert (siehe aeromc_friends_normalize_uuid
|
|
// in includes/routes.php) - vermeidet doppelte Zeilen durch
|
|
// unterschiedliche Schreibweisen derselben UUID
|
|
$sql_presence = "CREATE TABLE $presence_table (
|
|
uuid varchar(32) NOT NULL,
|
|
username varchar(32) NOT NULL,
|
|
instance_name varchar(128) DEFAULT NULL,
|
|
server_label varchar(128) DEFAULT NULL,
|
|
mc_version varchar(32) DEFAULT NULL,
|
|
last_seen datetime NOT NULL,
|
|
PRIMARY KEY (uuid)
|
|
) $charset_collate;";
|
|
dbDelta($sql_presence);
|
|
|
|
$sql_friends = "CREATE TABLE $friends_table (
|
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
|
uuid_a varchar(32) NOT NULL,
|
|
uuid_b varchar(32) NOT NULL,
|
|
status varchar(20) NOT NULL DEFAULT 'pending',
|
|
created_at datetime NOT NULL,
|
|
PRIMARY KEY (id),
|
|
KEY uuid_a (uuid_a),
|
|
KEY uuid_b (uuid_b)
|
|
) $charset_collate;";
|
|
dbDelta($sql_friends);
|
|
|
|
// Einladungen "Komm auf meinen Server" - gelten nur ein paar Minuten
|
|
$sql_invites = "CREATE TABLE $invites_table (
|
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
|
from_uuid varchar(32) NOT NULL,
|
|
to_uuid varchar(32) NOT NULL,
|
|
server varchar(128) NOT NULL,
|
|
mc_version varchar(32) DEFAULT NULL,
|
|
created_at datetime NOT NULL,
|
|
PRIMARY KEY (id),
|
|
KEY to_uuid (to_uuid)
|
|
) $charset_collate;";
|
|
dbDelta($sql_invites);
|
|
|
|
update_option('aeromc_friends_db_version', AEROMC_FRIENDS_VERSION);
|
|
}
|
|
register_activation_hook(__FILE__, 'aeromc_friends_install');
|
|
|
|
// Beim Ersetzen der Plugin-Dateien (Update per Upload) läuft der
|
|
// Aktivierungs-Hook NICHT erneut - neue Spalten/Tabellen deshalb anlegen,
|
|
// sobald die gespeicherte DB-Version nicht mehr zur Plugin-Version passt.
|
|
add_action('plugins_loaded', function () {
|
|
if (get_option('aeromc_friends_db_version') !== AEROMC_FRIENDS_VERSION) {
|
|
aeromc_friends_install();
|
|
}
|
|
});
|
|
|
|
require_once plugin_dir_path(__FILE__) . 'includes/routes.php';
|