SimpleNetteStorage   A
last analyzed

Complexity

Total Complexity 15

Size/Duplication

Total Lines 83
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 15
c 1
b 0
f 0
lcom 1
cbo 6
dl 0
loc 83
ccs 41
cts 41
cp 1
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A setTranslator() 0 3 1
A getTranslator() 0 7 2
A getLanguage() 0 7 1
B load() 0 19 9
A save() 0 12 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