configWriter = $configWriter; $this->flagManager = $flagManager; $this->analyticsToken = $analyticsToken; $this->reinitableConfig = $reinitableConfig; } /** * Processing of activation MBI subscription. * * Activate process of subscription handling if Analytics token is not received. * * @return bool */ public function processEnabled() { if (!$this->analyticsToken->isTokenExist()) { $this->setCronSchedule(); $this->setAttemptsFlag(); $this->reinitableConfig->reinit(); } return true; } /** * Set cron schedule setting into config for activation of subscription process. * * @return bool */ private function setCronSchedule() { $this->configWriter->save(self::CRON_STRING_PATH, join(' ', self::CRON_EXPR_ARRAY)); return true; } /** * Set flag as reserve counter of attempts subscription operation. * * @return bool */ private function setAttemptsFlag() { return $this->flagManager ->saveFlag(self::ATTEMPTS_REVERSE_COUNTER_FLAG_CODE, $this->attemptsInitValue); } /** * Processing of deactivation MBI subscription. * * Disable data collection * and interrupt subscription handling if Analytics token is not received. * * @return bool */ public function processDisabled() { $this->disableCollectionData(); if (!$this->analyticsToken->isTokenExist()) { $this->unsetAttemptsFlag(); } return true; } /** * Unset flag of attempts subscription operation. * * @return bool */ private function unsetAttemptsFlag() { return $this->flagManager ->deleteFlag(self::ATTEMPTS_REVERSE_COUNTER_FLAG_CODE); } /** * Unset schedule of collection data cron. * * @return bool */ private function disableCollectionData() { $this->configWriter->delete(CollectionTime::CRON_SCHEDULE_PATH); return true; } }