Completed
Push — master ( 6cae80...ac9c80 )
by Tomáš
04:55
created

DBLoader::load()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 20
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 20
ccs 0
cts 10
cp 0
rs 9.4285
c 1
b 0
f 0
cc 2
eloc 10
nc 2
nop 3
crap 6
1
<?php
2
3
namespace Webcook\Cms\I18nBundle\Loader;
4
5
use Symfony\Component\Translation\Loader\LoaderInterface;
6
use Symfony\Component\Translation\MessageCatalogue;
7
use Doctrine\Common\Persistence\ObjectManager;
8
9
class DBLoader implements LoaderInterface
10
{
11
    private $translationsRepository;
12
13
    private $languageRepository;
14
 
15
    /**
16
     * @param ObjectManager $entityManager
17
     */
18 1
    public function __construct(ObjectManager $entityManager)
19
    {
20 1
        $this->translationsRepository = $entityManager->getRepository("Webcook\Cms\I18nBundle\Entity\Translation");
21 1
        $this->languageRepository     = $entityManager->getRepository("Webcook\Cms\I18nBundle\Entity\Language");
22 1
    }
23
 
24
    public function load($resource, $locale, $domain = 'messages')
25
    {
26
        // TODO write just one query join on locale
27
        $language = $this->languageRepository->findOneBy(array(
28
            'locale' => $locale
29
        ));
30
31
        $translations = $this->translationsRepository->findBy(array(
32
            'language'  => $language,
33
            'catalogue' => $domain
34
        ));
35
 
36
        $catalogue = new MessageCatalogue($locale);
37
 
38
        foreach ($translations as $translation) {
39
            $catalogue->set($translation->getKey(), $translation->getTranslation(), $domain);
40
        }
41
 
42
        return $catalogue;
43
    }
44
}
45