diff --git a/lib/admin/groups-admin-groups.php b/lib/admin/groups-admin-groups.php index f00be8f..c561a0e 100644 --- a/lib/admin/groups-admin-groups.php +++ b/lib/admin/groups-admin-groups.php @@ -299,13 +299,6 @@ function groups_admin_groups() { $results = $wpdb->get_results( $query, OBJECT ); - $column_display_names = array( - 'group_id' => __( 'ID', 'groups' ), - 'name' => __( 'Group', 'groups' ), - 'description' => __( 'Description', 'groups' ), - 'capabilities' => __( 'Capabilities', 'groups' ) - ); - $output .= '
'; $output .= @@ -391,15 +384,33 @@ function groups_admin_groups() { $output .= ''; $output .= ''; - $output .= ''; + $admin_columns = array( + 'cb' => array( 'html' => '' ), + 'group_id' => array( 'column_display_name' => __( 'ID', 'groups' ), 'sortable' => true ), + 'name' => array( 'column_display_name' => __( 'Group', 'groups' ), 'sortable' => true ), + 'description' => array( 'column_display_name' => __( 'Description', 'groups' ), 'sortable' => true ), + 'capabilities' => array( 'column_display_name' => __( 'Capabilities', 'groups' ), 'sortable' => false ), + ); + + $admin_columns = apply_filters( 'groups_admin_columns', $admin_columns ); + + foreach ( $admin_columns as $key => $column_display_name_args ) { + if( 'cb' === $key ) + { + $output .= $column_display_name_args[ 'html' ]; + continue; + } + + $column_display_name = $column_display_name_args[ 'column_display_name' ]; + $column_sortable = array_key_exists( 'sortable', $column_display_name_args ) ? true == $column_display_name_args[ 'sortable' ] : false; - foreach ( $column_display_names as $key => $column_display_name ) { $options = array( 'orderby' => $key, 'order' => $switch_order ); $class = $key; - if ( !in_array( $key, array( 'capabilities' ) ) ) { + + if ( $column_sortable ) { if ( strcmp( $key, $orderby ) == 0 ) { $lorder = strtolower( $order ); $class = "$key manage-column sorted $lorder"; @@ -415,6 +426,8 @@ function groups_admin_groups() { } else { $column_display_name = esc_html( $column_display_name ); } + + $output .= sprintf( '%s', esc_attr( $class ), @@ -474,48 +487,77 @@ function groups_admin_groups() { $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - - $output .= ''; - $output .= $result->group_id; - $output .= ''; - $output .= ''; - $output .= sprintf( '%s', esc_url( $edit_url ), stripslashes( wp_filter_nohtml_kses( $result->name ) ) ); - $output .= $row_actions; - $output .= ''; - $output .= ''; - $output .= stripslashes( wp_filter_nohtml_kses( $result->description ) ); - $output .= ''; - - $output .= ''; - - $group = new Groups_Group( $result->group_id ); - $group_capabilities = $group->capabilities; - $group_capabilities_deep = $group->capabilities_deep; - usort( $group_capabilities_deep, array( 'Groups_Utility', 'cmp' ) ); - - if ( count( $group_capabilities_deep ) > 0 ) { - $output .= ''; - } else { - $output .= __( 'This group has no capabilities.', 'groups' ); + + $cell_html_tag = apply_filters( "groups_admin_columns_cell_html_tag_{$key}", $cell_html_tag, $result ); + $cell_html_contents = apply_filters( "groups_admin_columns_cell_html_contents_{$key}", $cell_html_contents, $result ); + $cell_html_classes = apply_filters( "groups_admin_columns_cell_html_classes_{$key}", $cell_html_classes, $result ); + + $output .= sprintf( + '<%1$s class="%2$s">%3$s', + esc_html( $cell_html_tag ), + implode( ' ', $cell_html_classes ), + $cell_html_contents + ); } - $output .= ''; $output .= ''; }