/** * Registers the provided services on the given container. * * @since 3.0.0 * * @param Container $container Container object. * * @return void */ public function register(Container $container) { $container->share('multilingualpress.asset_factory', function (Container $container) { return new AssetFactory($container['multilingualpress.internal_locations']); }); $container->share('multilingualpress.asset_manager', function () { return new AssetManager(); }); }
/** * Registers the provided services on the given container. * * @since 3.0.0 * * @param Container $container Container object. * * @return void */ public function register(Container $container) { $container->share('multilingualpress.content_relations_table', function () { return new Table\ContentRelationsTable($GLOBALS['wpdb']->base_prefix); }); $container->share('multilingualpress.languages_table', function () { return new Table\LanguagesTable($GLOBALS['wpdb']->base_prefix); }); $container->share('multilingualpress.site_relations_table', function () { return new Table\SiteRelationsTable($GLOBALS['wpdb']->base_prefix); }); $container->share('multilingualpress.table_duplicator', function () { return new WPDBTableDuplicator(); }); $container->share('multilingualpress.table_installer', function () { return new WPDBTableInstaller(); }); $container->share('multilingualpress.table_list', function () { return new WPDBTableList(); }); $container->share('multilingualpress.table_replacer', function () { return new WPDBTableReplacer(); }); $container->share('multilingualpress.table_string_replacer', function () { return new WPDBTableStringReplacer(); }); }
/** * Registers the provided services on the given container. * * @since 3.0.0 * * @param Container $container Container object. * * @return void */ public function register(Container $container) { $container->share('multilingualpress.content_relations', function (Container $container) { return new WPDBContentRelations($container['multilingualpress.content_relations_table'], $container['multilingualpress.site_relations']); }); $container->share('multilingualpress.languages', function (Container $container) { return new WPDBLanguages($container['multilingualpress.languages_table']); }); $container->share('multilingualpress.site_relations', function (Container $container) { return new WPDBSiteRelations($container['multilingualpress.site_relations_table']); }); }
/** * Registers the provided services on the given container. * * @since 3.0.0 * * @param Container $container Container object. * * @return void */ public function register(Container $container) { $container->share('multilingualpress.error_factory', function () { return new FallbackErrorFactory(); }); $container->share('multilingualpress.nonce_factory', function () { return new FallbackNonceFactory(); }); $container->share('multilingualpress.type_factory', function () { return new TypeFactory(); }); }
/** * Registers the provided services on the given container. * * @since 3.0.0 * * @param Container $container Container object. * * @return void */ public function register(Container $container) { $container['multilingualpress.installer'] = function (Container $container) { return new Installer($container['multilingualpress.table_installer'], $container['multilingualpress.content_relations_table'], $container['multilingualpress.languages_table'], $container['multilingualpress.site_relations_table']); }; $container->share('multilingualpress.network_plugin_deactivator', function () { return new MatchingNetworkPluginDeactivator(); }); $container['multilingualpress.system_checker'] = function (Container $container) { return new SystemChecker($container['multilingualpress.properties'], $container['multilingualpress.type_factory']); }; $container['multilingualpress.updater'] = function (Container $container) { return new Updater($container['multilingualpress.table_installer'], $container['multilingualpress.content_relations_table'], $container['multilingualpress.languages_table'], $container['multilingualpress.site_relations_table'], $container['multilingualpress.site_relations']); }; }
/** * Registers the provided services on the given container. * * @since 3.0.0 * * @param Container $container Container object. * * @return void */ public function register(Container $container) { $container['multilingualpress.base_path_adapter'] = function () { return new CachingBasePathAdapter(); }; $container->share('multilingualpress.internal_locations', function () { return new InternalLocations(); }); // TODO: Make a regular not shared service as soon as everything else has been adapted. Or remove from here? $container->share('multilingualpress.module_manager', function () { // TODO: Maybe store the option name somewhere? But then again, who else really needs to know it? // TODO: Migration: The old option name was "state_modules", and it stored "on" and "off" values, no bools. return new Module\NetworkOptionModuleManager('multilingualpress_modules'); }); $container['multilingualpress.plugin_settings_page'] = function (Container $container) { return SettingsPage::with_parent(SettingsPage::ADMIN_NETWORK, SettingsPage::PARENT_NETWORK_SETTINGS, __('MultilingualPress', 'multilingual-press'), __('MultilingualPress', 'multilingual-press'), 'manage_network_options', 'multilingualpress', $container['multilingualpress.plugin_settings_page_view']); }; $container['multilingualpress.plugin_settings_page_view'] = function (Container $container) { return new PluginSettingsPage\View($container['multilingualpress.module_manager'], $container['multilingualpress.update_plugin_settings_nonce'], $container['multilingualpress.asset_manager']); }; $container['multilingualpress.plugin_settings_updater'] = function (Container $container) { return new PluginSettingsPage\PluginSettingsUpdater($container['multilingualpress.module_manager'], $container['multilingualpress.update_plugin_settings_nonce'], $container['multilingualpress.plugin_settings_page']); }; $container['multilingualpress.post_request_data_manipulator'] = function () { return new FullRequestDataManipulator(RequestDataManipulator::METHOD_POST); }; $container['multilingualpress.relationship_control_search'] = function () { return new RequestAwareSearch(); }; $container['multilingualpress.relationship_control_search_controller'] = function (Container $container) { return new SearchController($container['multilingualpress.relationship_control_search_results_view']); }; $container['multilingualpress.relationship_control_search_results_view'] = function (Container $container) { return new StatusAwareSearchResultsView($container['multilingualpress.relationship_control_search']); }; $container['multilingualpress.relationship_control_view'] = function (Container $container) { return new RelationshipControlView($container['multilingualpress.relationship_control_search_results_view'], $container['multilingualpress.asset_manager']); }; $container['multilingualpress.relationship_controller'] = function (Container $container) { return new RelationshipController($container['multilingualpress.content_relations']); }; $container->share('multilingualpress.request', function () { return new ConditionalAwareRequest(); }); $container['multilingualpress.update_plugin_settings_nonce'] = function () { return new WPNonce('update_plugin_settings'); }; }
/** * Bootstraps MultilingualPress. * * @since 3.0.0 * * @return bool Whether or not MultilingualPress was bootstrapped successfully. * * @throws BadMethodCallException if called on a MultilingualPress instance that has already been bootstrapped. */ public function bootstrap() { if ($this->is_bootstrapped) { throw new BadMethodCallException('Cannot bootstrap a MultilingualPress instance that has already been bootstrapped.'); } /** * Fires right before MultilingualPress gets bootstrapped. * * Hook here to register custom service providers. * * @since 3.0.0 * * @param static $multilingualpress MultilingualPress instance. */ do_action('multilingualpress.bootstrap', $this); static::$container->lock(); // TODO: Eventually remove the following block. class_exists('Mlp_Load_Controller') or (require __DIR__ . '/inc/autoload/Mlp_Load_Controller.php'); new \Mlp_Load_Controller(static::$container['multilingualpress.properties']->plugin_dir_path() . '/src/inc'); if (!$this->check_installation()) { return false; } $this->bootstrap_service_providers(); $needs_modules = $this->needs_modules(); if ($needs_modules) { /** * Fires right before MultilingualPress registers any modules. * * @since 3.0.0 */ do_action('multilingualpress.register_modules'); $this->register_modules(); } unset($this->modules); static::$container->bootstrap(); $this->is_bootstrapped = true; // TODO: Remove as soon as the old front controller has been replaced completely. class_exists('Multilingual_Press') or (require __DIR__ . '/inc/Multilingual_Press.php'); // TODO: Refactor according to new architecure. $old_controller = new \Multilingual_Press(static::$container); $old_controller->prepare_plugin_data(); if (!$needs_modules) { return true; } load_plugin_textdomain('multilingual-press'); if (is_admin()) { $this->bootstrap_admin(); } else { $this->bootstrap_front_end(); } // TODO: Refactor according to new architecure. $old_controller->setup(); return true; }