Files
piratepoet/lib/DI/ContainerConfigurator.php
Jan Jakeš 6323d5dc32 Load feature flags also from DB
[MAILPOET-2008]
2019-05-16 10:45:55 -04:00

143 lines
7.4 KiB
PHP

<?php
namespace MailPoet\DI;
use MailPoetVendor\Symfony\Component\DependencyInjection\ContainerBuilder;
use MailPoetVendor\Symfony\Component\DependencyInjection\Reference;
use MailPoetVendor\Psr\Container\ContainerInterface;
class ContainerConfigurator implements IContainerConfigurator {
function getDumpNamespace() {
return 'MailPoetGenerated';
}
function getDumpClassname() {
return 'FreeCachedContainer';
}
function configure(ContainerBuilder $container) {
// Premium plugin services factory
$container->register(IContainerConfigurator::PREMIUM_CONTAINER_SERVICE_SLUG)
->setSynthetic(true)
->setPublic(true);
// Container wrapper service
$container->register(ContainerWrapper::class)
->setPublic(true)
->setFactory([
ContainerWrapper::class,
'getInstance'
]);
// Analytics
$container->autowire(\MailPoet\Analytics\Reporter::class)->setPublic(true);
// API
$container->autowire(\MailPoet\API\JSON\API::class)
->addArgument(new Reference(ContainerWrapper::class))
->setAutowired(true)
->setPublic(true);
$container->autowire(\MailPoet\API\MP\v1\API::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\Analytics::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\AutomatedLatestContent::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\CustomFields::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\Forms::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\ImportExport::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\Mailer::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\MP2Migrator::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\Newsletters::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\NewsletterTemplates::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\Segments::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\SendingQueue::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\Services::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\Settings::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\UserFlags::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\Setup::class)->setPublic(true);
$container->autowire(\MailPoet\API\JSON\v1\Subscribers::class)->setPublic(true);
// Config
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Activator::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Changelog::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Hooks::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Initializer::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Menu::class)->setPublic(true);
$container->autowire(\MailPoet\Config\RendererFactory::class)->setPublic(true);
$container->autowire(\MailPoet\Config\ServicesChecker::class);
$container->register(\MailPoet\Config\Renderer::class)
->setPublic(true)
->setFactory([new Reference(\MailPoet\Config\RendererFactory::class), 'getRenderer']);
// Cron
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\Workers\WorkersFactory::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\Workers\StatsNotifications\Scheduler::class);
$container->autowire(\MailPoet\Cron\CronTrigger::class)->setPublic(true);
// Features
$container->autowire(\MailPoet\Features\FeaturesController::class);
$container->autowire(\MailPoet\Features\FeatureFlagsController::class);
// Form
$container->autowire(\MailPoet\Form\Util\FieldNameObfuscator::class)->setPublic(true);
// Listing
$container->autowire(\MailPoet\Listing\BulkActionController::class)->setPublic(true);
$container->autowire(\MailPoet\Listing\BulkActionFactory::class)->setPublic(true);
$container->autowire(\MailPoet\Listing\Handler::class)->setPublic(true);
// Router
$container->autowire(\MailPoet\Router\Endpoints\CronDaemon::class)->setPublic(true);
$container->autowire(\MailPoet\Router\Endpoints\Subscription::class)->setPublic(true);
$container->autowire(\MailPoet\Router\Endpoints\ViewInBrowser::class)->setPublic(true);
$container->autowire(\MailPoet\Router\Endpoints\Track::class)->setPublic(true);
$container->autowire(\MailPoet\Statistics\Track\Clicks::class);
$container->autowire(\MailPoet\Statistics\Track\Opens::class);
$container->autowire(\MailPoet\Statistics\Track\WooCommercePurchases::class);
$container->autowire(\MailPoet\Router\Router::class)
->setArgument('$container', new Reference(ContainerWrapper::class));
// Mailer
$container->autowire(\MailPoet\Mailer\Mailer::class);
// Subscribers
$container->autowire(\MailPoet\Subscribers\NewSubscriberNotificationMailer::class)->setPublic(true);
$container->autowire(\MailPoet\Subscribers\ConfirmationEmailMailer::class)->setPublic(true);
$container->autowire(\MailPoet\Subscribers\RequiredCustomFieldValidator::class)->setPublic(true);
$container->autowire(\MailPoet\Subscribers\SubscriberActions::class)->setPublic(true);
$container->autowire(\MailPoet\Subscribers\InactiveSubscribersController::class);
// Segments
$container->autowire(\MailPoet\Segments\SubscribersListings::class)->setPublic(true);
$container->autowire(\MailPoet\Segments\WooCommerce::class)->setPublic(true);
// Settings
$container->autowire(\MailPoet\Settings\SettingsController::class)->setPublic(true);
// User Flags
$container->autowire(\MailPoet\Settings\UserFlagsController::class);
// Subscription
$container->autowire(\MailPoet\Subscription\Comment::class)->setPublic(true);
$container->autowire(\MailPoet\Subscription\Form::class)->setPublic(true);
$container->autowire(\MailPoet\Subscription\Manage::class)->setPublic(true);
$container->autowire(\MailPoet\Subscription\Registration::class)->setPublic(true);
// Newsletter
$container->autowire(\MailPoet\Newsletter\AutomatedLatestContent::class)->setPublic(true);
// Util
$container->autowire(\MailPoet\Util\Url::class)->setPublic(true);
// WooCommerce
$container->autowire(\MailPoet\WooCommerce\Helper::class)->setPublic(true);
$container->autowire(\MailPoet\WooCommerce\Subscription::class)->setPublic(true);
// WordPress
$container->autowire(\MailPoet\WP\Functions::class)->setPublic(true);
return $container;
}
private function registerPremiumService(ContainerBuilder $container, $id) {
$container->register($id)
->setPublic(true)
->addArgument($id)
->addArgument(new Reference('service_container'))
->setFactory([
self::class,
'getPremiumService',
]);
}
static function getPremiumService($id, ContainerInterface $container = null) {
if (!$container->has(IContainerConfigurator::PREMIUM_CONTAINER_SERVICE_SLUG)) {
return null;
}
return $container->get(IContainerConfigurator::PREMIUM_CONTAINER_SERVICE_SLUG)->get($id);
}
}