vendor/roothirsch/core-bundle/FeatureFlag/DatabaseActivator.php line 44

Open in your IDE?
  1. <?php
  2. namespace Roothirsch\CoreBundle\FeatureFlag;
  3. use Roothirsch\CoreBundle\FeatureFlag\Entity\FeatureFlag;
  4. use Roothirsch\CoreBundle\FeatureFlag\Repository\FeatureFlagRepository;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Flagception\Activator\FeatureActivatorInterface;
  7. use Flagception\Model\Context;
  8. class DatabaseActivator implements FeatureActivatorInterface
  9. {
  10. /**
  11. * @var FeatureFlagRepository
  12. */
  13. private $repository;
  14. /**
  15. * @var EntityManagerInterface
  16. */
  17. private $entityManager;
  18. public function __construct(FeatureFlagRepository $repository, EntityManagerInterface $entityManager)
  19. {
  20. $this->repository = $repository;
  21. $this->entityManager = $entityManager;
  22. }
  23. /**
  24. * {@inheritdoc}
  25. */
  26. public function getName()
  27. {
  28. return 'database';
  29. }
  30. /**
  31. * @var string $name The requested feature name (eg. 'feature_123')
  32. * @var Context $context The context object which all key / values
  33. */
  34. public function isActive($name, Context $context)
  35. {
  36. $featureFlag = $this->repository->findOneBy(['name' => $name]);
  37. if ($featureFlag === null) {
  38. $featureFlag = new FeatureFlag($name);
  39. $this->entityManager->persist($featureFlag);
  40. $this->entityManager->flush();
  41. }
  42. return $featureFlag->getState() === true;
  43. }
  44. }