Нет описания

FeatureFlags.php 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace MailPoet\API\JSON\v1;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\API\JSON\Endpoint as APIEndpoint;
  5. use MailPoet\API\JSON\Error as APIError;
  6. use MailPoet\Config\AccessControl;
  7. use MailPoet\Features\FeatureFlagsController;
  8. use MailPoet\Features\FeaturesController;
  9. class FeatureFlags extends APIEndpoint {
  10. public $permissions = [
  11. 'global' => AccessControl::PERMISSION_MANAGE_FEATURES,
  12. ];
  13. /** @var FeaturesController */
  14. private $featuresController;
  15. /** @var FeatureFlagsController */
  16. private $featureFlagsController;
  17. public function __construct(
  18. FeaturesController $featuresController,
  19. FeatureFlagsController $featureFlags
  20. ) {
  21. $this->featuresController = $featuresController;
  22. $this->featureFlagsController = $featureFlags;
  23. }
  24. public function getAll() {
  25. $featureFlags = $this->featureFlagsController->getAll();
  26. return $this->successResponse($featureFlags);
  27. }
  28. public function set(array $flags) {
  29. foreach ($flags as $name => $value) {
  30. if (!$this->featuresController->exists($name)) {
  31. return $this->badRequest([
  32. APIError::BAD_REQUEST => "Feature '$name' does not exist'",
  33. ]);
  34. }
  35. }
  36. foreach ($flags as $name => $value) {
  37. $this->featureFlagsController->set($name, (bool)$value);
  38. }
  39. return $this->successResponse([]);
  40. }
  41. }