'mailpoet-premium/mailpoet-premium.php',
'name' => 'MailPoet Premium',
];
private const WOOCOMMERCE_PLUGIN = [
'id' => 'woocommerce/woocommerce.php',
'name' => 'WooCommerce',
];
private const WOOCOMMERCE_MEMBERSHIPS_PLUGIN = [
'id' => 'woocommerce-memberships/woocommerce-memberships.php',
'name' => 'WooCommerce Memberships',
];
private const WOOCOMMERCE_SUBSCRIPTIONS_PLUGIN = [
'id' => 'woocommerce-subscriptions/woocommerce-subscriptions.php',
'name' => 'WooCommerce Subscriptions',
];
private const REQUIRED_PLUGINS_BY_TYPE = [
DynamicSegmentFilterData::TYPE_WOOCOMMERCE => [
self::WOOCOMMERCE_PLUGIN,
],
DynamicSegmentFilterData::TYPE_WOOCOMMERCE_MEMBERSHIP => [
self::WOOCOMMERCE_MEMBERSHIPS_PLUGIN,
self::WOOCOMMERCE_PLUGIN,
],
DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION => [
self::WOOCOMMERCE_SUBSCRIPTIONS_PLUGIN,
self::WOOCOMMERCE_PLUGIN,
],
];
private const REQUIRED_PLUGINS_BY_TYPE_AND_ACTION = [
DynamicSegmentFilterData::TYPE_USER_ROLE => [
SubscriberTag::TYPE => [
self::MAILPOET_PREMIUM_PLUGIN,
],
],
];
/** @var SubscribersFeature */
private $subscribersFeature;
/** @var WPFunctions */
private $wp;
public function __construct(
SubscribersFeature $subscribersFeature,
WPFunctions $wp
) {
$this->subscribersFeature = $subscribersFeature;
$this->wp = $wp;
}
/**
* @return string[]
*/
public function getMissingPluginsBySegment(SegmentEntity $segment): array {
$dynamicFilters = $segment->getDynamicFilters();
$missingPluginNames = $this->getMissingPluginsByAllFilters($dynamicFilters);
foreach ($dynamicFilters as $dynamicFilter) {
$missingPlugins = $this->getMissingPluginsByFilter($dynamicFilter);
if (!$missingPlugins) {
continue;
}
foreach ($missingPlugins as $plugin) {
$missingPluginNames[] = $plugin['name'];
}
}
return array_unique($missingPluginNames);
}
/**
* @param Collection