TranslationsExporter::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php namespace Modules\Translation\Exporters;
2
3
use League\Csv\Writer;
4
use Modules\Translation\Services\TranslationsService;
5
use SplTempFileObject;
6
7
class TranslationsExporter
8
{
9
    /**
10
     * @var TranslationsService
11
     */
12
    private $translations;
13
    private $filename = 'translations_';
14
15
    public function __construct(TranslationsService $translations)
16
    {
17
        $this->translations = $translations;
18
    }
19
20
    public function export()
21
    {
22
        $data = $this->formatData();
23
        $keys = array_keys($data[0]);
24
25
        $csv = Writer::createFromFileObject(new SplTempFileObject());
26
        $csv->insertOne($keys);
27
        $csv->insertAll($data);
28
29
        return (string) $csv;
30
    }
31
32
    /**
33
     * @return string
34
     */
35
    public function getFileName()
36
    {
37
        return $this->filename . time() . '.csv';
38
    }
39
40
    /**
41
     * @return array
42
     */
43
    private function formatData()
44
    {
45
        $translations = $this->translations->getFileAndDatabaseMergedTranslations();
46
        $translations = $translations->all();
47
48
        $data = [];
49
        foreach ($translations as $key => $translation) {
50
            $data[] = array_merge(['key' => $key], $translation);
51
        }
52
53
        return $data;
54
    }
55
}
56