/** * @since 1.15 * @return GravityView_Roles_Capabilities */ public static function get_instance() { if (!self::$instance) { self::$instance = new self(); } return self::$instance; }
/** * 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)); }
/** * Plugin activate function. * * @access public * @static * @return void */ public static function activate() { // register post types GravityView_Post_Types::init_post_types(); // register rewrite rules GravityView_Post_Types::init_rewrite(); flush_rewrite_rules(); // Update the current GV version update_option('gv_version', self::version); // Add the transient to redirect to configuration page set_transient('_gv_activation_redirect', true, 60); // Clear settings transient delete_transient('gravityview_edd-activate_valid'); GravityView_Roles_Capabilities::get_instance()->add_caps(); }
/** * Delete capabilities added by GravityView * @since 1.15 * @return void */ private function delete_capabilities() { GravityView_Roles_Capabilities::get_instance()->remove_caps(); }
/** * Add GravityView user caps based on role * @since 1.15 * @param WP_User $user */ function _add_gravityview_caps(WP_User $user) { foreach ($user->roles as $role) { $capabilities = GravityView_Roles_Capabilities::all_caps($role); foreach ($capabilities as $cap) { $user->add_cap($cap, true); } } }