From 3ee7a7380d6dd166ff35a3e12702a3a6abd95658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Uls=C3=B8=20Kristensen?= Date: Fri, 10 Jun 2022 07:16:42 +0200 Subject: [PATCH] Fix Uncaught TypeError: Cannot access offset of type string on string in PHP8 in sendWebHook method. --- .gitignore | 1 + src/includes/functions.inc.php | 9 +++++++-- src/psm/Module/Config/Controller/ConfigController.php | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 7ac59805..abc62ecc 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ __MACOSX/ .buildpath .settings/ /.vscode +/.vs diff --git a/src/includes/functions.inc.php b/src/includes/functions.inc.php index 85e11b3c..a879d74f 100644 --- a/src/includes/functions.inc.php +++ b/src/includes/functions.inc.php @@ -1087,7 +1087,7 @@ namespace { * Send Webhook * * @return bool|string - * @var array $replacements an array of the replacements + * @var array $replacements should be an array of key value as strings where key is the placeholder name to replace in json template with the value * */ @@ -1096,8 +1096,13 @@ namespace { $error = ""; $success = 1; + $jsonMessage = $this->json; + $replacements['#message'] = $this->stripTagsFromMessage($replacements['#message']); - $jsonMessage = strtr($this->json, $replacements); + + foreach($replacements as $key => $val) { + $jsonMessage = str_replace($key, $val, $jsonMessage); + } $curl = curl_init($this->url); curl_setopt($curl, CURLOPT_POST, 1); diff --git a/src/psm/Module/Config/Controller/ConfigController.php b/src/psm/Module/Config/Controller/ConfigController.php index 5285ea70..b86931b2 100644 --- a/src/psm/Module/Config/Controller/ConfigController.php +++ b/src/psm/Module/Config/Controller/ConfigController.php @@ -470,7 +470,7 @@ class ConfigController extends AbstractController $webhook = psm_build_webhook(); $webhook->setUrl($user->webhook_url); $webhook->setJson($user->webhook_json); - $message = (psm_get_lang('config', 'test_message')); + $message = ['#message' => (psm_get_lang('config', 'test_message'))]; $result = $webhook->sendWebhook($message); if ($result==1) { $this->addMessage(psm_get_lang('config', 'webhook_sent'), 'success');