62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * WPSEO plugin file.
 | |
|  *
 | |
|  * @package WPSEO\Admin\Roles
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * WordPress' default implementation of the Role Manager.
 | |
|  */
 | |
| final class WPSEO_Role_Manager_WP extends WPSEO_Abstract_Role_Manager {
 | |
| 
 | |
| 	/**
 | |
| 	 * Adds a role to the system.
 | |
| 	 *
 | |
| 	 * @param string $role         Role to add.
 | |
| 	 * @param string $display_name Name to display for the role.
 | |
| 	 * @param array  $capabilities Capabilities to add to the role.
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	protected function add_role( $role, $display_name, array $capabilities = [] ) {
 | |
| 		$wp_role = get_role( $role );
 | |
| 		if ( $wp_role ) {
 | |
| 			foreach ( $capabilities as $capability => $grant ) {
 | |
| 				$wp_role->add_cap( $capability, $grant );
 | |
| 			}
 | |
| 
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		add_role( $role, $display_name, $capabilities );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Removes a role from the system.
 | |
| 	 *
 | |
| 	 * @param string $role Role to remove.
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	protected function remove_role( $role ) {
 | |
| 		remove_role( $role );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Formats the capabilities to the required format.
 | |
| 	 *
 | |
| 	 * @param array $capabilities Capabilities to format.
 | |
| 	 * @param bool  $enabled      Whether these capabilities should be enabled or not.
 | |
| 	 *
 | |
| 	 * @return array Formatted capabilities.
 | |
| 	 */
 | |
| 	protected function format_capabilities( array $capabilities, $enabled = true ) {
 | |
| 		// Flip keys and values.
 | |
| 		$capabilities = array_flip( $capabilities );
 | |
| 
 | |
| 		// Set all values to $enabled.
 | |
| 		return array_fill_keys( array_keys( $capabilities ), $enabled );
 | |
| 	}
 | |
| }
 |