SignUp.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Analytics\Cron;
  7. use Magento\Analytics\Model\Config\Backend\Enabled\SubscriptionHandler;
  8. use Magento\Analytics\Model\Connector;
  9. use Magento\Framework\FlagManager;
  10. use Magento\Framework\App\Config\ReinitableConfigInterface;
  11. use Magento\Framework\App\Config\Storage\WriterInterface;
  12. /**
  13. * Cron class for the Advanced Reporting signup process
  14. */
  15. class SignUp
  16. {
  17. /**
  18. * @var Connector
  19. */
  20. private $connector;
  21. /**
  22. * @var WriterInterface
  23. */
  24. private $configWriter;
  25. /**
  26. * @var FlagManager
  27. */
  28. private $flagManager;
  29. /**
  30. * Reinitable Config Model.
  31. *
  32. * @var ReinitableConfigInterface
  33. */
  34. private $reinitableConfig;
  35. /**
  36. * @param Connector $connector
  37. * @param WriterInterface $configWriter
  38. * @param FlagManager $flagManager
  39. * @param ReinitableConfigInterface $reinitableConfig
  40. */
  41. public function __construct(
  42. Connector $connector,
  43. WriterInterface $configWriter,
  44. FlagManager $flagManager,
  45. ReinitableConfigInterface $reinitableConfig
  46. ) {
  47. $this->connector = $connector;
  48. $this->configWriter = $configWriter;
  49. $this->flagManager = $flagManager;
  50. $this->reinitableConfig = $reinitableConfig;
  51. }
  52. /**
  53. * Execute scheduled subscription operation
  54. * In case of failure writes message to notifications inbox
  55. *
  56. * @return bool
  57. */
  58. public function execute()
  59. {
  60. $attemptsCount = $this->flagManager->getFlagData(SubscriptionHandler::ATTEMPTS_REVERSE_COUNTER_FLAG_CODE);
  61. if (($attemptsCount === null) || ($attemptsCount <= 0)) {
  62. $this->deleteAnalyticsCronExpr();
  63. $this->flagManager->deleteFlag(SubscriptionHandler::ATTEMPTS_REVERSE_COUNTER_FLAG_CODE);
  64. return false;
  65. }
  66. $attemptsCount -= 1;
  67. $this->flagManager->saveFlag(SubscriptionHandler::ATTEMPTS_REVERSE_COUNTER_FLAG_CODE, $attemptsCount);
  68. $signUpResult = $this->connector->execute('signUp');
  69. if ($signUpResult === false) {
  70. return false;
  71. }
  72. $this->deleteAnalyticsCronExpr();
  73. $this->flagManager->deleteFlag(SubscriptionHandler::ATTEMPTS_REVERSE_COUNTER_FLAG_CODE);
  74. return true;
  75. }
  76. /**
  77. * Delete cron schedule setting into config.
  78. *
  79. * Delete cron schedule setting for subscription handler into config and
  80. * re-initialize config cache to avoid auto-generate new schedule items.
  81. *
  82. * @return bool
  83. */
  84. private function deleteAnalyticsCronExpr()
  85. {
  86. $this->configWriter->delete(SubscriptionHandler::CRON_STRING_PATH);
  87. $this->reinitableConfig->reinit();
  88. return true;
  89. }
  90. }