diff --git a/application/Espo/Core/Formula/Functions/ArrayGroup/JoinType.php b/application/Espo/Core/Formula/Functions/ArrayGroup/JoinType.php new file mode 100644 index 0000000000..25a23e9c9b --- /dev/null +++ b/application/Espo/Core/Formula/Functions/ArrayGroup/JoinType.php @@ -0,0 +1,59 @@ +throwTooFewArguments(); + } + + $list = $this->evaluate($args[0]); + + $separator = $this->evaluate($args[1]); + + if (!is_string($separator)) { + $this->throwBadArgumentValue(2, 'string'); + } + + if (is_null($list)) { + return ''; + } + + return implode($separator, $list); + } +} diff --git a/tests/unit/Espo/Core/Formula/EvaluatorTest.php b/tests/unit/Espo/Core/Formula/EvaluatorTest.php index 08b3b70142..938fa70da0 100644 --- a/tests/unit/Espo/Core/Formula/EvaluatorTest.php +++ b/tests/unit/Espo/Core/Formula/EvaluatorTest.php @@ -29,8 +29,6 @@ namespace tests\unit\Espo\Core\Formula; -use Espo\ORM\Entity; - use Espo\Core\Formula\Evaluator; use Espo\Core\InjectableFactory; @@ -183,6 +181,17 @@ class EvaluatorTest extends \PHPUnit\Framework\TestCase $this->assertEquals(4, $actual); } + public function testArrayJoin() + { + $expression = "array\\join(list('0', '1'), '-')"; + + $expected = '0-1'; + + $actual = $this->evaluator->process($expression); + + $this->assertEquals($expected, $actual); + } + public function testWhile() { $expression = "