Fix instantiability validation in class name for field for singletons
authorMatthias Schmidt <gravatronics@live.com>
Tue, 1 May 2018 10:26:49 +0000 (12:26 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Tue, 1 May 2018 10:26:49 +0000 (12:26 +0200)
See #2509

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

index 8e83415b7c3d0231955cdecdf957d488da2f35ed..569d422f6f1ac9cf2b604f2f5ea4948da2652529 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace wcf\system\form\builder\field;
 use wcf\system\form\builder\field\validation\FormFieldValidationError;
+use wcf\system\SingletonFactory;
 
 /**
  * Implementation of a form field to enter the name of a PHP class.
@@ -189,7 +190,7 @@ class ClassNameFormField extends TextFormField {
                        }
                        else if ($this->getIsInstantiable()) {
                                $reflection = new \ReflectionClass($text);
-                               if (!$reflection->isInstantiable()) {
+                               if (!$reflection->isInstantiable() && !is_subclass_of($text, SingletonFactory::class) && !$reflection->isAbstract()) {
                                        $this->addValidationError(
                                                new FormFieldValidationError(
                                                        'isInstantiable',