• File: class-capability-manager-integration.php
  • Full Path: /home/matthif/www/wp-content/plugins/wordpress-seo/admin/capabilities/class-capability-manager-integration.php
  • Date Modified: 02/24/2024 11:29 PM
  • File size: 3.04 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
/**
 * WPSEO plugin file.
 *
 * @package WPSEO\Admin\Capabilities
 */

/**
 * Integrates Yoast SEO capabilities with third party role manager plugins.
 *
 * Integrates with: Members
 * Integrates with: User Role Editor
 */
class WPSEO_Capability_Manager_Integration implements WPSEO_WordPress_Integration {

    
/**
     * Capability manager to use.
     *
     * @var WPSEO_Capability_Manager
     */
    
public $manager;

    
/**
     * WPSEO_Capability_Manager_Integration constructor.
     *
     * @param WPSEO_Capability_Manager $manager The capability manager to use.
     */
    
public function __constructWPSEO_Capability_Manager $manager ) {
        
$this->manager $manager;
    }

    
/**
     * Registers the hooks.
     *
     * @return void
     */
    
public function register_hooks() {
        
add_filter'members_get_capabilities', [ $this'get_capabilities' ] );
        
add_action'members_register_cap_groups', [ $this'action_members_register_cap_group' ] );

        
add_filter'ure_capabilities_groups_tree', [ $this'filter_ure_capabilities_groups_tree' ] );
        
add_filter'ure_custom_capability_groups', [ $this'filter_ure_custom_capability_groups' ], 10);
    }

    
/**
     * Get the Yoast SEO capabilities.
     * Optionally append them to an existing array.
     *
     * @param  array $caps Optional existing capability list.
     * @return array
     */
    
public function get_capabilities( array $caps = [] ) {
        if ( ! 
did_action'wpseo_register_capabilities' ) ) {
            
do_action'wpseo_register_capabilities' );
        }

        return 
array_merge$caps$this->manager->get_capabilities() );
    }

    
/**
     * Add capabilities to its own group in the Members plugin.
     *
     * @see members_register_cap_group()
     *
     * @return void
     */
    
public function action_members_register_cap_group() {
        if ( ! 
function_exists'members_register_cap_group' ) ) {
            return;
        }

        
// Register the yoast group.
        
$args = [
            
'label'      => esc_html__'Yoast SEO''wordpress-seo' ),
            
'caps'       => $this->get_capabilities(),
            
'icon'       => 'dashicons-admin-plugins',
            
'diff_added' => true,
        ];
        
members_register_cap_group'wordpress-seo'$args );
    }

    
/**
     * Adds Yoast SEO capability group in the User Role Editor plugin.
     *
     * @see URE_Capabilities_Groups_Manager::get_groups_tree()
     *
     * @param array $groups Current groups.
     *
     * @return array Filtered list of capabilty groups.
     */
    
public function filter_ure_capabilities_groups_tree$groups = [] ) {
        
$groups = (array) $groups;

        
$groups['wordpress-seo'] = [
            
'caption' => 'Yoast SEO',
            
'parent'  => 'custom',
            
'level'   => 3,
        ];

        return 
$groups;
    }

    
/**
     * Adds capabilities to the Yoast SEO group in the User Role Editor plugin.
     *
     * @see URE_Capabilities_Groups_Manager::get_cap_groups()
     *
     * @param array  $groups Current capability groups.
     * @param string $cap_id Capability identifier.
     *
     * @return array List of filtered groups.
     */
    
public function filter_ure_custom_capability_groups$groups = [], $cap_id '' ) {
        if ( 
in_array$cap_id$this->get_capabilities(), true ) ) {
            
$groups   = (array) $groups;
            
$groups[] = 'wordpress-seo';
        }

        return 
$groups;
    }
}