$group_id, 'capability_id' => $capability_id ) ); break; case 'Remove' : Groups_Group_Capability::delete( $group_id, $capability_id ); break; } } } } break; } } else if ( isset ( $_GET['action'] ) ) { // handle action request - show form switch( $_GET['action'] ) { case 'add' : return groups_admin_groups_add(); break; case 'edit' : if ( isset( $_GET['group_id'] ) ) { return groups_admin_groups_edit( $_GET['group_id'] ); } break; case 'remove' : if ( isset( $_GET['group_id'] ) ) { return groups_admin_groups_remove( $_GET['group_id'] ); } break; } } // // group table // if ( isset( $_POST['clear_filters'] ) || isset( $_POST['group_id'] ) || isset( $_POST['group_name'] ) ) { if ( !wp_verify_nonce( $_POST[GROUPS_ADMIN_GROUPS_FILTER_NONCE], 'admin' ) ) { wp_die( __( 'Access denied.', GROUPS_PLUGIN_DOMAIN ) ); } } // filters $group_id = Groups_Options::get_user_option( 'groups_group_id', null ); $group_name = Groups_Options::get_user_option( 'groups_group_name', null ); if ( isset( $_POST['clear_filters'] ) ) { Groups_Options::delete_user_option( 'groups_group_id' ); Groups_Options::delete_user_option( 'groups_group_name' ); $group_id = null; $group_name = null; } else if ( isset( $_POST['submitted'] ) ) { // filter by name if ( !empty( $_POST['group_name'] ) ) { $group_name = $_POST['group_name']; Groups_Options::update_user_option( 'groups_group_name', $group_name ); } // filter by group id if ( !empty( $_POST['group_id'] ) ) { $group_id = intval( $_POST['group_id'] ); Groups_Options::update_user_option( 'groups_group_id', $group_id ); } else if ( isset( $_POST['group_id'] ) ) { // empty && isset => '' => all $group_id = null; Groups_Options::delete_user_option( 'groups_group_id' ); } } if ( isset( $_POST['row_count'] ) ) { if ( !wp_verify_nonce( $_POST[GROUPS_ADMIN_GROUPS_NONCE_1], 'admin' ) ) { wp_die( __( 'Access denied.', GROUPS_PLUGIN_DOMAIN ) ); } } if ( isset( $_POST['paged'] ) ) { if ( !wp_verify_nonce( $_POST[GROUPS_ADMIN_GROUPS_NONCE_2], 'admin' ) ) { wp_die( __( 'Access denied.', GROUPS_PLUGIN_DOMAIN ) ); } } $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $current_url = remove_query_arg( 'paged', $current_url ); $current_url = remove_query_arg( 'action', $current_url ); $current_url = remove_query_arg( 'group_id', $current_url ); $group_table = _groups_get_tablename( 'group' ); $output .= '
' . '
' . '

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

' . '
'; $output .= '
' . "" . __( " . __( 'New Group', GROUPS_PLUGIN_DOMAIN) . "" . '
'; $row_count = isset( $_POST['row_count'] ) ? intval( $_POST['row_count'] ) : 0; if ($row_count <= 0) { $row_count = Groups_Options::get_user_option( 'groups_per_page', GROUPS_GROUPS_PER_PAGE ); } else { Groups_Options::update_user_option('groups_per_page', $row_count ); } $offset = isset( $_GET['offset'] ) ? intval( $_GET['offset'] ) : 0; if ( $offset < 0 ) { $offset = 0; } $paged = isset( $_GET['paged'] ) ? intval( $_GET['paged'] ) : 0; if ( $paged < 0 ) { $paged = 0; } $orderby = isset( $_GET['orderby'] ) ? $_GET['orderby'] : null; switch ( $orderby ) { case 'group_id' : case 'name' : break; default: $orderby = 'name'; } $order = isset( $_GET['order'] ) ? $_GET['order'] : null; switch ( $order ) { case 'asc' : case 'ASC' : $switch_order = 'DESC'; break; case 'desc' : case 'DESC' : $switch_order = 'ASC'; break; default: $order = 'ASC'; $switch_order = 'DESC'; } $filters = array(); $filter_params = array(); if ( $group_id ) { $filters[] = " $group_table.group_id = %d "; $filter_params[] = $group_id; } if ( $group_name ) { $filters[] = " $group_table.name LIKE '%%%s%%' "; $filter_params[] = $group_name; } if ( !empty( $filters ) ) { $filters = " WHERE " . implode( " AND ", $filters ); } else { $filters = ''; } $count_query = $wpdb->prepare( "SELECT COUNT(*) FROM $group_table $filters", $filter_params ); $count = $wpdb->get_var( $count_query ); if ( $count > $row_count ) { $paginate = true; } else { $paginate = false; } $pages = ceil ( $count / $row_count ); if ( $paged > $pages ) { $paged = $pages; } if ( $paged != 0 ) { $offset = ( $paged - 1 ) * $row_count; } $query = $wpdb->prepare( "SELECT * FROM $group_table $filters ORDER BY $orderby $order LIMIT $row_count OFFSET $offset", $filter_params ); $results = $wpdb->get_results( $query, OBJECT ); $column_display_names = array( 'group_id' => __( 'Id', GROUPS_PLUGIN_DOMAIN ), 'name' => __( 'Group', GROUPS_PLUGIN_DOMAIN ), 'description' => __( 'Description', GROUPS_PLUGIN_DOMAIN ), 'capabilities' => __( 'Capabilities', GROUPS_PLUGIN_DOMAIN ), 'edit' => __( 'Edit', GROUPS_PLUGIN_DOMAIN ), 'remove' => __( 'Remove', GROUPS_PLUGIN_DOMAIN ) ); $output .= '
'; $output .= '
' . '' . '
' . '

' . '' . '' . '' . '' . '

' . '

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

' . '
' . '
'; $output .= '
' . ' ' . wp_nonce_field( 'admin', GROUPS_ADMIN_GROUPS_NONCE_1, true, false ) . '
'; if ( $paginate ) { require_once( GROUPS_CORE_LIB . '/class-groups-pagination.php' ); $pagination = new Groups_Pagination( $count, null, $row_count ); $output .= '
'; $output .= '
'; $output .= wp_nonce_field( 'admin', GROUPS_ADMIN_GROUPS_NONCE_2, true, false ); $output .= '
'; $output .= '
'; $output .= $pagination->pagination( 'top' ); $output .= '
'; $output .= '
'; } $capability_table = _groups_get_tablename( "capability" ); $group_capability_table = _groups_get_tablename( "group_capability" ); // capabilities select $capabilities_select = ''; $output .= '
'; $output .= '
'; $output .= '
'; $output .= __( "Apply capability to selected groups:", GROUPS_PLUGIN_DOMAIN ); $output .= $capabilities_select; $output .= ''; $output .= ''; $output .= wp_nonce_field( 'admin', GROUPS_ADMIN_GROUPS_ACTION_NONCE, true, false ); $output .= ''; $output .= '
'; // .alignleft $output .= '
'; // .tablenav.top $output .= ' '; $output .= ''; foreach ( $column_display_names as $key => $column_display_name ) { $options = array( 'orderby' => $key, 'order' => $switch_order ); $class = $key; if ( !in_array($key, array( 'capabilities', 'edit', 'remove' ) ) ) { if ( strcmp( $key, $orderby ) == 0 ) { $lorder = strtolower( $order ); $class = "$key manage-column sorted $lorder"; } else { $class = "$key manage-column sortable"; } $column_display_name = '' . $column_display_name . ''; } $output .= ""; } $output .= ' '; if ( count( $results ) > 0 ) { for ( $i = 0; $i < count( $results ); $i++ ) { $result = $results[$i]; $output .= ''; $output .= ''; $output .= ""; $output .= ""; $output .= ""; $output .= ''; $output .= ""; $output .= ""; $output .= ''; } } else { $output .= ''; } $output .= ''; $output .= '
$column_display_name
'; $output .= ''; $output .= '"; $output .= $result->group_id; $output .= "" . stripslashes( wp_filter_nohtml_kses( $result->name ) ) . "" . stripslashes( wp_filter_nohtml_kses( $result->description ) ) . "'; $group_capabilities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $capability_table WHERE capability_id IN ( SELECT capability_id FROM $group_capability_table WHERE group_id = %d )", Groups_Utility::id( $result->group_id ) ) ); if ( count( $group_capabilities ) > 0 ) { $output .= '
    '; foreach ( $group_capabilities as $group_capability ) { $output .= '
  • ' . wp_filter_nohtml_kses( $group_capability->capability ) . '
  • '; } $output .= '
'; } else { $output .= __( 'This group has no capabilities.', GROUPS_PLUGIN_DOMAIN ); } $output .= '
"; $output .= "group_id . "' alt='" . __( 'Edit', GROUPS_PLUGIN_DOMAIN) . "'>"; $output .= ""; if ( $result->name !== Groups_Registered::REGISTERED_GROUP_NAME ) { $output .= ""; } $output .= "
' . __( 'There are no results.', GROUPS_PLUGIN_DOMAIN ) . '
'; $output .= '
'; // #groups-action if ( $paginate ) { require_once( GROUPS_CORE_LIB . '/class-groups-pagination.php' ); $pagination = new Groups_Pagination($count, null, $row_count); $output .= '
'; $output .= $pagination->pagination( 'bottom' ); $output .= '
'; } $output .= '
'; // .groups-overview $output .= '
'; // .manage-groups echo $output; Groups_Help::footer(); } // function groups_admin_groups() ?>