Completed
Push — master ( 06c1ce...67d37c )
by Jeroen
06:20
created

DataFixtures/ORM/TranslationFixtures.php (1 issue)

assigning incompatible types to properties.

Bug Documentation Major

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\TranslatorBundle\DataFixtures\ORM;
4
5
use Doctrine\Common\DataFixtures\AbstractFixture;
6
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
7
use Doctrine\Common\Persistence\ObjectManager;
8
use Kunstmaan\TranslatorBundle\Entity\Translation as Entity;
9
use Kunstmaan\TranslatorBundle\Model\Translation as Model;
10
11
/**
12
 * Fixture for creation the basic translations
13
 */
14
class TranslationFixtures extends AbstractFixture implements OrderedFixtureInterface
15
{
16
    /**
17
     * @var Kunstmaan\TranslatorBundle\Repository\TranslationRepository
18
     */
19
    protected $repo;
20
21
    /**
22
     * Load data fixtures with the passed EntityManager
23
     *
24
     * @param ObjectManager $manager
25
     */
26
    public function load(ObjectManager $manager)
27
    {
28
        $this->repo = $manager->getRepository('Kunstmaan\TranslatorBundle\Entity\Translation');
0 ignored issues
show
Documentation Bug introduced by
It seems like $manager->getRepository(...\\Entity\\Translation') of type object<Doctrine\Persistence\ObjectRepository> is incompatible with the declared type object<Kunstmaan\Transla...\TranslationRepository> of property $repo.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
29
30
        $helloWorld = new Model();
31
        $helloWorld->setKeyword('heading.hello_world');
32
        $helloWorld->setDomain('messages');
33
34
        $translations = array(
35
            'en' => 'Hello World!',
36
            'fr' => 'Bonjour tout le monde',
37
            'nl' => 'Hallo wereld!',
38
        );
39
40
        $needForFlush = false;
41
        foreach ($translations as $language => $text) {
42
            if ($this->hasFixtureInstalled('messages', 'heading.hello_world', $language)) {
43
                continue;
44
            }
45
46
            $helloWorld->addText($language, $text);
47
            $needForFlush = true;
48
        }
49
50
        $this->repo->createTranslations($helloWorld);
51
52
        if ($needForFlush === true) {
53
            $manager->flush();
54
        }
55
    }
56
57
    /**
58
     * Checks if the specified translation is installed.
59
     *
60
     * @param string $domain
61
     * @param string $keyword
62
     * @param string $locale
63
     *
64
     * @return bool
65
     */
66
    public function hasFixtureInstalled($domain, $keyword, $locale)
67
    {
68
        $criteria = array('domain' => $domain, 'keyword' => $keyword, 'locale' => $locale);
69
70
        return $this->repo->findOneBy($criteria) instanceof Entity;
71
    }
72
73
    /**
74
     * Get the order of this fixture
75
     *
76
     * @return int
77
     */
78
    public function getOrder()
79
    {
80
        return 1;
81
    }
82
}
83