$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 .=
'
';
$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 .=
'
' .
'
' .
'
' .
'
';
$output .= '
';
if ( $paginate ) {
require_once( GROUPS_CORE_LIB . '/class-groups-pagination.php' );
$pagination = new Groups_Pagination( $count, null, $row_count );
$output .= '
';
}
$capability_table = _groups_get_tablename( "capability" );
$group_capability_table = _groups_get_tablename( "group_capability" );
// capabilities select
$capabilities_select = '
';
$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()
?>