Remove ProductsSubject

[MAILPOET-4934]
This commit is contained in:
David Remer
2023-04-13 12:32:12 +03:00
committed by Aschepikov
parent 10aaae06c7
commit d113ec9fdb
5 changed files with 1 additions and 103 deletions

View File

@@ -12,7 +12,6 @@ use MailPoet\Automation\Engine\Integration\Action;
use MailPoet\Automation\Engine\Integration\ValidationException; use MailPoet\Automation\Engine\Integration\ValidationException;
use MailPoet\Automation\Integrations\MailPoet\Payloads\SegmentPayload; use MailPoet\Automation\Integrations\MailPoet\Payloads\SegmentPayload;
use MailPoet\Automation\Integrations\MailPoet\Payloads\SubscriberPayload; use MailPoet\Automation\Integrations\MailPoet\Payloads\SubscriberPayload;
use MailPoet\Automation\Integrations\WooCommerce\Payloads\ProductsPayload;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterOptionEntity; use MailPoet\Entities\NewsletterOptionEntity;
use MailPoet\Entities\NewsletterOptionFieldEntity; use MailPoet\Entities\NewsletterOptionFieldEntity;
@@ -173,14 +172,7 @@ class SendEmailAction implements Action {
return []; return [];
} }
$productSubject = $args->getSinglePayloadByClass(ProductsPayload::class); $cartProductIds = [];
$cartProductIds = array_map(
function(\WC_Product $product) {
return $product->get_id();
},
$productSubject->getProducts()
);
return [AbandonedCart::TASK_META_NAME => $cartProductIds]; return [AbandonedCart::TASK_META_NAME => $cartProductIds];
} }

View File

@@ -1,27 +0,0 @@
<?php declare(strict_types = 1);
namespace MailPoet\Automation\Integrations\WooCommerce\Payloads;
use MailPoet\Automation\Engine\Integration\Payload;
class ProductsPayload implements Payload {
private $products;
/**
* @param \WC_Product[] $products
*/
public function __construct(
array $products
) {
$this->products = $products;
}
/**
* @return \WC_Product[]
*/
public function getProducts(): array {
return $this->products;
}
}

View File

@@ -1,59 +0,0 @@
<?php declare(strict_types = 1);
namespace MailPoet\Automation\Integrations\WooCommerce\Subjects;
use MailPoet\Automation\Engine\Data\Subject as SubjectData;
use MailPoet\Automation\Engine\Exceptions\InvalidStateException;
use MailPoet\Automation\Engine\Integration\Payload;
use MailPoet\Automation\Engine\Integration\Subject;
use MailPoet\Automation\Integrations\WooCommerce\Payloads\ProductsPayload;
use MailPoet\Validator\Builder;
use MailPoet\Validator\Schema\ObjectSchema;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
/**
* @implements Subject<ProductsPayload>
*/
class ProductsSubject implements Subject {
const KEY = 'woocommerce:products';
/** @var WooCommerceHelper */
private $woocommerceHelper;
public function __construct(
WooCommerceHelper $woocommerceHelper
) {
$this->woocommerceHelper = $woocommerceHelper;
}
public function getKey(): string {
return self::KEY;
}
public function getName(): string {
return __('Product', 'mailpoet');
}
public function getArgsSchema(): ObjectSchema {
return Builder::object([
'product_ids' => Builder::array(Builder::integer())->required(),
]);
}
public function getPayload(SubjectData $subjectData): Payload {
$products = array_values(array_filter(array_map(
function ($productId) {
return $this->woocommerceHelper->wcGetProduct($productId);
},
$subjectData->getArgs()['product_ids']
)));
// Question: What to do when the product was not found?
if (!$products) {
throw InvalidStateException::create()->withMessage(__('No products found.', 'mailpoet'));
}
return new ProductsPayload($products);
}
}

View File

@@ -6,7 +6,6 @@ use MailPoet\Automation\Engine\Registry;
use MailPoet\Automation\Integrations\WooCommerce\Subjects\CustomerSubject; use MailPoet\Automation\Integrations\WooCommerce\Subjects\CustomerSubject;
use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderStatusChangeSubject; use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderStatusChangeSubject;
use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderSubject; use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderSubject;
use MailPoet\Automation\Integrations\WooCommerce\Subjects\ProductsSubject;
use MailPoet\Automation\Integrations\WooCommerce\Triggers\OrderStatusChangedTrigger; use MailPoet\Automation\Integrations\WooCommerce\Triggers\OrderStatusChangedTrigger;
class WooCommerceIntegration { class WooCommerceIntegration {
@@ -23,9 +22,6 @@ class WooCommerceIntegration {
/** @var CustomerSubject */ /** @var CustomerSubject */
private $customerSubject; private $customerSubject;
/** @var ProductsSubject */
private $productsSubject;
/** @var ContextFactory */ /** @var ContextFactory */
private $contextFactory; private $contextFactory;
@@ -34,14 +30,12 @@ class WooCommerceIntegration {
OrderStatusChangeSubject $orderStatusChangeSubject, OrderStatusChangeSubject $orderStatusChangeSubject,
OrderSubject $orderSubject, OrderSubject $orderSubject,
CustomerSubject $customerSubject, CustomerSubject $customerSubject,
ProductsSubject $productsSubject,
ContextFactory $contextFactory ContextFactory $contextFactory
) { ) {
$this->orderStatusChangedTrigger = $orderStatusChangedTrigger; $this->orderStatusChangedTrigger = $orderStatusChangedTrigger;
$this->orderStatusChangeSubject = $orderStatusChangeSubject; $this->orderStatusChangeSubject = $orderStatusChangeSubject;
$this->orderSubject = $orderSubject; $this->orderSubject = $orderSubject;
$this->customerSubject = $customerSubject; $this->customerSubject = $customerSubject;
$this->productsSubject = $productsSubject;
$this->contextFactory = $contextFactory; $this->contextFactory = $contextFactory;
} }
@@ -54,7 +48,6 @@ class WooCommerceIntegration {
$registry->addSubject($this->orderSubject); $registry->addSubject($this->orderSubject);
$registry->addSubject($this->orderStatusChangeSubject); $registry->addSubject($this->orderStatusChangeSubject);
$registry->addSubject($this->customerSubject); $registry->addSubject($this->customerSubject);
$registry->addSubject($this->productsSubject);
$registry->addTrigger($this->orderStatusChangedTrigger); $registry->addTrigger($this->orderStatusChangedTrigger);
} }
} }

View File

@@ -176,7 +176,6 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderSubject::class)->setPublic(true)->setShared(false); $container->autowire(\MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderSubject::class)->setPublic(true)->setShared(false);
$container->autowire(\MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderStatusChangeSubject::class)->setPublic(true)->setShared(false); $container->autowire(\MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderStatusChangeSubject::class)->setPublic(true)->setShared(false);
$container->autowire(\MailPoet\Automation\Integrations\WooCommerce\Subjects\CustomerSubject::class)->setPublic(true)->setShared(false); $container->autowire(\MailPoet\Automation\Integrations\WooCommerce\Subjects\CustomerSubject::class)->setPublic(true)->setShared(false);
$container->autowire(\MailPoet\Automation\Integrations\WooCommerce\Subjects\ProductsSubject::class)->setPublic(true)->setShared(false);
// Config // Config
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true); $container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);