Skip to content

Commit

Permalink
Only call add_cap() when necessary
Browse files Browse the repository at this point in the history
Avoid calling $role->add_cap() when the role already has the given
capability. This avoids an unnecessary database write.
  • Loading branch information
noisysocks committed Mar 8, 2018
1 parent f4a8d92 commit a206f51
Showing 1 changed file with 44 additions and 31 deletions.
75 changes: 44 additions & 31 deletions lib/register.php
Original file line number Diff line number Diff line change
Expand Up @@ -412,37 +412,50 @@ function gutenberg_register_post_types() {
'map_meta_cap' => true,
) );

foreach ( array( 'administrator', 'editor' ) as $role_name ) {
$editor = get_role( $role_name );
$editor->add_cap( 'edit_blocks' );
$editor->add_cap( 'edit_others_blocks' );
$editor->add_cap( 'publish_blocks' );
$editor->add_cap( 'read_private_blocks' );
$editor->add_cap( 'read_blocks' );
$editor->add_cap( 'delete_blocks' );
$editor->add_cap( 'delete_private_blocks' );
$editor->add_cap( 'delete_published_blocks' );
$editor->add_cap( 'delete_others_blocks' );
$editor->add_cap( 'edit_private_blocks' );
$editor->add_cap( 'edit_published_blocks' );
$editor->add_cap( 'create_blocks' );
}

$author = get_role( 'author' );
$author->add_cap( 'edit_blocks' );
$author->add_cap( 'publish_blocks' );
$author->add_cap( 'read_blocks' );
$author->add_cap( 'delete_blocks' );
$author->add_cap( 'delete_published_blocks' );
$author->add_cap( 'edit_published_blocks' );
$author->add_cap( 'create_blocks' );

$contributor = get_role( 'contributor' );
$contributor->add_cap( 'edit_blocks' );
$contributor->add_cap( 'read_blocks' );
$contributor->add_cap( 'delete_blocks' );
$contributor->add_cap( 'delete_published_blocks' );
$contributor->add_cap( 'edit_published_blocks' );
$editor_caps = array(
'edit_blocks',
'edit_others_blocks',
'publish_blocks',
'read_private_blocks',
'read_blocks',
'delete_blocks',
'delete_private_blocks',
'delete_published_blocks',
'delete_others_blocks',
'edit_private_blocks',
'edit_published_blocks',
'create_blocks',
);

$caps_map = array(
'administrator' => $editor_caps,
'editor' => $editor_caps,
'author' => array(
'edit_blocks',
'publish_blocks',
'read_blocks',
'delete_blocks',
'delete_published_blocks',
'edit_published_blocks',
'create_blocks',
),
'contributor' => array(
'edit_blocks',
'read_blocks',
'delete_blocks',
'delete_published_blocks',
'edit_published_blocks',
),
);

foreach ( $caps_map as $role_name => $caps ) {
$role = get_role( $role_name );
foreach ( $caps as $cap ) {
if ( ! $role->has_cap( $cap ) ) {
$role->add_cap( $cap );
}
}
}
}
add_action( 'init', 'gutenberg_register_post_types' );

Expand Down

0 comments on commit a206f51

Please sign in to comment.