Keine Beschreibung

AbandonedCartContent.php 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace MailPoet\Newsletter\Renderer\Blocks;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\AutomaticEmails\WooCommerce\Events\AbandonedCart;
  5. use MailPoet\AutomaticEmails\WooCommerce\WooCommerce as WooCommerceEmail;
  6. use MailPoet\Entities\NewsletterEntity;
  7. use MailPoet\Entities\NewsletterOptionEntity;
  8. use MailPoet\Tasks\Sending as SendingTask;
  9. class AbandonedCartContent {
  10. /** @var AutomatedLatestContentBlock */
  11. private $ALCBlock;
  12. public function __construct(
  13. AutomatedLatestContentBlock $ALCBlock
  14. ) {
  15. $this->ALCBlock = $ALCBlock;
  16. }
  17. public function render(
  18. NewsletterEntity $newsletter,
  19. array $args,
  20. bool $preview = false,
  21. SendingTask $sendingTask = null
  22. ): array {
  23. if ($newsletter->getType() !== NewsletterEntity::TYPE_AUTOMATIC) {
  24. // Do not display the block if not an automatic email
  25. return [];
  26. }
  27. $groupOption = $newsletter->getOptions()->filter(function (NewsletterOptionEntity $newsletterOption) {
  28. $optionField = $newsletterOption->getOptionField();
  29. return $optionField && $optionField->getName() === 'group';
  30. })->first();
  31. $eventOption = $newsletter->getOptions()->filter(function (NewsletterOptionEntity $newsletterOption) {
  32. $optionField = $newsletterOption->getOptionField();
  33. return $optionField && $optionField->getName() === 'event';
  34. })->first();
  35. if (($groupOption instanceof NewsletterOptionEntity && $groupOption->getValue() !== WooCommerceEmail::SLUG)
  36. || ($eventOption instanceof NewsletterOptionEntity && $eventOption->getValue() !== AbandonedCart::SLUG)
  37. ) {
  38. // Do not display the block if not an AbandonedCart email
  39. return [];
  40. }
  41. if ($preview) {
  42. // Display latest products for preview (no 'posts' argument specified)
  43. return $this->ALCBlock->render($newsletter, $args);
  44. }
  45. if (!($sendingTask instanceof SendingTask)) {
  46. // Do not display the block if we're not sending an email
  47. return [];
  48. }
  49. $meta = $sendingTask->getMeta();
  50. if (empty($meta[AbandonedCart::TASK_META_NAME])) {
  51. // Do not display the block if a cart is empty
  52. return [];
  53. }
  54. $args['amount'] = 50;
  55. $args['posts'] = $meta[AbandonedCart::TASK_META_NAME];
  56. return $this->ALCBlock->render($newsletter, $args);
  57. }
  58. }