diff --git a/includes/admin/core/class-admin-settings.php b/includes/admin/core/class-admin-settings.php index 6724671b..77a012ac 100644 --- a/includes/admin/core/class-admin-settings.php +++ b/includes/admin/core/class-admin-settings.php @@ -1830,7 +1830,7 @@ Host: ---- Current User Details -- -Role: +Role: --- WordPress Configurations --- diff --git a/includes/admin/core/um-admin-actions.php b/includes/admin/core/um-admin-actions.php index 09d8d86d..4755c968 100644 --- a/includes/admin/core/um-admin-actions.php +++ b/includes/admin/core/um-admin-actions.php @@ -157,36 +157,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; exit( wp_redirect( remove_query_arg('um_adm_action') ) ); } - /*** - *** @Opt-in tracking - ***/ - add_action('um_admin_do_action__opt_into_tracking', 'um_admin_do_action__opt_into_tracking'); - function um_admin_do_action__opt_into_tracking( $action ) { - if ( !is_admin() || !current_user_can('manage_options') ) die(); - UM()->options()->update( 'um_allow_tracking', 1 ); - update_option( 'um_tracking_notice', 1 ); - - $tracking = new um\core\Tracking(); - $tracking->send_checkin(true); - - exit( wp_redirect( remove_query_arg('um_adm_action') ) ); - } - - /*** - *** @Opt-out of tracking - ***/ - add_action('um_admin_do_action__opt_out_of_tracking', 'um_admin_do_action__opt_out_of_tracking'); - function um_admin_do_action__opt_out_of_tracking( $action ){ - if ( !is_admin() || !current_user_can('manage_options') ) die(); - - UM()->options()->update( 'um_allow_tracking', 0 ); - update_option('um_tracking_notice', 1 ); - - exit( wp_redirect( remove_query_arg('um_adm_action') ) ); - } - - /*** *** @various user actions ***/ diff --git a/includes/class-dependencies.php b/includes/class-dependencies.php index 421de273..05323977 100644 --- a/includes/class-dependencies.php +++ b/includes/class-dependencies.php @@ -57,6 +57,16 @@ if ( ! class_exists( 'um\Dependencies' ) ) { } + /** + * @return mixed + */ + public function get_active_plugins() { + if ( ! self::$active_plugins ) self::init(); + + return self::$active_plugins; + } + + /** * Check if UltimateMember core plugin is active * diff --git a/includes/class-init.php b/includes/class-init.php index 93fc47a5..e39421dc 100644 --- a/includes/class-init.php +++ b/includes/class-init.php @@ -189,7 +189,7 @@ if ( ! class_exists( 'UM' ) ) { // include hook files add_action( 'plugins_loaded', array( &$this, 'init' ), 0 ); - //add_action( 'init', array( &$this, 'old_extensions_notice' ), 0 ); + add_action( 'init', array( &$this, 'old_extensions_notice' ), 0 ); //run activation register_activation_hook( um_plugin, array( &$this, 'activation' ) ); @@ -205,8 +205,17 @@ if ( ! class_exists( 'UM' ) ) { } - function old_extensions_notice() { - if ( ! is_admin() ) return; + /** + * Show notice for customers with old extension's versions + */ + function old_extensions_notice() { + if ( ! is_admin() ) { + return; + } + + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + return; + } $show = false; @@ -225,13 +234,15 @@ if ( ! class_exists( 'UM' ) ) { } } - if ( ! $show ) return; + if ( ! $show ) { + return; + } /*global $um_woocommerce; remove_action( 'init', array( $um_woocommerce, 'plugin_check' ), 1 ); $um_woocommerce->plugin_inactive = true;*/ - echo '

' . sprintf( __( 'ATTENTION! You have pre-2.0 version activated %s extensions. Please install the latest versions.', 'ultimate-member' ), ultimatemember_plugin_name ) . '

'; + echo '

' . sprintf( __( 'ATTENTION! %s %s requires 2.0 extensions. You have pre 2.0 extensions installed on your site.
Please update %s extensions to latest versions. For more info see this doc.', 'ultimate-member' ), ultimatemember_plugin_name, ultimatemember_version, ultimatemember_plugin_name, 'http://docs.ultimatemember.com/article/266-updating-to-2-0-versions-of-extensions' ) . '

