analytics = $analytics; $this->mixpanel = MixpanelLibrary::getInstance(self::PRODUCTION_PROJECT_ID); $this->mixpanel->register('Platform', 'Plugin'); } public function processTaskStrategy(ScheduledTaskEntity $task, $timer) { return $this->maybeReportAnalyticsToMixpanel(); } public function maybeReportAnalyticsToMixpanel(): bool { if (!$this->analytics->shouldSend()) { return true; } return $this->reportAnalyticsToMixpanel(); } public function reportAnalyticsToMixpanel(): bool { $publicId = $this->analytics->getPublicId(); if (strlen($publicId) < 1) { return true; } $data = $this->analytics->getAnalyticsData(); $this->mixpanel->identify($publicId); $this->mixpanel->people->set($publicId, $data); $this->mixpanel->track('User Properties', $data); $this->analytics->recordDataSent(); return true; } public function getNextRunDate() { return $this->analytics->getNextSendDate()->addMinutes(rand(0, 59)); } }