'; $output .= '

'; $output .= esc_html__( 'Remove a capability', 'groups' ); $output .= '

'; $output .= sprintf( '
', esc_url( $current_url ) ); $output .= '
'; $output .= sprintf( '', esc_attr( intval( $capability->get_capability_id() ) ) ); $output .= ' '; $output .= wp_nonce_field( 'capabilities-remove', GROUPS_ADMIN_GROUPS_NONCE, true, false ); $output .= sprintf( '', esc_attr__( 'Remove', 'groups' ) ); $output .= ''; $output .= sprintf( '%s', esc_url( $current_url ), esc_html__( 'Cancel', 'groups' ) ); $output .= '
'; $output .= ''; // .capability.remove $output .= '
'; $output .= ''; // .manage-capabilities echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } // function groups_admin_capabilities_remove /** * Handle remove form submission. * * @return int|boolean ID of the deleted capability or false on failure */ function groups_admin_capabilities_remove_submit() { $result = false; if ( !Groups_User::current_user_can( GROUPS_ADMINISTER_GROUPS ) ) { wp_die( esc_html__( 'Access denied.', 'groups' ) ); } if ( !wp_verify_nonce( $_POST[GROUPS_ADMIN_GROUPS_NONCE], 'capabilities-remove' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized wp_die( esc_html__( 'Access denied.', 'groups' ) ); } $capability_id = isset( $_POST['capability-id-field'] ) ? $_POST['capability-id-field'] : null; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $capability = Groups_Capability::read( $capability_id ); if ( $capability ) { if ( $capability->capability !== Groups_Post_Access::READ_POST_CAPABILITY ) { $result = Groups_Capability::delete( $capability_id ); } } return $result; } // function groups_admin_capabilities_remove_submit /** * Shows form to confirm removal bulk capabilities */ function groups_admin_capabilities_bulk_remove() { $output = ''; if ( !Groups_User::current_user_can( GROUPS_ADMINISTER_GROUPS ) ) { wp_die( esc_html__( 'Access denied.', 'groups' ) ); } $capability_ids = isset( $_POST['capability_ids'] ) ? $_POST['capability_ids'] : null; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized if ( $capability_ids === null || !is_array( $capability_ids ) ) { wp_die( esc_html__( 'No such capabilities.', 'groups' ) ); } $capabilities = array(); foreach ( $capability_ids as $capability_id ) { $capability = Groups_Capability::read( intval( $capability_id ) ); if ( $capability ) { $capabilities[] = $capability; } } $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $current_url = remove_query_arg( 'action', $current_url ); $current_url = remove_query_arg( 'capability_id', $current_url ); $output .= '
'; $output .= '

'; $output .= esc_html__( 'Remove capabilities', 'groups' ); $output .= '

'; $output .= '
'; $output .= '
'; $output .= '

'; $output .= esc_html__( 'Please confirm to remove the following capabilities. This action cannot be undone.', 'groups' ); $output .= '

'; $output .= '
    '; foreach ( $capabilities as $capability ) { $output .= sprintf( '', esc_attr( intval( $capability->capability_id ) ) ); $output .= '
  • '; $output .= sprintf( '%s', stripslashes( wp_filter_nohtml_kses( $capability->capability ) ) ); $output .= '
  • '; } $output .= '
'; $output .= sprintf( '', esc_attr__( 'Remove', 'groups' ) ); $output .= sprintf( '%s', esc_url( $current_url ), esc_html__( 'Cancel', 'groups' ) ); $output .= ''; $output .= ''; $output .= ''; $output .= wp_nonce_field( 'admin', GROUPS_ADMIN_GROUPS_ACTION_NONCE, true, false ); $output .= '
'; $output .= '
'; $output .= '
'; echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } // function groups_admin_capabilities_bulk_remove /** * Handle remove form submission. * * @return array of deleted capabilities' ids */ function groups_admin_capabilities_bulk_remove_submit() { $result = array(); if ( !Groups_User::current_user_can( GROUPS_ADMINISTER_GROUPS ) ) { wp_die( esc_html__( 'Access denied.', 'groups' ) ); } if ( !wp_verify_nonce( $_POST[GROUPS_ADMIN_GROUPS_ACTION_NONCE], 'admin' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized wp_die( esc_html__( 'Access denied.', 'groups' ) ); } $capability_ids = isset( $_POST['capability_ids'] ) ? $_POST['capability_ids'] : null; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized if ( $capability_ids !== null && is_array( $capability_ids ) ) { foreach ( $capability_ids as $capability_id ) { $capability = Groups_Capability::read( $capability_id ); if ( $capability ) { if ( $capability->capability !== Groups_Post_Access::READ_POST_CAPABILITY ) { if ( Groups_Capability::delete( $capability_id ) ) { $result[] = $capability->capability_id; } } } } } return $result; } // function groups_admin_capabilities_bulk_remove_submit