From 1c83c6477a1c10920a2c6deb09d350d94ca871f3 Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Wed, 24 Jun 2015 19:22:38 +0200 Subject: [PATCH] Added `readStringArray()` --- .../AbstractDatabaseObjectAction.class.php | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/wcfsetup/install/files/lib/data/AbstractDatabaseObjectAction.class.php b/wcfsetup/install/files/lib/data/AbstractDatabaseObjectAction.class.php index 7ba3107252..26c5ac1f29 100644 --- a/wcfsetup/install/files/lib/data/AbstractDatabaseObjectAction.class.php +++ b/wcfsetup/install/files/lib/data/AbstractDatabaseObjectAction.class.php @@ -448,6 +448,17 @@ abstract class AbstractDatabaseObjectAction implements IDatabaseObjectAction, ID $this->readValue($variableName, $allowEmpty, $arrayIndex, self::TYPE_STRING, self::STRUCT_FLAT); } + /** + * Reads a string array and validates it. + * + * @param string $variableName + * @param boolean $allowEmpty + * @param string $arrayIndex + */ + protected function readStringArray($variableName, $allowEmpty = false, $arrayIndex = '') { + $this->readValue($variableName, $allowEmpty, $arrayIndex, self::TYPE_STRING, self::STRUCT_ARRAY); + } + /** * Reads a boolean value and validates it. * @@ -528,16 +539,30 @@ abstract class AbstractDatabaseObjectAction implements IDatabaseObjectAction, ID case self::TYPE_STRING: if (!isset($target[$variableName])) { if ($allowEmpty) { - $target[$variableName] = ''; + $target[$variableName] = ($structure === self::STRUCT_FLAT) ? '' : array(); } else { throw new UserInputException($variableName); } } else { - $target[$variableName] = StringUtil::trim($target[$variableName]); - if (!$allowEmpty && empty($target[$variableName])) { - throw new UserInputException($variableName); + if ($structure === self::STRUCT_FLAT) { + $target[$variableName] = StringUtil::trim($target[$variableName]); + if (!$allowEmpty && empty($target[$variableName])) { + throw new UserInputException($variableName); + } + } + else { + $target[$variableName] = ArrayUtil::trim($target[$variableName]); + if (!is_array($target[$variableName])) { + throw new UserInputException($variableName); + } + + for ($i = 0, $length = count($target[$variableName]); $i < $length; $i++) { + if (empty($target[$variableName][$i])) { + throw new UserInputException($variableName); + } + } } } break; -- 2.20.1