%PDF- %PDF-
Direktori : /var/www/cwg/wp-content/plugins/members/addons/members-admin-access/app/ |
Current File : //var/www/cwg/wp-content/plugins/members/addons/members-admin-access/app/functions.php |
<?php /** * Plugin functions. * * @package MembersAdminAccess * @author Justin Tadlock <justintadlock@gmail.com> * @copyright Copyright (c) 2018, Justin Tadlock * @link https://themehybrid.com/plugins/members-admin-access * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html */ namespace Members\AddOns\AdminAccess; # Filter whether to show the toolbar. add_filter( 'show_admin_bar', __NAMESPACE__ . '\show_admin_bar', 95 ); # Modify toolbar items. add_action( 'admin_bar_menu', __NAMESPACE__ . '\admin_bar_menu', 95 ); /** * Filter on the `show_admin_bar` hook to disable the admin bar for users without admin access. * * @since 1.0.0 * @access public * @param bool $show * @return bool */ function show_admin_bar( $show ) { return disable_toolbar() && ! current_user_has_access() ? false : $show; } /** * Removes items from the toolbar if it is showing for a user without access. * * @since 1.0.0 * @access public * @param object $wp_admin_bar * @return void */ function admin_bar_menu( $wp_admin_bar ) { if ( is_admin() || disable_toolbar() || current_user_has_access() ) return; $items = [ 'about', 'site-name', 'dashboard', 'customize', 'updates', 'comments', 'new-content', 'edit', 'edit-profile', 'user-info' ]; apply_filters( app()->namespace . '/remove_toolbar_items', $items ); foreach ( $items as $item ) $wp_admin_bar->remove_menu( $item ); } /** * Returns an array of the default plugin settings. * * @since 1.0.0 * @access public * @return array */ function get_default_settings() { $settings = [ 'roles' => array_keys( members_get_roles() ), // Defaults to all roles. 'redirect_url' => esc_url_raw( home_url() ), 'disable_toolbar' => true ]; return apply_filters( app()->namespace . '/get_default_settings', $settings ); } /** * Returns the requested plugin setting's value. * * @since 1.0.0 * @access public * @param string $option * @return mixed */ function get_setting( $option = '' ) { $defaults = get_default_settings(); $settings = wp_parse_args( get_option( 'members_admin_access_settings', $defaults ), $defaults ); return isset( $settings[ $option ] ) ? $settings[ $option ] : false; } /** * Returns the redirect to ID. A value of `0` is the home/front page. * * @since 1.0.0 * @access public * @return int */ function get_redirect_url() { return apply_filters( app()->namespace . '/get_redirect_url', get_setting( 'redirect_url' ) ); } /** * Conditional check on whether to disable the toolbar for users without admin access. * * @since 1.0.0 * @access public * @return bool */ function disable_toolbar() { return (bool) apply_filters( app()->namespace . '/disable_toolbar', get_setting( 'disable_toolbar' ) ); } /** * Returns an array of roles with admin access. * * @since 1.0.0 * @access public * @return array */ function get_roles_with_access() { $roles = (array) apply_filters( app()->namespace . '/get_roles_with_access', get_setting( 'roles' ) ); return array_merge( get_roles_with_permanent_access(), $roles ); } /** * Returns an array of roles with permanent admin access, such as administrators. * * @since 1.0.0 * @access public * @return array */ function get_roles_with_permanent_access() { return apply_filters( app()->namespace . '/get_roles_with_permanent_access', [ 'administrator' ] ); } /** * Conditional function for checking if a particular role has access. * * @since 1.0.0 * @access public * @param string $role * @return bool */ function role_has_access( $role ) { return apply_filters( app()->namespace . '/role_has_access', in_array( $role, get_roles_with_access() ), $role ); } /** * Conditional function to check if the current user has admin access. * * @since 1.0.0 * @access public * @return bool */ function current_user_has_access() { return user_has_access( get_current_user_id() ); } /** * Conditional function to check if a specific user has admin access. * * @since 1.0.0 * @access public * @param int $user_id * @return bool */ function user_has_access( $user_id = 0 ) { return apply_filters( app()->namespace . '/user_has_access', members_user_has_role( $user_id, get_roles_with_access() ), $user_id ); }