[TASK] Remove the first few E_NOTICEs occuring in the unit tests 88/43988/8
authorOliver Eglseder <oliver.eglseder@in2code.de>
Sun, 11 Oct 2015 15:31:10 +0000 (17:31 +0200)
committerBenni Mack <benni@typo3.org>
Thu, 12 Nov 2015 15:31:42 +0000 (16:31 +0100)
PHP throws E_NOTICE when not existing array keys are accessed.
The received value will become null.

This patch aims to reduce the number of generated notices,
to increase readability and reliability of the changed methods.

Resolves: #70587
Related: #70584
Releases: master
Change-Id: I23ee39b0d89f1be828565cbe6c745b6eeefdcfde
Reviewed-on: https://review.typo3.org/43988
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/backend/Classes/Form/Element/NoneElement.php
typo3/sysext/backend/Classes/Utility/BackendUtility.php
typo3/sysext/backend/Tests/Unit/Configuration/TypoScript/ConditionMatching/ConditionMatcherTest.php
typo3/sysext/core/Classes/Core/ClassLoadingInformationGenerator.php
typo3/sysext/core/Classes/Utility/GeneralUtility.php
typo3/sysext/core/Classes/Utility/VersionNumberUtility.php
typo3/sysext/core/Tests/Unit/Utility/VersionNumberUtilityTest.php
typo3/sysext/form/Tests/Unit/Filter/IntegerFilterTest.php

