public function __construct() { /** @define "$file_path" "./" */ $file_path = plugin_dir_path(__FILE__); include_once $file_path . 'includes/class-gravityview-roles-capabilities.php'; /** * Only delete content and settings if "Delete on Uninstall?" setting is "Permanently Delete" */ $delete = $this->get_delete_setting(); if (GravityView_Roles_Capabilities::has_cap('gravityview_uninstall') && 'delete' === $delete) { $this->fire_everything(); } }
/** * Alias of GravityView_Roles_Capabilities::has_cap() * * @since 1.15 * * @see GravityView_Roles_Capabilities::has_cap() * * @param string|array $caps Single capability or array of capabilities * @param int $object_id (optional) Parameter can be used to check for capabilities against a specific object, such as a post or user * @param int|null $user_id (optional) Check the capabilities for a user who is not necessarily the currently logged-in user * * @return bool True: user has at least one passed capability; False: user does not have any defined capabilities */ public static function has_cap($caps = '', $object_id = null, $user_id = null) { return GravityView_Roles_Capabilities::has_cap($caps, $object_id, $user_id); }
/** * @covers GravityView_Roles_Capabilities::has_cap * @covers GVCommon::has_cap * @group metacaps */ public function test_has_cap_single_post_cap() { $admin_id = $this->factory->user->create(array('user_login' => 'administrator', 'role' => 'administrator')); // Create a user with no capabilities $zero = $this->factory->user->create_and_set(array('user_login' => 'zero', 'role' => 'zero')); $admin_view_id = $this->factory->view->create(array('post_author' => $admin_id)); $admin_private_view_id = $this->factory->view->create(array('post_author' => $admin_id, 'post_status' => 'private')); $this->assertTrue(!empty($admin_view_id)); $zero_view_id = $this->factory->view->create(array('post_author' => $zero->ID)); $this->assertTrue(!empty($zero_view_id)); $this->assertFalse(GravityView_Roles_Capabilities::has_cap(array('edit_others_gravityviews', 'edit_gravityviews'))); // Can't edit own View $this->assertFalse(GravityView_Roles_Capabilities::has_cap('edit_gravityview', $zero_view_id)); // Can't edit others' View $this->assertFalse(GravityView_Roles_Capabilities::has_cap('edit_gravityview', $admin_view_id)); $this->assertFalse(GravityView_Roles_Capabilities::has_cap('edit_gravityview', $admin_private_view_id)); $zero->add_cap('edit_gravityviews'); $zero->add_cap('edit_published_gravityviews'); // CAN edit own view $this->assertTrue(GravityView_Roles_Capabilities::has_cap('edit_gravityview', $zero_view_id)); // Still can't edit others' View $this->assertFalse(GravityView_Roles_Capabilities::has_cap('edit_gravityview', $admin_view_id)); $zero->add_cap('edit_others_gravityviews'); // CAN edit others' View $this->assertTrue(GravityView_Roles_Capabilities::has_cap('edit_gravityview', $admin_view_id)); // Still can't edit other's PRIVATE View $this->assertFalse(GravityView_Roles_Capabilities::has_cap('edit_gravityview', $admin_private_view_id)); $zero->add_cap('edit_private_gravityviews'); // And now user can edit other's PRIVATE View $this->assertTrue(GravityView_Roles_Capabilities::has_cap('edit_gravityview', $admin_private_view_id)); ### ### RESET $zero ### $zero->remove_all_caps(); $zero->add_cap('gravityview_full_access'); // With GV full access, $zero is a $hero $this->assertTrue(GravityView_Roles_Capabilities::has_cap('edit_gravityview', $admin_private_view_id)); }