/** * Dectivate a module. * * @synopsis <module> [--network-wide] * @subcommand deactivate-module * @since 2.1 * @param array $args * @param array $assoc_args */ public function deactivate_module($args, $assoc_args) { $module = ep_get_registered_module($args[0]); if (empty($module)) { WP_CLI::error(__('No module with that slug is registered', 'elasticpress')); } if (!empty($assoc_args['network-wide'])) { $active_modules = get_site_option('ep_active_modules', array()); } else { $active_modules = get_option('ep_active_modules', array()); } $key = array_search($module->slug, $active_modules); if (false !== $key) { unset($active_modules[$key]); } else { WP_CLI::error(__('Module is not active', 'elasticpress')); } if (!empty($assoc_args['network-wide'])) { update_site_option('ep_active_modules', $active_modules); } else { update_option('ep_active_modules', $active_modules); } WP_CLI::success(__('Module deactivated', 'elasticpress')); }
/** * Test setup modules * * @since 2.1 */ public function testSetupModules() { ep_register_module('test', array('title' => 'Test')); ep_activate_module('test'); $module = ep_get_registered_module('test'); $this->assertTrue(!empty($module)); $this->assertTrue(!$module->is_active()); EP_Modules::factory()->setup_modules(); $this->assertTrue($module->is_active()); }
/** * Toggle module active or inactive * * @since 2.1 */ public function action_wp_ajax_ep_toggle_module() { if (empty($_POST['module']) || !check_ajax_referer('ep_nonce', 'nonce', false)) { wp_send_json_error(); exit; } $module = ep_get_registered_module($_POST['module']); if (defined('EP_IS_NETWORK') && EP_IS_NETWORK) { $active_modules = get_site_option('ep_active_modules', array()); } else { $active_modules = get_option('ep_active_modules', array()); } $data = array(); if ($module->is_active() || !$module->is_active() && is_wp_error($module->dependencies_met())) { $key = array_search($_POST['module'], $active_modules); if (false !== $key) { unset($active_modules[$key]); } $data['active'] = false; $data['active_error'] = false; } else { $active_modules[] = $module->slug; if ($module->requires_install_reindex) { $data['reindex'] = true; } $module->post_activation(); $data['active'] = true; $data['active_error'] = false; } // If try to activate the module but it doesn't meet dependency requirement if (!$module->is_active() && is_wp_error($module->dependencies_met())) { $data['active_error'] = true; } if (defined('EP_IS_NETWORK') && EP_IS_NETWORK) { update_site_option('ep_active_modules', $active_modules); } else { update_option('ep_active_modules', $active_modules); } wp_send_json_success($data); }