'; } diff --git a/includes/core/class-access.php b/includes/core/class-access.php index 278c8af2..0a9f94d4 100644 --- a/includes/core/class-access.php +++ b/includes/core/class-access.php @@ -189,12 +189,11 @@ if ( ! class_exists( 'Access' ) ) { if ( is_front_page() ) { if ( is_user_logged_in() ) { - $role_meta = UM()->roles()->role_data( um_user( 'role' ) ); - - if ( ! empty( $role_meta['default_homepage'] ) ) + if ( ! empty( um_user( 'default_homepage' ) ) ) return; - $redirect_to = ! empty( $role_meta['redirect_homepage'] ) ? $role_meta['redirect_homepage'] : um_get_core_page( 'user' ); + $redirect_homepage = um_user( 'redirect_homepage' ); + $redirect_to = ! empty( $redirect_homepage ) ? $redirect_homepage : um_get_core_page( 'user' ); $this->redirect_handler = $this->set_referer( esc_url( add_query_arg( 'redirect_to', urlencode_deep( $curr ), $redirect_to ) ), "custom_homepage" ); } else { diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index e42bda8a..27315af0 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -1165,18 +1165,21 @@ if ( ! class_exists( 'Fields' ) ) { ) { um_fetch_user( get_current_user_id() ); - if (!um_user( 'can_edit_everyone' )) + if ( ! um_user( 'can_edit_everyone' ) ) { $disabled = ' disabled="disabled" '; + } + um_fetch_user( $_um_profile_id ); - if (isset( $data['public'] ) && $data['public'] == '-2' && $data['roles']) { - if (in_array( UM()->roles()->um_get_user_role( get_current_user_id() ), $data['roles'] )) { + if ( isset( $data['public'] ) && $data['public'] == '-2' && $data['roles'] ) { + $current_user_roles = um_user( 'roles' ); + if ( count( array_intersect( $current_user_roles, $data['roles'] ) ) > 0 ) { $disabled = ''; } } } - if (!isset( $data['autocomplete'] )) { + if ( ! isset( $data['autocomplete'] ) ) { $autocomplete = 'off'; } um_fetch_user( get_current_user_id() ); diff --git a/includes/core/class-rest-api.php b/includes/core/class-rest-api.php index 2a9d35f3..e04b68fa 100644 --- a/includes/core/class-rest-api.php +++ b/includes/core/class-rest-api.php @@ -441,6 +441,7 @@ if ( ! class_exists( 'REST_API' ) ) { break; case 'role': + //get priority role here $response['role'] = um_user( 'role' ); break; diff --git a/includes/core/class-roles-capabilities.php b/includes/core/class-roles-capabilities.php index 34c0ebba..8813547d 100644 --- a/includes/core/class-roles-capabilities.php +++ b/includes/core/class-roles-capabilities.php @@ -100,7 +100,7 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { // User exists if ( ! empty( $user ) ) { // Get users old UM role - $role = $this->um_get_user_role( $user_id ); + $role = UM()->roles()->get_um_user_role( $user_id ); // User already has this role so no new role is set if ( $new_role === $role || ( ! $this->is_role_custom( $new_role ) && user_can( $user, $new_role ) ) ) { @@ -173,49 +173,106 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { /** * Get user one of UM roles if it has it * + * @deprecated since 2.0 * @param int $user_id * @return bool|mixed */ function um_get_user_role( $user_id ) { - $user = get_userdata( $user_id ); - - if ( empty( $user->roles ) ) - return false; - - // User has roles so look for a UM Role one - $um_roles_keys = get_option( 'um_roles' ); - - if ( ! empty( $um_roles_keys ) ) { - $um_roles_keys = array_map( function( $item ) { - return 'um_' . $item; - }, $um_roles_keys ); - } - - $orders = array(); - foreach ( array_values( $user->roles ) as $userrole ) { - if ( ! empty( $um_roles_keys ) && in_array( $userrole, $um_roles_keys ) ) { - $userrole_metakey = substr( $userrole, 3 ); - } else { - $userrole_metakey = $userrole; - } - - $rolemeta = get_option( "um_role_{$userrole_metakey}_meta", false ); - - if ( ! $rolemeta ) { - $orders[ $userrole ] = 0; - continue; - } - - $orders[ $userrole ] = ! empty( $rolemeta['_um_priority'] ) ? $rolemeta['_um_priority'] : 0; - } - - arsort( $orders ); - $roles_in_priority = array_keys( $orders ); - - return array_shift( $roles_in_priority ); + return $this->get_um_user_role( $user_id ); } + /** + * @param $user_id + * + * @return array|bool + */ + function get_all_user_roles( $user_id ) { + $user = get_userdata( $user_id ); + + if ( empty( $user->roles ) ) { + return false; + } + + return array_values( $user->roles ); + } + + + /** + * @param $user_id + * + * @return bool|mixed + */ + function get_priority_user_role( $user_id ) { + $user = get_userdata( $user_id ); + + if ( empty( $user->roles ) ) + return false; + + // User has roles so look for a UM Role one + $um_roles_keys = get_option( 'um_roles' ); + + if ( ! empty( $um_roles_keys ) ) { + $um_roles_keys = array_map( function( $item ) { + return 'um_' . $item; + }, $um_roles_keys ); + } + + $orders = array(); + foreach ( array_values( $user->roles ) as $userrole ) { + if ( ! empty( $um_roles_keys ) && in_array( $userrole, $um_roles_keys ) ) { + $userrole_metakey = substr( $userrole, 3 ); + } else { + $userrole_metakey = $userrole; + } + + $rolemeta = get_option( "um_role_{$userrole_metakey}_meta", false ); + + if ( ! $rolemeta ) { + $orders[ $userrole ] = 0; + continue; + } + + $orders[ $userrole ] = ! empty( $rolemeta['_um_priority'] ) ? $rolemeta['_um_priority'] : 0; + } + + arsort( $orders ); + $roles_in_priority = array_keys( $orders ); + + return array_shift( $roles_in_priority ); + } + + + /** + * @param $user_id + * + * @return bool|mixed + */ + function get_um_user_role( $user_id ) { + // User has roles so look for a UM Role one + $um_roles_keys = get_option( 'um_roles' ); + + if ( empty( $um_roles_keys ) ) + return false; + + $user = get_userdata( $user_id ); + + if ( empty( $user->roles ) ) + return false; + + $um_roles_keys = array_map( function( $item ) { + return 'um_' . $item; + }, $um_roles_keys ); + + $user_um_roles_array = array_intersect( $um_roles_keys, array_values( $user->roles ) ); + + if ( empty( $user_um_roles_array ) ) + return false; + + return array_shift( $user_um_roles_array ); + } + + /** * Get role name by roleID * @@ -264,9 +321,14 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { } - /*** - *** @Query for UM roles - ***/ + /** + * Query for UM roles + * + * @param bool $add_default + * @param null $exclude + * + * @return array + */ function get_roles( $add_default = false, $exclude = null ){ global $wp_roles; @@ -290,9 +352,14 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { } - /*** - *** @Current user can - ***/ + /** + * Current user can + * + * @param $cap + * @param $user_id + * + * @return bool|int + */ function um_current_user_can( $cap, $user_id ) { if ( ! is_user_logged_in() ) return false; @@ -301,7 +368,8 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { um_fetch_user( get_current_user_id() ); - switch( $cap ) { + $current_user_roles = UM()->roles()->get_all_user_roles( $user_id ); + switch( $cap ) { case 'edit': if ( get_current_user_id() == $user_id && um_user( 'can_edit_profile' ) ) $return = 1; @@ -309,13 +377,15 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { $return = 0; elseif ( get_current_user_id() == $user_id && ! um_user( 'can_edit_profile') ) $return = 0; - elseif ( um_user( 'can_edit_roles' ) && ! in_array( UM()->roles()->um_get_user_role( $user_id ), um_user( 'can_edit_roles' ) ) ) + elseif ( um_user( 'can_edit_roles' ) && count( array_intersect( $current_user_roles, um_user( 'can_edit_roles' ) ) ) <= 0 ) $return = 0; break; case 'delete': - if ( ! um_user( 'can_delete_everyone' ) ) $return = 0; - elseif ( um_user( 'can_delete_roles' ) && ! in_array( UM()->roles()->um_get_user_role( $user_id ), um_user( 'can_delete_roles' ) ) ) $return = 0; + if ( ! um_user( 'can_delete_everyone' ) ) + $return = 0; + elseif ( um_user( 'can_delete_roles' ) && count( array_intersect( $current_user_roles, um_user( 'can_delete_roles' ) ) ) <= 0 ) + $return = 0; break; } @@ -337,8 +407,7 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { return false; $user_id = get_current_user_id(); - $role = $this->um_get_user_role( $user_id ); - + $role = UM()->roles()->get_priority_user_role( $user_id ); $permissions = $this->role_data( $role ); $permissions = apply_filters( 'um_user_permissions_filter', $permissions, $user_id ); diff --git a/includes/core/class-shortcodes.php b/includes/core/class-shortcodes.php index bb4d5df4..1b411f95 100644 --- a/includes/core/class-shortcodes.php +++ b/includes/core/class-shortcodes.php @@ -381,9 +381,11 @@ if ( ! class_exists( 'Shortcodes' ) ) { } // for profiles only - if ($mode == 'profile' && um_profile_id() && isset($args['role']) && $args['role'] && - $args['role'] != UM()->roles()->um_get_user_role( um_profile_id() ) ) { - return; + if ( $mode == 'profile' && um_profile_id() ) { + $current_user_roles = UM()->roles()->get_all_user_roles( um_profile_id() ); + if ( ! empty( $args['role'] ) && ! in_array( $args['role'], $current_user_roles ) ) { + return ''; + } } // start loading the template here @@ -627,72 +629,71 @@ if ( ! class_exists( 'Shortcodes' ) ) { } - /** - * Shortcode: Show custom content to specific role - * - * Show content to specific roles - * [um_show_content roles='member'] [/um_show_content] - * You can add multiple target roles, just use ',' e.g. [um_show_content roles='member,candidates,pets'] - * - * Hide content from specific roles - * [um_show_content not='contributors'] [/um_show_content] - * You can add multiple target roles, just use ',' e.g. [um_show_content roles='member,candidates,pets'] - * - * @param array $atts - * @param string $content - * @return string - */ - function um_shortcode_show_content_for_role( $atts = array() , $content = '' ) { + /** + * Shortcode: Show custom content to specific role + * + * Show content to specific roles + * [um_show_content roles='member'] [/um_show_content] + * You can add multiple target roles, just use ',' e.g. [um_show_content roles='member,candidates,pets'] + * + * Hide content from specific roles + * [um_show_content not='contributors'] [/um_show_content] + * You can add multiple target roles, just use ',' e.g. [um_show_content roles='member,candidates,pets'] + * + * @param array $atts + * @param string $content + * @return string + */ + function um_shortcode_show_content_for_role( $atts = array() , $content = '' ) { + global $user_ID; - global $user_ID; + if ( ! is_user_logged_in() ) { + return; + } - if( ! is_user_logged_in() ) { - return; - } + $a = shortcode_atts( array( + 'roles' => '', + 'not' => '', + 'is_profile' => false, + ), $atts ); - $a = shortcode_atts( array( - 'roles' => '', - 'not' => '', - 'is_profile' => false, - ), $atts ); + if ( $a['is_profile'] ) { + um_fetch_user( um_profile_id() ); + } else { + um_fetch_user( $user_ID ); + } - if( $a['is_profile'] ){ - um_fetch_user( um_profile_id() ); - }else{ - um_fetch_user( $user_ID ); - } + $current_user_roles = um_user( 'roles' ); + + if ( ! empty( $a['not'] ) && ! empty( $a['roles'] ) ) { + return do_shortcode( $content ); + } + + if ( ! empty( $a['not'] ) ) { + $not_in_roles = explode( ",", $a['not'] ); + + if ( is_array( $not_in_roles ) && count( array_intersect( $current_user_roles, $not_in_roles ) ) <= 0 ) { + return do_shortcode( $content ); + } + } else { + $roles = explode( ",", $a['roles'] ); + + if ( is_array( $roles ) && count( array_intersect( $current_user_roles, $roles ) ) > 0 ) { + return do_shortcode( $content ); + } + } + + return ''; + } - - $current_user_role = um_user( 'role' ); - - if( isset( $a['not'] ) && ! empty( $a['not'] ) && isset( $a['roles'] ) && ! empty( $a['roles'] ) ){ - return do_shortcode( $content ); - } - - if( isset( $a['not'] ) && ! empty( $a['not'] ) ){ - - $not_in_roles = explode(",", $a['not'] ); - - if( is_array( $not_in_roles ) && ! in_array( $current_user_role, $not_in_roles ) ){ - return do_shortcode( $content ); - } - - }else{ - - $roles = explode(",", $a['roles'] ); - - if(is_array( $roles ) && in_array( $current_user_role, $roles ) ){ - return do_shortcode( $content ); - } - - - } - - return ''; - } - - public function ultimatemember_searchform($args = array(), $content = "") { + /** + * @param array $args + * @param string $content + * + * @return string + */ + public function ultimatemember_searchform( $args = array(), $content = "" ) { // turn off buffer ob_start(); diff --git a/includes/core/class-tracking.php b/includes/core/class-tracking.php index 354e3159..e530561a 100644 --- a/includes/core/class-tracking.php +++ b/includes/core/class-tracking.php @@ -15,8 +15,34 @@ if ( ! class_exists( 'Tracking' ) ) { add_action( 'admin_notices', array( $this, 'admin_notices' ), 10 ); + add_action( 'um_admin_do_action__opt_into_tracking', array( $this, 'um_admin_do_action__opt_into_tracking' ) ); + add_action( 'um_admin_do_action__opt_out_of_tracking', array( $this, 'um_admin_do_action__opt_out_of_tracking' ) ); } + + /*** + *** @Opt-in tracking + ***/ + function um_admin_do_action__opt_into_tracking( $action ) { + UM()->options()->update( 'um_allow_tracking', 1 ); + update_option( 'um_tracking_notice', 1 ); + + $this->send_checkin(true); + + exit( wp_redirect( remove_query_arg('um_adm_action') ) ); + } + + + /*** + *** @Opt-out of tracking + ***/ + function um_admin_do_action__opt_out_of_tracking( $action ) { + UM()->options()->update( 'um_allow_tracking', 0 ); + update_option('um_tracking_notice', 1 ); + + exit( wp_redirect( remove_query_arg('um_adm_action') ) ); + } + /*** *** @setup info array ***/ @@ -145,12 +171,12 @@ if ( ! class_exists( 'Tracking' ) ) { echo '

