From 2faa78c8e2f0eea75e0f2a2d7fe90b213dbbeeb2 Mon Sep 17 00:00:00 2001 From: kremsy Date: Thu, 23 Mar 2017 20:39:32 +0100 Subject: [PATCH] advanced callback structure --- ManiaControl.php | 2 +- core/Callbacks/LibXmlRpcCallbacks.php | 1 + core/Callbacks/Structures/BaseStructure.php | 28 ++++++++++++++++++- .../ManiaPlanet/CallbacksListStructure.php | 14 +++++----- core/Server/ModeScriptEventManager.php | 7 +++-- core/Server/ScriptManager.php | 10 +++---- 6 files changed, 44 insertions(+), 18 deletions(-) diff --git a/ManiaControl.php b/ManiaControl.php index 2fbfe8ae..0b4e7035 100644 --- a/ManiaControl.php +++ b/ManiaControl.php @@ -11,7 +11,7 @@ error_reporting(E_ALL); // Run configuration -define('DEV_MODE', false); // Development mode to not send error reports etc. +define('DEV_MODE', true); // Development mode to not send error reports etc. define('LOG_NAME_USE_DATE', true); // Use current date as suffix for log file name in logs folder define('LOG_NAME_USE_PID', true); // Use current process id as suffix for log file name in logs folder diff --git a/core/Callbacks/LibXmlRpcCallbacks.php b/core/Callbacks/LibXmlRpcCallbacks.php index ea461701..8bf4c68c 100644 --- a/core/Callbacks/LibXmlRpcCallbacks.php +++ b/core/Callbacks/LibXmlRpcCallbacks.php @@ -43,6 +43,7 @@ class LibXmlRpcCallbacks implements CallbackListener { */ public function handleScriptCallback($name, $data) { var_dump($name); + //var_dump($data); switch ($name) { //New callbacks case 'XmlRpc.CallbacksList': diff --git a/core/Callbacks/Structures/BaseStructure.php b/core/Callbacks/Structures/BaseStructure.php index 8eb64e08..71eb228b 100644 --- a/core/Callbacks/Structures/BaseStructure.php +++ b/core/Callbacks/Structures/BaseStructure.php @@ -14,12 +14,38 @@ use ManiaControl\ManiaControl; abstract class BaseStructure { /** @var ManiaControl $maniaControl */ protected $maniaControl; + private $plainJson; + /** + * Sets ManiaControl + * + * @param \ManiaControl\ManiaControl $maniaControl + */ + protected function setManiaControl(ManiaControl $maniaControl) { + $this->maniaControl = $maniaControl; + } + + /** + * Decodes the Data and Sets the Json + * + * @param array $data + */ + protected function setJson($data) { + $this->plainJson = json_decode($data[0]); + } + + /** + * Gets the Plain Json + */ + public function getJson() { + return $this->plainJson; + } + /** * Var_Dump the Structure */ public function dump() { + var_dump($this->getJson()); var_dump(json_decode(json_encode($this))); } - } \ No newline at end of file diff --git a/core/Callbacks/Structures/ManiaPlanet/CallbacksListStructure.php b/core/Callbacks/Structures/ManiaPlanet/CallbacksListStructure.php index ac767ab1..3e936746 100644 --- a/core/Callbacks/Structures/ManiaPlanet/CallbacksListStructure.php +++ b/core/Callbacks/Structures/ManiaPlanet/CallbacksListStructure.php @@ -14,9 +14,9 @@ use ManiaControl\ManiaControl; */ class CallbacksListStructure extends BaseStructure { /** @var string $responseId */ - private $responseId; + public $responseId; /** @var array $callbacks */ - private $callbacks; + public $callbacks; /** * Construct a new Armor Empty Structure @@ -25,13 +25,13 @@ class CallbacksListStructure extends BaseStructure { * @param array $data */ public function __construct(ManiaControl $maniaControl, $data) { - $this->maniaControl = $maniaControl; + parent::setManiaControl($maniaControl); + parent::setJson($data); - //Not tested yet, TODO test - $json = json_decode($data); + $this->responseId = $this->getJson()->responseid; + $this->callbacks = $this->getJson()->callbacks; - $this->responseId = $json->responseId; - $this->callbacks = $json->callbacks; + //$this->dump(); } /** diff --git a/core/Server/ModeScriptEventManager.php b/core/Server/ModeScriptEventManager.php index 6ff4db65..2d18b6ba 100644 --- a/core/Server/ModeScriptEventManager.php +++ b/core/Server/ModeScriptEventManager.php @@ -13,6 +13,8 @@ namespace ManiaControl\Server; use ManiaControl\ManiaControl; class ModeScriptEventManager { + const API_VERSION = "2.0.0"; + /** @var ManiaControl $maniaControl */ private $maniaControl; @@ -31,12 +33,11 @@ class ModeScriptEventManager { public function enableCallbacks() { $this->maniaControl->getClient()->triggerModeScriptEvent('XmlRpc.EnableCallbacks', array('true')); - $this->setApiVersion(); + $this->setApiVersion(self::API_VERSION); $this->getAllApiVersions(); $this->getCallbacksList(); //TODO verify why this does not work - var_dump("test"); } /** @@ -58,7 +59,7 @@ class ModeScriptEventManager { * Sets the Api Version * @param string $version */ - public function setApiVersion($version = "1.2.3-beta.4.5.6+build789"){ //TODO constant of API Versions + public function setApiVersion($version = self::API_VERSION){ $this->maniaControl->getClient()->triggerModeScriptEvent('XmlRpc.SetApiVersion', array($version)); } diff --git a/core/Server/ScriptManager.php b/core/Server/ScriptManager.php index ef8c0727..f980fe68 100644 --- a/core/Server/ScriptManager.php +++ b/core/Server/ScriptManager.php @@ -44,17 +44,15 @@ class ScriptManager { try { $scriptSettings = $this->maniaControl->getClient()->getModeScriptSettings(); } catch (GameModeException $e) { + var_dump("test"); return false; } //TODO remove later, than only the last 2 lines are needed in future - if (!array_key_exists('S_UseScriptCallbacks', $scriptSettings)) { - return false; + if (array_key_exists('S_UseScriptCallbacks', $scriptSettings)) { + $scriptSettings['S_UseScriptCallbacks'] = true; + $this->maniaControl->getClient()->setModeScriptSettings($scriptSettings); } - $scriptSettings['S_UseScriptCallbacks'] = true; - $this->maniaControl->getClient()->setModeScriptSettings($scriptSettings); - - $this->maniaControl->getModeScriptEventManager()->enableCallbacks(); Logger::logInfo("Script Callbacks successfully enabled!");