Added feature #16284: Optimize stdWrap usage for TypoScript content element LOAD_REGI...
[Packages/TYPO3.CMS.git] / typo3 / sysext / cms / tslib / content / class.tslib_content_loadregister.php
index 778a157..10132e0 100644 (file)
@@ -1,68 +1,74 @@
-<?php\r
-/***************************************************************\r
- *  Copyright notice\r
- *\r
- *  (c) 2010 Xavier Perseguers <typo3@perseguers.ch>\r
- *  (c) 2010 Steffen Kamper <steffen@typo3.org>\r
- *  All rights reserved\r
- *\r
- *  This script is part of the TYPO3 project. The TYPO3 project is\r
- *  free software; you can redistribute it and/or modify\r
- *  it under the terms of the GNU General Public License as published by\r
- *  the Free Software Foundation; either version 2 of the License, or\r
- *  (at your option) any later version.\r
- *\r
- *  The GNU General Public License can be found at\r
- *  http://www.gnu.org/copyleft/gpl.html.\r
- *  A copy is found in the textfile GPL.txt and important notices to the license\r
- *  from the author is found in LICENSE.txt distributed with these scripts.\r
- *\r
- *\r
- *  This script is distributed in the hope that it will be useful,\r
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- *  GNU General Public License for more details.\r
- *\r
- *  This copyright notice MUST APPEAR in all copies of the script!\r
- ***************************************************************/\r
-\r
-/**\r
- * Contains LOAD_REGISTER class object.\r
- *\r
- * $Id: class.tslib_content.php 7905 2010-06-13 14:42:33Z ohader $\r
- * @author Xavier Perseguers <typo3@perseguers.ch>\r
- * @author Steffen Kamper <steffen@typo3.org>\r
- */\r
-class tslib_content_LoadRegister extends tslib_content_Abstract {\r
-\r
-       /**\r
-        * Rendering the cObject, LOAD_REGISTER\r
-        * NOTICE: This cObject does NOT return any content since it just sets internal data based on the TypoScript properties.\r
-        *\r
-        * @param       array           Array of TypoScript properties\r
-        * @return      string          Empty string (the cObject only sets internal data!)\r
-        */\r
-       public function render($conf = array()) {\r
-               array_push($GLOBALS['TSFE']->registerStack, $GLOBALS['TSFE']->register);\r
-               if (is_array($conf)) {\r
-                       foreach ($conf as $theKey => $theValue) {\r
-                               if (!strstr($theKey, '.') || !isset($conf[substr($theKey, 0, -1)])) {\r
-                                               // Only if 1) the property is set but not the value itself, 2) the value and/or any property\r
-                                       if (strstr($theKey, '.')) {\r
-                                               $theKey = substr($theKey, 0, -1);\r
-                                       }\r
-                                       $GLOBALS['TSFE']->register[$theKey] = $this->cObj->stdWrap($conf[$theKey], $conf[$theKey . '.']);\r
-                               }\r
-                       }\r
-               }\r
-               return '';\r
-       }\r
-\r
-}\r
-\r
-\r
-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/content/class.tslib_content_loadregister.php']) {\r
-       include_once ($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/content/class.tslib_content_loadregister.php']);\r
-}\r
-\r
-?>\r
+<?php
+/***************************************************************
+ *  Copyright notice
+ *
+ *  (c) 2010 Xavier Perseguers <typo3@perseguers.ch>
+ *  (c) 2010 Steffen Kamper <steffen@typo3.org>
+ *  All rights reserved
+ *
+ *  This script is part of the TYPO3 project. The TYPO3 project is
+ *  free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  The GNU General Public License can be found at
+ *  http://www.gnu.org/copyleft/gpl.html.
+ *  A copy is found in the textfile GPL.txt and important notices to the license
+ *  from the author is found in LICENSE.txt distributed with these scripts.
+ *
+ *
+ *  This script is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+/**
+ * Contains LOAD_REGISTER class object.
+ *
+ * $Id: class.tslib_content.php 7905 2010-06-13 14:42:33Z ohader $
+ * @author Xavier Perseguers <typo3@perseguers.ch>
+ * @author Steffen Kamper <steffen@typo3.org>
+ */
+class tslib_content_LoadRegister extends tslib_content_Abstract {
+
+       /**
+        * Rendering the cObject, LOAD_REGISTER
+        * NOTICE: This cObject does NOT return any content since it just sets internal data based on the TypoScript properties.
+        *
+        * @param       array           Array of TypoScript properties
+        * @return      string          Empty string (the cObject only sets internal data!)
+        */
+       public function render($conf = array()) {
+               array_push($GLOBALS['TSFE']->registerStack, $GLOBALS['TSFE']->register);
+
+               if (is_array($conf)) {
+                       $isExecuted = array();
+                       foreach ($conf as $theKey => $theValue) {
+                               $register = rtrim($theKey, '.');
+                               if(!$isExecuted[$register]) {
+                                       $registerProperties = $register . '.';
+                                       if(isset($conf[$register]) && isset($conf[$registerProperties])) {
+                                               $theValue = $this->cObj->stdWrap($theValue, $conf[$registerProperties]);
+                                       } else if(isset($conf[$registerProperties])) {
+                                               $theValue = $this->cObj->stdWrap('', $conf[$registerProperties]);
+                                       }
+                                       $GLOBALS['TSFE']->register[$register] = $theValue;
+                                       $isExecuted[$register] = true;
+                               }
+                       }
+               }
+               return '';
+       }
+
+}
+
+
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/content/class.tslib_content_loadregister.php']) {
+       include_once ($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/content/class.tslib_content_loadregister.php']);
+}
+
+?>
\ No newline at end of file