__( 'Access Groups', GROUPS_PLUGIN_DOMAIN ), GROUPS_ADMINISTER_GROUPS => __( 'Administer Groups', GROUPS_PLUGIN_DOMAIN ), GROUPS_ADMINISTER_OPTIONS => __( 'Administer Groups plugin options', GROUPS_PLUGIN_DOMAIN ), ); // // handle options form submission // if ( isset( $_POST['submit'] ) ) { if ( wp_verify_nonce( $_POST[GROUPS_ADMIN_OPTIONS_NONCE], 'admin' ) ) { // admin override if ( empty( $_POST[GROUPS_ADMINISTRATOR_ACCESS_OVERRIDE] ) ) { $admin_override = false; } else { $admin_override = true; } // Don't move this to the plugin options, access will be faster add_option( GROUPS_ADMINISTRATOR_ACCESS_OVERRIDE, $admin_override ); // WP 3.3.1 : update alone wouldn't create the option when value is false update_option( GROUPS_ADMINISTRATOR_ACCESS_OVERRIDE, $admin_override ); $post_types_option = Groups_Options::get_option( Groups_Post_Access::POST_TYPES, array() ); $post_types = get_post_types( array( 'public' => true ) ); $selected_post_types = is_array( $_POST['add_meta_boxes'] ) ? $_POST['add_meta_boxes'] : array(); foreach( $post_types as $post_type ) { $post_types_option[$post_type]['add_meta_box'] = in_array( $post_type, $selected_post_types ); } Groups_Options::update_option( Groups_Post_Access::POST_TYPES, $post_types_option ); $valid_read_caps = array( Groups_Post_Access::READ_POST_CAPABILITY ); if ( !empty( $_POST[GROUPS_READ_POST_CAPABILITIES] ) ) { $read_caps = $_POST[GROUPS_READ_POST_CAPABILITIES]; foreach( $read_caps as $read_cap ) { if ( $valid_cap = Groups_Capability::read( $read_cap ) ) { if ( !in_array( $valid_cap->capability, $valid_read_caps ) ) { $valid_read_caps[] = $valid_cap->capability; } } } } Groups_Options::update_option( Groups_Post_Access::READ_POST_CAPABILITIES, $valid_read_caps ); // tree view if ( !empty( $_POST[GROUPS_SHOW_TREE_VIEW] ) ) { Groups_Options::update_option( GROUPS_SHOW_TREE_VIEW, true ); } else { Groups_Options::update_option( GROUPS_SHOW_TREE_VIEW, false ); } // show in user profiles Groups_Options::update_option( GROUPS_SHOW_IN_USER_PROFILE, !empty( $_POST[GROUPS_SHOW_IN_USER_PROFILE] ) ); // roles & capabilities $rolenames = $wp_roles->get_names(); foreach ( $rolenames as $rolekey => $rolename ) { $role = $wp_roles->get_role( $rolekey ); foreach ( $caps as $capkey => $capname ) { $role_cap_id = $rolekey.'-'.$capkey; if ( !empty($_POST[$role_cap_id] ) ) { $role->add_cap( $capkey ); } else { $role->remove_cap( $capkey ); } } } Groups_Controller::assure_capabilities(); if ( !$is_sitewide_plugin ) { // delete data if ( !empty( $_POST['delete-data'] ) ) { Groups_Options::update_option( 'groups_delete_data', true ); } else { Groups_Options::update_option( 'groups_delete_data', false ); } } Groups_Admin::add_message( __( 'Options saved.', GROUPS_PLUGIN_DOMAIN ) ); } } echo '
'; // .groups-options } function groups_network_admin_options() { if ( !current_user_can( GROUPS_ADMINISTER_OPTIONS ) ) { wp_die( __( 'Access denied.', GROUPS_PLUGIN_DOMAIN ) ); } echo '