woocommerceSegment = $woocommerceSegment; $this->woocommerceHelper = $woocommerceHelper; $this->connection = $connection; parent::__construct(); } public function checkProcessingRequirements() { return $this->woocommerceHelper->isWooCommerceActive(); } public function processTaskStrategy(ScheduledTaskEntity $task, $timer) { $lastProcessedOrderId = $task->getMeta()['last_processed_order_id'] ?? 0; $highestOrderId = $this->getHighestOrderId(); $lastProcessedOrderId = $this->woocommerceSegment->synchronizeCustomers($lastProcessedOrderId, $highestOrderId); $meta = $task->getMeta() ?? []; $meta['last_processed_order_id'] = $lastProcessedOrderId; $task->setMeta($meta); $this->scheduledTasksRepository->persist($task); $this->scheduledTasksRepository->flush(); if ($lastProcessedOrderId !== $highestOrderId) { return false; } return true; } private function getHighestOrderId(): int { global $wpdb; return (int)$this->connection->fetchOne(" SELECT MAX(wpp.ID) FROM {$wpdb->posts} wpp WHERE wpp.post_type = 'shop_order' "); } }