From 921da2888468d9c110dc7eeb3283f406e5f30aed Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Mon, 27 Jul 2020 03:43:21 +0000 Subject: [PATCH] [FORM] Add DataTransformer to and from array --- src/Util/Form/ArrayTransformer.php | 70 ++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/Util/Form/ArrayTransformer.php diff --git a/src/Util/Form/ArrayTransformer.php b/src/Util/Form/ArrayTransformer.php new file mode 100644 index 0000000000..48c23c7499 --- /dev/null +++ b/src/Util/Form/ArrayTransformer.php @@ -0,0 +1,70 @@ +. +// }}} + +/** + * Handle network public feed + * + * @package GNUsocial + * @category Controller + * + * @author Hugo Sales + * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later + */ + +namespace App\Util\Form; + +use App\Util\Formatting; +use Symfony\Component\Form\DataTransformerInterface; +use Symfony\Component\Form\Exception\TransformationFailedException; + +class ArrayTransformer implements DataTransformerInterface +{ + /** + * Array to string, but can't use type annotations + * + * @param mixed $a + */ + public function transform($a) + { + if (!is_array($a)) { + throw new TransformationFailedException(); + } + return Formatting::toString($a, Formatting::SPLIT_BY_SPACE); + } + + /** + * String to array, but can't use type annotations + * + * @param mixed $s + */ + public function reverseTransform($s) + { + if (empty($s)) { + return []; + } + + $arr; + if (is_string($s) && Formatting::toArray($s, $arr, Formatting::SPLIT_BY_BOTH)) { + return $arr; + } else { + throw new TransformationFailedException(); + } + } +}