From e8586586a3762e8aee17e07f226b4dd2f562d328 Mon Sep 17 00:00:00 2001 From: kremsy Date: Sat, 25 Mar 2017 13:40:37 +0100 Subject: [PATCH] added check if callback got subscribed before triggering and creating structures --- core/Callbacks/CallbackManager.php | 16 +++++++++++++--- core/Callbacks/LibXmlRpcCallbacks.php | 3 +++ core/Callbacks/ShootManiaCallbacks.php | 3 +++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/core/Callbacks/CallbackManager.php b/core/Callbacks/CallbackManager.php index 3e3fcf6a..e8ac4295 100644 --- a/core/Callbacks/CallbackManager.php +++ b/core/Callbacks/CallbackManager.php @@ -46,7 +46,7 @@ class CallbackManager { /* * Public properties */ - public $libXmlRpcCallbacks = null; + public $libXmlRpcCallbacks = null; public $shootManiaCallbacks = null; public $trackManiaCallbacks = null; @@ -98,7 +98,7 @@ class CallbackManager { return false; } - if (!array_key_exists($callbackName, $this->callbackListenings)) { + if (!$this->callbackListeningExists($callbackName)) { $this->callbackListenings[$callbackName] = array(); } @@ -108,6 +108,16 @@ class CallbackManager { return true; } + /** + * Checks if a Callback Listening exists + * + * @param $callbackName + * @return bool + */ + public function callbackListeningExists($callbackName) { + return array_key_exists($callbackName, $this->callbackListenings); + } + /** * Register a new Script Callback Listener * @@ -272,7 +282,7 @@ class CallbackManager { } else { $callbackName = $callback; } - if (!array_key_exists($callbackName, $this->callbackListenings)) { + if (!$this->callbackListeningExists($callbackName)) { return; } diff --git a/core/Callbacks/LibXmlRpcCallbacks.php b/core/Callbacks/LibXmlRpcCallbacks.php index 9cc751ee..4338ae86 100644 --- a/core/Callbacks/LibXmlRpcCallbacks.php +++ b/core/Callbacks/LibXmlRpcCallbacks.php @@ -44,6 +44,9 @@ class LibXmlRpcCallbacks implements CallbackListener { * @param mixed $data */ public function handleScriptCallback($name, $data) { + if(!$this->maniaControl->getCallbackManager()->callbackListeningExists($name)){ + return; + } var_dump($name); //var_dump($data); switch ($name) { diff --git a/core/Callbacks/ShootManiaCallbacks.php b/core/Callbacks/ShootManiaCallbacks.php index 535069a7..f289a0ea 100644 --- a/core/Callbacks/ShootManiaCallbacks.php +++ b/core/Callbacks/ShootManiaCallbacks.php @@ -52,6 +52,9 @@ class ShootManiaCallbacks implements CallbackListener { * @param mixed $data */ public function handleScriptCallbacks($name, $data) { + if (!$this->maniaControl->getCallbackManager()->callbackListeningExists($name)) { + return; + } switch ($name) { //MP4 New Callbacks case Callbacks::SM_EVENTDEFAULT: