register(IContainerConfigurator::FREE_CONTAINER_SERVICE_SLUG) ->setSynthetic(true) ->setPublic(true); // Free plugin dependencies $this->registerFreeService($container, \MailPoet\Subscribers\SubscriberTagRepository::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Storage\AutomationRunStorage::class); $this->registerFreeService($container, \MailPoet\Newsletter\Sending\ScheduledTasksRepository::class); $this->registerFreeService($container, \MailPoet\Newsletter\Sending\ScheduledTaskSubscribersRepository::class); $this->registerFreeService($container, \MailPoet\Tags\TagRepository::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Builder\UpdateStepsController::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Builder\UpdateAutomationController::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Control\FilterHandler::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Control\ActionScheduler::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Mappers\AutomationMapper::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Storage\AutomationRunLogStorage::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Storage\AutomationStorage::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Storage\AutomationStatisticsStorage::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Hooks::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Templates\AutomationBuilder::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Validation\AutomationValidator::class); $this->registerFreeService($container, \MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject::class); $this->registerFreeService($container, \MailPoet\Config\AccessControl::class); $this->registerFreeService($container, \MailPoet\Config\Renderer::class); $this->registerFreeService($container, \MailPoet\Cron\Workers\StatsNotifications\NewsletterLinkRepository::class); $this->registerFreeService($container, \MailPoet\CustomFields\CustomFieldsRepository::class); $this->registerFreeService($container, \MailPoet\Features\FeaturesController::class); $this->registerFreeService($container, \MailPoet\Listing\Handler::class); $this->registerFreeService($container, \MailPoet\Listing\PageLimit::class); $this->registerFreeService($container, \MailPoet\Newsletter\NewslettersRepository::class); $this->registerFreeService($container, \MailPoet\Newsletter\Url::class); $this->registerFreeService($container, \MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository::class); $this->registerFreeService($container, \MailPoet\Segments\SegmentsRepository::class); $this->registerFreeService($container, \MailPoet\Settings\TrackingConfig::class); $this->registerFreeService($container, \MailPoet\Statistics\StatisticsWooCommercePurchasesRepository::class); $this->registerFreeService($container, \MailPoet\Statistics\Track\Unsubscribes::class); $this->registerFreeService($container, \MailPoet\Subscribers\SubscriberCustomFieldRepository::class); $this->registerFreeService($container, \MailPoet\Subscribers\SubscriberSegmentRepository::class); $this->registerFreeService($container, \MailPoet\Subscribers\SubscribersRepository::class); $this->registerFreeService($container, \MailPoet\WooCommerce\Helper::class); $this->registerFreeService($container, \MailPoet\WooCommerce\WooCommerceSubscriptions\Helper::class); $this->registerFreeService($container, \MailPoet\WP\Functions::class); $this->registerFreeService($container, \MailPoetVendor\Doctrine\ORM\EntityManager::class); $this->registerFreeService($container, \MailPoet\Util\CdnAssetUrl::class); $this->registerFreeService($container, \MailPoet\Util\License\Features\Subscribers::class); $this->registerFreeService($container, \MailPoet\Mailer\MailerFactory::class); $this->registerFreeService($container, \MailPoet\Settings\SettingsController::class); $this->registerFreeService($container, \MailPoet\Automation\Integrations\WooCommerce\WooCommerce::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\WordPress::class); $this->registerFreeService($container, \MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\AutomationTimeSpanController::class); $this->registerFreeService($container, \MailPoet\Automation\Engine\Registry::class); // API $container->autowire(\MailPoet\Premium\API\JSON\v1\Bounces::class)->setPublic(true); $container->autowire(\MailPoet\Premium\API\JSON\v1\Stats::class)->setPublic(true); $container->autowire(\MailPoet\Premium\API\JSON\v1\SubscriberDetailedStats::class)->setPublic(true); $container->autowire(\MailPoet\Premium\API\JSON\v1\ResponseBuilders\StatsResponseBuilder::class)->setPublic(true); $container->autowire(\MailPoet\Premium\API\JSON\v1\ResponseBuilders\SubscriberDetailedStatsResponseBuilder::class); // Automation $container->autowire(\MailPoet\Premium\Automation\Engine\Builder\CreateAutomationController::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Engine\Builder\UpdateAutomationController::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Engine\Engine::class)->setPublic(true); // Automation - API endpoints $container->autowire(\MailPoet\Premium\Automation\Engine\Endpoints\Automations\AutomationsPostEndpoint::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Engine\Endpoints\Automations\AutomationsPutEndpoint::class)->setPublic(true); // Automation - MailPoet Premium integration $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\MailPoetPremiumIntegration::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\ContextFactory::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Actions\UnsubscribeAction::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Actions\AddTagAction::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Actions\RemoveTagAction::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Actions\AddToListAction::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Actions\RemoveFromListAction::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Actions\UpdateSubscriberAction::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Actions\NotificationEmailAction::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Triggers\TagAddedTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Triggers\TagRemovedTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Subjects\TagSubject::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Templates\PremiumTemplatesFactory::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Triggers\CustomTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Triggers\ClicksEmailLinkTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Actions\CustomAction::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Subjects\CustomDataSubject::class)->setPublic(true); // Automation - Analytics $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Analytics\Analytics::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Analytics\Endpoints\OrderEndpoint::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Analytics\Storage\OrderStatistics::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Analytics\Controller\OrderController::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Analytics\Endpoints\RunLogEndpoint::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Analytics\Controller\RunLogController::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Analytics\Endpoints\SubscriberEndpoint::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Analytics\Storage\SubscriberStatistics::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\MailPoetPremium\Analytics\Controller\SubscriberController::class)->setPublic(true); // Automation - WordPress integration $container->autowire(\MailPoet\Premium\Automation\Integrations\WordPress\WordPressIntegration::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WordPress\Triggers\MadeACommentTrigger::class)->setPublic(true); // Automation - WooCommerce integration $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerce\WooCommerceIntegration::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerce\Subjects\ReviewSubject::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerce\Triggers\MadeAReviewTrigger::class)->setPublic(true); // Automation - WooCommerce Subscriptions integration $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\WooCommerceSubscriptionsIntegration::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\ContextFactory::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Triggers\SubscriptionCreatedTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Triggers\SubscriptionStatusChangedTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Triggers\SubscriptionTrialStartedTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Triggers\SubscriptionRenewedTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Triggers\SubscriptionExpiredTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Triggers\SubscriptionPaymentFailedTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Triggers\SubscriptionTrialEndedTrigger::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Subjects\WooCommerceSubscriptionSubject::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Subjects\WooCommerceSubscriptionStatusChangeSubject::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Automation\Integrations\WooCommerceSubscriptions\Fields\SubscriptionFields::class)->setPublic(true); // Config $container->autowire(\MailPoet\Premium\Config\Hooks::class); $container->autowire(\MailPoet\Premium\Config\Initializer::class)->setPublic(true); $container->register(\MailPoet\Premium\Config\Renderer::class) ->setPublic(true) ->setFactory([__CLASS__, 'createRenderer']); // Segments $container->autowire(\MailPoet\Premium\Segments\DynamicSegments\SegmentCombinations::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Segments\DynamicSegments\Filters\SubscriberTag::class)->setPublic(true); // Stats $container->autowire(\MailPoet\Premium\Newsletter\Stats\Bounces::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Newsletter\Stats\PurchasedProducts::class); $container->autowire(\MailPoet\Premium\Newsletter\Stats\SubscriberEngagement::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Newsletter\StatisticsClicksRepository::class)->setPublic(true); $container->autowire(\MailPoet\Premium\Newsletter\StatisticsOpensRepository::class); $container->autowire(\MailPoet\Premium\Newsletter\StatisticsUnsubscribesRepository::class); // Subscriber $container->autowire(\MailPoet\Premium\Subscriber\Stats\SubscriberNewsletterStatsRepository::class); return $container; } private function registerFreeService(ContainerBuilder $container, $id) { $container->register($id) ->setPublic(true) ->addArgument($id) ->setFactory([ new Reference(IContainerConfigurator::FREE_CONTAINER_SERVICE_SLUG), 'get', ]); } public static function createRenderer() { $debugging = defined('WP_DEBUG') && WP_DEBUG; $caching = !$debugging; $autoReload = defined('MAILPOET_DEVELOPMENT') && MAILPOET_DEVELOPMENT; return new \MailPoet\Premium\Config\Renderer($caching, $debugging, $autoReload); } }