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