<?php
namespace Roothirsch\CoreBundle\FeatureFlag;
use Roothirsch\CoreBundle\FeatureFlag\Entity\FeatureFlag;
use Roothirsch\CoreBundle\FeatureFlag\Repository\FeatureFlagRepository;
use Doctrine\ORM\EntityManagerInterface;
use Flagception\Activator\FeatureActivatorInterface;
use Flagception\Model\Context;
class DatabaseActivator implements FeatureActivatorInterface
{
/**
* @var FeatureFlagRepository
*/
private $repository;
/**
* @var EntityManagerInterface
*/
private $entityManager;
public function __construct(FeatureFlagRepository $repository, EntityManagerInterface $entityManager)
{
$this->repository = $repository;
$this->entityManager = $entityManager;
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'database';
}
/**
* @var string $name The requested feature name (eg. 'feature_123')
* @var Context $context The context object which all key / values
*/
public function isActive($name, Context $context)
{
$featureFlag = $this->repository->findOneBy(['name' => $name]);
if ($featureFlag === null) {
$featureFlag = new FeatureFlag($name);
$this->entityManager->persist($featureFlag);
$this->entityManager->flush();
}
return $featureFlag->getState() === true;
}
}