[BUGFIX] Unused TDParams in ColumnsContentObject()
[Packages/TYPO3.CMS.git] / typo3 / sysext / form / Classes / Domain / Factory / TypoScriptFactory.php
index a46eb36..79de33e 100644 (file)
@@ -4,7 +4,7 @@ namespace TYPO3\CMS\Form\Domain\Factory;
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2008 Patrick Broens (patrick@patrickbroens.nl)
+ *  (c) 2008-2013 Patrick Broens (patrick@patrickbroens.nl)
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -23,6 +23,7 @@ namespace TYPO3\CMS\Form\Domain\Factory;
  *
  *  This copyright notice MUST APPEAR in all copies of the script!
  ***************************************************************/
+
 /**
  * Typoscript factory for form
  *
@@ -30,12 +31,14 @@ namespace TYPO3\CMS\Form\Domain\Factory;
  * according to the configuration.
  *
  * @author Patrick Broens <patrick@patrickbroens.nl>
- * @package TYPO3
- * @subpackage form
  */
 class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
 
+       /**
+        * @var string
+        */
        const PROPERTY_DisableContentElement = 'disableContentElement';
+
        /**
         * @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
         */
@@ -77,7 +80,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
         *
         * @param \TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $parentElement Parent model object
         * @param array $arguments Configuration array
-        * @throws InvalidArgumentException
+        * @throws \InvalidArgumentException
         * @return void
         */
        public function getChildElementsByIntegerKey(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $parentElement, array $typoscript) {
@@ -85,7 +88,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
                        $keys = \TYPO3\CMS\Core\TypoScript\TemplateService::sortedKeyList($typoscript);
                        foreach ($keys as $key) {
                                $class = $typoscript[$key];
-                               if (intval($key) && !strstr($key, '.')) {
+                               if ((int)$key && strpos($key, '.') === FALSE) {
                                        if (isset($typoscript[$key . '.'])) {
                                                $elementArguments = $typoscript[$key . '.'];
                                        } else {
@@ -95,7 +98,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
                                }
                        }
                } else {
-                       throw new \InvalidArgumentException(('Container element with id=' . $parentElement->getElementId()) . ' has no configuration which means no children.', 1333754854);
+                       throw new \InvalidArgumentException('Container element with id=' . $parentElement->getElementId() . ' has no configuration which means no children.', 1333754854);
                }
        }
 
@@ -120,7 +123,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
                                $oldArguments = $arguments;
                                list($class, $arguments) = $typoscriptParser->getVal($key, $GLOBALS['TSFE']->tmpl->setup);
                                if (is_array($oldArguments) && count($oldArguments)) {
-                                       $arguments = $this->getLocalConentObject()->joinTSarrays($arguments, $oldArguments);
+                                       $arguments = array_replace_recursive($arguments, $oldArguments);
                                }
                                $GLOBALS['TT']->incStackPointer();
                                $contentObject = array(
@@ -163,9 +166,9 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
        public function createElement($class, array $arguments = array()) {
                $class = strtolower((string) $class);
                if ($class === 'form') {
-                       $className = 'tx_form_Domain_Model_' . ucfirst($class);
+                       $className = 'TYPO3\\CMS\\Form\\Domain\\Model\\' . ucfirst($class);
                } else {
-                       $className = 'tx_form_Domain_Model_Element_' . ucfirst($class);
+                       $className = 'TYPO3\\CMS\\Form\\Domain\\Model\\Element\\' . ucfirst($class) . 'Element';
                }
                /** @var $object \TYPO3\CMS\Form\Domain\Model\Element\AbstractElement */
                $object = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance($className);
@@ -177,7 +180,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
                        $object->setData($arguments['data']);
                        $this->reconstituteElement($object, $arguments);
                } else {
-                       throw new \InvalidArgumentException(('Element type "' . $object->getElementType()) . '" is not supported.', 1333754878);
+                       throw new \InvalidArgumentException('Element type "' . $object->getElementType() . '" is not supported.', 1333754878);
                }
                return $object;
        }
@@ -190,6 +193,11 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
         * @return void
         */
        protected function reconstituteElement(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments = array()) {
+               if (isset($arguments['value.'])) {
+                       $cObj = $this->getLocalConentObject();
+                       $arguments['value'] = $cObj->stdWrap($arguments['value'], $arguments['value.']);
+               }
+
                $this->setAttributes($element, $arguments);
                $this->setAdditionals($element, $arguments);
                if (isset($arguments['filters.'])) {
@@ -216,7 +224,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
                        $attributes = $element->getAllowedAttributes();
                        $mandatoryAttributes = $element->getMandatoryAttributes();
                        foreach ($attributes as $attribute => $value) {
-                               if (((isset($arguments[$attribute]) || isset($arguments[$attribute . '.'])) || in_array($attribute, $mandatoryAttributes)) || !empty($value)) {
+                               if (isset($arguments[$attribute]) || isset($arguments[$attribute . '.']) || in_array($attribute, $mandatoryAttributes) || !empty($value)) {
                                        if (!empty($arguments[$attribute])) {
                                                $value = $arguments[$attribute];
                                        } elseif (!empty($arguments[($attribute . '.')])) {
@@ -230,7 +238,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
                                }
                        }
                } else {
-                       throw new \InvalidArgumentException(('The element with id=' . $element->getElementId()) . ' has no default attributes set.', 1333754925);
+                       throw new \InvalidArgumentException('The element with id=' . $element->getElementId() . ' has no default attributes set.', 1333754925);
                }
        }
 
@@ -269,7 +277,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
                                        }
                                }
                        } else {
-                               throw new \InvalidArgumentException(('The element with id=' . $element->getElementId()) . ' has no additionals set.', 1333754962);
+                               throw new \InvalidArgumentException('The element with id=' . $element->getElementId() . ' has no additionals set.', 1333754962);
                        }
                }
        }
@@ -285,7 +293,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
                $keys = \TYPO3\CMS\Core\TypoScript\TemplateService::sortedKeyList($arguments);
                foreach ($keys as $key) {
                        $class = $arguments[$key];
-                       if (intval($key) && !strstr($key, '.')) {
+                       if ((int)$key && strpos($key, '.') === FALSE) {
                                $filterArguments = $arguments[$key . '.'];
                                $filter = $element->makeFilter($class, $filterArguments);
                                $element->addFilter($filter);
@@ -344,7 +352,7 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
                        $keys = \TYPO3\CMS\Core\TypoScript\TemplateService::sortedKeyList($rulesTyposcript);
                        foreach ($keys as $key) {
                                $class = $rulesTyposcript[$key];
-                               if (intval($key) && !strstr($key, '.')) {
+                               if ((int)$key && strpos($key, '.') === FALSE) {
                                        $elementArguments = $rulesTyposcript[$key . '.'];
                                        $rule = $rulesClass->createRule($class, $elementArguments);
                                        $rule->setFieldName($elementArguments['element']);
@@ -369,6 +377,3 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
        }
 
 }
-
-
-?>
\ No newline at end of file