first commit
This commit is contained in:
+96
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||||
|
||||
if( ! class_exists('ACF_Location_User_Role') ) :
|
||||
|
||||
class ACF_Location_User_Role extends acf_location {
|
||||
|
||||
/**
|
||||
* initialize
|
||||
*
|
||||
* Sets up the class functionality.
|
||||
*
|
||||
* @date 5/03/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
function initialize() {
|
||||
$this->name = 'user_role';
|
||||
$this->label = __("User Role", 'acf');
|
||||
$this->category = 'user';
|
||||
}
|
||||
|
||||
/**
|
||||
* rule_match
|
||||
*
|
||||
* Determines if the given location $rule is a match for the current $screen.
|
||||
*
|
||||
* @date 17/9/19
|
||||
* @since 5.8.1
|
||||
*
|
||||
* @param bool $result Whether or not this location rule is a match.
|
||||
* @param array $rule The locatio rule data.
|
||||
* @param array $screen The current screen data.
|
||||
* @return bool
|
||||
*/
|
||||
function rule_match( $result, $rule, $screen ) {
|
||||
|
||||
// Extract vars.
|
||||
$user_id = acf_maybe_get( $screen, 'user_id' );
|
||||
$user_role = acf_maybe_get( $screen, 'user_role' );
|
||||
|
||||
// Allow $user_role to be supplied (third-party compatibility).
|
||||
if( $user_role ) {
|
||||
// Do nothing
|
||||
|
||||
// Determine $user_role from $user_id.
|
||||
} elseif( $user_id ) {
|
||||
|
||||
// Use default role for new user.
|
||||
if( $user_id == 'new' ) {
|
||||
$user_role = get_option('default_role');
|
||||
|
||||
// Check if user can, and if so, set the value allowing them to match.
|
||||
} elseif( user_can($user_id, $rule['value']) ) {
|
||||
$user_role = $rule['value'];
|
||||
}
|
||||
|
||||
// Return false if not a user.
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Compare and return.
|
||||
return $this->compare( $user_role, $rule );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* rule_values
|
||||
*
|
||||
* Returns an array of values for this location rule.
|
||||
*
|
||||
* @date 17/9/19
|
||||
* @since 5.8.1
|
||||
*
|
||||
* @param array $choices An empty array.
|
||||
* @param array $rule The locatio rule data.
|
||||
* @return array
|
||||
*/
|
||||
function rule_values( $choices, $rule ) {
|
||||
global $wp_roles;
|
||||
|
||||
// Merge roles with defaults and return.
|
||||
return wp_parse_args($wp_roles->get_names(), array(
|
||||
'all' => __('All', 'acf')
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
// initialize
|
||||
acf_register_location_rule( 'ACF_Location_User_Role' );
|
||||
|
||||
endif; // class_exists check
|
||||
Reference in New Issue
Block a user