Remove ProductsSubject
[MAILPOET-4934]
This commit is contained in:
@@ -12,7 +12,6 @@ use MailPoet\Automation\Engine\Integration\Action;
|
||||
use MailPoet\Automation\Engine\Integration\ValidationException;
|
||||
use MailPoet\Automation\Integrations\MailPoet\Payloads\SegmentPayload;
|
||||
use MailPoet\Automation\Integrations\MailPoet\Payloads\SubscriberPayload;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\Payloads\ProductsPayload;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Entities\NewsletterOptionEntity;
|
||||
use MailPoet\Entities\NewsletterOptionFieldEntity;
|
||||
@@ -173,14 +172,7 @@ class SendEmailAction implements Action {
|
||||
return [];
|
||||
}
|
||||
|
||||
$productSubject = $args->getSinglePayloadByClass(ProductsPayload::class);
|
||||
$cartProductIds = array_map(
|
||||
function(\WC_Product $product) {
|
||||
return $product->get_id();
|
||||
},
|
||||
$productSubject->getProducts()
|
||||
);
|
||||
|
||||
$cartProductIds = [];
|
||||
return [AbandonedCart::TASK_META_NAME => $cartProductIds];
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -6,7 +6,6 @@ use MailPoet\Automation\Engine\Registry;
|
||||
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\Subjects\ProductsSubject;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\Triggers\OrderStatusChangedTrigger;
|
||||
|
||||
class WooCommerceIntegration {
|
||||
@@ -23,9 +22,6 @@ class WooCommerceIntegration {
|
||||
/** @var CustomerSubject */
|
||||
private $customerSubject;
|
||||
|
||||
/** @var ProductsSubject */
|
||||
private $productsSubject;
|
||||
|
||||
/** @var ContextFactory */
|
||||
private $contextFactory;
|
||||
|
||||
@@ -34,14 +30,12 @@ class WooCommerceIntegration {
|
||||
OrderStatusChangeSubject $orderStatusChangeSubject,
|
||||
OrderSubject $orderSubject,
|
||||
CustomerSubject $customerSubject,
|
||||
ProductsSubject $productsSubject,
|
||||
ContextFactory $contextFactory
|
||||
) {
|
||||
$this->orderStatusChangedTrigger = $orderStatusChangedTrigger;
|
||||
$this->orderStatusChangeSubject = $orderStatusChangeSubject;
|
||||
$this->orderSubject = $orderSubject;
|
||||
$this->customerSubject = $customerSubject;
|
||||
$this->productsSubject = $productsSubject;
|
||||
$this->contextFactory = $contextFactory;
|
||||
}
|
||||
|
||||
@@ -54,7 +48,6 @@ class WooCommerceIntegration {
|
||||
$registry->addSubject($this->orderSubject);
|
||||
$registry->addSubject($this->orderStatusChangeSubject);
|
||||
$registry->addSubject($this->customerSubject);
|
||||
$registry->addSubject($this->productsSubject);
|
||||
$registry->addTrigger($this->orderStatusChangedTrigger);
|
||||
}
|
||||
}
|
||||
|
@@ -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\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\ProductsSubject::class)->setPublic(true)->setShared(false);
|
||||
|
||||
// Config
|
||||
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);
|
||||
|
Reference in New Issue
Block a user