Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SubscriptionHandler.php
Go to the documentation of this file.
1 <?php
7 
13 
18 {
22  const ATTEMPTS_REVERSE_COUNTER_FLAG_CODE = 'analytics_link_attempts_reverse_counter';
23 
27  const CRON_STRING_PATH = 'crontab/default/jobs/analytics_subscribe/schedule/cron_expr';
28 
32  const CRON_EXPR_ARRAY = [
33  '0', # Minute
34  '*', # Hour
35  '*', # Day of the Month
36  '*', # Month of the Year
37  '*', # Day of the Week
38  ];
39 
45  private $attemptsInitValue = 24;
46 
52  private $configWriter;
53 
59  private $flagManager;
60 
66  private $analyticsToken;
67 
71  private $reinitableConfig;
72 
79  public function __construct(
80  WriterInterface $configWriter,
81  FlagManager $flagManager,
82  AnalyticsToken $analyticsToken,
83  ReinitableConfigInterface $reinitableConfig
84  ) {
85  $this->configWriter = $configWriter;
86  $this->flagManager = $flagManager;
87  $this->analyticsToken = $analyticsToken;
88  $this->reinitableConfig = $reinitableConfig;
89  }
90 
98  public function processEnabled()
99  {
100  if (!$this->analyticsToken->isTokenExist()) {
101  $this->setCronSchedule();
102  $this->setAttemptsFlag();
103  $this->reinitableConfig->reinit();
104  }
105 
106  return true;
107  }
108 
114  private function setCronSchedule()
115  {
116  $this->configWriter->save(self::CRON_STRING_PATH, join(' ', self::CRON_EXPR_ARRAY));
117  return true;
118  }
119 
125  private function setAttemptsFlag()
126  {
127  return $this->flagManager
128  ->saveFlag(self::ATTEMPTS_REVERSE_COUNTER_FLAG_CODE, $this->attemptsInitValue);
129  }
130 
139  public function processDisabled()
140  {
141  $this->disableCollectionData();
142 
143  if (!$this->analyticsToken->isTokenExist()) {
144  $this->unsetAttemptsFlag();
145  }
146 
147  return true;
148  }
149 
155  private function unsetAttemptsFlag()
156  {
157  return $this->flagManager
158  ->deleteFlag(self::ATTEMPTS_REVERSE_COUNTER_FLAG_CODE);
159  }
160 
166  private function disableCollectionData()
167  {
168  $this->configWriter->delete(CollectionTime::CRON_SCHEDULE_PATH);
169 
170  return true;
171  }
172 }
__construct(WriterInterface $configWriter, FlagManager $flagManager, AnalyticsToken $analyticsToken, ReinitableConfigInterface $reinitableConfig)