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\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];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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\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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user