infinito/application/symfony/src/DataFixtures/SourceFixtures.php

80 lines
2.3 KiB
PHP
Raw Normal View History

2018-11-23 22:09:29 +01:00
<?php
namespace App\DataFixtures;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use App\Entity\Source\Primitive\Text\TextSource;
use App\Entity\Source\Primitive\Text\TextSourceInterface;
use App\DBAL\Types\SystemSlugType;
use App\Entity\Source\Complex\UserSource;
use App\Entity\Source\Complex\UserSourceInterface;
use App\Entity\Meta\Right;
2019-01-05 17:27:40 +01:00
use App\DBAL\Types\Meta\Right\LayerType;
use App\DBAL\Types\Meta\Right\CRUDType;
use App\Entity\Meta\RightInterface;
use App\Domain\SourceManagement\SourceRightManager;
2018-11-23 22:09:29 +01:00
/**
* @author kevinfrantz
*
* @todo Create a collection class for all users
*/
2018-11-23 22:09:29 +01:00
class SourceFixtures extends Fixture
{
/**
* @var TextSourceInterface The example source for the impressum
*/
private $impressumSource;
/**
* @var UserSourceInterface The UserSource which should be used for the anonymous user
*/
private $guestUserSource;
/**
* {@inheritdoc}
*
* @see \Doctrine\Common\DataFixtures\FixtureInterface::load()
*/
2018-11-23 22:09:29 +01:00
public function load(ObjectManager $manager)
{
$this->setGuestUserSource();
$this->setImpressumSource();
$manager->persist($this->impressumSource);
$manager->persist($this->getImpressumRight());
$manager->persist($this->guestUserSource);
2018-11-23 22:09:29 +01:00
$manager->flush();
}
private function setImpressumSource(): void
2018-11-23 22:09:29 +01:00
{
$this->impressumSource = new TextSource();
$this->impressumSource->setText('Example Impressum');
$this->impressumSource->setSlug(SystemSlugType::IMPRINT);
2018-11-23 22:09:29 +01:00
}
/**
* @todo Implement that right gets automaticly created by persisting of law
*
* @return RightInterface
*/
private function getImpressumRight(): RightInterface
{
$right = new Right();
$sourceRightManager = new SourceRightManager($this->impressumSource);
$sourceRightManager->addRight($right);
$right->setLayer(LayerType::SOURCE);
2019-01-16 21:22:18 +01:00
$right->setCrud(CRUDType::READ);
$right->setReciever($this->guestUserSource);
return $right;
}
private function setGuestUserSource(): void
{
$this->guestUserSource = new UserSource();
$this->guestUserSource->setSlug(SystemSlugType::GUEST_USER);
}
2018-11-23 22:09:29 +01:00
}