Completed
Pull Request — master (#80)
by
unknown
123:09 queued 58:07
created

RequestHandler::turnToArray()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 19
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 19
rs 9.4285
cc 3
eloc 15
nc 2
nop 2
1
<?php
2
3
/*
4
* This file is part of the ONGR package.
5
*
6
* (c) NFQ Technologies UAB <[email protected]>
7
*
8
* For the full copyright and license information, please view the LICENSE
9
* file that was distributed with this source code.
10
*/
11
12
namespace ONGR\TranslationsBundle\Service;
13
14
use Symfony\Component\HttpFoundation\Request;
15
16
/**
17
* Remakes requests to be compatible with TranslationManager.
18
*/
19
class RequestHandler
20
{
21
    /**
22
     * Remakes a request to have json content
23
     * of a single object. If there is a number of
24
     * locales associated with a request it returns an
25
     * array of new requests
26
     *
27
     * @param Request $request
28
     *
29
     * @return mixed
30
     */
31
    public function remakeRequest(Request $request)
32
    {
33
        $content = [];
34
        $content['name'] = $request->request->get('name');
35
        $content['properties'] = $request->request->get('properties');
36
        $content['id'] = $request->request->get('id');
37
        $content['findBy'] = $request->request->get('findBy');
38
        if ($request->request->has('locales')) {
39
            return $this->turnToArray($request, $content);
40
        }
41
        $content = json_encode($content);
42
        return new Request([], [], [], [], [], [], $content);
43
    }
44
45
    /**
46
     * Turns a request to an array of requests with json content
47
     *
48
     * @param Request $request
49
     * @param array $content
50
     *
51
     * @return array
52
     */
53
    private function turnToArray(Request $request, array $content)
54
    {
55
        $requests = [];
56
        $locales = $request->request->get('locales');
57
        $messages = $request->request->get('messages');
58
        $statuses = $request->request->get('statuses');
59
        $findBy = $request->request->get('findBy');
60
        foreach ($locales as $locale) {
61
            if ($messages[$locale] == '') {
62
                break;
63
            }
64
            $content['properties']['locale'] = $locale;
65
            $content['properties']['message'] = $messages[$locale];
66
            $content['properties']['status'] = $statuses[$locale];
67
            $content['findBy'] = $findBy[$locale];
68
            $requests[] = new Request([], [], [], [], [], [], json_encode($content));
69
        }
70
        return $requests;
71
    }
72
}
73