reporter = $reporter; } /** @return array */ function generateAnalytics() { if($this->shouldSend()) { $data = $this->reporter->getData(); $this->recordDataSent(); return $data; } } /** @return boolean */ function isEnabled() { $analytics_settings = Setting::getValue('analytics', array()); return ($analytics_settings["enabled"] === "1") || ($analytics_settings["enabled"] === "true"); } private function shouldSend() { if(!$this->isEnabled()) { return false; } $lastSent = Setting::getValue(Analytics::SETTINGS_LAST_SENT_KEY); if(!$lastSent) { return true; } $lastSentCarbon = Carbon::createFromTimestamp(strtotime($lastSent))->addDays(Analytics::SEND_AFTER_DAYS); return $lastSentCarbon->isPast(); } private function recordDataSent() { Setting::setValue(Analytics::SETTINGS_LAST_SENT_KEY, Carbon::now()); } }