'', 'self' => '', 'title' => '', 'enabled' => false, 'description' => '', 'is_constant' => false, 'is_network' => false, 'is_plugin_active' => false, 'is_internal' => false, ); self::$modules[$args['id']] = wp_parse_args($args, $defaults); } /** * Return all the registered modules. * Used in admin_init in bootstrap class as localize_script. */ public static function get_modules() { return self::$modules; } /** * Return all the registered modules. * Used in admin_init in bootstrap class as localize_script. */ public static function get_module($id) { if (!empty(self::$modules[$id])) { return self::$modules[$id]; } return false; } /** * Handles saving module data. * Enable or disable modules from Compatibility tab. */ public function save_modules() { if (isset($_POST['action']) && $_POST['action'] == 'stateless_modules' && wp_verify_nonce($_POST['_smnonce'], 'wp-stateless-modules')) { $modules = !empty($_POST['stateless-modules']) ? $_POST['stateless-modules'] : array(); $modules = apply_filters('stateless::modules::save', $modules); if (is_network_admin()) { update_site_option('stateless-modules', $modules); } else { update_option('stateless-modules', $modules, true); } wp_redirect($_POST['_wp_http_referer']); } } /** * Check if 'Compatibility' tab should be visible. */ public function compatibility_tab_visible($visible) { return !empty(self::$modules); } /** * Outputs 'Compatibility' tab content on the settings page. * */ public function tab_content() { $modules = self::get_modules(); foreach ($modules as $id => $module) { if ( !$module['is_internal'] ) { unset($modules[$id]); } } $modules = Helper::array_of_objects( $modules ); include ud_get_stateless_media()->path('static/views/compatibility-tab.php', 'dir'); } } }