Completed
Push — feature/fix-somescrutinizer-is... ( 840c34...8bd6e3 )
by Narcotic
15:02 queued 08:41
created

DoctrineODMLoader::setRepository()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
/**
3
 * Load translation string from a doctrine-odm repository
4
 */
5
6
namespace Graviton\I18nBundle\Translation\Loader;
7
8
use Symfony\Component\Translation\MessageCatalogue;
9
use Symfony\Component\Translation\Loader\LoaderInterface;
10
use Doctrine\ODM\MongoDB\DocumentRepository;
11
use Symfony\Component\Config\Resource\FileResource;
12
13
/**
14
 * Load translation string from a doctrine-odm repository
15
 *
16
 * @author   List of contributors <https://github.com/libgraviton/graviton/graphs/contributors>
17
 * @license  http://opensource.org/licenses/gpl-license.php GNU Public License
18
 * @link     http://swisscom.ch
19
 */
20
class DoctrineODMLoader implements LoaderInterface
21
{
22
    /**
23
     * @var DocumentRepository
24
     */
25
    private $repository;
26
27
    /**
28
     * set repo
29
     *
30
     * @param DocumentRepository $repository repo
31
     *
32
     * @return void
33
     */
34 1
    public function setRepository(DocumentRepository $repository)
35
    {
36 1
        $this->repository = $repository;
37 1
    }
38
39
    /**
40
     * get repo
41
     *
42
     * @return DocumentRepository
43
     */
44
    public function getRepository()
45
    {
46
        return $this->repository;
47
    }
48
49
    /**
50
     * {@inheritDoc}
51
     *
52
     * @param mixed  $resource resource
53
     * @param string $locale   locale name
54
     * @param string $domain   message domain
55
     *
56
     * @return MessageCatalogue
57
     */
58
    public function load($resource, $locale, $domain = 'messages')
59
    {
60
        $repository = $this->getRepository();
61
        $messages = $repository->findBy(array('domain' => $domain, 'locale' => $locale, 'isLocalized' => true));
62
63
        $catalogue = new MessageCatalogue($locale);
64
65
        array_walk(
66
            $messages,
67
            function ($message) use ($catalogue) {
68
                $catalogue->set((string) $message->getOriginal(), $message->getTranslated(), $message->getDomain());
69
            }
70
        );
71
72
        $catalogue->addResource(new FileResource($resource));
73
74
        return $catalogue;
75
    }
76
}
77