'; - echo __( 'Allow Ultimate Member to track plugin usage? Opt-in to tracking and our newsletter and we will immediately e-mail you a 20% discount which you can use to purchase our core extensions bundle. No sensitive data is tracked.', 'ultimate-member' ); + printf( __( 'Thanks for installing %s! The core plugin is free but we also sell extensions which allow us to continue developing and supporting the plugin full time. If you subscribe to our mailing list (no spam) we will email you a 20%% discount code which you can use to purchase the extensions bundle.', 'ultimate-member' ), ultimatemember_plugin_name, 'https://ultimatemember.com/core-extensions-bundle/' ); echo '

'; - echo '

' . __( 'Allow tracking', 'ultimate-member' ) . ''; - echo ' ' . __( 'Do not allow tracking', 'ultimate-member' ) . '

'; + echo '

' . __( 'Subscribe to mailing list', 'ultimate-member' ) . ''; + echo ' ' . __( 'No thanks', 'ultimate-member' ) . '

'; } diff --git a/includes/core/class-user.php b/includes/core/class-user.php index 02a1a3f9..d6d6d37e 100644 --- a/includes/core/class-user.php +++ b/includes/core/class-user.php @@ -384,7 +384,8 @@ if ( ! class_exists( 'User' ) ) { if ( ! current_user_can( 'edit_user', $userdata->ID ) ) return $content; - $user_role = UM()->roles()->um_get_user_role( $userdata->ID ); + //$user_role = UM()->roles()->um_get_user_role( $userdata->ID ); + $user_role = UM()->roles()->get_um_user_role( $userdata->ID ); if ( $user_role && ! empty( $userdata->roles ) && count( $userdata->roles ) == 1 ) $style = 'style="display:none;"'; @@ -474,6 +475,7 @@ if ( ! class_exists( 'User' ) ) { delete_option( "um_cache_userdata_{$user_id}" ); } + /** * @function set() * @@ -585,9 +587,11 @@ if ( ! class_exists( 'User' ) ) { } // add permissions - $user_role = UM()->roles()->um_get_user_role( $this->id ); + //$user_role = UM()->roles()->um_get_user_role( $this->id ); + $user_role = UM()->roles()->get_priority_user_role( $this->id ); //$this->profile['role'] = ( strpos( $user_role, 'um_' ) === 0 ) ? str_replace( 'um_', '', $user_role ) : $user_role; $this->profile['role'] = $user_role; + $this->profile['roles'] = UM()->roles()->get_all_user_roles( $this->id ); $role_meta = UM()->roles()->role_data( $user_role ); $role_meta = apply_filters( 'um_user_permissions_filter', $role_meta, $this->id ); diff --git a/includes/core/um-actions-form.php b/includes/core/um-actions-form.php index 8fa5886f..ebc14652 100644 --- a/includes/core/um-actions-form.php +++ b/includes/core/um-actions-form.php @@ -142,7 +142,8 @@ if ( ! defined( 'ABSPATH' ) ) exit; foreach ( $fields as $key => $array ) { if ( isset( $array['public'] ) && -2 == $array['public'] && ! empty( $array['roles'] ) && is_user_logged_in() ) { - if ( ! in_array( um_user( 'role' ), $array['roles'] ) ) { + $current_user_roles = um_user( 'roles' ); + if ( count( array_intersect( $current_user_roles, $array['roles'] ) ) <= 0 ) { continue; } } diff --git a/includes/core/um-actions-login.php b/includes/core/um-actions-login.php index cd8d92bc..fa31255b 100644 --- a/includes/core/um-actions-login.php +++ b/includes/core/um-actions-login.php @@ -166,11 +166,12 @@ if ( ! defined( 'ABSPATH' ) ) exit; um_store_lastlogin_timestamp( $user->ID ); } - /*** - *** @login user - ***/ - add_action('um_user_login', 'um_user_login', 10); - function um_user_login($args){ + /** + * Login user process + * + * @param array $args + */ + function um_user_login( $args ) { extract( $args ); $rememberme = ( isset( $args['rememberme'] ) && 1 == $args['rememberme'] && isset( $_REQUEST['rememberme'] ) ) ? 1 : 0; @@ -179,30 +180,29 @@ if ( ! defined( 'ABSPATH' ) ) exit; wp_die( __('This action has been prevented for security measures.','ultimate-member') ); } - UM()->user()->auto_login( um_user('ID'), $rememberme ); + UM()->user()->auto_login( um_user( 'ID' ), $rememberme ); // Hook that runs after successful login and before user is redirected - do_action('um_on_login_before_redirect', um_user('ID') ); + do_action( 'um_on_login_before_redirect', um_user( 'ID' ) ); // Priority redirect - if ( isset( $args['redirect_to'] ) && ! empty( $args['redirect_to'] ) ) { - exit( wp_redirect( $args['redirect_to'] ) ); + if ( ! empty( $args['redirect_to'] ) ) { + exit( wp_redirect( $args['redirect_to'] ) ); } - $role_data = UM()->roles()->role_data( um_user( 'role' ) ); - // Role redirect - if ( empty( $role_data['after_login'] ) ) + $after_login = um_user( 'after_login' ); + if ( empty( $after_login ) ) exit( wp_redirect( um_user_profile_url() ) ); - switch( $role_data['after_login'] ) { + switch( $after_login ) { case 'redirect_admin': exit( wp_redirect( admin_url() ) ); break; case 'redirect_url': - exit( wp_redirect( $role_data['login_redirect_url'] ) ); + exit( wp_redirect( um_user( 'login_redirect_url' ) ) ); break; case 'refresh': @@ -216,6 +216,8 @@ if ( ! defined( 'ABSPATH' ) ) exit; } } + add_action( 'um_user_login', 'um_user_login', 10 ); + /*** *** @form processing diff --git a/includes/core/um-actions-members.php b/includes/core/um-actions-members.php index f29072ca..7c2b16fa 100644 --- a/includes/core/um-actions-members.php +++ b/includes/core/um-actions-members.php @@ -19,17 +19,16 @@ if ( ! defined( 'ABSPATH' ) ) exit; } $search_filters = apply_filters('um_frontend_member_search_filters',$search_filters); - + if ( $args['search'] == 1 && is_array( $search_filters ) ) { // search on - - if ( isset( $args['roles_can_search'] ) && ! empty( $args['roles_can_search'] ) && ! in_array( um_user( 'role' ), $args['roles_can_search'] ) ) { + + $current_user_roles = um_user( 'roles' ); + if ( ! empty( $args['roles_can_search'] ) && count( array_intersect( $current_user_roles, $args['roles_can_search'] ) ) <= 0 ) { return; } - - $count = count( $search_filters ); - ?> - + $count = count( $search_filters ); ?> +