Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
CustomFieldsEncoderJson
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 3
42
0.00% covered (danger)
0.00%
0 / 1
 encode
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 decode
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
20
 getType
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Satag\AmicronEntityBundle\Util\CustomFields;
6
7class CustomFieldsEncoderJson extends AbstractCustomFieldsEncoder
8{
9    /**
10     * @throws \JsonException
11     */
12    public function encode(string $originalString, array $dataToEmbed): string
13    {
14        $jsonstring = json_encode($dataToEmbed, \JSON_PRETTY_PRINT | \JSON_THROW_ON_ERROR);
15
16        return $this->upsertBlock($jsonstring, $originalString);
17    }
18
19    public function decode(string $rawString): array
20    {
21        $codeblock = trim($this->getBlock($rawString));
22        if ($codeblock === '') {
23            return [];
24        }
25
26        try {
27            $return = json_decode($codeblock, true, 512, \JSON_THROW_ON_ERROR);
28        } catch (\JsonException) {
29            // Repariert Backslashes, die kein gültiges JSON-Escape einleiten
30            $fixed = (string) preg_replace('/\\\\(?!["\\\\\\/bfnrtu])/', '\\\\\\\\', $codeblock);
31
32            $return = json_decode($fixed, true, 512, \JSON_THROW_ON_ERROR);
33        }
34
35        return \is_array($return) ? $return : [];
36    }
37
38    public function getType(): string
39    {
40        return 'json';
41    }
42}