/** * 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'); }; }