container-definitions.php
84 lines
| 1 | <?php |
| 2 | |
| 3 | use AC\Admin; |
| 4 | use AC\Admin\PageRequestHandlers; |
| 5 | use AC\AdminColumns; |
| 6 | use AC\Asset\Script\GlobalTranslationFactory; |
| 7 | use AC\Asset\Script\Localize\Translation; |
| 8 | use AC\ListScreenRepository; |
| 9 | use AC\ListScreenRepository\Database; |
| 10 | use AC\ListScreenRepository\Storage; |
| 11 | use AC\ListScreenRepository\Types; |
| 12 | use AC\Plugin\SetupFactory; |
| 13 | use AC\Plugin\Version; |
| 14 | use AC\RequestHandler\Ajax\RestoreSettingsRequest; |
| 15 | use AC\Service\PluginUpdate; |
| 16 | use AC\Storage\EncoderFactory; |
| 17 | use AC\Storage\Table; |
| 18 | use AC\TableIdsFactory; |
| 19 | use AC\TableScreenFactory; |
| 20 | use AC\Type\Url\Site; |
| 21 | use AC\Vendor\DI\Container; |
| 22 | use AC\Vendor\Psr\Container\ContainerInterface; |
| 23 | |
| 24 | use function AC\Vendor\DI\autowire; |
| 25 | use function AC\Vendor\DI\get; |
| 26 | |
| 27 | return [ |
| 28 | 'translations.global' => static function (AdminColumns $plugin): Translation { |
| 29 | return new Translation(require $plugin->get_dir() . 'settings/translations/global.php'); |
| 30 | }, |
| 31 | ContainerInterface::class => autowire(Container::class), |
| 32 | Storage::class => static function (Database $database): Storage { |
| 33 | $storage = new Storage(); |
| 34 | $storage->set_repositories([ |
| 35 | Types::DATABASE => new ListScreenRepository\Storage\ListScreenRepository($database, true), |
| 36 | ]); |
| 37 | |
| 38 | return $storage; |
| 39 | }, |
| 40 | RestoreSettingsRequest::class => static function (Storage $storage): RestoreSettingsRequest { |
| 41 | return new RestoreSettingsRequest($storage->get_repository(Types::DATABASE)); |
| 42 | }, |
| 43 | AdminColumns::class => static function (): AdminColumns { |
| 44 | return new AdminColumns(AC_FILE, new Version(AC_VERSION)); |
| 45 | }, |
| 46 | TableScreenFactory::class => autowire(TableScreenFactory\Aggregate::class), |
| 47 | SetupFactory\AdminColumns::class => static function ( |
| 48 | AdminColumns $plugin, |
| 49 | Table\AdminColumns $table |
| 50 | ): SetupFactory\AdminColumns { |
| 51 | return new SetupFactory\AdminColumns('ac_version', $plugin->get_version(), $table); |
| 52 | }, |
| 53 | GlobalTranslationFactory::class => autowire() |
| 54 | ->constructorParameter(1, get('translations.global')), |
| 55 | TableIdsFactory::class => autowire(TableIdsFactory\Aggregate::class), |
| 56 | Admin\Colors\Shipped\ColorParser::class => autowire() |
| 57 | ->constructorParameter(0, ABSPATH . 'wp-admin/css/common.css'), |
| 58 | Admin\Colors\ColorReader::class => autowire(Admin\Colors\ColorRepository::class), |
| 59 | Admin\Admin::class => autowire() |
| 60 | ->constructorParameter(0, get(PageRequestHandlers::class)), |
| 61 | Admin\MenuFactoryInterface::class => autowire(Admin\MenuFactory::class) |
| 62 | ->constructorParameter(0, admin_url('options-general.php')), |
| 63 | Admin\PageFactory\Columns::class => autowire() |
| 64 | ->constructorParameter(0, false), |
| 65 | Admin\Banner\BannerContextResolver::class => static function (ContainerInterface $container): Admin\Banner\BannerContextResolver { |
| 66 | $contexts = []; |
| 67 | |
| 68 | if (class_exists('WooCommerce', false)) { |
| 69 | $contexts[] = $container->get(Admin\Banner\Context\WooCommerce::class); |
| 70 | } |
| 71 | |
| 72 | if (class_exists('acf', false)) { |
| 73 | $contexts[] = $container->get(Admin\Banner\Context\Acf::class); |
| 74 | } |
| 75 | |
| 76 | return new Admin\Banner\BannerContextResolver($contexts); |
| 77 | }, |
| 78 | EncoderFactory::class => static function (AdminColumns $plugin) { |
| 79 | return new EncoderFactory\BaseEncoderFactory($plugin->get_version()); |
| 80 | }, |
| 81 | PluginUpdate::class => autowire() |
| 82 | ->constructorParameter(0, get(AdminColumns::class)) |
| 83 | ->constructorParameter(1, new Site('upgrade-to-ac-version-%s')), |
| 84 | ]; |