__( '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 '
'; echo '

' . __( 'Groups Options', GROUPS_PLUGIN_DOMAIN ) . '

'; echo Groups_Admin::render_messages(); $admin_override = get_option( GROUPS_ADMINISTRATOR_ACCESS_OVERRIDE, GROUPS_ADMINISTRATOR_ACCESS_OVERRIDE_DEFAULT ); $show_tree_view = Groups_Options::get_option( GROUPS_SHOW_TREE_VIEW, GROUPS_SHOW_TREE_VIEW_DEFAULT ); $show_in_user_profile = Groups_Options::get_option( GROUPS_SHOW_IN_USER_PROFILE, GROUPS_SHOW_IN_USER_PROFILE_DEFAULT ); $rolenames = $wp_roles->get_names(); $caps_table = ''; $caps_table .= ''; $caps_table .= ''; $caps_table .= ''; foreach ( $caps as $cap ) { $caps_table .= ''; } $caps_table .= ''; $caps_table .= ''; $caps_table .= ''; foreach ( $rolenames as $rolekey => $rolename ) { $role = $wp_roles->get_role( $rolekey ); $caps_table .= ''; $caps_table .= ''; foreach ( $caps as $capkey => $capname ) { if ( $role->has_cap( $capkey ) ) { $checked = ' checked="checked" '; } else { $checked = ''; } $caps_table .= ''; } $caps_table .= ''; } $caps_table .= ''; $caps_table .= '
'; $caps_table .= __( 'Role', GROUPS_PLUGIN_DOMAIN ); $caps_table .= ''; $caps_table .= $cap; $caps_table .= '
'; $caps_table .= translate_user_role( $rolename ); $caps_table .= ''; $role_cap_id = $rolekey.'-'.$capkey; $caps_table .= ''; $caps_table .= '
'; $delete_data = Groups_Options::get_option( 'groups_delete_data', false ); if ( isset( $_GET['dismiss-groups-extensions-box'] ) && isset( $_GET['groups-extensions-box-nonce'] ) && wp_verify_nonce( $_GET['groups-extensions-box-nonce'], 'dismiss-box' ) ) { Groups_Options::update_user_option( 'show-extensions-box', false ); } $extensions_box = ''; if ( Groups_Options::get_user_option( 'show-extensions-box', true ) ) { $dismiss_url = wp_nonce_url( add_query_arg( 'dismiss-groups-extensions-box', '1', admin_url( 'admin.php?page=groups-admin-options' ) ), 'dismiss-box', 'groups-extensions-box-nonce' ); $extensions_box = '
' . __( 'Enhanced functionality is available via official Extensions for Groups.', GROUPS_PLUGIN_DOMAIN ) . sprintf( 'x', esc_url( $dismiss_url ) ) . '
'; } // // print the options form // echo '
' . '

' . '' . $extensions_box . '

' . '
' . '

' . __( 'Administrator Access Override', GROUPS_PLUGIN_DOMAIN ) . '

' . '

' . '' . '

'; echo '

' . __( 'Access restricions', GROUPS_PLUGIN_DOMAIN ) . '

'; echo '

' . __( 'Post types', GROUPS_PLUGIN_DOMAIN ) . '

'; echo '

' . __( 'Show access restrictions for these post types.', GROUPS_PLUGIN_DOMAIN ) . '

'; $post_types_option = Groups_Options::get_option( Groups_Post_Access::POST_TYPES, array() ); $post_types = get_post_types( array( 'public' => true ) ); echo '
    '; foreach( $post_types as $post_type ) { $post_type_object = get_post_type_object( $post_type ); echo '
  • '; echo ''; echo '
  • '; } echo '
      '; echo '

      ' . __( 'This determines for which post types access restriction settings are offered.', GROUPS_PLUGIN_DOMAIN ) . '
      ' . __( 'Disabling this setting for a post type does not remove existing access restrictions on individual posts of that type.', GROUPS_PLUGIN_DOMAIN ) . '
      ' . '

      '; echo '

      ' . __( 'Capabilities', GROUPS_PLUGIN_DOMAIN ) . '

      '; echo '

      ' . __( 'Include these capabilities to enforce read access on posts. The selected capabilities will be offered to restrict access to posts.', GROUPS_PLUGIN_DOMAIN ) . '

      '; $capability_table = _groups_get_tablename( "capability" ); $capabilities = $wpdb->get_results( "SELECT * FROM $capability_table ORDER BY capability" ); $applicable_read_caps = Groups_Options::get_option( Groups_Post_Access::READ_POST_CAPABILITIES, array( Groups_Post_Access::READ_POST_CAPABILITY ) ); echo '
      '; printf( ''; echo '
      '; echo Groups_UIE::render_select( '.select.capability' ); echo '

      ' . __( 'User profiles', GROUPS_PLUGIN_DOMAIN ) . '

      ' . '

      ' . '' . '

      '; echo '

      ' . __( 'Tree view', GROUPS_PLUGIN_DOMAIN ) . '

      ' . '

      ' . '' . '

      '; echo '

      ' . __( 'Permissions', GROUPS_PLUGIN_DOMAIN ) . '

      ' . '

      ' . __( 'These permissions apply to Groups management. They do not apply to access permissions derived from Groups capabilities.', GROUPS_PLUGIN_DOMAIN ) . '

      ' . $caps_table . '

      ' . __( 'A minimum set of permissions will be preserved.', GROUPS_PLUGIN_DOMAIN ) . '
      ' . __( 'If you lock yourself out, please ask an administrator to help.', GROUPS_PLUGIN_DOMAIN ) . '

      '; if ( !$is_sitewide_plugin ) { echo '

      ' . __( 'Deactivation and data persistence', GROUPS_PLUGIN_DOMAIN ) . '

      ' . '

      ' . '' . '

      ' . '

      ' . __( 'CAUTION: If this option is active while the plugin is deactivated, ALL plugin settings and data will be DELETED. If you are going to use this option, now would be a good time to make a backup. By enabling this option you agree to be solely responsible for any loss of data or any other consequences thereof.', GROUPS_PLUGIN_DOMAIN ) . '

      '; } echo '

      ' . wp_nonce_field( 'admin', GROUPS_ADMIN_OPTIONS_NONCE, true, false ) . '' . '

      ' . '
' . '
'; echo '
'; // .groups-options } function groups_network_admin_options() { if ( !current_user_can( GROUPS_ADMINISTER_OPTIONS ) ) { wp_die( __( 'Access denied.', GROUPS_PLUGIN_DOMAIN ) ); } echo '
' . '

' . __( 'Groups network options', GROUPS_PLUGIN_DOMAIN ) . '

' . '
'; // handle options form submission if ( isset( $_POST['submit'] ) ) { if ( wp_verify_nonce( $_POST[GROUPS_ADMIN_OPTIONS_NONCE], 'admin' ) ) { // delete data if ( !empty( $_POST['delete-data'] ) ) { Groups_Options::update_option( 'groups_network_delete_data', true ); } else { Groups_Options::update_option( 'groups_network_delete_data', false ); } } } $delete_data = Groups_Options::get_option( 'groups_network_delete_data', false ); // options form echo '
' . '
' . '

' . __( 'Network deactivation and data persistence', GROUPS_PLUGIN_DOMAIN ) . '

' . '

' . '' . '' . '

' . '

' . __( 'CAUTION: If this option is active while the plugin is deactivated, ALL plugin settings and data will be DELETED for all sites. If you are going to use this option, now would be a good time to make a backup. By enabling this option you agree to be solely responsible for any loss of data or any other consequences thereof.', GROUPS_PLUGIN_DOMAIN ) . '

' . '

' . wp_nonce_field( 'admin', GROUPS_ADMIN_OPTIONS_NONCE, true, false ) . '' . '

' . '
' . '
'; }