Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Gravity Forms granular form capabilities management. see usage below
- *
- * Usage:
- * install Members plugin http://wordpress.org/extend/plugins/members/
- * edit the capabilities for a role (ie. editor)
- * add a new capabilty for each form users with that role can access
- * ie. add a capability called gravityforms_manage_form_3 to enable the user to view only form with id 3
- *
- * Caveat: the entries of the first form sorted alphabetically by title will always be visible, so add a placeholder titles something like "0 form"
- */
- function smc_granular_form_management( $all_caps, $cap, $args ) {
- $cap = reset( $cap );
- if ( strpos( $cap, 'gravityforms_' ) !== 0 )
- return $all_caps;
- // save initial values
- $view_entries = isset( $all_caps['gravityforms_view_entries'] ) ? $all_caps['gravityforms_view_entries'] : 0;
- $export_entries = isset( $all_caps['gravityforms_export_entries'] ) ? $all_caps['gravityforms_export_entries'] : 0;
- $edit_forms = isset( $all_caps['gravityforms_edit_forms'] ) ? $all_caps['gravityforms_edit_forms'] : 0;
- // add these so that the menus show up
- $all_caps['gravityforms_view_entries'] = 1;
- $all_caps['gravityforms_export_entries'] = 1;
- $all_caps['gravityforms_edit_forms'] = 1;
- // viewing entries, editing form
- $form_id = isset( $_GET['id'] ) ? $_GET['id'] : null;
- // exporting entries
- if ( ! $form_id )
- $form_id = isset( $_POST['export_form'] ) ? $_POST['export_form'] : null;
- // see if the capability exists for this form for this user
- $per_form_cap = 'gravityforms_manage_form_' . $form_id;
- if ( $form_id && isset( $all_caps[ $per_form_cap ] ) && 1 == $all_caps[ $per_form_cap ] ) {
- // enable all caps when viewing authorized form
- $all_caps['gravityforms_edit_entries'] = 1;
- $all_caps['gravityforms_edit_entry_notes'] = 1;
- $all_caps['gravityforms_edit_forms'] = 1;
- $all_caps['gravityforms_export_entries'] = 1;
- $all_caps['gravityforms_delete_entries'] = 1;
- $all_caps['gravityforms_preview_forms'] = 1;
- $all_caps['gravityforms_view_entries'] = 1;
- $all_caps['gravityforms_view_entry_notes'] = 1;
- } elseif ( $form_id ) {
- // return caps to defaults when on potentially unauthorized form
- $all_caps['gravityforms_view_entries'] = $view_entries;
- $all_caps['gravityforms_export_entries'] = $export_entries;
- $all_caps['gravityforms_edit_forms'] = $edit_forms;
- }
- return $all_caps;
- }
- add_filter( 'user_has_cap', 'smc_granular_form_management', 10, 3 );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement