geno/wp-content/plugins/mailpoet/lib/Cron/Workers/Mixpanel.php

68 lines
1.6 KiB
PHP
Raw Normal View History

2024-02-01 17:24:18 +05:30
<?php declare(strict_types = 1);
namespace MailPoet\Cron\Workers;
if (!defined('ABSPATH')) exit;
use MailPoet\Analytics\Analytics;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\WP\Functions;
use Mixpanel as MixpanelLibrary;
class Mixpanel extends SimpleWorker {
const PRODUCTION_PROJECT_ID = '8cce373b255e5a76fb22d57b85db0c92';
/** @var Analytics */
private $analytics;
const TASK_TYPE = 'mixpanel';
/** @var MixpanelLibrary */
private $mixpanel;
public function __construct(
Analytics $analytics,
Functions $wp
) {
parent::__construct($wp);
$this->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));
}
}