wp = $wp; $this->woocommerceHelper = $woocommerceHelper; $this->woocommerceEnabled = $this->isWoocommerceEnabled(); $this->eventFactory = $eventFactory; } public function init() { $this->wp->addFilter( AutomaticEmails::FILTER_PREFIX . self::SLUG, [ $this, 'setupGroup', ] ); $this->wp->addFilter( self::EVENTS_FILTER, [ $this, 'setupEvents', ] ); } public function setupGroup() { return [ 'slug' => self::SLUG, 'title' => __('WooCommerce', 'mailpoet'), 'description' => __('Automatically send an email based on your customers’ purchase behavior. Enhance your customer service and start increasing sales with WooCommerce follow up emails.', 'mailpoet'), 'events' => $this->wp->applyFilters(self::EVENTS_FILTER, []), ]; } public function setupEvents($events) { $customEventDetails = (!$this->woocommerceEnabled) ? [ 'actionButtonTitle' => __('WooCommerce is required', 'mailpoet'), 'actionButtonLink' => 'https://wordpress.org/plugins/woocommerce/', ] : []; foreach ($this->availableEvents as $event) { $eventInstance = in_array($event, $this->availableEvents, true) ? $this->eventFactory->createEvent($event) : null; if (!$eventInstance) { $this->displayEventWarning($event); continue; } if (method_exists($eventInstance, 'init')) { $eventInstance->init(); } else { $this->displayEventWarning($event); continue; } if (method_exists($eventInstance, 'getEventDetails')) { $eventDetails = array_merge($eventInstance->getEventDetails(), $customEventDetails); } else { $this->displayEventWarning($event); continue; } $events[] = $eventDetails; } return $events; } public function isWoocommerceEnabled() { return $this->woocommerceHelper->isWooCommerceActive(); } private function displayEventWarning($event) { $notice = sprintf( '%s %s', // translators: %s is the name of the event. sprintf(__('WooCommerce %s event is misconfigured.', 'mailpoet'), $event), __('Please contact our technical support for assistance.', 'mailpoet') ); Notice::displayWarning($notice); } }