SubscriptionUpdateHandler.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Analytics\Model\Config\Backend\Baseurl;
  7. use Magento\Analytics\Model\AnalyticsToken;
  8. use Magento\Framework\App\Config\ReinitableConfigInterface;
  9. use Magento\Framework\App\Config\Storage\WriterInterface;
  10. use Magento\Framework\FlagManager;
  11. /**
  12. * Class for processing of change of Base URL.
  13. */
  14. class SubscriptionUpdateHandler
  15. {
  16. /**
  17. * Flag code for a reserve counter to update subscription.
  18. */
  19. const SUBSCRIPTION_UPDATE_REVERSE_COUNTER_FLAG_CODE = 'analytics_link_subscription_update_reverse_counter';
  20. /**
  21. * Config path for schedule setting of update handler.
  22. */
  23. const UPDATE_CRON_STRING_PATH = "crontab/default/jobs/analytics_update/schedule/cron_expr";
  24. /**
  25. * Flag code for the previous Base URL.
  26. */
  27. const PREVIOUS_BASE_URL_FLAG_CODE = 'analytics_previous_base_url';
  28. /**
  29. * Max value for a reserve counter to update subscription.
  30. *
  31. * @var int
  32. */
  33. private $attemptsInitValue = 48;
  34. /**
  35. * @var WriterInterface
  36. */
  37. private $configWriter;
  38. /**
  39. * Cron expression for a update handler.
  40. *
  41. * @var string
  42. */
  43. private $cronExpression = '0 * * * *';
  44. /**
  45. * @var FlagManager
  46. */
  47. private $flagManager;
  48. /**
  49. * @var ReinitableConfigInterface
  50. */
  51. private $reinitableConfig;
  52. /**
  53. * @var AnalyticsToken
  54. */
  55. private $analyticsToken;
  56. /**
  57. * @param AnalyticsToken $analyticsToken
  58. * @param FlagManager $flagManager
  59. * @param ReinitableConfigInterface $reinitableConfig
  60. * @param WriterInterface $configWriter
  61. */
  62. public function __construct(
  63. AnalyticsToken $analyticsToken,
  64. FlagManager $flagManager,
  65. ReinitableConfigInterface $reinitableConfig,
  66. WriterInterface $configWriter
  67. ) {
  68. $this->analyticsToken = $analyticsToken;
  69. $this->flagManager = $flagManager;
  70. $this->reinitableConfig = $reinitableConfig;
  71. $this->configWriter = $configWriter;
  72. }
  73. /**
  74. * Activate process of subscription update handling.
  75. *
  76. * @param string $url
  77. * @return bool
  78. */
  79. public function processUrlUpdate(string $url)
  80. {
  81. if ($this->analyticsToken->isTokenExist()) {
  82. if (!$this->flagManager->getFlagData(self::PREVIOUS_BASE_URL_FLAG_CODE)) {
  83. $this->flagManager->saveFlag(self::PREVIOUS_BASE_URL_FLAG_CODE, $url);
  84. }
  85. $this->flagManager
  86. ->saveFlag(self::SUBSCRIPTION_UPDATE_REVERSE_COUNTER_FLAG_CODE, $this->attemptsInitValue);
  87. $this->configWriter->save(self::UPDATE_CRON_STRING_PATH, $this->cronExpression);
  88. $this->reinitableConfig->reinit();
  89. }
  90. return true;
  91. }
  92. }