SimpleNetteStorage::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 3
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
namespace l10nNetteTranslator\Storage;
3
4
use l10n\Translator\Translator;
5
use Nette\InvalidStateException;
6
7
class SimpleNetteStorage implements IStorage {
8
	/** @var \Nette\Caching\IStorage */
9
	protected $storage;
10
11
	/** @var \l10nNetteTranslator\Translator */
12
	protected $translator;
13
14
	/**
15
	 * @param \Nette\Caching\IStorage $storage
16
	 */
17 5
	public function __construct(\Nette\Caching\IStorage $storage) {
18 5
		$this->storage = $storage;
19 5
	}
20
21
	/**
22
	 * @param \l10nNetteTranslator\Translator $translator
23
	 */
24 1
	public function setTranslator(\l10nNetteTranslator\Translator $translator) {
25 1
		$this->translator = $translator;
26 1
	}
27
28
	/**
29
	 * @return \l10nNetteTranslator\Translator
30
	 * @throws InvalidStateException
31
	 */
32 2
	public function getTranslator() {
33 2
		if (!($this->translator instanceof \l10nNetteTranslator\Translator)) {
34 1
			throw new InvalidStateException('l10nNetteTranslator\Translator is not set');
35
		}
36
37 1
		return $this->translator;
38
	}
39
40
	/**
41
	 * @return \l10n\Language\ILanguage
42
	 */
43 1
	protected function getLanguage() {
44 1
		$translator = $this->getTranslator();
45 1
		$language_and_plural = $translator->getActiveLanguageAndPlural();
46 1
		$language = $language_and_plural->getLanguage();
47
48 1
		return $language;
49
	}
50
51
	/**
52
	 * @param \l10n\Translator\Translator $translator
53
	 */
54 1
	public function load(Translator $translator) {
55 1
		$language = $this->getLanguage();
56
57 1
		$data = $this->storage->read($language->getIso639_1()) ?: [];
58
59 1
		if ($data) {
60 1
			foreach ($data['untranslated'] ?: [] as $key => $texts) {
61 1
				foreach ($texts as $plural => $_) {
62 1
					$translator->setUntranslated($key, $plural);
63 1
				}
64 1
			}
65
66 1
			foreach ($data['translated'] ?: [] as $key => $texts) {
67 1
				foreach ($texts as $plural => $text) {
68 1
					$translator->setText($key, $text, $plural);
69 1
				}
70 1
			}
71 1
		}
72 1
	}
73
74
	/**
75
	 * @param \l10n\Translator\Translator $translator
76
	 */
77 1
	public function save(Translator $translator) {
78 1
		$language = $this->getLanguage();
79
80 1
		$this->storage->write(
81 1
			$language->getIso639_1(),
82
			[
83 1
				'translated'   => $translator->getTranslated(),
84 1
				'untranslated' => $translator->getUntranslated()
85 1
			],
86 1
			[]
87 1
		);
88 1
	}
89
}
90