FlagManager.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework;
  7. use Magento\Framework\Flag\FlagResource;
  8. /**
  9. * Service that allows to handle a flag object as a scalar value.
  10. */
  11. class FlagManager
  12. {
  13. /**
  14. * The factory of flags.
  15. *
  16. * @var FlagFactory
  17. * @see Flag
  18. */
  19. private $flagFactory;
  20. /**
  21. * The flag resource.
  22. *
  23. * @var FlagResource
  24. */
  25. private $flagResource;
  26. /**
  27. *
  28. * @param FlagFactory $flagFactory The factory of flags
  29. * @param FlagResource $flagResource The flag resource
  30. */
  31. public function __construct(
  32. FlagFactory $flagFactory,
  33. FlagResource $flagResource
  34. ) {
  35. $this->flagFactory = $flagFactory;
  36. $this->flagResource = $flagResource;
  37. }
  38. /**
  39. * Retrieves raw data from the flag.
  40. *
  41. * @param string $code The code of flag
  42. * @return string|int|float|bool|array|null
  43. */
  44. public function getFlagData($code)
  45. {
  46. return $this->getFlagObject($code)->getFlagData();
  47. }
  48. /**
  49. * Saves the flag value by code.
  50. *
  51. * @param string $code The code of flag
  52. * @param string|int|float|bool|array|null $value The value of flag
  53. * @return bool
  54. */
  55. public function saveFlag($code, $value)
  56. {
  57. $flag = $this->getFlagObject($code);
  58. $flag->setFlagData($value);
  59. $this->flagResource->save($flag);
  60. return true;
  61. }
  62. /**
  63. * Deletes the flag by code.
  64. *
  65. * @param string $code The code of flag
  66. * @return bool
  67. */
  68. public function deleteFlag($code)
  69. {
  70. $flag = $this->getFlagObject($code);
  71. if ($flag->getId()) {
  72. $this->flagResource->delete($flag);
  73. }
  74. return true;
  75. }
  76. /**
  77. * Returns flag object
  78. *
  79. * @param string $code
  80. * @return Flag
  81. */
  82. private function getFlagObject($code)
  83. {
  84. /** @var Flag $flag */
  85. $flag = $this->flagFactory->create(['data' => ['flag_code' => $code]]);
  86. $this->flagResource->load(
  87. $flag,
  88. $code,
  89. 'flag_code'
  90. );
  91. return $flag;
  92. }
  93. }