/**
  * Updates the plugin settings according to the data in the request.
  *
  * @since 3.0.0
  *
  * @return void
  */
 public function update_settings()
 {
     \Inpsyde\MultilingualPress\check_admin_referer($this->nonce);
     array_walk(array_keys($this->module_manager->get_modules()), [$this, 'update_module']);
     $this->module_manager->save_modules();
     /**
      * Runs before the redirect.
      *
      * Process your fields in the $_POST superglobal here and then call update_site_option().
      *
      * @param array $_POST
      */
     do_action('mlp_modules_save_fields', $_POST);
     wp_safe_redirect(add_query_arg('message', 'updated', $this->settings_page->url()));
     \Inpsyde\MultilingualPress\call_exit();
 }
 /**
  * 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');
     };
 }