Use WooCommerce abstraction from automations instead of MP
This commit is contained in:
@@ -6,10 +6,10 @@ use MailPoet\Automation\Engine\Data\Subject;
|
||||
use MailPoet\Automation\Engine\Integration\SubjectTransformer;
|
||||
use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderSubject;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\WooCommerce;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Segments;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||
|
||||
class OrderSubjectToSubscriberSubjectTransformer implements SubjectTransformer {
|
||||
|
||||
@@ -19,13 +19,13 @@ class OrderSubjectToSubscriberSubjectTransformer implements SubjectTransformer {
|
||||
/** @var Segments\WooCommerce */
|
||||
private $woocommerce;
|
||||
|
||||
/** @var WooCommerceHelper */
|
||||
/** @var WooCommerce */
|
||||
private $woocommerceHelper;
|
||||
|
||||
public function __construct(
|
||||
SubscribersRepository $subscribersRepository,
|
||||
Segments\WooCommerce $woocommerce,
|
||||
WooCommerceHelper $woocommerceHelper
|
||||
WooCommerce $woocommerceHelper
|
||||
) {
|
||||
$this->subscribersRepository = $subscribersRepository;
|
||||
$this->woocommerce = $woocommerce;
|
||||
@@ -74,6 +74,9 @@ class OrderSubjectToSubscriberSubjectTransformer implements SubjectTransformer {
|
||||
return null;
|
||||
}
|
||||
$wcOrder = $this->woocommerceHelper->wcGetOrder($orderId);
|
||||
if (!$wcOrder instanceof \WC_Order) {
|
||||
return null;
|
||||
}
|
||||
$billingEmail = $wcOrder->get_billing_email();
|
||||
return $billingEmail ?
|
||||
$this->subscribersRepository->findOneBy(['email' => $billingEmail]) :
|
||||
|
@@ -2,28 +2,26 @@
|
||||
|
||||
namespace MailPoet\Automation\Integrations\WooCommerce;
|
||||
|
||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||
|
||||
class ContextFactory {
|
||||
|
||||
/** @var WooCommerceHelper */
|
||||
private $woocommerceHelper;
|
||||
/** @var WooCommerce */
|
||||
private $woocommerce;
|
||||
|
||||
public function __construct(
|
||||
WooCommerceHelper $woocommerceHelper
|
||||
WooCommerce $woocommerce
|
||||
) {
|
||||
$this->woocommerceHelper = $woocommerceHelper;
|
||||
$this->woocommerce = $woocommerce;
|
||||
}
|
||||
|
||||
/** @return mixed[] */
|
||||
public function getContextData(): array {
|
||||
|
||||
if (!$this->woocommerceHelper->isWooCommerceActive()) {
|
||||
if (!$this->woocommerce->isWooCommerceActive()) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$context = [
|
||||
'order_statuses' => $this->woocommerceHelper->getOrderStatuses(),
|
||||
'order_statuses' => $this->woocommerce->wcGetOrderStatuses(),
|
||||
];
|
||||
return $context;
|
||||
}
|
||||
|
@@ -7,9 +7,9 @@ use MailPoet\Automation\Engine\Exceptions\InvalidStateException;
|
||||
use MailPoet\Automation\Engine\Integration\Payload;
|
||||
use MailPoet\Automation\Engine\Integration\Subject;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\Payloads\AbandonedCartPayload;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\WooCommerce;
|
||||
use MailPoet\Validator\Builder;
|
||||
use MailPoet\Validator\Schema\ObjectSchema;
|
||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||
|
||||
/**
|
||||
* @implements Subject<AbandonedCartPayload>
|
||||
@@ -17,11 +17,11 @@ use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||
class AbandonedCartSubject implements Subject {
|
||||
const KEY = 'woocommerce:abandoned_cart';
|
||||
|
||||
/** @var WooCommerceHelper */
|
||||
/** @var WooCommerce */
|
||||
private $woocommerceHelper;
|
||||
|
||||
public function __construct(
|
||||
WooCommerceHelper $woocommerceHelper
|
||||
WooCommerce $woocommerceHelper
|
||||
) {
|
||||
$this->woocommerceHelper = $woocommerceHelper;
|
||||
}
|
||||
|
@@ -7,10 +7,10 @@ use MailPoet\Automation\Engine\Integration\Payload;
|
||||
use MailPoet\Automation\Engine\Integration\Subject;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\Fields\OrderFieldsFactory;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\Payloads\OrderPayload;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\WooCommerce;
|
||||
use MailPoet\NotFoundException;
|
||||
use MailPoet\Validator\Builder;
|
||||
use MailPoet\Validator\Schema\ObjectSchema;
|
||||
use MailPoet\WooCommerce\Helper;
|
||||
|
||||
/**
|
||||
* @implements Subject<OrderPayload>
|
||||
@@ -19,14 +19,15 @@ class OrderSubject implements Subject {
|
||||
|
||||
const KEY = 'woocommerce:order';
|
||||
|
||||
/** @var WooCommerce */
|
||||
private $woocommerce;
|
||||
|
||||
/** @var OrderFieldsFactory */
|
||||
private $orderFieldsFactory;
|
||||
|
||||
public function __construct(
|
||||
Helper $woocommerce,
|
||||
OrderFieldsFactory $orderFieldsFactory
|
||||
OrderFieldsFactory $orderFieldsFactory,
|
||||
WooCommerce $woocommerce
|
||||
) {
|
||||
$this->woocommerce = $woocommerce;
|
||||
$this->orderFieldsFactory = $orderFieldsFactory;
|
||||
|
@@ -11,9 +11,9 @@ use MailPoet\Automation\Integrations\WooCommerce\Payloads\OrderStatusChangePaylo
|
||||
use MailPoet\Automation\Integrations\WooCommerce\Subjects\CustomerSubject;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderStatusChangeSubject;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderSubject;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\WooCommerce;
|
||||
use MailPoet\Validator\Builder;
|
||||
use MailPoet\Validator\Schema\ObjectSchema;
|
||||
use MailPoet\WooCommerce;
|
||||
use MailPoet\WP\Functions;
|
||||
|
||||
class OrderStatusChangedTrigger implements Trigger {
|
||||
@@ -21,15 +21,15 @@ class OrderStatusChangedTrigger implements Trigger {
|
||||
/** @var Functions */
|
||||
private $wp;
|
||||
|
||||
/** @var WooCommerce\Helper */
|
||||
private $woocommerceHelper;
|
||||
/** @var WooCommerce */
|
||||
private $woocommerce;
|
||||
|
||||
public function __construct(
|
||||
Functions $wp,
|
||||
WooCommerce\Helper $woocommerceHelper
|
||||
WooCommerce $woocommerceHelper
|
||||
) {
|
||||
$this->wp = $wp;
|
||||
$this->woocommerceHelper = $woocommerceHelper;
|
||||
$this->woocommerce = $woocommerceHelper;
|
||||
}
|
||||
|
||||
public function getKey(): string {
|
||||
@@ -71,7 +71,7 @@ class OrderStatusChangedTrigger implements Trigger {
|
||||
}
|
||||
|
||||
public function handle(int $orderId, string $oldStatus, string $newStatus): void {
|
||||
$order = $this->woocommerceHelper->wcGetOrder($orderId);
|
||||
$order = $this->woocommerce->wcGetOrder($orderId);
|
||||
if (!$order instanceof \WC_Order) {
|
||||
return;
|
||||
}
|
||||
|
@@ -15,6 +15,13 @@ class WooCommerce {
|
||||
return wc_get_is_paid_statuses();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, string>
|
||||
*/
|
||||
public function wcGetOrderStatuses(): array {
|
||||
return wc_get_order_statuses();
|
||||
}
|
||||
|
||||
public function isWooCommerceCustomOrdersTableEnabled(): bool {
|
||||
return $this->isWooCommerceActive()
|
||||
&& method_exists(OrderUtil::class, 'custom_orders_table_usage_is_enabled')
|
||||
@@ -26,7 +33,11 @@ class WooCommerce {
|
||||
return wc_get_orders($args);
|
||||
}
|
||||
|
||||
public function wcGetOrderStatuses(): array {
|
||||
return wc_get_order_statuses();
|
||||
/**
|
||||
* @param int|bool $order
|
||||
* @return bool|\WC_Order|\WC_Order_Refund
|
||||
*/
|
||||
public function wcGetOrder($order = false) {
|
||||
return wc_get_order($order);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user