Fix instantiability check in `ClassNameFormField` (2)
authorMatthias Schmidt <gravatronics@live.com>
Mon, 7 May 2018 18:51:10 +0000 (20:51 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Mon, 7 May 2018 18:51:10 +0000 (20:51 +0200)
See #2509

wcfsetup/install/files/lib/system/form/builder/field/ClassNameFormField.class.php

index 81da82c1591ad1d3252e131ff9c5b3585c73170d..74de70060887102a08a88be089d76fef83df6799 100644 (file)
@@ -190,7 +190,9 @@ class ClassNameFormField extends TextFormField {
                        }
                        else if ($this->getIsInstantiable()) {
                                $reflection = new \ReflectionClass($text);
-                               if (!$reflection->isInstantiable() || (is_subclass_of($text, SingletonFactory::class) && $reflection->isAbstract())) {
+                               $isSingleton = is_subclass_of($text, SingletonFactory::class);
+                               
+                               if ((!$isSingleton && !$reflection->isInstantiable()) || ($isSingleton && $reflection->isAbstract())) {
                                        $this->addValidationError(
                                                new FormFieldValidationError(
                                                        'isInstantiable',