index 437e448..1741767 100644 (file)
@@ -80,9 +80,9 @@ class NoneElement extends AbstractFormElement
         switch ($format) {
             case 'date':
                 if ($itemValue) {
-                    $option = trim($config['format.']['option']);
+                    $option = isset($config['format.']['option']) ? trim($config['format.']['option']) : '';
                     if ($option) {
-                        if ($config['format.']['strftime']) {
+                        if (isset($config['format.']['strftime']) && $config['format.']['strftime']) {
                             $value = strftime($option, $itemValue);
                         } else {
                             $value = date($option, $itemValue);
@@ -93,7 +93,7 @@ class NoneElement extends AbstractFormElement
                 } else {
                     $value = '';
                 }
-                if ($config['format.']['appendAge']) {
+                if (isset($config['format.']['appendAge']) && $config['format.']['appendAge']) {
                     $age = BackendUtility::calcAge(
                         $GLOBALS['EXEC_TIME'] - $itemValue,
                         $this->getLanguageService()->sL('LLL:EXT:lang/locallang_core.xlf:labels.minutesHoursDaysYears')
@@ -128,16 +128,20 @@ class NoneElement extends AbstractFormElement
                 break;
             case 'int':
                 $baseArr = array('dec' => 'd', 'hex' => 'x', 'HEX' => 'X', 'oct' => 'o', 'bin' => 'b');
-                $base = trim($config['format.']['base']);
-                $format = $baseArr[$base] ?: 'd';
+                $base = isset($config['format.']['base']) ? trim($config['format.']['base']) : '';
+                $format = isset($baseArr[$base]) ? $baseArr[$base] : 'd';
                 $itemValue = sprintf('%' . $format, $itemValue);
                 break;
             case 'float':
-                $precision = MathUtility::forceIntegerInRange($config['format.']['precision'], 1, 10, 2);
+                // default precision
+                $precision = 2;
+                if (isset($config['format.']['precision'])) {
+                    $precision = MathUtility::forceIntegerInRange($config['format.']['precision'], 1, 10, $precision);
+                }
                 $itemValue = sprintf('%.' . $precision . 'f', $itemValue);
                 break;
             case 'number':
-                $format = trim($config['format.']['option']);
+                $format = isset($config['format.']['option']) ? trim($config['format.']['option']) : '';
                 $itemValue = sprintf('%' . $format, $itemValue);
                 break;
             case 'md5':
@@ -147,7 +151,7 @@ class NoneElement extends AbstractFormElement
                 // We need to cast to int here, otherwise empty values result in empty output,
                 // but we expect zero.
                 $value = GeneralUtility::formatSize((int)$itemValue);
-                if ($config['format.']['appendByteSize']) {
+                if (!empty($config['format.']['appendByteSize'])) {
                     $value .= ' (' . $itemValue . ')';
                 }
                 $itemValue = $value;
index 928e01c..1969c6a 100755 (executable)
@@ -81,7 +81,7 @@ class BackendUtility
      */
     public static function deleteClause($table, $tableAlias = '')
     {
-        if ($GLOBALS['TCA'][$table]['ctrl']['delete']) {
+        if (!empty($GLOBALS['TCA'][$table]['ctrl']['delete'])) {
             return ' AND ' . ($tableAlias ?: $table) . '.' . $GLOBALS['TCA'][$table]['ctrl']['delete'] . '=0';
         } else {
             return '';
@@ -1963,10 +1963,10 @@ class BackendUtility
             if ($table == 'pages' && $row['alias']) {
                 $out .= ' / ' . $row['alias'];
             }
-            if ($GLOBALS['TCA'][$table]['ctrl']['versioningWS'] && $row['pid'] < 0) {
+            if (static::isTableWorkspaceEnabled($table) && $row['pid'] < 0) {
                 $out .= ' - v#1.' . $row['t3ver_id'];
             }
-            if ($GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
+            if (static::isTableWorkspaceEnabled($table)) {
                 switch (VersionState::cast($row['t3ver_state'])) {
                     case new VersionState(VersionState::NEW_PLACEHOLDER):
                         $out .= ' - PLH WSID#' . $row['t3ver_wsid'];
@@ -2629,7 +2629,7 @@ class BackendUtility
                 $fields[] = $prefix . $fieldN;
             }
         }
-        if ($GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
+        if (static::isTableWorkspaceEnabled($table)) {
             $fields[] = $prefix . 't3ver_id';
             $fields[] = $prefix . 't3ver_state';
             $fields[] = $prefix . 't3ver_wsid';
@@ -4224,7 +4224,7 @@ class BackendUtility
     {
         $realPid = 0;
         $outputRows = array();
-        if ($GLOBALS['TCA'][$table] && $GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
+        if ($GLOBALS['TCA'][$table] && static::isTableWorkspaceEnabled($table)) {
             if (is_array($row) && !$includeDeletedRecords) {
                 $row['_CURRENT_VERSION'] = true;
                 $realPid = $row['pid'];
@@ -4294,7 +4294,7 @@ class BackendUtility
             return;
         }
         // Check that the input record is an offline version from a table that supports versioning:
-        if (is_array($rr) && $rr['pid'] == -1 && $GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
+        if (is_array($rr) && $rr['pid'] == -1 && static::isTableWorkspaceEnabled($table)) {
             // Check values for t3ver_oid and t3ver_wsid:
             if (isset($rr['t3ver_oid']) && isset($rr['t3ver_wsid'])) {
                 // If "t3ver_oid" is already a field, just set this:
@@ -4376,7 +4376,7 @@ class BackendUtility
             // If version was found, swap the default record with that one.
             if (is_array($wsAlt)) {
                 // Check if this is in move-state:
-                if ($previewMovePlaceholders && !$movePldSwap && $GLOBALS['TCA'][$table]['ctrl']['versioningWS'] && $unsetMovePointers) {
+                if ($previewMovePlaceholders && !$movePldSwap && static::isTableWorkspaceEnabled($table) && $unsetMovePointers) {
                     // Only for WS ver 2... (moving)
                     // If t3ver_state is not found, then find it... (but we like best if it is here...)
                     if (!isset($wsAlt['t3ver_state'])) {
@@ -4428,7 +4428,7 @@ class BackendUtility
      */
     public static function movePlhOL($table, &$row)
     {
-        if ($GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
+        if (static::isTableWorkspaceEnabled($table)) {
             // If t3ver_move_id or t3ver_state is not found, then find it... (but we like best if it is here...)
             if (!isset($row['t3ver_move_id']) || !isset($row['t3ver_state'])) {
                 $moveIDRec = self::getRecord($table, $row['uid'], 't3ver_move_id, t3ver_state');
@@ -4461,7 +4461,7 @@ class BackendUtility
     public static function getWorkspaceVersionOfRecord($workspace, $table, $uid, $fields = '*')
     {
         if (ExtensionManagementUtility::isLoaded('version')) {
-            if ($workspace !== 0 && $GLOBALS['TCA'][$table] && $GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
+            if ($workspace !== 0 && $GLOBALS['TCA'][$table] && self::isTableWorkspaceEnabled($table)) {
                 // Select workspace version of record:
                 $row = static::getDatabaseConnection()->exec_SELECTgetSingleRow($fields, $table, 'pid=-1 AND ' . 't3ver_oid=' . (int)$uid . ' AND ' . 't3ver_wsid=' . (int)$workspace . self::deleteClause($table));
                 if (is_array($row)) {
@@ -4517,7 +4517,7 @@ class BackendUtility
      */
     public static function versioningPlaceholderClause($table)
     {
-        if ($GLOBALS['TCA'][$table] && $GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
+        if ($GLOBALS['TCA'][$table] && static::isTableWorkspaceEnabled($table)) {
             $currentWorkspace = (int)static::getBackendUserAuthentication()->workspace;
             return ' AND (' . $table . '.t3ver_state <= ' . new VersionState(VersionState::DEFAULT_STATE) . ' OR ' . $table . '.t3ver_wsid = ' . $currentWorkspace . ')';
         }
@@ -4621,7 +4621,7 @@ class BackendUtility
         if ($workspace === null) {
             $workspace = static::getBackendUserAuthentication()->workspace;
         }
-        if ((int)$workspace !== 0 && $GLOBALS['TCA'][$table] && $GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
+        if ((int)$workspace !== 0 && $GLOBALS['TCA'][$table] && static::isTableWorkspaceEnabled($table)) {
             // Select workspace version of record:
             $row = static::getDatabaseConnection()->exec_SELECTgetSingleRow(
                 $fields,
index 6811739..3b6f25b 100644 (file)
@@ -1050,7 +1050,8 @@ class ConditionMatcherTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
             return array(
                 'scope' => $this->testTableName,
                 'data' => array(
-                    'pid' => 999
+                    'pid' => 999,
+                    'uid' => 998
                 )
             );
         } else {
index 13e46f3..885cb82 100644 (file)
@@ -122,9 +122,11 @@ class ClassLoadingInformationGenerator
             $finalAutoloadSection = $autoloadDefinition[$section];
         }
         if ($this->isDevMode) {
-            $autoloadDefinitionDev = json_decode(json_encode($manifest->{'autoload-dev'}), true);
-            if (!empty($autoloadDefinitionDev[$section]) && is_array($autoloadDefinitionDev[$section])) {
-                $finalAutoloadSection = array_merge($finalAutoloadSection, $autoloadDefinitionDev[$section]);
+            if (isset($manifest->{'autoload-dev'})) {
+                $autoloadDefinitionDev = json_decode(json_encode($manifest->{'autoload-dev'}), true);
+                if (!empty($autoloadDefinitionDev[$section]) && is_array($autoloadDefinitionDev[$section])) {
+                    $finalAutoloadSection = array_merge($finalAutoloadSection, $autoloadDefinitionDev[$section]);
+                }
             }
         }
 
index 18876a8..d179d60 100755 (executable)
@@ -141,7 +141,13 @@ class GeneralUtility
         if (empty($var)) {
             return;
         }
-        $value = isset($_POST[$var]) ? $_POST[$var] : $_GET[$var];
+        if (isset($_POST[$var])) {
+            $value = $_POST[$var];
+        } elseif (isset($_GET[$var])) {
+            $value = $_GET[$var];
+        } else {
+            $value = null;
+        }
         // This is there for backwards-compatibility, in order to avoid NULL
         if (isset($value) && !is_array($value)) {
             $value = (string)$value;
@@ -959,7 +965,7 @@ class GeneralUtility
         }
         // @todo find out which locale is used for current BE user to cover the BE case as well
         $oldLocale = setlocale(LC_NUMERIC, 0);
-        $newLocale = is_object($GLOBALS['TSFE']) ? $GLOBALS['TSFE']->config['config']['locale_all'] : '';
+        $newLocale = isset($GLOBALS['TSFE']) ? $GLOBALS['TSFE']->config['config']['locale_all'] : '';
         if ($newLocale) {
             setlocale(LC_NUMERIC, $newLocale);
         }
@@ -3469,8 +3475,9 @@ Connection: close
                 }
                 break;
             case 'HTTP_HOST':
-                $retVal = $_SERVER['HTTP_HOST'];
-                if (self::cmpIP($_SERVER['REMOTE_ADDR'], $GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyIP'])) {
+                // if it is not set we're most likely on the cli
+                $retVal = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : null;
+                if (isset($_SERVER['REMOTE_ADDR']) && static::cmpIP($_SERVER['REMOTE_ADDR'], $GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyIP'])) {
                     $host = self::trimExplode(',', $_SERVER['HTTP_X_FORWARDED_HOST']);
                     // Choose which host in list to use
                     if (!empty($host)) {
index 24dc7fd..27aad57 100644 (file)
@@ -28,7 +28,15 @@ class VersionNumberUtility
     public static function convertVersionNumberToInteger($versionNumber)
     {
         $versionParts = explode('.', $versionNumber);
-        return (int)(((int)$versionParts[0] . str_pad((int)$versionParts[1], 3, '0', STR_PAD_LEFT)) . str_pad((int)$versionParts[2], 3, '0', STR_PAD_LEFT));
+        $version = $versionParts[0];
+        for ($i = 1; $i < 3; $i++) {
+            if (!empty($versionParts[$i])) {
+                $version .= str_pad((int)$versionParts[$i], 3, '0', STR_PAD_LEFT);
+            } else {
+                $version .= '000';
+            }
+        }
+        return (int)$version;
     }
 
     /**
index 6558186..13e3d55 100644 (file)
@@ -33,6 +33,7 @@ class VersionNumberUtilityTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
             array('4003003', '4.3.3'),
             array('4012003', '4.12.3'),
             array('5000000', '5.0.0'),
+            array('5000001', '5.0.1'),
             array('3008001', '3.8.1'),
             array('1012', '0.1.12')
         );
index 09d1749..1fbbc94 100644 (file)
@@ -35,8 +35,8 @@ class IntegerFilterTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
             '"1" -> 1' => array('1', 1),
             '1 -> 1' => array(1, 1),
             '1.1 -> 1' => array(1.1, 1),
-            '1+E42 -> 1' => array(1+E42, 1),
-            'a -> 0' => array(a, 0),
+            '1+E42 -> 1' => array(1+'E42', 1),
+            'a -> 0' => array('a', 0),
             'a42 -> 0' => array('a42', 0),
             '-100.00 -> -100' => array(-100.00, -100),
         );