diff --git a/includes/admin/class-site-health.php b/includes/admin/class-site-health.php index b7a07925..a8100d74 100644 --- a/includes/admin/class-site-health.php +++ b/includes/admin/class-site-health.php @@ -464,1351 +464,22 @@ class Site_Health { // Appearance settings sitehealth $appearance_sitehealth = $this->appearance_sitehealth(); - // Misc settings. - $misc_settings = array( - 'um-form_asterisk' => array( - 'label' => __( 'Show an asterisk for required fields', 'ultimate-member' ), - 'value' => UM()->options()->get( 'form_asterisk' ) ? $labels['yes'] : $labels['no'], - ), - 'um-um_profile_object_cache_stop' => array( - 'label' => __( 'Disable Cache User Profile', 'ultimate-member' ), - 'value' => UM()->options()->get( 'um_profile_object_cache_stop' ) ? $labels['yes'] : $labels['no'], - ), - 'um-enable_blocks' => array( - 'label' => __( 'Enable Gutenberg Blocks', 'ultimate-member' ), - 'value' => UM()->options()->get( 'enable_blocks' ) ? $labels['yes'] : $labels['no'], - ), - 'um-enable_as_email_sending' => array( - 'label' => __( 'Email sending by Action Scheduler', 'ultimate-member' ), - 'value' => UM()->options()->get( 'enable_as_email_sending' ) ? $labels['yes'] : $labels['no'], - ), - 'um-rest_api_version' => array( - 'label' => __( 'REST API version', 'ultimate-member' ), - 'value' => UM()->options()->get( 'rest_api_version' ), - ), - 'um-disable_restriction_pre_queries' => array( - 'label' => __( 'Disable pre-queries for restriction content logic (advanced)', 'ultimate-member' ), - 'value' => UM()->options()->get( 'disable_restriction_pre_queries' ) ? $labels['yes'] : $labels['no'], - ), - 'um-member_directory_own_table' => array( - 'label' => __( 'Enable custom table for usermeta', 'ultimate-member' ), - 'value' => UM()->options()->get( 'member_directory_own_table' ) ? $labels['yes'] : $labels['no'], - ), - 'um-uninstall_on_delete' => array( - 'label' => __( 'Remove Data on Uninstall?', 'ultimate-member' ), - 'value' => UM()->options()->get( 'uninstall_on_delete' ) ? $labels['yes'] : $labels['no'], - ), - ); + // Advanced settings sitehealth + $advanced_sitehealth = $this->advanced_sitehealth(); - // Secure settings - $secure_ban_admins_accounts = UM()->options()->get( 'secure_ban_admins_accounts' ); + // License settings sitehealth + $license_sitehealth = $this->license_sitehealth(); - $banned_capabilities_opt = UM()->options()->get( 'banned_capabilities' ); - $banned_capabilities = array(); - if ( ! empty( $banned_capabilities_opt ) ) { - if ( is_string( $banned_capabilities_opt ) ) { - $banned_capabilities = array( $banned_capabilities_opt ); - } else { - $banned_capabilities = $banned_capabilities_opt; - } - } + $info['ultimate-member']['fields'] = array_merge( $info['ultimate-member']['fields'], $general_sitehealth, $access_sitehealth, $emails_sitehealth, $appearance_sitehealth, $advanced_sitehealth, $license_sitehealth ); - $secure_settings = array( - 'um-banned_capabilities' => array( - 'label' => __( 'Banned Administrative Capabilities', 'ultimate-member' ), - 'value' => ! empty( $banned_capabilities ) ? implode( ', ', $banned_capabilities ) : '', - ), - 'um-lock_register_forms' => array( - 'label' => __( 'Lock All Register Forms', 'ultimate-member' ), - 'value' => UM()->options()->get( 'lock_register_forms' ) ? $labels['yes'] : $labels['no'], - ), - 'um-display_login_form_notice' => array( - 'label' => __( 'Display Login form notice to reset passwords', 'ultimate-member' ), - 'value' => UM()->options()->get( 'display_login_form_notice' ) ? $labels['yes'] : $labels['no'], - ), - 'um-secure_ban_admins_accounts' => array( - 'label' => __( 'Enable ban for administrative capabilities', 'ultimate-member' ), - 'value' => $secure_ban_admins_accounts ? $labels['yes'] : $labels['no'], - ), - ); - if ( ! empty( $secure_ban_admins_accounts ) ) { - $secure_notify_admins_banned_accounts = UM()->options()->get( 'secure_notify_admins_banned_accounts' ); + // User roles settings sitehealth + $info = $this->roles_sitehealth( $info ); - $secure_settings['um-secure_notify_admins_banned_accounts'] = array( - 'label' => __( 'Notify Administrators', 'ultimate-member' ), - 'value' => $secure_notify_admins_banned_accounts ? $labels['yes'] : $labels['no'], - ); - if ( ! empty( $secure_notify_admins_banned_accounts ) ) { - $secure_notify_admins_banned_accounts_options = array( - 'instant' => __( 'Send Immediately', 'ultimate-member' ), - 'hourly' => __( 'Hourly', 'ultimate-member' ), - 'daily' => __( 'Daily', 'ultimate-member' ), - ); + // Forms settings sitehealth + $info = $this->forms_sitehealth( $info ); - $secure_settings['um-secure_notify_admins_banned_accounts__interval'] = array( - 'label' => __( 'Notification Schedule', 'ultimate-member' ), - 'value' => $secure_notify_admins_banned_accounts_options[ UM()->options()->get( 'secure_notify_admins_banned_accounts__interval' ) ], - ); - } - } - - $secure_allowed_redirect_hosts = UM()->options()->get( 'secure_allowed_redirect_hosts' ); - $secure_allowed_redirect_hosts = explode( PHP_EOL, $secure_allowed_redirect_hosts ); - - $secure_settings['um-secure_allowed_redirect_hosts'] = array( - 'label' => __( 'Allowed hosts for safe redirect', 'ultimate-member' ), - 'value' => $secure_allowed_redirect_hosts, - ); - - // Licenses settings. - $license_settings = array( - 'um-licenses' => array( - 'label' => __( 'Licenses', 'ultimate-member' ), - 'value' => array(), - ), - ); - - /** - * Filters licenses settings for Site Health. - * - * @since 2.7.0 - * @hook um_licenses_site_health - * - * @param {array} $license_settings licenses settings for Site Health. - * - * @return {array} licenses settings for Site Health. - * - * @example Extend licenses settings for Site Health. - * function um_licenses_site_health( $license_settings ) { - * // your code here - * return $license_settings; - * } - * add_filter( 'um_licenses_site_health', 'um_licenses_site_health', 10, 1 ); - */ - $license_settings = apply_filters( 'um_licenses_site_health', $license_settings ); - -// $info['ultimate-member']['fields'] = array_merge( $info['ultimate-member']['fields'], $pages_settings, $user_settings, $account_settings, $uploads_settings, $restrict_settings, $access_other_settings, $email_settings, $appearance_settings, $misc_settings, $secure_settings, $license_settings ); - $info['ultimate-member']['fields'] = array_merge( $info['ultimate-member']['fields'], $general_sitehealth, $access_sitehealth, $emails_sitehealth, $appearance_sitehealth, $misc_settings, $secure_settings, $license_settings ); - - // User roles settings - $roles_array = array(); - foreach ( $this->get_roles() as $key => $role ) { - if ( strpos( $key, 'um_' ) === 0 ) { - $key = substr( $key, 3 ); - } - $rolemeta = $this->get_role_meta( $key ); - if ( false === $rolemeta ) { - continue; - } - $priority = ! empty( $rolemeta['_um_priority'] ) ? $rolemeta['_um_priority'] : 0; - - $k = $priority . '-' . $role; - $roles_array[ $k ] = $role . '(' . $priority . ')'; - - krsort( $roles_array, SORT_NUMERIC ); - } - - $info['ultimate-member-user-roles'] = array( - 'label' => __( 'User roles', 'ultimate-member' ), - 'description' => __( 'This debug information about user roles.', 'ultimate-member' ), - 'fields' => array( - 'um-roles' => array( - 'label' => __( 'User Roles (priority)', 'ultimate-member' ), - 'value' => implode( ', ', $roles_array ), - ), - 'um-register_role' => array( - 'label' => __( 'WordPress Default New User Role', 'ultimate-member' ), - 'value' => get_option( 'default_role' ), - ), - ), - ); - - foreach ( $this->get_roles() as $key => $role ) { - if ( strpos( $key, 'um_' ) === 0 ) { - $key = substr( $key, 3 ); - } - - $rolemeta = $this->get_role_meta( $key ); - if ( false === $rolemeta ) { - continue; - } - - $info[ 'ultimate-member-' . $key ] = array( - 'label' => ' - ' . $role . __( ' role settings', 'ultimate-member' ), - 'description' => __( 'This debug information about user role.', 'ultimate-member' ), - 'fields' => array(), - ); - - if ( array_key_exists( '_um_can_access_wpadmin', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_access_wpadmin' => array( - 'label' => __( 'Can access wp-admin?', 'ultimate-member' ), - 'value' => $rolemeta['_um_can_access_wpadmin'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_not_see_adminbar', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_not_see_adminbar' => array( - 'label' => __( 'Force hiding adminbar in frontend?', 'ultimate-member' ), - 'value' => $rolemeta['_um_can_not_see_adminbar'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_edit_everyone', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_edit_everyone' => array( - 'label' => __( 'Can edit other member accounts?', 'ultimate-member' ), - 'value' => $rolemeta['_um_can_edit_everyone'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_edit_everyone', $rolemeta ) && 1 === absint( $rolemeta['_um_can_edit_everyone'] ) ) { - $can_edit_roles_meta = ! empty( $rolemeta['_um_can_edit_roles'] ) ? $rolemeta['_um_can_edit_roles'] : array(); - $can_edit_roles = array(); - if ( ! empty( $can_edit_roles_meta ) ) { - if ( is_string( $can_edit_roles_meta ) ) { - $can_edit_roles = array( $can_edit_roles_meta ); - } else { - $can_edit_roles = $can_edit_roles_meta; - } - } - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_edit_roles' => array( - 'label' => __( 'Can edit these user roles only', 'ultimate-member' ), - 'value' => ! empty( $can_edit_roles ) ? implode( ', ', $can_edit_roles ) : $labels['all'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_delete_everyone', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_delete_everyone' => array( - 'label' => __( 'Can delete other member accounts?', 'ultimate-member' ), - 'value' => $rolemeta['_um_can_delete_everyone'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_delete_everyone', $rolemeta ) && 1 === absint( $rolemeta['_um_can_delete_everyone'] ) ) { - $can_delete_roles_meta = ! empty( $rolemeta['_um_can_delete_roles'] ) ? $rolemeta['_um_can_delete_roles'] : array(); - $can_delete_roles = array(); - if ( ! empty( $can_delete_roles_meta ) ) { - if ( is_string( $can_delete_roles_meta ) ) { - $can_delete_roles = array( $can_delete_roles_meta ); - } else { - $can_delete_roles = $can_delete_roles_meta; - } - } - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_delete_roles' => array( - 'label' => __( 'Can delete these user roles only', 'ultimate-member' ), - 'value' => ! empty( $can_delete_roles ) ? implode( ', ', $can_delete_roles ) : $labels['all'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_edit_profile', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_edit_profile' => array( - 'label' => __( 'Can edit their profile?', 'ultimate-member' ), - 'value' => $rolemeta['_um_can_edit_profile'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_delete_profile', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_delete_profile' => array( - 'label' => __( 'Can delete their account?', 'ultimate-member' ), - 'value' => $rolemeta['_um_can_delete_profile'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_view_all', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_view_all' => array( - 'label' => __( 'Can view other member profiles?', 'ultimate-member' ), - 'value' => $rolemeta['_um_can_view_all'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_view_all', $rolemeta ) && 1 === absint( $rolemeta['_um_can_view_all'] ) ) { - $can_view_roles_meta = ! empty( $rolemeta['_um_can_view_roles'] ) ? $rolemeta['_um_can_view_roles'] : array(); - $can_view_roles = array(); - if ( ! empty( $can_view_roles_meta ) ) { - if ( is_string( $can_view_roles_meta ) ) { - $can_view_roles = array( $can_view_roles_meta ); - } else { - $can_view_roles = $can_view_roles_meta; - } - } - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_view_roles' => array( - 'label' => __( 'Can view these user roles only', 'ultimate-member' ), - 'value' => ! empty( $can_view_roles ) ? implode( ', ', $can_view_roles ) : $labels['all'], - ), - ) - ); - } - - if ( isset( $rolemeta['_um_profile_noindex'] ) && '' !== $rolemeta['_um_profile_noindex'] ) { - $profile_noindex = $rolemeta['_um_profile_noindex'] ? $labels['yes'] : $labels['no']; - } else { - $profile_noindex = __( 'Default', 'ultimate-member' ); - } - if ( isset( $rolemeta['_um_default_homepage'] ) && '' !== $rolemeta['_um_default_homepage'] ) { - $default_homepage = $rolemeta['_um_default_homepage'] ? $labels['yes'] : $labels['no']; - } else { - $default_homepage = __( 'No such option', 'ultimate-member' ); - } - - if ( array_key_exists( '_um_can_make_private_profile', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_make_private_profile' => array( - 'label' => __( 'Can make their profile private?', 'ultimate-member' ), - 'value' => $rolemeta['_um_can_make_private_profile'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - if ( array_key_exists( '_um_can_access_private_profile', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-can_access_private_profile' => array( - 'label' => __( 'Can view/access private profiles?', 'ultimate-member' ), - 'value' => $rolemeta['_um_can_access_private_profile'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-profile_noindex' => array( - 'label' => __( 'Avoid indexing profile by search engines', 'ultimate-member' ), - 'value' => $profile_noindex, - ), - 'um-default_homepage' => array( - 'label' => __( 'Can view default homepage?', 'ultimate-member' ), - 'value' => $default_homepage, - ), - ) - ); - - if ( isset( $rolemeta['_um_default_homepage'] ) && 0 === absint( $rolemeta['_um_default_homepage'] ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-redirect_homepage' => array( - 'label' => __( 'Custom Homepage Redirect', 'ultimate-member' ), - 'value' => $rolemeta['_um_redirect_homepage'], - ), - ) - ); - } - - $status_options = array( - 'approved' => __( 'Auto Approve', 'ultimate-member' ), - 'checkmail' => __( 'Require Email Activation', 'ultimate-member' ), - 'pending' => __( 'Require Admin Review', 'ultimate-member' ), - ); - - if ( array_key_exists( '_um_status', $rolemeta ) && isset( $status_options[ $rolemeta['_um_status'] ] ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-status' => array( - 'label' => __( 'Registration Status', 'ultimate-member' ), - 'value' => $status_options[ $rolemeta['_um_status'] ], - ), - ) - ); - } - - if ( array_key_exists( '_um_status', $rolemeta ) && 'approved' === $rolemeta['_um_status'] ) { - $auto_approve_act = array( - 'redirect_profile' => __( 'Redirect to profile', 'ultimate-member' ), - 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), - ); - - if ( isset( $auto_approve_act[ $rolemeta['_um_auto_approve_act'] ] ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-auto_approve_act' => array( - 'label' => __( 'Custom Homepage Redirect', 'ultimate-member' ), - 'value' => $auto_approve_act[ $rolemeta['_um_auto_approve_act'] ], - ), - ) - ); - } - - if ( 'redirect_url' === $rolemeta['_um_auto_approve_act'] && array_key_exists( '_um_auto_approve_url', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-auto_approve_url' => array( - 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), - 'value' => $rolemeta['_um_auto_approve_url'], - ), - ) - ); - } - } - - if ( array_key_exists( '_um_status', $rolemeta ) && 'checkmail' === $rolemeta['_um_status'] ) { - $checkmail_action = array( - 'show_message' => __( 'Show custom message', 'ultimate-member' ), - 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), - ); - - if ( array_key_exists( '_um_login_email_activate', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-login_email_activate' => array( - 'label' => __( 'Login user after validating the activation link?', 'ultimate-member' ), - 'value' => $rolemeta['_um_login_email_activate'] ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - if ( isset( $checkmail_action[ $rolemeta['_um_checkmail_action'] ] ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-checkmail_action' => array( - 'label' => __( 'Action to be taken after registration', 'ultimate-member' ), - 'value' => $checkmail_action[ $rolemeta['_um_checkmail_action'] ], - ), - ) - ); - } - - if ( 'show_message' === $rolemeta['_um_checkmail_action'] ) { - if ( array_key_exists( '_um_checkmail_message', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-checkmail_message' => array( - 'label' => __( 'Personalize the custom message', 'ultimate-member' ), - 'value' => stripslashes( $rolemeta['_um_checkmail_message'] ), - ), - ) - ); - } - } else { - if ( array_key_exists( '_um_checkmail_url', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-checkmail_url' => array( - 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), - 'value' => $rolemeta['_um_checkmail_url'], - ), - ) - ); - } - } - - if ( array_key_exists( '_um_url_email_activate', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-url_email_activate' => array( - 'label' => __( 'URL redirect after email activation', 'ultimate-member' ), - 'value' => $rolemeta['_um_url_email_activate'], - ), - ) - ); - } - } - - if ( array_key_exists( '_um_status', $rolemeta ) && 'pending' === $rolemeta['_um_status'] ) { - $pending_action = array( - 'show_message' => __( 'Show custom message', 'ultimate-member' ), - 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), - ); - - if ( array_key_exists( '_um_pending_action', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-pending_action' => array( - 'label' => __( 'Action to be taken after registration', 'ultimate-member' ), - 'value' => $pending_action[ $rolemeta['_um_pending_action'] ], - ), - ) - ); - } - - if ( 'show_message' === $rolemeta['_um_pending_action'] ) { - if ( array_key_exists( '_um_pending_message', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-pending_message' => array( - 'label' => __( 'Personalize the custom message', 'ultimate-member' ), - 'value' => stripslashes( $rolemeta['_um_pending_message'] ), - ), - ) - ); - } - } else { - if ( array_key_exists( '_um_pending_url', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-pending_url' => array( - 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), - 'value' => $rolemeta['_um_pending_url'], - ), - ) - ); - } - } - } - - $after_login_options = array( - 'redirect_profile' => __( 'Redirect to profile', 'ultimate-member' ), - 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), - 'refresh' => __( 'Refresh active page', 'ultimate-member' ), - 'redirect_admin' => __( 'Redirect to WordPress Admin', 'ultimate-member' ), - ); - - if ( array_key_exists( '_um_after_login', $rolemeta ) && isset( $after_login_options[ $rolemeta['_um_after_login'] ] ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-after_login' => array( - 'label' => __( 'Action to be taken after login', 'ultimate-member' ), - 'value' => $after_login_options[ $rolemeta['_um_after_login'] ], - ), - ) - ); - - if ( 'redirect_url' === $rolemeta['_um_after_login'] && array_key_exists( '_um_login_redirect_url', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-login_redirect_url' => array( - 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), - 'value' => $rolemeta['_um_login_redirect_url'], - ), - ) - ); - } - } - - $redirect_options = array( - 'redirect_home' => __( 'Go to Homepage', 'ultimate-member' ), - 'redirect_url' => __( 'Go to Custom URL', 'ultimate-member' ), - ); - if ( ! isset( $rolemeta['_um_after_logout'] ) ) { - $rolemeta['_um_after_logout'] = 'redirect_home'; - } - if ( array_key_exists( '_um_after_logout', $rolemeta ) && isset( $redirect_options[ $rolemeta['_um_after_logout'] ] ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-after_logout' => array( - 'label' => __( 'Action to be taken after logout', 'ultimate-member' ), - 'value' => $redirect_options[ $rolemeta['_um_after_logout'] ], - ), - ) - ); - - if ( 'redirect_url' === $rolemeta['_um_after_logout'] && array_key_exists( '_um_logout_redirect_url', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-logout_redirect_url' => array( - 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), - 'value' => $rolemeta['_um_logout_redirect_url'], - ), - ) - ); - } - } - - if ( ! isset( $rolemeta['_um_after_delete'] ) ) { - $rolemeta['_um_after_delete'] = 'redirect_home'; - } - if ( array_key_exists( '_um_after_delete', $rolemeta ) && isset( $redirect_options[ $rolemeta['_um_after_delete'] ] ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-after_delete' => array( - 'label' => __( 'Action to be taken after account is deleted', 'ultimate-member' ), - 'value' => $redirect_options[ $rolemeta['_um_after_delete'] ], - ), - ) - ); - - if ( 'redirect_url' === $rolemeta['_um_after_delete'] && array_key_exists( '_um_delete_redirect_url', $rolemeta ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-delete_redirect_url' => array( - 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), - 'value' => $rolemeta['_um_delete_redirect_url'], - ), - ) - ); - } - } - - if ( ! empty( $rolemeta['wp_capabilities'] ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-wp_capabilities' => array( - 'label' => __( 'WP Capabilities', 'ultimate-member' ), - 'value' => $rolemeta['wp_capabilities'], - ), - ) - ); - } - - $info = apply_filters( 'um_debug_information_user_role', $info, $key ); - } - - // Forms settings - if ( ! empty( $this->get_forms() ) ) { - $info['ultimate-member-forms'] = array( - 'label' => __( 'Ultimate Member Forms', 'ultimate-member' ), - 'description' => __( 'This debug information for your Ultimate Member forms.', 'ultimate-member' ), - 'fields' => array( - 'um-forms' => array( - 'label' => __( 'UM Forms', 'ultimate-member' ), - 'value' => $this->get_forms(), - ), - ), - ); - - foreach ( $this->get_forms() as $key => $form ) { - if ( strpos( $key, 'ID#' ) === 0 ) { - $key = substr( $key, 3 ); - } - - $info[ 'ultimate-member-' . $key ] = array( - 'label' => ' - ' . $form . __( ' form settings', 'ultimate-member' ), - 'description' => __( 'This debug information for your Ultimate Member form.', 'ultimate-member' ), - 'fields' => array( - 'um-form-shortcode' => array( - 'label' => __( 'Shortcode', 'ultimate-member' ), - 'value' => '[ultimatemember form_id="' . $key . '"]', - ), - 'um-mode' => array( - 'label' => __( 'Type', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_mode', true ), - ), - ), - ); - - if ( 'register' === get_post_meta( $key, '_um_mode', true ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-register_role' => array( - 'label' => __( 'User registration role', 'ultimate-member' ), - 'value' => 0 === absint( get_post_meta( $key, '_um_register_role', true ) ) ? $labels['default'] : get_post_meta( $key, '_um_register_role', true ), - ), - 'um-register_template' => array( - 'label' => __( 'Template', 'ultimate-member' ), - 'value' => 0 === absint( get_post_meta( $key, '_um_register_template', true ) ) ? $labels['default'] : get_post_meta( $key, '_um_register_template', true ), - ), - 'um-register_primary_btn_word' => array( - 'label' => __( 'Primary Button Text', 'ultimate-member' ), - 'value' => ! get_post_meta( $key, '_um_register_primary_btn_word', true ) ? $labels['default'] : get_post_meta( $key, '_um_register_primary_btn_word', true ), - ), - 'um-register_use_gdpr' => array( - 'label' => __( 'Enable privacy policy agreement', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_register_use_gdpr', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - - if ( 1 === absint( get_post_meta( $key, '_um_register_use_gdpr', true ) ) ) { - $gdpr_content_id = get_post_meta( $key, '_um_register_use_gdpr_content_id', true ); - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-register_use_gdpr_content_id' => array( - 'label' => __( 'Privacy policy content', 'ultimate-member' ), - 'value' => $gdpr_content_id ? get_the_title( $gdpr_content_id ) . '(' . $gdpr_content_id . ')' . get_the_permalink( $gdpr_content_id ) : '', - ), - 'um-register_use_gdpr_toggle_show' => array( - 'label' => __( 'Toggle Show text', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_register_use_gdpr_toggle_show', true ), - ), - 'um-register_use_gdpr_toggle_hide' => array( - 'label' => __( 'Toggle Hide text', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_register_use_gdpr_toggle_hide', true ), - ), - 'um-register_use_gdpr_agreement' => array( - 'label' => __( 'Checkbox agreement description', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_register_use_gdpr_agreement', true ), - ), - 'um-register_use_gdpr_error_text' => array( - 'label' => __( 'Error Text', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_register_use_gdpr_error_text', true ), - ), - ) - ); - } - - $info = apply_filters( 'um_debug_information_register_form', $info, $key ); - - $fields = get_post_meta( $key, '_um_custom_fields', true ); - if ( ! empty( $fields ) && is_array( $fields ) ) { - foreach ( $fields as $field_key => $field ) { - $field_info = $this->get_field_data( $info, $key, $field_key, $field ); - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - $field_info - ); - } - } - } elseif ( 'login' === get_post_meta( $key, '_um_mode', true ) ) { - $login_redirect_options = array( - '0' => __( 'Default', 'ultimate-member' ), - 'redirect_profile' => __( 'Redirect to profile', 'ultimate-member' ), - 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), - 'refresh' => __( 'Refresh active page', 'ultimate-member' ), - 'redirect_admin' => __( 'Redirect to WordPress Admin', 'ultimate-member' ), - ); - - $login_after_login = get_post_meta( $key, '_um_login_after_login', true ); - $login_after_login = '' === $login_after_login ? '0' : $login_after_login; - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-login_template' => array( - 'label' => __( 'Template', 'ultimate-member' ), - 'value' => 0 === absint( get_post_meta( $key, '_um_login_template', true ) ) ? $labels['default'] : get_post_meta( $key, '_um_login_template', true ), - ), - 'um-login_primary_btn_word' => array( - 'label' => __( 'Primary Button Text', 'ultimate-member' ), - 'value' => ! get_post_meta( $key, '_um_login_primary_btn_word', true ) ? $labels['default'] : get_post_meta( $key, '_um_login_primary_btn_word', true ), - ), - 'um-login_forgot_pass_link' => array( - 'label' => __( 'Show Forgot Password Link?', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_login_forgot_pass_link', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-login_show_rememberme' => array( - 'label' => __( 'Show "Remember Me"?', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_login_show_rememberme', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-login_after_login' => array( - 'label' => __( 'Redirection after Login', 'ultimate-member' ), - 'value' => $login_redirect_options[ $login_after_login ], - ), - ) - ); - - if ( 'redirect_url' === get_post_meta( $key, '_um_login_after_login', true ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-login_redirect_url' => array( - 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_login_redirect_url', true ), - ), - ) - ); - } - - $info = apply_filters( 'um_debug_information_login_form', $info, $key ); - - $fields = get_post_meta( $key, '_um_custom_fields', true ); - if ( ! empty( $fields ) && is_array( $fields ) ) { - foreach ( $fields as $field_key => $field ) { - $field_info = $this->get_field_data( $info, $key, $field_key, $field ); - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - $field_info - ); - } - } - } elseif ( 'profile' === get_post_meta( $key, '_um_mode', true ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-profile_role' => array( - 'label' => __( 'Make this profile form role-specific', 'ultimate-member' ), - 'value' => ! empty( get_post_meta( $key, '_um_profile_role', true ) ) ? get_post_meta( $key, '_um_profile_role', true ) : $labels['all'], - ), - 'um-profile_template' => array( - 'label' => __( 'Template', 'ultimate-member' ), - 'value' => 0 === absint( get_post_meta( $key, '_um_profile_template', true ) ) ? $labels['default'] : get_post_meta( $key, '_um_profile_template', true ), - ), - 'um-profile_primary_btn_word' => array( - 'label' => __( 'Primary Button Text', 'ultimate-member' ), - 'value' => ! get_post_meta( $key, '_um_profile_primary_btn_word', true ) ? $labels['default'] : get_post_meta( $key, '_um_profile_primary_btn_word', true ), - ), - 'um-profile_cover_enabled' => array( - 'label' => __( 'Enable Cover Photos', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_profile_cover_enabled', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-profile_disable_photo_upload' => array( - 'label' => __( 'Disable Profile Photo Upload', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_profile_disable_photo_upload', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - - if ( 0 === absint( get_post_meta( $key, '_um_profile_disable_photo_upload', true ) ) ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-profile_photo_required' => array( - 'label' => __( 'Make Profile Photo Required', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_profile_photo_required', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-profile_show_name' => array( - 'label' => __( 'Show display name in profile header?', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_profile_show_name', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-profile_show_social_links' => array( - 'label' => __( 'Show social links in profile header?', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_profile_show_social_links', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-profile_show_bio' => array( - 'label' => __( 'Show user description in profile header?', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_profile_show_bio', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - - $fields = get_post_meta( $key, '_um_custom_fields', true ); - if ( ! empty( $fields ) && is_array( $fields ) ) { - foreach ( $fields as $field_key => $field ) { - $field_info = $this->get_field_data( $info, $key, $field_key, $field ); - - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - $field_info - ); - } - } - - $profile_metafields = get_post_meta( $key, '_um_profile_metafields', true ); - if ( ! empty( $profile_metafields ) && is_array( $profile_metafields ) ) { - foreach ( $profile_metafields as $k => $field ) { - $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-' . $key ]['fields'], - array( - 'um-profile_metafields-' . $k => array( - 'label' => __( 'Field to show in user meta', 'ultimate-member' ), - 'value' => $field, - ), - ) - ); - } - } - } - } - } - - // Members directory - $options = array( - 'country' => __( 'Country', 'ultimate-member' ), - 'gender' => __( 'Gender', 'ultimate-member' ), - 'languages' => __( 'Languages', 'ultimate-member' ), - 'role' => __( 'Roles', 'ultimate-member' ), - 'birth_date' => __( 'Age', 'ultimate-member' ), - 'last_login' => __( 'Last Login', 'ultimate-member' ), - 'user_registered' => __( 'User Registered', 'ultimate-member' ), - 'first_name' => __( 'First Name', 'ultimate-member' ), - 'last_name' => __( 'Last Name', 'ultimate-member' ), - 'nickname' => __( 'Nickname', 'ultimate-member' ), - 'secondary_user_email' => __( 'Secondary Email Address', 'ultimate-member' ), - 'description' => __( 'Biography', 'ultimate-member' ), - 'phone_number' => __( 'Phone Number', 'ultimate-member' ), - 'mobile_number' => __( 'Mobile Number', 'ultimate-member' ), - 'role_select' => __( 'Roles (Dropdown)', 'ultimate-member' ), - 'role_radio' => __( 'Roles (Radio)', 'ultimate-member' ), - 'whatsapp' => __( 'WhatsApp number', 'ultimate-member' ), - 'facebook' => __( 'Facebook', 'ultimate-member' ), - 'twitter' => __( 'X (formerly Twitter)', 'ultimate-member' ), - 'viber' => __( 'Viber number', 'ultimate-member' ), - 'skype' => __( 'Skype ID', 'ultimate-member' ), - 'telegram' => __( 'Telegram', 'ultimate-member' ), - 'discord' => __( 'Discord', 'ultimate-member' ), - 'youtube' => __( 'Youtube', 'ultimate-member' ), - 'soundcloud' => __( 'SoundCloud', 'ultimate-member' ), - 'user_registered_desc' => __( 'New users first', 'ultimate-member' ), - 'user_registered_asc' => __( 'Old users first', 'ultimate-member' ), - 'username' => __( 'Username', 'ultimate-member' ), - 'display_name' => __( 'Display name', 'ultimate-member' ), - 'last_first_name' => __( 'Last & First name', 'ultimate-member' ), - 'random' => __( 'Random', 'ultimate-member' ), - 'other' => __( 'Other (Custom Field)', 'ultimate-member' ), - ); - - $info['ultimate-member-directories'] = array( - 'label' => __( 'Ultimate Member Directories', 'ultimate-member' ), - 'description' => __( 'This debug information about Ultimate Member directories.', 'ultimate-member' ), - 'fields' => array( - 'um-directory' => array( - 'label' => __( 'Member directories', 'ultimate-member' ), - 'value' => ! empty( $this->get_member_directories() ) ? $this->get_member_directories() : $labels['no-dir'], - ), - ), - ); - - if ( ! empty( $this->get_member_directories() ) ) { - foreach ( $this->get_member_directories() as $key => $directory ) { - if ( 0 === strpos( $key, 'ID#' ) ) { - $key = substr( $key, 3 ); - } - - $_um_view_types_value = get_post_meta( $key, '_um_view_types', true ); - $_um_view_types_value = empty( $_um_view_types_value ) ? array( 'grid', 'list' ) : $_um_view_types_value; - $_um_view_types_value = is_string( $_um_view_types_value ) ? array( $_um_view_types_value ) : $_um_view_types_value; - - $info[ 'ultimate-member-directory-' . $key ] = array( - 'label' => ' - ' . $directory . __( ' directory settings', 'ultimate-member' ), - 'description' => __( 'This debug information for your Ultimate Member directory.', 'ultimate-member' ), - 'fields' => array( - 'um-directory-shortcode' => array( - 'label' => __( 'Shortcode', 'ultimate-member' ), - 'value' => '[ultimatemember_directory id="' . $key . '"]', - ), - 'um-directory_template' => array( - 'label' => __( 'Template', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_directory_template', true ) ? get_post_meta( $key, '_um_directory_template', true ) : $labels['default'], - ), - 'um-directory-view_types' => array( - 'label' => __( 'View types', 'ultimate-member' ), - 'value' => implode( ', ', $_um_view_types_value ), - ), - 'um-directory-default_view' => array( - 'label' => __( 'Default view type', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_default_view', true ), - ), - ), - ); - - if ( isset( $options[ get_post_meta( $key, '_um_sortby', true ) ] ) ) { - $sortby_label = $options[ get_post_meta( $key, '_um_sortby', true ) ]; - } else { - $sortby_label = get_post_meta( $key, '_um_sortby', true ); - } - - $directory_roles_meta = get_post_meta( $key, '_um_roles', true ); - $directory_roles = array(); - if ( ! empty( $directory_roles_meta ) ) { - if ( is_string( $directory_roles_meta ) ) { - $directory_roles = array( $directory_roles_meta ); - } else { - $directory_roles = $directory_roles_meta; - } - } - - $directory_show_these_users_meta = get_post_meta( $key, '_um_show_these_users', true ); - $show_these_users = array(); - if ( ! empty( $directory_show_these_users_meta ) ) { - if ( is_string( $directory_show_these_users_meta ) ) { - $show_these_users = array( $directory_show_these_users_meta ); - } else { - $show_these_users = $directory_show_these_users_meta; - } - } - - $directory_exclude_these_users_meta = get_post_meta( $key, '_um_exclude_these_users', true ); - $exclude_these_users = array(); - if ( ! empty( $directory_exclude_these_users_meta ) ) { - if ( is_string( $directory_exclude_these_users_meta ) ) { - $exclude_these_users = array( $directory_exclude_these_users_meta ); - } else { - $exclude_these_users = $directory_exclude_these_users_meta; - } - } - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-roles' => array( - 'label' => __( 'User Roles to display', 'ultimate-member' ), - 'value' => ! empty( $directory_roles ) ? implode( ', ', $directory_roles ) : $labels['all'], - ), - 'um-directory-has_profile_photo' => array( - 'label' => __( 'Only show members who have uploaded a profile photo', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_has_profile_photo', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-directory-has_cover_photo' => array( - 'label' => __( 'Only show members who have uploaded a profile photo', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_has_cover_photo', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-directory-show_these_users' => array( - 'label' => __( 'Only show specific users (Enter one username per line)', 'ultimate-member' ), - 'value' => ! empty( $show_these_users ) ? implode( ', ', $show_these_users ) : '', - ), - 'um-directory-exclude_these_users' => array( - 'label' => __( 'Exclude specific users (Enter one username per line)', 'ultimate-member' ), - 'value' => ! empty( $exclude_these_users ) ? implode( ', ', $exclude_these_users ) : '', - ), - ) - ); - - $info = apply_filters( 'um_debug_member_directory_general_extend', $info, $key ); - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-sortby' => array( - 'label' => __( 'Default sort users by', 'ultimate-member' ), - 'value' => $sortby_label, - ), - ) - ); - - if ( 'other' === get_post_meta( $key, '_um_sortby', true ) ) { - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-enable_sorting' => array( - 'label' => __( 'Enable custom sorting', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_enable_sorting', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-directory-sortby_custom' => array( - 'label' => __( 'Custom sorting meta key', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_sortby_custom', true ), - ), - 'um-directory-sortby_custom_label' => array( - 'label' => __( 'Label of custom sort', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_sortby_custom_label', true ), - ), - ) - ); - } - - if ( 1 === absint( get_post_meta( $key, '_um_enable_sorting', true ) ) ) { - $sorting_fields = get_post_meta( $key, '_um_sorting_fields', true ); - if ( ! empty( $sorting_fields ) ) { - foreach ( $sorting_fields as $k => $field ) { - if ( is_array( $field ) ) { - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-sorting_fields-' . $k => array( - 'label' => __( 'Field(s) to enable in sorting', 'ultimate-member' ), - 'value' => __( 'Label: ', 'ultimate-member' ) . array_values( $field )[0] . ' | ' . __( 'Meta key: ', 'ultimate-member' ) . stripslashes( array_keys( $field )[0] ), - ), - ) - ); - } else { - $sortby_label = isset( $options[ $field ] ) ? $options[ $field ] : $field; - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-sorting_fields-' . $k => array( - 'label' => __( 'Field to enable in sorting', 'ultimate-member' ), - 'value' => $sortby_label, - ), - ) - ); - } - } - } - } - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-profile_photo' => array( - 'label' => __( 'Enable Profile Photo', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_profile_photo', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-directory-cover_photos' => array( - 'label' => __( 'Enable Cover Photo', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_cover_photos', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-directory-show_name' => array( - 'label' => __( 'Show display name', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_show_name', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - - $info = apply_filters( 'um_debug_member_directory_profile_extend', $info, $key ); - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-show_tagline' => array( - 'label' => __( 'Show tagline below profile name', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_show_tagline', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - - if ( 1 === absint( get_post_meta( $key, '_um_show_tagline', true ) ) ) { - $tagline_fields = get_post_meta( $key, '_um_tagline_fields', true ); - if ( ! empty( $tagline_fields ) && is_array( $tagline_fields ) ) { - foreach ( $tagline_fields as $k => $field ) { - $label = isset( $options[ $field ] ) ? $options[ $field ] : $field; - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-tagline_fields-' . $k => array( - 'label' => __( 'Field to display in tagline', 'ultimate-member' ), - 'value' => $label, - ), - ) - ); - } - } - } - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-show_userinfo' => array( - 'label' => __( 'Show extra user information below tagline?', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_show_userinfo', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - - if ( 1 === absint( get_post_meta( $key, '_um_show_userinfo', true ) ) ) { - $reveal_fields = get_post_meta( $key, '_um_reveal_fields', true ); - if ( ! empty( $reveal_fields ) && is_array( $reveal_fields ) ) { - foreach ( $reveal_fields as $k => $field ) { - $label = isset( $options[ $field ] ) ? $options[ $field ] : $field; - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-reveal_fields-' . $k => array( - 'label' => __( 'Field to display in extra user information section', 'ultimate-member' ), - 'value' => $label, - ), - ) - ); - } - } - } - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-show_social' => array( - 'label' => __( 'Show social connect icons in extra user information section', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_show_social', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-directory-search' => array( - 'label' => __( 'Enable Search feature', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_search', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - - if ( 1 === absint( get_post_meta( $key, '_um_search', true ) ) ) { - $directory_roles_can_search_meta = get_post_meta( $key, '_um_roles_can_search', true ); - $roles_can_search = array(); - if ( ! empty( $directory_roles_can_search_meta ) ) { - if ( is_string( $directory_roles_can_search_meta ) ) { - $roles_can_search = array( $directory_roles_can_search_meta ); - } else { - $roles_can_search = $directory_roles_can_search_meta; - } - } - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-roles_can_search' => array( - 'label' => __( 'User Roles that can use search', 'ultimate-member' ), - 'value' => ! empty( $roles_can_search ) ? implode( ', ', $roles_can_search ) : $labels['all'], - ), - ) - ); - } - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-filters' => array( - 'label' => __( 'Enable Filters feature', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_filters', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - - if ( 1 === absint( get_post_meta( $key, '_um_filters', true ) ) ) { - $directory_roles_can_filter_meta = get_post_meta( $key, '_um_roles_can_filter', true ); - $roles_can_filter = array(); - if ( ! empty( $directory_roles_can_filter_meta ) ) { - if ( is_string( $directory_roles_can_filter_meta ) ) { - $roles_can_filter = array( $directory_roles_can_filter_meta ); - } else { - $roles_can_filter = $directory_roles_can_filter_meta; - } - } - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-roles_can_filter' => array( - 'label' => __( 'User Roles that can use filters', 'ultimate-member' ), - 'value' => ! empty( $roles_can_filter ) ? implode( ', ', $roles_can_filter ) : $labels['all'], - ), - ) - ); - - $search_fields = get_post_meta( $key, '_um_search_fields', true ); - if ( ! empty( $search_fields ) && is_array( $search_fields ) ) { - foreach ( $search_fields as $k => $field ) { - $label = isset( $options[ $field ] ) ? $options[ $field ] : $field; - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-search_fields-' . $k => array( - 'label' => __( 'Filter meta to enable', 'ultimate-member' ), - 'value' => $label, - ), - ) - ); - } - } - } - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-filters_expanded' => array( - 'label' => __( 'Expand the filter bar by default', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_filters_expanded', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - - if ( 1 === absint( get_post_meta( $key, '_um_filters_expanded', true ) ) ) { - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-filters_is_collapsible' => array( - 'label' => __( 'Can filter bar be collapsed', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_filters_is_collapsible', true ) ? $labels['yes'] : $labels['no'], - ), - ) - ); - } - - $search_filters = get_post_meta( $key, '_um_search_filters', true ); - if ( ! empty( $search_filters ) && is_array( $search_filters ) ) { - foreach ( $search_filters as $k => $field ) { - $label = isset( $options[ $k ] ) ? $options[ $k ] : $k; - $value = $field; - if ( is_array( $field ) ) { - $value = __( 'From ', 'ultimate-member' ) . $field[0] . __( ' to ', 'ultimate-member' ) . $field[1]; - } - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-search_filters-' . $k => array( - 'label' => __( 'Admin filtering', 'ultimate-member' ), - 'value' => $label . ' - ' . $value, - ), - ) - ); - } - } - - $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( - $info[ 'ultimate-member-directory-' . $key ]['fields'], - array( - 'um-directory-must_search' => array( - 'label' => __( 'Show results only after search/filtration', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_must_search', true ) ? $labels['yes'] : $labels['no'], - ), - 'um-directory-max_users' => array( - 'label' => __( 'Maximum number of profiles', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_max_users', true ), - ), - 'um-directory-profiles_per_page' => array( - 'label' => __( 'Number of profiles per page', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_profiles_per_page', true ), - ), - 'um-directory-profiles_per_page_mobile' => array( - 'label' => __( 'Maximum number of profiles', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_profiles_per_page_mobile', true ), - ), - 'um-directory-directory_header' => array( - 'label' => __( 'Results Text', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_directory_header', true ), - ), - 'um-directory-directory_header_single' => array( - 'label' => __( 'Single Result Text', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_directory_header_single', true ), - ), - 'um-directory-directory_no_users' => array( - 'label' => __( 'Custom text if no users were found', 'ultimate-member' ), - 'value' => get_post_meta( $key, '_um_directory_no_users', true ), - ), - ) - ); - - $info = apply_filters( 'um_debug_member_directory_extend', $info, $key ); - } - } + // Members directory sitehealth + $info = $this->get_member_directories_sitehealth( $info ); /** * Filters the site health information. @@ -2704,4 +1375,1454 @@ class Site_Health { return $appearance_settings; } + + public function advanced_sitehealth() { + $labels = self::get_labels(); + + $general = array( + 'um-advanced_separator' => array( + 'label' => __( 'Advanced settings', 'ultimate-member' ), + 'value' => '---------------------------------------------------------------------', + ), + 'um-form_asterisk' => array( + 'label' => __( 'Required fields\' asterisk (Show an asterisk for required fields)', 'ultimate-member' ), + 'value' => UM()->options()->get( 'form_asterisk' ) ? $labels['yes'] : $labels['no'], + ), + 'um-um_profile_object_cache_stop' => array( + 'label' => __( 'Disable Cache User Profile', 'ultimate-member' ), + 'value' => UM()->options()->get( 'um_profile_object_cache_stop' ) ? $labels['yes'] : $labels['no'], + ), + 'um-uninstall_on_delete' => array( + 'label' => __( 'Remove Data on Uninstall?', 'ultimate-member' ), + 'value' => UM()->options()->get( 'uninstall_on_delete' ) ? $labels['yes'] : $labels['no'], + ), + ); + + $feature = array( + 'um-enable_blocks' => array( + 'label' => __( 'Enable Gutenberg Blocks', 'ultimate-member' ), + 'value' => UM()->options()->get( 'enable_blocks' ) ? $labels['yes'] : $labels['no'], + ), + 'um-member_directory_own_table' => array( + 'label' => __( 'Enable custom table for usermeta', 'ultimate-member' ), + 'value' => UM()->options()->get( 'member_directory_own_table' ) ? $labels['yes'] : $labels['no'], + ), + 'um-enable_as_email_sending' => array( + 'label' => __( 'Email sending by Action Scheduler', 'ultimate-member' ), + 'value' => UM()->options()->get( 'enable_as_email_sending' ) ? $labels['yes'] : $labels['no'], + ), + 'um-disable_restriction_pre_queries' => array( + 'label' => __( 'Disable pre-queries for restriction content logic (advanced)', 'ultimate-member' ), + 'value' => UM()->options()->get( 'disable_restriction_pre_queries' ) ? $labels['yes'] : $labels['no'], + ), + ); + + // Secure settings + $secure_ban_admins_accounts = UM()->options()->get( 'secure_ban_admins_accounts' ); + + $banned_capabilities_opt = UM()->options()->get( 'banned_capabilities' ); + $banned_capabilities = array(); + if ( ! empty( $banned_capabilities_opt ) ) { + if ( is_string( $banned_capabilities_opt ) ) { + $banned_capabilities = array( $banned_capabilities_opt ); + } else { + $banned_capabilities = $banned_capabilities_opt; + } + } + + $secure_settings = array( + 'um-banned_capabilities' => array( + 'label' => __( 'Banned Administrative Capabilities', 'ultimate-member' ), + 'value' => ! empty( $banned_capabilities ) ? implode( ', ', $banned_capabilities ) : '', + ), + 'um-lock_register_forms' => array( + 'label' => __( 'Lock All Register Forms', 'ultimate-member' ), + 'value' => UM()->options()->get( 'lock_register_forms' ) ? $labels['yes'] : $labels['no'], + ), + 'um-display_login_form_notice' => array( + 'label' => __( 'Display Login form notice to reset passwords', 'ultimate-member' ), + 'value' => UM()->options()->get( 'display_login_form_notice' ) ? $labels['yes'] : $labels['no'], + ), + 'um-secure_ban_admins_accounts' => array( + 'label' => __( 'Administrative capabilities ban (enable ban for administrative capabilities)', 'ultimate-member' ), + 'value' => $secure_ban_admins_accounts ? $labels['yes'] : $labels['no'], + ), + ); + if ( ! empty( $secure_ban_admins_accounts ) ) { + $secure_notify_admins_banned_accounts = UM()->options()->get( 'secure_notify_admins_banned_accounts' ); + + $secure_settings['um-secure_notify_admins_banned_accounts'] = array( + 'label' => __( 'Notify Administrators', 'ultimate-member' ), + 'value' => $secure_notify_admins_banned_accounts ? $labels['yes'] : $labels['no'], + ); + if ( ! empty( $secure_notify_admins_banned_accounts ) ) { + $secure_notify_admins_banned_accounts_options = array( + 'instant' => __( 'Send Immediately', 'ultimate-member' ), + 'hourly' => __( 'Hourly', 'ultimate-member' ), + 'daily' => __( 'Daily', 'ultimate-member' ), + ); + + $secure_settings['um-secure_notify_admins_banned_accounts__interval'] = array( + 'label' => __( 'Notification Schedule', 'ultimate-member' ), + 'value' => $secure_notify_admins_banned_accounts_options[ UM()->options()->get( 'secure_notify_admins_banned_accounts__interval' ) ], + ); + } + } + + $secure_allowed_redirect_hosts = UM()->options()->get( 'secure_allowed_redirect_hosts' ); + $secure_allowed_redirect_hosts = explode( PHP_EOL, $secure_allowed_redirect_hosts ); + + $secure_settings['um-secure_allowed_redirect_hosts'] = array( + 'label' => __( 'Allowed hosts for safe redirect', 'ultimate-member' ), + 'value' => $secure_allowed_redirect_hosts, + ); + + $developers = array( + 'um-allowed_choice_callbacks' => array( + 'label' => __( 'Allowed Choice Callbacks', 'ultimate-member' ), + 'value' => UM()->options()->get( 'allowed_choice_callbacks' ), + ), + 'um-rest_api_version' => array( + 'label' => __( 'REST API version', 'ultimate-member' ), + 'value' => UM()->options()->get( 'rest_api_version' ), + ), + 'um-allow_url_redirect_confirm' => array( + 'label' => __( 'Allow external link redirect confirm (enable JS.confirm for external links)', 'ultimate-member' ), + 'value' => UM()->options()->get( 'allow_url_redirect_confirm' ) ? $labels['yes'] : $labels['no'], + ), + ); + + return array_merge( $general, $feature, $secure_settings, $developers ); + } + + public function license_sitehealth() { + // Licenses settings. + $license_settings = array( + 'um-licenses' => array( + 'label' => __( 'Licenses', 'ultimate-member' ), + 'value' => array(), + ), + ); + + /** + * Filters licenses settings for Site Health. + * + * @since 2.7.0 + * @hook um_licenses_site_health + * + * @param {array} $license_settings licenses settings for Site Health. + * + * @return {array} licenses settings for Site Health. + * + * @example Extend licenses settings for Site Health. + * function um_licenses_site_health( $license_settings ) { + * // your code here + * return $license_settings; + * } + * add_filter( 'um_licenses_site_health', 'um_licenses_site_health', 10, 1 ); + */ + $license_settings = apply_filters( 'um_licenses_site_health', $license_settings ); + + return $license_settings; + } + + public function get_member_directories_sitehealth( $info ) { + $labels = self::get_labels(); + $options = array( + 'country' => __( 'Country', 'ultimate-member' ), + 'gender' => __( 'Gender', 'ultimate-member' ), + 'languages' => __( 'Languages', 'ultimate-member' ), + 'role' => __( 'Roles', 'ultimate-member' ), + 'birth_date' => __( 'Age', 'ultimate-member' ), + 'last_login' => __( 'Last Login', 'ultimate-member' ), + 'user_registered' => __( 'User Registered', 'ultimate-member' ), + 'first_name' => __( 'First Name', 'ultimate-member' ), + 'last_name' => __( 'Last Name', 'ultimate-member' ), + 'nickname' => __( 'Nickname', 'ultimate-member' ), + 'secondary_user_email' => __( 'Secondary Email Address', 'ultimate-member' ), + 'description' => __( 'Biography', 'ultimate-member' ), + 'phone_number' => __( 'Phone Number', 'ultimate-member' ), + 'mobile_number' => __( 'Mobile Number', 'ultimate-member' ), + 'role_select' => __( 'Roles (Dropdown)', 'ultimate-member' ), + 'role_radio' => __( 'Roles (Radio)', 'ultimate-member' ), + 'whatsapp' => __( 'WhatsApp number', 'ultimate-member' ), + 'facebook' => __( 'Facebook', 'ultimate-member' ), + 'twitter' => __( 'X (formerly Twitter)', 'ultimate-member' ), + 'viber' => __( 'Viber number', 'ultimate-member' ), + 'skype' => __( 'Skype ID', 'ultimate-member' ), + 'telegram' => __( 'Telegram', 'ultimate-member' ), + 'discord' => __( 'Discord', 'ultimate-member' ), + 'youtube' => __( 'Youtube', 'ultimate-member' ), + 'soundcloud' => __( 'SoundCloud', 'ultimate-member' ), + 'user_registered_desc' => __( 'New users first', 'ultimate-member' ), + 'user_registered_asc' => __( 'Old users first', 'ultimate-member' ), + 'username' => __( 'Username', 'ultimate-member' ), + 'display_name' => __( 'Display name', 'ultimate-member' ), + 'last_first_name' => __( 'Last & First name', 'ultimate-member' ), + 'random' => __( 'Random', 'ultimate-member' ), + 'other' => __( 'Other (Custom Field)', 'ultimate-member' ), + ); + + $info['ultimate-member-directories'] = array( + 'label' => __( 'Ultimate Member Directories', 'ultimate-member' ), + 'description' => __( 'This debug information about Ultimate Member directories.', 'ultimate-member' ), + 'fields' => array( + 'um-directory' => array( + 'label' => __( 'Member directories', 'ultimate-member' ), + 'value' => ! empty( $this->get_member_directories() ) ? $this->get_member_directories() : $labels['no-dir'], + ), + ), + ); + + if ( ! empty( $this->get_member_directories() ) ) { + foreach ( $this->get_member_directories() as $key => $directory ) { + if ( 0 === strpos( $key, 'ID#' ) ) { + $key = substr( $key, 3 ); + } + + $_um_view_types_value = get_post_meta( $key, '_um_view_types', true ); + $_um_view_types_value = empty( $_um_view_types_value ) ? array( 'grid', 'list' ) : $_um_view_types_value; + $_um_view_types_value = is_string( $_um_view_types_value ) ? array( $_um_view_types_value ) : $_um_view_types_value; + + $info[ 'ultimate-member-directory-' . $key ] = array( + 'label' => ' - ' . $directory . __( ' directory settings', 'ultimate-member' ), + 'description' => __( 'This debug information for your Ultimate Member directory.', 'ultimate-member' ), + 'fields' => array( + 'um-directory-shortcode' => array( + 'label' => __( 'Shortcode', 'ultimate-member' ), + 'value' => '[ultimatemember_directory id="' . $key . '"]', + ), + 'um-directory_template' => array( + 'label' => __( 'Template', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_directory_template', true ) ? get_post_meta( $key, '_um_directory_template', true ) : $labels['default'], + ), + 'um-directory-view_types' => array( + 'label' => __( 'View types', 'ultimate-member' ), + 'value' => implode( ', ', $_um_view_types_value ), + ), + 'um-directory-default_view' => array( + 'label' => __( 'Default view type', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_default_view', true ), + ), + ), + ); + + if ( isset( $options[ get_post_meta( $key, '_um_sortby', true ) ] ) ) { + $sortby_label = $options[ get_post_meta( $key, '_um_sortby', true ) ]; + } else { + $sortby_label = get_post_meta( $key, '_um_sortby', true ); + } + + $directory_roles_meta = get_post_meta( $key, '_um_roles', true ); + $directory_roles = array(); + if ( ! empty( $directory_roles_meta ) ) { + if ( is_string( $directory_roles_meta ) ) { + $directory_roles = array( $directory_roles_meta ); + } else { + $directory_roles = $directory_roles_meta; + } + } + + $directory_show_these_users_meta = get_post_meta( $key, '_um_show_these_users', true ); + $show_these_users = array(); + if ( ! empty( $directory_show_these_users_meta ) ) { + if ( is_string( $directory_show_these_users_meta ) ) { + $show_these_users = array( $directory_show_these_users_meta ); + } else { + $show_these_users = $directory_show_these_users_meta; + } + } + + $directory_exclude_these_users_meta = get_post_meta( $key, '_um_exclude_these_users', true ); + $exclude_these_users = array(); + if ( ! empty( $directory_exclude_these_users_meta ) ) { + if ( is_string( $directory_exclude_these_users_meta ) ) { + $exclude_these_users = array( $directory_exclude_these_users_meta ); + } else { + $exclude_these_users = $directory_exclude_these_users_meta; + } + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-roles' => array( + 'label' => __( 'User Roles to display', 'ultimate-member' ), + 'value' => ! empty( $directory_roles ) ? implode( ', ', $directory_roles ) : $labels['all'], + ), + 'um-directory-has_profile_photo' => array( + 'label' => __( 'Only show members who have uploaded a profile photo', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_has_profile_photo', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-directory-has_cover_photo' => array( + 'label' => __( 'Only show members who have uploaded a cover photo', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_has_cover_photo', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-directory-show_these_users' => array( + 'label' => __( 'Only show specific users', 'ultimate-member' ), + 'value' => ! empty( $show_these_users ) ? implode( ', ', $show_these_users ) : '', + ), + 'um-directory-exclude_these_users' => array( + 'label' => __( 'Exclude specific users', 'ultimate-member' ), + 'value' => ! empty( $exclude_these_users ) ? implode( ', ', $exclude_these_users ) : '', + ), + ) + ); + + $info = apply_filters( 'um_debug_member_directory_general_extend', $info, $key ); + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-sortby' => array( + 'label' => __( 'Default sort users by', 'ultimate-member' ), + 'value' => $sortby_label, + ), + ) + ); + + if ( 'other' === get_post_meta( $key, '_um_sortby', true ) ) { + $sort_type_opts = array( + 'CHAR' => __( 'CHAR', 'ultimate-member' ), + 'NUMERIC' => __( 'NUMERIC', 'ultimate-member' ), + 'BINARY' => __( 'BINARY', 'ultimate-member' ), + 'DATE' => __( 'DATE', 'ultimate-member' ), + 'DATETIME' => __( 'DATETIME', 'ultimate-member' ), + 'DECIMAL' => __( 'DECIMAL', 'ultimate-member' ), + 'SIGNED' => __( 'SIGNED', 'ultimate-member' ), + 'TIME' => __( 'TIME', 'ultimate-member' ), + 'UNSIGNED' => __( 'UNSIGNED', 'ultimate-member' ), + ); + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-sortby_custom' => array( + 'label' => __( 'Meta key', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_sortby_custom', true ), + ), + 'um-directory-um_sortby_custom_type' => array( + 'label' => __( 'Data type', 'ultimate-member' ), + 'value' => $sort_type_opts[ get_post_meta( $key, '_um_sortby_custom_type', true ) ], + ), + 'um-directory-um_sortby_custom_order' => array( + 'label' => __( 'Order', 'ultimate-member' ), + 'value' => 'ASC' === get_post_meta( $key, '_um_sortby_custom_order', true ) ? __( 'Ascending', 'ultimate-member' ) : __( 'Descending', 'ultimate-member' ), + ), + 'um-directory-sortby_custom_label' => array( + 'label' => __( 'Label of custom sort', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_sortby_custom_label', true ), + ), + ) + ); + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-enable_sorting' => array( + 'label' => __( 'Enable custom sorting', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_enable_sorting', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + if ( 1 === absint( get_post_meta( $key, '_um_enable_sorting', true ) ) ) { + $sorting_fields = get_post_meta( $key, '_um_sorting_fields', true ); + if ( ! empty( $sorting_fields ) ) { + foreach ( $sorting_fields as $k => $field ) { + if ( is_array( $field ) ) { + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-sorting_fields-' . $k => array( + 'label' => __( 'Field(s) to enable in sorting', 'ultimate-member' ), + 'value' => __( 'Label: ', 'ultimate-member' ) . array_values( $field )[0] . ' | ' . __( 'Meta key: ', 'ultimate-member' ) . stripslashes( array_keys( $field )[0] ), + ), + ) + ); + } else { + $sortby_label = isset( $options[ $field ] ) ? $options[ $field ] : $field; + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-sorting_fields-' . $k => array( + 'label' => __( 'Field to enable in sorting', 'ultimate-member' ), + 'value' => $sortby_label, + ), + ) + ); + } + } + } + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-search' => array( + 'label' => __( 'Enable Search feature', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_search', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + if ( 1 === absint( get_post_meta( $key, '_um_search', true ) ) ) { + $directory_roles_can_search_meta = get_post_meta( $key, '_um_roles_can_search', true ); + $roles_can_search = array(); + if ( ! empty( $directory_roles_can_search_meta ) ) { + if ( is_string( $directory_roles_can_search_meta ) ) { + $roles_can_search = array( $directory_roles_can_search_meta ); + } else { + $roles_can_search = $directory_roles_can_search_meta; + } + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-roles_can_search' => array( + 'label' => __( 'User Roles that can use search', 'ultimate-member' ), + 'value' => ! empty( $roles_can_search ) ? implode( ', ', $roles_can_search ) : $labels['all'], + ), + ) + ); + } + + if ( ! empty( get_post_meta( $key, '_um_search_exclude_fields', true ) ) ) { + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-um_search_exclude_fields' => array( + 'label' => __( 'Exclude fields from search', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_search_exclude_fields', true ), + ), + ) + ); + } + + if ( ! empty( get_post_meta( $key, '_um_search_include_fields', true ) ) ) { + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-um_search_include_fields' => array( + 'label' => __( 'Fields to search by', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_search_include_fields', true ), + ), + ) + ); + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-filters' => array( + 'label' => __( 'Enable Filters feature', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_filters', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + if ( 1 === absint( get_post_meta( $key, '_um_filters', true ) ) ) { + $directory_roles_can_filter_meta = get_post_meta( $key, '_um_roles_can_filter', true ); + $roles_can_filter = array(); + if ( ! empty( $directory_roles_can_filter_meta ) ) { + if ( is_string( $directory_roles_can_filter_meta ) ) { + $roles_can_filter = array( $directory_roles_can_filter_meta ); + } else { + $roles_can_filter = $directory_roles_can_filter_meta; + } + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-roles_can_filter' => array( + 'label' => __( 'User Roles that can use filters', 'ultimate-member' ), + 'value' => ! empty( $roles_can_filter ) ? implode( ', ', $roles_can_filter ) : $labels['all'], + ), + ) + ); + + $search_fields = get_post_meta( $key, '_um_search_fields', true ); + if ( ! empty( $search_fields ) && is_array( $search_fields ) ) { + $field_labels = array(); + foreach ( $search_fields as $k => $field ) { + $field_label = isset( $options[ $field ] ) ? $options[ $field ] : $field; + $field_labels[] = $field_label; + } + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-search_fields-' . $k => array( + 'label' => __( 'Filter meta to enable', 'ultimate-member' ), + 'value' => $field_labels, + ), + ) + ); + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-filters_expanded' => array( + 'label' => __( 'Expand the filter bar by default', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_filters_expanded', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + if ( 1 === absint( get_post_meta( $key, '_um_filters_expanded', true ) ) ) { + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-filters_is_collapsible' => array( + 'label' => __( 'Can filter bar be collapsed', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_filters_is_collapsible', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + } + + $search_filters = get_post_meta( $key, '_um_search_filters', true ); + if ( ! empty( $search_filters ) && is_array( $search_filters ) ) { + $field_labels = array(); + foreach ( $search_filters as $k => $field ) { + $field_label = isset( $options[ $k ] ) ? $options[ $k ] : $k; + $value = $field; + if ( is_array( $field ) ) { + // @todo: check if field 'From' and 'To' is set. $value = __( 'From ', 'ultimate-member' ) . $field[0] . __( ' to ', 'ultimate-member' ) . $field[1]; + $value = implode( ', ', $field ); + } + $field_labels[] = $field_label . ' - ' . $value; + } + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-search_filters-' . $k => array( + 'label' => __( 'Admin filtering', 'ultimate-member' ), + 'value' => $field_labels, + ), + ) + ); + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-profile_photo' => array( + 'label' => __( 'Enable Profile Photo', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_profile_photo', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-directory-cover_photos' => array( + 'label' => __( 'Enable Cover Photo', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_cover_photos', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-directory-show_name' => array( + 'label' => __( 'Show display name', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_show_name', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + $info = apply_filters( 'um_debug_member_directory_profile_extend', $info, $key ); + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-show_tagline' => array( + 'label' => __( 'Show tagline below profile name', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_show_tagline', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + if ( 1 === absint( get_post_meta( $key, '_um_show_tagline', true ) ) ) { + $tagline_fields = get_post_meta( $key, '_um_tagline_fields', true ); + if ( ! empty( $tagline_fields ) && is_array( $tagline_fields ) ) { + $field_labels = array(); + foreach ( $tagline_fields as $k => $field ) { + $label = isset( $options[ $field ] ) ? $options[ $field ] : $field; + $field_labels[] = $label; + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-tagline_fields-' . $k => array( + 'label' => __( 'Field to display in tagline', 'ultimate-member' ), + 'value' => $field_labels, + ), + ) + ); + } + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-show_userinfo' => array( + 'label' => __( 'Show extra user information below tagline?', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_show_userinfo', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + if ( 1 === absint( get_post_meta( $key, '_um_show_userinfo', true ) ) ) { + $reveal_fields = get_post_meta( $key, '_um_reveal_fields', true ); + if ( ! empty( $reveal_fields ) && is_array( $reveal_fields ) ) { + $field_labels = array(); + foreach ( $reveal_fields as $k => $field ) { + $label = isset( $options[ $field ] ) ? $options[ $field ] : $field; + $field_labels[] = $label; + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-reveal_fields-' . $k => array( + 'label' => __( 'Field to display in extra user information section', 'ultimate-member' ), + 'value' => $field_labels, + ), + ) + ); + } + } + + $info[ 'ultimate-member-directory-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-directory-' . $key ]['fields'], + array( + 'um-directory-show_social' => array( + 'label' => __( 'Show social connect icons in extra user information section', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_show_social', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-directory-um_userinfo_animate' => array( + 'label' => __( 'Hide extra user information to the reveal section', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_userinfo_animate', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-directory-must_search' => array( + 'label' => __( 'Show results only after search/filtration', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_must_search', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-directory-max_users' => array( + 'label' => __( 'Maximum number of profiles', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_max_users', true ), + ), + 'um-directory-profiles_per_page' => array( + 'label' => __( 'Number of profiles per page', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_profiles_per_page', true ), + ), + 'um-directory-profiles_per_page_mobile' => array( + 'label' => __( 'Maximum number of profiles', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_profiles_per_page_mobile', true ), + ), + 'um-directory-directory_header' => array( + 'label' => __( 'Results Text', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_directory_header', true ), + ), + 'um-directory-directory_header_single' => array( + 'label' => __( 'Single Result Text', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_directory_header_single', true ), + ), + 'um-directory-directory_no_users' => array( + 'label' => __( 'Custom text if no users were found', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_directory_no_users', true ), + ), + ) + ); + + $info = apply_filters( 'um_debug_member_directory_extend', $info, $key ); + } + } + + return $info; + } + + public function roles_sitehealth( $info ) { + $labels = self::get_labels(); + + // User roles settings + $roles_array = array(); + foreach ( $this->get_roles() as $key => $role ) { + if ( strpos( $key, 'um_' ) === 0 ) { + $key = substr( $key, 3 ); + } + $rolemeta = $this->get_role_meta( $key ); + if ( false === $rolemeta ) { + continue; + } + $priority = ! empty( $rolemeta['_um_priority'] ) ? $rolemeta['_um_priority'] : 0; + + $k = $priority . '-' . $role; + $roles_array[ $k ] = $role . '(' . $priority . ')'; + + krsort( $roles_array, SORT_NUMERIC ); + } + + $info['ultimate-member-user-roles'] = array( + 'label' => __( 'User roles', 'ultimate-member' ), + 'description' => __( 'This debug information about user roles.', 'ultimate-member' ), + 'fields' => array( + 'um-roles' => array( + 'label' => __( 'User Roles (priority)', 'ultimate-member' ), + 'value' => implode( ', ', $roles_array ), + ), + 'um-register_role' => array( + 'label' => __( 'WordPress Default New User Role', 'ultimate-member' ), + 'value' => get_option( 'default_role' ), + ), + ), + ); + + foreach ( $this->get_roles() as $key => $role ) { + if ( strpos( $key, 'um_' ) === 0 ) { + $key = substr( $key, 3 ); + } + + $rolemeta = $this->get_role_meta( $key ); + if ( false === $rolemeta ) { + continue; + } + + $info[ 'ultimate-member-' . $key ] = array( + 'label' => ' - ' . $role . __( ' role settings', 'ultimate-member' ), + 'description' => __( 'This debug information about user role.', 'ultimate-member' ), + 'fields' => array(), + ); + + if ( array_key_exists( '_um_can_access_wpadmin', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_access_wpadmin' => array( + 'label' => __( 'Can access wp-admin?', 'ultimate-member' ), + 'value' => $rolemeta['_um_can_access_wpadmin'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_not_see_adminbar', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_not_see_adminbar' => array( + 'label' => __( 'Force hiding adminbar in frontend?', 'ultimate-member' ), + 'value' => $rolemeta['_um_can_not_see_adminbar'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_edit_everyone', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_edit_everyone' => array( + 'label' => __( 'Can edit other member accounts?', 'ultimate-member' ), + 'value' => $rolemeta['_um_can_edit_everyone'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_edit_everyone', $rolemeta ) && 1 === absint( $rolemeta['_um_can_edit_everyone'] ) ) { + $can_edit_roles_meta = ! empty( $rolemeta['_um_can_edit_roles'] ) ? $rolemeta['_um_can_edit_roles'] : array(); + $can_edit_roles = array(); + if ( ! empty( $can_edit_roles_meta ) ) { + if ( is_string( $can_edit_roles_meta ) ) { + $can_edit_roles = array( $can_edit_roles_meta ); + } else { + $can_edit_roles = $can_edit_roles_meta; + } + } + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_edit_roles' => array( + 'label' => __( 'Can edit these user roles only', 'ultimate-member' ), + 'value' => ! empty( $can_edit_roles ) ? implode( ', ', $can_edit_roles ) : $labels['all'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_delete_everyone', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_delete_everyone' => array( + 'label' => __( 'Can delete other member accounts?', 'ultimate-member' ), + 'value' => $rolemeta['_um_can_delete_everyone'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_delete_everyone', $rolemeta ) && 1 === absint( $rolemeta['_um_can_delete_everyone'] ) ) { + $can_delete_roles_meta = ! empty( $rolemeta['_um_can_delete_roles'] ) ? $rolemeta['_um_can_delete_roles'] : array(); + $can_delete_roles = array(); + if ( ! empty( $can_delete_roles_meta ) ) { + if ( is_string( $can_delete_roles_meta ) ) { + $can_delete_roles = array( $can_delete_roles_meta ); + } else { + $can_delete_roles = $can_delete_roles_meta; + } + } + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_delete_roles' => array( + 'label' => __( 'Can delete these user roles only', 'ultimate-member' ), + 'value' => ! empty( $can_delete_roles ) ? implode( ', ', $can_delete_roles ) : $labels['all'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_edit_profile', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_edit_profile' => array( + 'label' => __( 'Can edit their profile?', 'ultimate-member' ), + 'value' => $rolemeta['_um_can_edit_profile'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_delete_profile', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_delete_profile' => array( + 'label' => __( 'Can delete their account?', 'ultimate-member' ), + 'value' => $rolemeta['_um_can_delete_profile'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_view_all', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_view_all' => array( + 'label' => __( 'Can view other member profiles?', 'ultimate-member' ), + 'value' => $rolemeta['_um_can_view_all'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_view_all', $rolemeta ) && 1 === absint( $rolemeta['_um_can_view_all'] ) ) { + $can_view_roles_meta = ! empty( $rolemeta['_um_can_view_roles'] ) ? $rolemeta['_um_can_view_roles'] : array(); + $can_view_roles = array(); + if ( ! empty( $can_view_roles_meta ) ) { + if ( is_string( $can_view_roles_meta ) ) { + $can_view_roles = array( $can_view_roles_meta ); + } else { + $can_view_roles = $can_view_roles_meta; + } + } + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_view_roles' => array( + 'label' => __( 'Can view these user roles only', 'ultimate-member' ), + 'value' => ! empty( $can_view_roles ) ? implode( ', ', $can_view_roles ) : $labels['all'], + ), + ) + ); + } + + if ( isset( $rolemeta['_um_profile_noindex'] ) && '' !== $rolemeta['_um_profile_noindex'] ) { + $profile_noindex = $rolemeta['_um_profile_noindex'] ? $labels['yes'] : $labels['no']; + } else { + $profile_noindex = __( 'Default', 'ultimate-member' ); + } + if ( isset( $rolemeta['_um_default_homepage'] ) && '' !== $rolemeta['_um_default_homepage'] ) { + $default_homepage = $rolemeta['_um_default_homepage'] ? $labels['yes'] : $labels['no']; + } else { + $default_homepage = __( 'No such option', 'ultimate-member' ); + } + + if ( array_key_exists( '_um_can_make_private_profile', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_make_private_profile' => array( + 'label' => __( 'Can make their profile private?', 'ultimate-member' ), + 'value' => $rolemeta['_um_can_make_private_profile'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + if ( array_key_exists( '_um_can_access_private_profile', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-can_access_private_profile' => array( + 'label' => __( 'Can view/access private profiles?', 'ultimate-member' ), + 'value' => $rolemeta['_um_can_access_private_profile'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-profile_noindex' => array( + 'label' => __( 'Avoid indexing profile by search engines', 'ultimate-member' ), + 'value' => $profile_noindex, + ), + 'um-default_homepage' => array( + 'label' => __( 'Can view default homepage?', 'ultimate-member' ), + 'value' => $default_homepage, + ), + ) + ); + + if ( isset( $rolemeta['_um_default_homepage'] ) && 0 === absint( $rolemeta['_um_default_homepage'] ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-redirect_homepage' => array( + 'label' => __( 'Custom Homepage Redirect', 'ultimate-member' ), + 'value' => $rolemeta['_um_redirect_homepage'], + ), + ) + ); + } + + $status_options = array( + 'approved' => __( 'Auto Approve', 'ultimate-member' ), + 'checkmail' => __( 'Require Email Activation', 'ultimate-member' ), + 'pending' => __( 'Require Admin Review', 'ultimate-member' ), + ); + + if ( array_key_exists( '_um_status', $rolemeta ) && isset( $status_options[ $rolemeta['_um_status'] ] ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-status' => array( + 'label' => __( 'Registration Status', 'ultimate-member' ), + 'value' => $status_options[ $rolemeta['_um_status'] ], + ), + ) + ); + } + + if ( array_key_exists( '_um_status', $rolemeta ) && 'approved' === $rolemeta['_um_status'] ) { + $auto_approve_act = array( + 'redirect_profile' => __( 'Redirect to profile', 'ultimate-member' ), + 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), + ); + + if ( isset( $auto_approve_act[ $rolemeta['_um_auto_approve_act'] ] ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-auto_approve_act' => array( + 'label' => __( 'Custom Homepage Redirect', 'ultimate-member' ), + 'value' => $auto_approve_act[ $rolemeta['_um_auto_approve_act'] ], + ), + ) + ); + } + + if ( 'redirect_url' === $rolemeta['_um_auto_approve_act'] && array_key_exists( '_um_auto_approve_url', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-auto_approve_url' => array( + 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), + 'value' => $rolemeta['_um_auto_approve_url'], + ), + ) + ); + } + } + + if ( array_key_exists( '_um_status', $rolemeta ) && 'checkmail' === $rolemeta['_um_status'] ) { + $checkmail_action = array( + 'show_message' => __( 'Show custom message', 'ultimate-member' ), + 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), + ); + + if ( array_key_exists( '_um_login_email_activate', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-login_email_activate' => array( + 'label' => __( 'Login user after validating the activation link?', 'ultimate-member' ), + 'value' => $rolemeta['_um_login_email_activate'] ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + if ( isset( $checkmail_action[ $rolemeta['_um_checkmail_action'] ] ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-checkmail_action' => array( + 'label' => __( 'Action to be taken after registration', 'ultimate-member' ), + 'value' => $checkmail_action[ $rolemeta['_um_checkmail_action'] ], + ), + ) + ); + } + + if ( 'show_message' === $rolemeta['_um_checkmail_action'] ) { + if ( array_key_exists( '_um_checkmail_message', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-checkmail_message' => array( + 'label' => __( 'Personalize the custom message', 'ultimate-member' ), + 'value' => stripslashes( $rolemeta['_um_checkmail_message'] ), + ), + ) + ); + } + } else { + if ( array_key_exists( '_um_checkmail_url', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-checkmail_url' => array( + 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), + 'value' => $rolemeta['_um_checkmail_url'], + ), + ) + ); + } + } + + if ( array_key_exists( '_um_url_email_activate', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-url_email_activate' => array( + 'label' => __( 'URL redirect after email activation', 'ultimate-member' ), + 'value' => $rolemeta['_um_url_email_activate'], + ), + ) + ); + } + } + + if ( array_key_exists( '_um_status', $rolemeta ) && 'pending' === $rolemeta['_um_status'] ) { + $pending_action = array( + 'show_message' => __( 'Show custom message', 'ultimate-member' ), + 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), + ); + + if ( array_key_exists( '_um_pending_action', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-pending_action' => array( + 'label' => __( 'Action to be taken after registration', 'ultimate-member' ), + 'value' => $pending_action[ $rolemeta['_um_pending_action'] ], + ), + ) + ); + } + + if ( 'show_message' === $rolemeta['_um_pending_action'] ) { + if ( array_key_exists( '_um_pending_message', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-pending_message' => array( + 'label' => __( 'Personalize the custom message', 'ultimate-member' ), + 'value' => stripslashes( $rolemeta['_um_pending_message'] ), + ), + ) + ); + } + } else { + if ( array_key_exists( '_um_pending_url', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-pending_url' => array( + 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), + 'value' => $rolemeta['_um_pending_url'], + ), + ) + ); + } + } + } + + $after_login_options = array( + 'redirect_profile' => __( 'Redirect to profile', 'ultimate-member' ), + 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), + 'refresh' => __( 'Refresh active page', 'ultimate-member' ), + 'redirect_admin' => __( 'Redirect to WordPress Admin', 'ultimate-member' ), + ); + + if ( array_key_exists( '_um_after_login', $rolemeta ) && isset( $after_login_options[ $rolemeta['_um_after_login'] ] ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-after_login' => array( + 'label' => __( 'Action to be taken after login', 'ultimate-member' ), + 'value' => $after_login_options[ $rolemeta['_um_after_login'] ], + ), + ) + ); + + if ( 'redirect_url' === $rolemeta['_um_after_login'] && array_key_exists( '_um_login_redirect_url', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-login_redirect_url' => array( + 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), + 'value' => $rolemeta['_um_login_redirect_url'], + ), + ) + ); + } + } + + $redirect_options = array( + 'redirect_home' => __( 'Go to Homepage', 'ultimate-member' ), + 'redirect_url' => __( 'Go to Custom URL', 'ultimate-member' ), + ); + if ( ! isset( $rolemeta['_um_after_logout'] ) ) { + $rolemeta['_um_after_logout'] = 'redirect_home'; + } + if ( array_key_exists( '_um_after_logout', $rolemeta ) && isset( $redirect_options[ $rolemeta['_um_after_logout'] ] ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-after_logout' => array( + 'label' => __( 'Action to be taken after logout', 'ultimate-member' ), + 'value' => $redirect_options[ $rolemeta['_um_after_logout'] ], + ), + ) + ); + + if ( 'redirect_url' === $rolemeta['_um_after_logout'] && array_key_exists( '_um_logout_redirect_url', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-logout_redirect_url' => array( + 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), + 'value' => $rolemeta['_um_logout_redirect_url'], + ), + ) + ); + } + } + + if ( ! isset( $rolemeta['_um_after_delete'] ) ) { + $rolemeta['_um_after_delete'] = 'redirect_home'; + } + if ( array_key_exists( '_um_after_delete', $rolemeta ) && isset( $redirect_options[ $rolemeta['_um_after_delete'] ] ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-after_delete' => array( + 'label' => __( 'Action to be taken after account is deleted', 'ultimate-member' ), + 'value' => $redirect_options[ $rolemeta['_um_after_delete'] ], + ), + ) + ); + + if ( 'redirect_url' === $rolemeta['_um_after_delete'] && array_key_exists( '_um_delete_redirect_url', $rolemeta ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-delete_redirect_url' => array( + 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), + 'value' => $rolemeta['_um_delete_redirect_url'], + ), + ) + ); + } + } + + if ( ! empty( $rolemeta['wp_capabilities'] ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-wp_capabilities' => array( + 'label' => __( 'WP Capabilities', 'ultimate-member' ), + 'value' => $rolemeta['wp_capabilities'], + ), + ) + ); + } + + $info = apply_filters( 'um_debug_information_user_role', $info, $key ); + } + + return $info; + } + + public function forms_sitehealth( $info ) { + $labels = self::get_labels(); + + if ( ! empty( $this->get_forms() ) ) { + $info['ultimate-member-forms'] = array( + 'label' => __( 'Ultimate Member Forms', 'ultimate-member' ), + 'description' => __( 'This debug information for your Ultimate Member forms.', 'ultimate-member' ), + 'fields' => array( + 'um-forms' => array( + 'label' => __( 'UM Forms', 'ultimate-member' ), + 'value' => $this->get_forms(), + ), + ), + ); + + foreach ( $this->get_forms() as $key => $form ) { + if ( strpos( $key, 'ID#' ) === 0 ) { + $key = substr( $key, 3 ); + } + + $info[ 'ultimate-member-' . $key ] = array( + 'label' => ' - ' . $form . __( ' form settings', 'ultimate-member' ), + 'description' => __( 'This debug information for your Ultimate Member form.', 'ultimate-member' ), + 'fields' => array( + 'um-form-shortcode' => array( + 'label' => __( 'Shortcode', 'ultimate-member' ), + 'value' => '[ultimatemember form_id="' . $key . '"]', + ), + 'um-mode' => array( + 'label' => __( 'Type', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_mode', true ), + ), + ), + ); + + if ( 'register' === get_post_meta( $key, '_um_mode', true ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-register_role' => array( + 'label' => __( 'User registration role', 'ultimate-member' ), + 'value' => 0 === absint( get_post_meta( $key, '_um_register_role', true ) ) ? $labels['default'] : get_post_meta( $key, '_um_register_role', true ), + ), + 'um-register_template' => array( + 'label' => __( 'Template', 'ultimate-member' ), + 'value' => 0 === absint( get_post_meta( $key, '_um_register_template', true ) ) ? $labels['default'] : get_post_meta( $key, '_um_register_template', true ), + ), + 'um-register_primary_btn_word' => array( + 'label' => __( 'Primary Button Text', 'ultimate-member' ), + 'value' => ! get_post_meta( $key, '_um_register_primary_btn_word', true ) ? $labels['default'] : get_post_meta( $key, '_um_register_primary_btn_word', true ), + ), + 'um-register_use_gdpr' => array( + 'label' => __( 'Enable privacy policy agreement', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_register_use_gdpr', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + if ( 1 === absint( get_post_meta( $key, '_um_register_use_gdpr', true ) ) ) { + $gdpr_content_id = get_post_meta( $key, '_um_register_use_gdpr_content_id', true ); + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-register_use_gdpr_content_id' => array( + 'label' => __( 'Privacy policy content', 'ultimate-member' ), + 'value' => $gdpr_content_id ? get_the_title( $gdpr_content_id ) . '(' . $gdpr_content_id . ')' . get_the_permalink( $gdpr_content_id ) : '', + ), + 'um-register_use_gdpr_toggle_show' => array( + 'label' => __( 'Toggle Show text', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_register_use_gdpr_toggle_show', true ), + ), + 'um-register_use_gdpr_toggle_hide' => array( + 'label' => __( 'Toggle Hide text', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_register_use_gdpr_toggle_hide', true ), + ), + 'um-register_use_gdpr_agreement' => array( + 'label' => __( 'Checkbox agreement description', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_register_use_gdpr_agreement', true ), + ), + 'um-register_use_gdpr_error_text' => array( + 'label' => __( 'Error Text', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_register_use_gdpr_error_text', true ), + ), + ) + ); + } + + $info = apply_filters( 'um_debug_information_register_form', $info, $key ); + + $fields = get_post_meta( $key, '_um_custom_fields', true ); + if ( ! empty( $fields ) && is_array( $fields ) ) { + foreach ( $fields as $field_key => $field ) { + $field_info = $this->get_field_data( $info, $key, $field_key, $field ); + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + $field_info + ); + } + } + } elseif ( 'login' === get_post_meta( $key, '_um_mode', true ) ) { + $login_redirect_options = array( + '0' => __( 'Default', 'ultimate-member' ), + 'redirect_profile' => __( 'Redirect to profile', 'ultimate-member' ), + 'redirect_url' => __( 'Redirect to URL', 'ultimate-member' ), + 'refresh' => __( 'Refresh active page', 'ultimate-member' ), + 'redirect_admin' => __( 'Redirect to WordPress Admin', 'ultimate-member' ), + ); + + $login_after_login = get_post_meta( $key, '_um_login_after_login', true ); + $login_after_login = '' === $login_after_login ? '0' : $login_after_login; + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-login_template' => array( + 'label' => __( 'Template', 'ultimate-member' ), + 'value' => 0 === absint( get_post_meta( $key, '_um_login_template', true ) ) ? $labels['default'] : get_post_meta( $key, '_um_login_template', true ), + ), + 'um-login_primary_btn_word' => array( + 'label' => __( 'Primary Button Text', 'ultimate-member' ), + 'value' => ! get_post_meta( $key, '_um_login_primary_btn_word', true ) ? $labels['default'] : get_post_meta( $key, '_um_login_primary_btn_word', true ), + ), + 'um-login_forgot_pass_link' => array( + 'label' => __( 'Show Forgot Password Link?', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_login_forgot_pass_link', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-login_show_rememberme' => array( + 'label' => __( 'Show "Remember Me"?', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_login_show_rememberme', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-login_after_login' => array( + 'label' => __( 'Redirection after Login', 'ultimate-member' ), + 'value' => $login_redirect_options[ $login_after_login ], + ), + ) + ); + + if ( 'redirect_url' === get_post_meta( $key, '_um_login_after_login', true ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-login_redirect_url' => array( + 'label' => __( 'Set Custom Redirect URL', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_login_redirect_url', true ), + ), + ) + ); + } + + $info = apply_filters( 'um_debug_information_login_form', $info, $key ); + + $fields = get_post_meta( $key, '_um_custom_fields', true ); + if ( ! empty( $fields ) && is_array( $fields ) ) { + foreach ( $fields as $field_key => $field ) { + $field_info = $this->get_field_data( $info, $key, $field_key, $field ); + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + $field_info + ); + } + } + } elseif ( 'profile' === get_post_meta( $key, '_um_mode', true ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-profile_role' => array( + 'label' => __( 'Make this profile form role-specific', 'ultimate-member' ), + 'value' => ! empty( get_post_meta( $key, '_um_profile_role', true ) ) ? get_post_meta( $key, '_um_profile_role', true ) : $labels['all'], + ), + 'um-profile_template' => array( + 'label' => __( 'Template', 'ultimate-member' ), + 'value' => 0 === absint( get_post_meta( $key, '_um_profile_template', true ) ) ? $labels['default'] : get_post_meta( $key, '_um_profile_template', true ), + ), + 'um-profile_primary_btn_word' => array( + 'label' => __( 'Primary Button Text', 'ultimate-member' ), + 'value' => ! get_post_meta( $key, '_um_profile_primary_btn_word', true ) ? $labels['default'] : get_post_meta( $key, '_um_profile_primary_btn_word', true ), + ), + 'um-profile_cover_enabled' => array( + 'label' => __( 'Enable Cover Photos', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_profile_cover_enabled', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-profile_disable_photo_upload' => array( + 'label' => __( 'Disable Profile Photo Upload', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_profile_disable_photo_upload', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + if ( 0 === absint( get_post_meta( $key, '_um_profile_disable_photo_upload', true ) ) ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-profile_photo_required' => array( + 'label' => __( 'Make Profile Photo Required', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_profile_photo_required', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + } + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-profile_show_name' => array( + 'label' => __( 'Show display name in profile header?', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_profile_show_name', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-profile_show_social_links' => array( + 'label' => __( 'Show social links in profile header?', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_profile_show_social_links', true ) ? $labels['yes'] : $labels['no'], + ), + 'um-profile_show_bio' => array( + 'label' => __( 'Show user description in profile header?', 'ultimate-member' ), + 'value' => get_post_meta( $key, '_um_profile_show_bio', true ) ? $labels['yes'] : $labels['no'], + ), + ) + ); + + $fields = get_post_meta( $key, '_um_custom_fields', true ); + if ( ! empty( $fields ) && is_array( $fields ) ) { + foreach ( $fields as $field_key => $field ) { + $field_info = $this->get_field_data( $info, $key, $field_key, $field ); + + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + $field_info + ); + } + } + + $profile_metafields = get_post_meta( $key, '_um_profile_metafields', true ); + if ( ! empty( $profile_metafields ) && is_array( $profile_metafields ) ) { + foreach ( $profile_metafields as $k => $field ) { + $info[ 'ultimate-member-' . $key ]['fields'] = array_merge( + $info[ 'ultimate-member-' . $key ]['fields'], + array( + 'um-profile_metafields-' . $k => array( + 'label' => __( 'Field to show in user meta', 'ultimate-member' ), + 'value' => $field, + ), + ) + ); + } + } + } + } + } + + return $info; + } }