From 33863ee2f1c13b18685b2ddf40bdb592a9eb0284 Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer <reinhold@kainhofer.com> Date: Mon, 15 Aug 2016 16:51:37 +0200 Subject: [PATCH] switch statements in PHP with mixed types lead to wrong results... => explicitly check for string before the switch --- .../OpenTools/Ordernumber/Model/Observer.php | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/app/code/community/OpenTools/Ordernumber/Model/Observer.php b/app/code/community/OpenTools/Ordernumber/Model/Observer.php index b30b312..ab47a21 100644 --- a/app/code/community/OpenTools/Ordernumber/Model/Observer.php +++ b/app/code/community/OpenTools/Ordernumber/Model/Observer.php @@ -102,20 +102,24 @@ class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract // The ordernumber/...numbers/reset contains some pre-defined counter names as // well as enum values indicating certain behavior. Replace those by the actual // counter names for the current counter: - switch ($reset) { - case 0: - $format = $format . '|'; - break; - case 1: - $format = $format . '|' . $format; - break; - case -1: - $format = $format . '|' . $counterfmt; - break; - default: - /* Pre-defined counter formats saved in the /reset config field */ - $format = $format . '|' . $reset; - break; + if (is_string($reset)) { + $format = $format . '|' . $reset; + } else { + switch ($reset) { + case 0: + $format = $format . '|'; + break; + case 1: + $format = $format . '|' . $format; + break; + case -1: + $format = $format . '|' . $counterfmt; + break; + default: + /* Pre-defined counter formats saved in the /reset config field */ + $format = $format . '|' . $reset; + break; + } } $customvars = Mage::getStoreConfig('ordernumber/replacements', $storeId); if (isset($customvars['replacements'])) { -- GitLab