diff --git a/includes/admin/class-site-health.php b/includes/admin/class-site-health.php
index 46f51a53..b7a07925 100644
--- a/includes/admin/class-site-health.php
+++ b/includes/admin/class-site-health.php
@@ -24,6 +24,8 @@ class Site_Health {
*/
const BADGE_COLOR = 'blue';
+ private static $labels = array();
+
/**
* Site_Health constructor.
*/
@@ -32,6 +34,20 @@ class Site_Health {
add_filter( 'site_status_tests', array( $this, 'register_site_status_tests' ) );
}
+ public static function get_labels() {
+ if ( empty( self::$labels ) ) {
+ self::$labels = array(
+ 'yes' => __( 'Yes', 'ultimate-member' ),
+ 'no' => __( 'No', 'ultimate-member' ),
+ 'all' => __( 'All', 'ultimate-member' ),
+ 'default' => __( 'Default', 'ultimate-member' ),
+ 'nopages' => __( 'No predefined page', 'ultimate-member' ),
+ );
+ }
+
+ return self::$labels;
+ }
+
public function register_site_status_tests( $tests ) {
$custom_templates = UM()->common()->theme()->get_custom_templates_list();
@@ -436,819 +452,17 @@ class Site_Health {
'fields' => array(),
);
- // Pages settings.
- $pages = array();
- $predefined_pages = UM()->config()->core_pages;
- foreach ( $predefined_pages as $page_s => $page ) {
- $page_id = UM()->options()->get_predefined_page_option_key( $page_s );
- $page_title = ! empty( $page['title'] ) ? $page['title'] : '';
- if ( empty( $page_title ) ) {
- continue;
- }
+ // General settings sitehealth
+ $general_sitehealth = $this->general_siteheath();
- $predefined_page_id = UM()->options()->get( $page_id );
+ // Access settings sitehealth
+ $access_sitehealth = $this->access_sitehealth();
- if ( empty( $predefined_page_id ) ) {
- $pages[ $page_title ] = $labels['nopages'];
- continue;
- }
- // translators: %1$s is a predefined page title; %2$d is a predefined page ID; %3$s is a predefined page permalink.
- $pages[ $page_title ] = sprintf( __( '%1$s (ID#%2$d) | %3$s', 'ultimate-member' ), get_the_title( $predefined_page_id ), $predefined_page_id, get_permalink( $predefined_page_id ) );
- }
+ // Emails settings sitehealth
+ $emails_sitehealth = $this->emails_sitehealth();
- $pages = apply_filters( 'um_debug_information_pages', $pages );
-
- $pages_settings = array(
- 'um-pages' => array(
- 'label' => __( 'Pages', 'ultimate-member' ),
- 'value' => $pages,
- ),
- );
-
- // User settings
- $permalink_base = UM()->config()->permalink_base_options;
- $display_name = UM()->config()->display_name_options;
-
- $user_settings = array(
- 'um-user_separator' => array(
- 'label' => __( 'User settings', 'ultimate-member' ),
- 'value' => '---------------------------------------------------------------------',
- ),
- 'um-register_role' => array(
- 'label' => __( 'Registration Default Role', 'ultimate-member' ),
- 'value' => ! empty( UM()->options()->get( 'register_role' ) ) ? UM()->options()->get( 'register_role' ) : __( 'Default', 'ultimate-member' ),
- ),
- 'um-permalink_base' => array(
- 'label' => __( 'Profile Permalink Base', 'ultimate-member' ),
- 'value' => isset( $permalink_base[ UM()->options()->get( 'permalink_base' ) ] ) ? $permalink_base[ UM()->options()->get( 'permalink_base' ) ] : $labels['no'],
- ),
- 'um-display_name' => array(
- 'label' => __( 'User Display Name', 'ultimate-member' ),
- 'value' => isset( $display_name[ UM()->options()->get( 'display_name' ) ] ) ? $display_name[ UM()->options()->get( 'display_name' ) ] : $labels['no'],
- ),
- 'um-author_redirect' => array(
- 'label' => __( 'Hide author pages (enable author page redirect to user profile)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'author_redirect' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-members_page' => array(
- 'label' => __( 'Enable Members Directory', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'members_page' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-use_gravatars' => array(
- 'label' => __( 'Use Gravatars?', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'use_gravatars' ) ? $labels['yes'] : $labels['no'],
- ),
- );
-
- if ( UM()->options()->get( 'use_gravatars' ) ) {
- $gravatar_options = array(
- 'default' => __( 'Default', 'ultimate-member' ),
- '404' => __( '404 ( File Not Found response )', 'ultimate-member' ),
- 'mm' => __( 'Mystery Man', 'ultimate-member' ),
- 'identicon' => __( 'Identicon', 'ultimate-member' ),
- 'monsterid' => __( 'Monsterid', 'ultimate-member' ),
- 'wavatar' => __( 'Wavatar', 'ultimate-member' ),
- 'retro' => __( 'Retro', 'ultimate-member' ),
- 'blank' => __( 'Blank ( a transparent PNG image )', 'ultimate-member' ),
- );
-
- $user_settings['um-use_um_gravatar_default_builtin_image'] = array(
- 'label' => __( 'Use Gravatar builtin image', 'ultimate-member' ),
- 'value' => $gravatar_options[ UM()->options()->get( 'use_um_gravatar_default_builtin_image' ) ],
- );
- if ( 'default' === UM()->options()->get( 'use_um_gravatar_default_builtin_image' ) ) {
- $user_settings['um-use_um_gravatar_default_image'] = array(
- 'label' => __( 'Replace Gravatar\'s Default avatar (Set Default plugin avatar as Gravatar\'s Default avatar)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'use_um_gravatar_default_image' ) ? $labels['yes'] : $labels['no'],
- );
- }
- }
-
- $user_settings = array_merge(
- $user_settings,
- array(
- 'um-admin_ignore_user_status' => array(
- 'label' => __( 'Ignore the "User Role > Registration Options" if this user is added from the wp-admin dashboard', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'admin_ignore_user_status' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-delete_comments' => array(
- 'label' => __( 'Delete user comments (enable deleting user comments after deleting a user)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'delete_comments' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-toggle_password' => array(
- 'label' => __( 'Toggle Password Visibility (enable password show/hide icon on password field)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'toggle_password' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-require_strongpass' => array(
- 'label' => __( 'Require Strong Passwords', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'require_strongpass' ) ? $labels['yes'] : $labels['no'],
- ),
- )
- );
-
- if ( UM()->options()->get( 'require_strongpass' ) ) {
- $user_settings = array_merge(
- $user_settings,
- array(
- 'um-password_min_chars' => array(
- 'label' => __( 'Password minimum length', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'password_min_chars' ),
- ),
- 'um-password_max_chars' => array(
- 'label' => __( 'Password maximum length', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'password_max_chars' ),
- ),
- )
- );
- }
-
- $user_settings = array_merge(
- $user_settings,
- array(
- 'um-activation_link_expiry_time' => array(
- 'label' => __( 'Email activation link expiration (days)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'activation_link_expiry_time' ),
- ),
- 'um-profile_noindex' => array(
- 'label' => __( 'Avoid indexing profile by search engines', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_noindex' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-profile_title' => array(
- 'label' => __( 'User Profile Title', 'ultimate-member' ),
- 'value' => stripslashes( UM()->options()->get( 'profile_title' ) ),
- ),
- 'um-profile_desc' => array(
- 'label' => __( 'User Profile Dynamic Meta Description', 'ultimate-member' ),
- 'value' => stripslashes( UM()->options()->get( 'profile_desc' ) ),
- ),
- )
- );
-
- if ( 'custom_meta' === UM()->options()->get( 'permalink_base' ) ) {
- $user_settings = UM()->array_insert_before(
- $user_settings,
- 'um-display_name',
- array(
- 'um-permalink_base_custom_meta' => array(
- 'label' => __( 'Profile Permalink Base Custom Meta Key', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'permalink_base_custom_meta' ),
- ),
- )
- );
- }
-
- if ( 'field' === UM()->options()->get( 'display_name' ) ) {
- $user_settings = UM()->array_insert_before(
- $user_settings,
- 'um-author_redirect',
- array(
- 'um-display_name_field' => array(
- 'label' => __( 'Display Name Custom Field(s)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'display_name_field' ),
- ),
- )
- );
- }
-
- // Account settings
- $account_settings = array(
- 'um-account_separator' => array(
- 'label' => __( 'Account settings', 'ultimate-member' ),
- 'value' => '---------------------------------------------------------------------',
- ),
- 'um-account_name' => array(
- 'label' => __( 'Display First & Last name fields (enable to display First & Last name fields)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_name' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-account_email' => array(
- 'label' => __( 'Allow users to change email (enable changing email via the account page)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_email' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-account_general_password' => array(
- 'label' => __( 'Require password to update account (enable required password)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_general_password' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-account_tab_password' => array(
- 'label' => __( 'Password Account Tab', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_tab_password' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-account_tab_privacy' => array(
- 'label' => __( 'Privacy Account Tab', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_tab_privacy' ) ? $labels['yes'] : $labels['no'],
- ),
- );
-
- if ( UM()->options()->get( 'account_name' ) ) {
- $account_settings = UM()->array_insert_before(
- $account_settings,
- 'um-account_email',
- array(
- 'um-account_name_disable' => array(
- 'label' => __( 'Disable First & Last name field editing', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_name_disable' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-account_name_require' => array(
- 'label' => __( 'Require First & Last Name', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_name_require' ) ? $labels['yes'] : $labels['no'],
- ),
- )
- );
- }
-
- if ( false !== UM()->account()->is_notifications_tab_visible() ) {
- $account_settings['um-account_tab_notifications'] = array(
- 'label' => __( 'Notifications Account Tab', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_tab_notifications' ) ? $labels['yes'] : $labels['no'],
- );
- }
-
- if ( UM()->options()->get( 'account_tab_privacy' ) ) {
- $account_settings['um-account_hide_in_directory'] = array(
- 'label' => __( 'Allow users to hide their profiles from directory', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_hide_in_directory' ) ? $labels['yes'] : $labels['no'],
- );
-
- if ( UM()->options()->get( 'account_hide_in_directory' ) ) {
- $account_settings['um-account_hide_in_directory_default'] = array(
- 'label' => __( 'Hide profiles from directory by default', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_hide_in_directory_default' ),
- );
- }
- }
-
- $account_settings = array_merge(
- $account_settings,
- array(
- 'um-account_tab_delete' => array(
- 'label' => __( 'Delete Account Tab', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'account_tab_delete' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-delete_account_text' => array(
- 'label' => __( 'Account Deletion Text', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'delete_account_text' ),
- ),
- 'um-delete_account_no_pass_required_text' => array(
- 'label' => __( 'Account Deletion without password Text', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'delete_account_no_pass_required_text' ),
- ),
- )
- );
-
- // Uploads settings
- $profile_sizes_list = '';
- $profile_sizes = UM()->options()->get( 'photo_thumb_sizes' );
- if ( ! empty( $profile_sizes ) ) {
- foreach ( $profile_sizes as $size ) {
- $profile_sizes_list = empty( $profile_sizes_list ) ? $size : $profile_sizes_list . ', ' . $size;
- }
- }
- $cover_sizes_list = '';
- $cover_sizes = UM()->options()->get( 'cover_thumb_sizes' );
- if ( ! empty( $cover_sizes ) ) {
- foreach ( $cover_sizes as $size ) {
- $cover_sizes_list = empty( $cover_sizes_list ) ? $size : $cover_sizes_list . ', ' . $size;
- }
- }
- $uploads_settings = array(
- 'um-account_separator' => array(
- 'label' => __( 'Upload settings', 'ultimate-member' ),
- 'value' => '---------------------------------------------------------------------',
- ),
- 'um-image_orientation_by_exif' => array(
- 'label' => __( 'Change image orientation', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'image_orientation_by_exif' ) ? $labels['yes'] : $labels['no'],
- ),
- 'um-image_compression' => array(
- 'label' => __( 'Image Quality', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'image_compression' ),
- ),
- 'um-image_max_width' => array(
- 'label' => __( 'Image Upload Maximum Width (px)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'image_max_width' ),
- ),
- 'um-profile_photo_max_size' => array(
- 'label' => __( 'Profile Photo Maximum File Size (bytes)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_photo_max_size' ),
- ),
- 'um-photo_thumb_sizes' => array(
- 'label' => __( 'Profile Photo Thumbnail Sizes (px)', 'ultimate-member' ),
- 'value' => $profile_sizes_list,
- ),
- 'um-cover_photo_max_size' => array(
- 'label' => __( 'Cover Photo Maximum File Size (bytes)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'cover_photo_max_size' ),
- ),
- 'um-cover_min_width' => array(
- 'label' => __( 'Cover Photo Minimum Width (px)', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'cover_min_width' ),
- ),
- 'um-cover_thumb_sizes' => array(
- 'label' => __( 'Cover Photo Thumbnail Sizes (px)', 'ultimate-member' ),
- 'value' => $cover_sizes_list,
- ),
- );
-
- // Content Restriction settings
- $restricted_posts = UM()->options()->get( 'restricted_access_post_metabox' );
- $restricted_posts_list = '';
- if ( ! empty( $restricted_posts ) ) {
- foreach ( $restricted_posts as $key => $posts ) {
- $restricted_posts_list = empty( $restricted_posts_list ) ? $key : $restricted_posts_list . ', ' . $key;
- }
- }
- $restricted_taxonomy = UM()->options()->get( 'restricted_access_taxonomy_metabox' );
- $restricted_taxonomy_list = '';
- if ( ! empty( $restricted_taxonomy ) ) {
- foreach ( $restricted_taxonomy as $key => $posts ) {
- $restricted_taxonomy_list = empty( $restricted_taxonomy_list ) ? $key : $restricted_taxonomy_list . ', ' . $key;
- }
- }
-
- $accessible = absint( UM()->options()->get( 'accessible' ) );
-
- $restrict_settings = array(
- 'um-accessible' => array(
- 'label' => __( 'Global Site Access', 'ultimate-member' ),
- 'value' => 0 === $accessible ? __( 'Site accessible to Everyone', 'ultimate-member' ) : __( 'Site accessible to Logged In Users', 'ultimate-member' ),
- ),
- );
-
- if ( 2 === $accessible ) {
- $exclude_uris = UM()->options()->get( 'access_exclude_uris' );
- $exclude_uris_list = '';
- if ( ! empty( $exclude_uris ) ) {
- $exclude_uris_list = implode( ', ', $exclude_uris );
- }
- $restrict_settings['um-access_redirect'] = array(
- 'label' => __( 'Custom Redirect URL', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'access_redirect' ),
- );
- $restrict_settings['um-access_exclude_uris'] = array(
- 'label' => __( 'Exclude the following URLs', 'ultimate-member' ),
- 'value' => $exclude_uris_list,
- );
- $restrict_settings['um-home_page_accessible'] = array(
- 'label' => __( 'Allow Homepage to be accessible', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'home_page_accessible' ) ? $labels['yes'] : $labels['no'],
- );
- $restrict_settings['um-category_page_accessible'] = array(
- 'label' => __( 'Allow Category pages to be accessible', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'category_page_accessible' ) ? $labels['yes'] : $labels['no'],
- );
- }
-
- $restrict_settings['um-restricted_post_title_replace'] = array(
- 'label' => __( 'Restricted Content Titles', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'restricted_post_title_replace' ) ? $labels['yes'] : $labels['no'],
- );
- if ( UM()->options()->get( 'restricted_post_title_replace' ) ) {
- $restrict_settings['um-restricted_access_post_title'] = array(
- 'label' => __( 'Restricted Content Title Text', 'ultimate-member' ),
- 'value' => stripslashes( UM()->options()->get( 'restricted_access_post_title' ) ),
- );
- }
-
- $restrict_settings['um-restricted_access_message'] = array(
- 'label' => __( 'Restricted Access Message', 'ultimate-member' ),
- 'value' => stripslashes( UM()->options()->get( 'restricted_access_message' ) ),
- );
- $restrict_settings['um-restricted_blocks'] = array(
- 'label' => __( 'Enable the "Content Restriction" settings for the Gutenberg Blocks', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'restricted_blocks' ) ? $labels['yes'] : $labels['no'],
- );
- if ( UM()->options()->get( 'restricted_blocks' ) ) {
- $restrict_settings['um-restricted_block_message'] = array(
- 'label' => __( 'Restricted Access Block Message', 'ultimate-member' ),
- 'value' => stripslashes( UM()->options()->get( 'restricted_block_message' ) ),
- );
- }
- $restrict_settings['um-restricted_access_post_metabox'] = array(
- 'label' => __( 'Enable the "Content Restriction" settings for post types', 'ultimate-member' ),
- 'value' => $restricted_posts_list,
- );
- $restrict_settings['um-restricted_access_taxonomy_metabox'] = array(
- 'label' => __( 'Enable the "Content Restriction" settings for taxonomies', 'ultimate-member' ),
- 'value' => $restricted_taxonomy_list,
- );
-
- // Access other settings
- $blocked_emails = str_replace( '
', ', ', nl2br( UM()->options()->get( 'blocked_emails' ) ) );
- $blocked_words = str_replace( '
', ', ', nl2br( UM()->options()->get( 'blocked_words' ) ) );
- $allowed_callbacks = str_replace( '
', ', ', nl2br( UM()->options()->get( 'allowed_choice_callbacks' ) ) );
-
- $access_other_settings = array(
- 'um-enable_reset_password_limit' => array(
- 'label' => __( 'Enable the Reset Password Limit?', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'enable_reset_password_limit' ) ? $labels['yes'] : $labels['no'],
- ),
- );
- if ( UM()->options()->get( 'enable_reset_password_limit' ) ) {
- $access_other_settings['um-reset_password_limit_number'] = array(
- 'label' => __( 'Reset Password Limit ', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'reset_password_limit_number' ),
- );
- }
- $access_other_settings['um-change_password_request_limit'] = array(
- 'label' => __( 'Change Password request limit ', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'change_password_request_limit' ),
- );
- $access_other_settings['um-only_approved_user_reset_password'] = array(
- 'label' => __( 'Only approved user Reset Password', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'only_approved_user_reset_password' ),
- );
- $access_other_settings['um-blocked_emails'] = array(
- 'label' => __( 'Blocked Email Addresses', 'ultimate-member' ),
- 'value' => stripslashes( $blocked_emails ),
- );
- $access_other_settings['um-blocked_words'] = array(
- 'label' => __( 'Blacklist Words', 'ultimate-member' ),
- 'value' => stripslashes( $blocked_words ),
- );
- $access_other_settings['um-allowed_choice_callbacks'] = array(
- 'label' => __( 'Allowed Choice Callbacks', 'ultimate-member' ),
- 'value' => stripslashes( $allowed_callbacks ),
- );
- $access_other_settings['um-allow_url_redirect_confirm'] = array(
- 'label' => __( 'Allow external link redirect confirm ', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'allow_url_redirect_confirm' ) ? $labels['yes'] : $labels['no'],
- );
-
- // Email settings
- $email_settings = array(
- 'um-admin_email' => array(
- 'label' => __( 'Admin Email Address', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'admin_email' ),
- ),
- 'um-mail_from' => array(
- 'label' => __( 'Mail appears from', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'mail_from' ),
- ),
- 'um-mail_from_addr' => array(
- 'label' => __( 'Mail appears from address', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'mail_from_addr' ),
- ),
- 'um-email_html' => array(
- 'label' => __( 'Use HTML for Emails?', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'email_html' ) ? $labels['yes'] : $labels['no'],
- ),
- );
-
- $emails = UM()->config()->email_notifications;
- foreach ( $emails as $key => $email ) {
- if ( UM()->options()->get( $key . '_on' ) ) {
- $email_settings[ 'um-' . $key ] = array(
- // translators: %s is email template title.
- 'label' => sprintf( __( '"%s" Subject', 'ultimate-member' ), $email['title'] ),
- 'value' => UM()->options()->get( $key . '_sub' ),
- );
-
- $email_settings[ 'um-theme_' . $key ] = array(
- // translators: %s is email template title.
- 'label' => sprintf( __( 'Template "%s" in theme?', 'ultimate-member' ), $email['title'] ),
- 'value' => '' !== locate_template( array( 'ultimate-member/emails/' . $key . '.php' ) ) ? $labels['yes'] : $labels['no'],
- );
- }
- }
-
- // Appearance settings.
- // > Profile section.
- $icons_display_options = array(
- 'field' => __( 'Show inside text field', 'ultimate-member' ),
- 'label' => __( 'Show with label', 'ultimate-member' ),
- 'off' => __( 'Turn off', 'ultimate-member' ),
- );
- $profile_header_menu_options = array(
- 'bc' => __( 'Bottom of Icon', 'ultimate-member' ),
- 'lc' => __( 'Left of Icon (right for RTL)', 'ultimate-member' ),
- );
-
- $profile_templates = UM()->shortcodes()->get_templates( 'profile' );
- $profile_template_key = UM()->options()->get( 'profile_template' );
- $profile_template_title = array_key_exists( $profile_template_key, $profile_templates ) ? $profile_templates[ $profile_template_key ] : __( 'No template name', 'ultimate-member' );
- $profile_secondary_btn = UM()->options()->get( 'profile_secondary_btn' );
- $profile_cover_enabled = UM()->options()->get( 'profile_cover_enabled' );
- $profile_empty_text = UM()->options()->get( 'profile_empty_text' );
-
- $appearance_settings = array(
- 'um-profile_template' => array(
- 'label' => __( 'Profile Default Template', 'ultimate-member' ),
- // translators: %1$s - profile template name, %2$s - profile template filename
- 'value' => sprintf( __( '%1$s (filename: %2$s.php)', 'ultimate-member' ), $profile_template_title, $profile_template_key ),
- ),
- 'um-profile_max_width' => array(
- 'label' => __( 'Profile Maximum Width', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_max_width' ),
- ),
- 'um-profile_area_max_width' => array(
- 'label' => __( 'Profile Area Maximum Width', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_area_max_width' ),
- ),
- 'um-profile_icons' => array(
- 'label' => __( 'Profile Field Icons', 'ultimate-member' ),
- 'value' => $icons_display_options[ UM()->options()->get( 'profile_icons' ) ],
- ),
- 'um-profile_primary_btn_word' => array(
- 'label' => __( 'Profile Primary Button Text', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_primary_btn_word' ),
- ),
- 'um-profile_secondary_btn' => array(
- 'label' => __( 'Profile Secondary Button', 'ultimate-member' ),
- 'value' => $profile_secondary_btn ? $labels['yes'] : $labels['no'],
- ),
- );
- if ( ! empty( $profile_secondary_btn ) ) {
- $appearance_settings['um-profile_secondary_btn_word'] = array(
- 'label' => __( 'Profile Secondary Button Text ', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_secondary_btn_word' ),
- );
- }
-
- $default_avatar = UM()->options()->get( 'default_avatar' );
- $default_cover = UM()->options()->get( 'default_cover' );
-
- $appearance_settings['um-default_avatar'] = array(
- 'label' => __( 'Default Profile Photo', 'ultimate-member' ),
- 'value' => ! empty( $default_avatar['url'] ) ? $default_avatar['url'] : '',
- );
- $appearance_settings['um-default_cover'] = array(
- 'label' => __( 'Default Cover Photo', 'ultimate-member' ),
- 'value' => ! empty( $default_cover['url'] ) ? $default_cover['url'] : '',
- );
- $appearance_settings['um-disable_profile_photo_upload'] = array(
- 'label' => __( 'Disable Profile Photo Upload', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'disable_profile_photo_upload' ) ? $labels['yes'] : $labels['no'],
- );
- $appearance_settings['um-profile_photosize'] = array(
- 'label' => __( 'Profile Photo Size', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_photosize' ) . 'x' . UM()->options()->get( 'profile_photosize' ) . 'px',
- );
- $appearance_settings['um-profile_cover_enabled'] = array(
- 'label' => __( 'Profile Cover Photos', 'ultimate-member' ),
- 'value' => $profile_cover_enabled ? $labels['yes'] : $labels['no'],
- );
- if ( ! empty( $profile_cover_enabled ) ) {
- $appearance_settings['um-profile_coversize'] = array(
- 'label' => __( 'Profile Cover Size', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_coversize' ) . 'px',
- );
- $appearance_settings['um-profile_cover_ratio'] = array(
- 'label' => __( 'Profile Cover Ratio', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_cover_ratio' ),
- );
- }
- $appearance_settings['um-profile_show_metaicon'] = array(
- 'label' => __( 'Profile Header Meta Text Icon', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_show_metaicon' ) ? $labels['yes'] : $labels['no'],
- );
- $appearance_settings['um-profile_show_name'] = array(
- 'label' => __( 'Show display name in profile header', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_show_name' ) ? $labels['yes'] : $labels['no'],
- );
- $appearance_settings['um-profile_show_social_links'] = array(
- 'label' => __( 'Show social links in profile header', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_show_social_links' ) ? $labels['yes'] : $labels['no'],
- );
- $appearance_settings['um-profile_show_bio'] = array(
- 'label' => __( 'Show user description in header', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_show_bio' ) ? $labels['yes'] : $labels['no'],
- );
- $appearance_settings['um-profile_show_html_bio'] = array(
- 'label' => __( 'Enable HTML support for user description', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_show_html_bio' ) ? $labels['yes'] : $labels['no'],
- );
- $appearance_settings['um-profile_bio_maxchars'] = array(
- 'label' => __( 'User description maximum chars', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_bio_maxchars' ),
- );
- $appearance_settings['um-profile_header_menu'] = array(
- 'label' => __( 'Profile Header Menu Position', 'ultimate-member' ),
- 'value' => $profile_header_menu_options[ UM()->options()->get( 'profile_header_menu' ) ],
- );
- $appearance_settings['um-profile_empty_text'] = array(
- 'label' => __( 'Show a custom message if profile is empty', 'ultimate-member' ),
- 'value' => $profile_empty_text ? $labels['yes'] : $labels['no'],
- );
- if ( ! empty( $profile_empty_text ) ) {
- $appearance_settings['um-profile_empty_text_emo'] = array(
- 'label' => __( 'Show the emoticon', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_empty_text_emo' ) ? $labels['yes'] : $labels['no'],
- );
- }
-
- // > Profile Menu section.
- $profile_menu = UM()->options()->get( 'profile_menu' );
-
- $appearance_settings['um-profile_menu'] = array(
- 'label' => __( 'Enable profile menu', 'ultimate-member' ),
- 'value' => $profile_menu ? $labels['yes'] : $labels['no'],
- );
-
- if ( ! empty( $profile_menu ) ) {
- /**
- * Filters a privacy list extend.
- *
- * @since 2.7.0
- * @hook um_profile_tabs_privacy_list
- *
- * @param {array} $privacy_option Add options for profile tabs' privacy.
- *
- * @return {array} Options for profile tabs' privacy.
- *
- * @example
Add options for profile tabs' privacy.
- * function um_profile_menu_link_attrs( $privacy_option ) {
- * // your code here
- * return $privacy_option;
- * }
- * add_filter( 'um_profile_tabs_privacy_list', 'um_profile_tabs_privacy_list', 10, 1 );
- */
- $privacy_option = UM()->profile()->tabs_privacy();
-
- $tabs = UM()->profile()->tabs();
- foreach ( $tabs as $id => $tab ) {
- if ( ! empty( $tab['hidden'] ) ) {
- continue;
- }
-
- $tab_enabled = UM()->options()->get( 'profile_tab_' . $id );
-
- $appearance_settings[ 'um-profile_tab_' . $id ] = array(
- // translators: %s Profile Tab Title
- 'label' => sprintf( __( '%s Tab', 'ultimate-member' ), $tab['name'] ),
- 'value' => $tab_enabled ? $labels['yes'] : $labels['no'],
- );
-
- if ( ! isset( $tab['default_privacy'] ) && ! empty( $tab_enabled ) ) {
- $privacy = UM()->options()->get( 'profile_tab_' . $id . '_privacy' );
- if ( is_numeric( $privacy ) ) {
- $appearance_settings[ 'um-profile_tab_' . $id . '_privacy' ] = array(
- // translators: %s Profile Tab Title
- 'label' => sprintf( __( 'Who can see %s Tab?', 'ultimate-member' ), $tab['name'] ),
- 'value' => $privacy_option[ UM()->options()->get( 'profile_tab_' . $id . '_privacy' ) ],
- );
- }
- }
- }
- /**
- * Filters appearance settings for Site Health extend.
- *
- * @since 2.7.0
- * @hook um_profile_tabs_site_health
- *
- * @param {array} $appearance_settings Appearance settings for Site Health.
- *
- * @return {array} Appearance settings for Site Health.
- *
- * @example Add options for appearance settings for Site Health.
- * function um_profile_tabs_site_health( $appearance_settings ) {
- * // your code here
- * return $appearance_settings;
- * }
- * add_filter( 'um_profile_tabs_site_health', 'um_profile_tabs_site_health', 10, 1 );
- */
- $appearance_settings = apply_filters( 'um_profile_tabs_site_health', $appearance_settings );
-
- /**
- * Filters user profile tabs
- *
- * @since 2.7.0
- * @hook um_profile_tabs
- *
- * @param {array} $tabs tabs list.
- *
- * @return {array} tabs list.
- *
- * @example Add options for profile tabs' privacy.
- * function um_profile_tabs( $tabs ) {
- * // your code here
- * return $tabs;
- * }
- * add_filter( 'um_profile_tabs', 'um_profile_tabs', 10, 1 );
- */
- $tabs_options = apply_filters(
- 'um_profile_tabs',
- array(
- 'main' => array(
- 'name' => __( 'About', 'ultimate-member' ),
- 'icon' => 'um-faicon-user',
- ),
- 'posts' => array(
- 'name' => __( 'Posts', 'ultimate-member' ),
- 'icon' => 'um-faicon-pencil',
- ),
- 'comments' => array(
- 'name' => __( 'Comments', 'ultimate-member' ),
- 'icon' => 'um-faicon-comment',
- ),
- )
- );
-
- $appearance_settings['um-profile_menu_default_tab'] = array(
- 'label' => __( 'Profile menu default tab', 'ultimate-member' ),
- 'value' => $tabs_options[ UM()->options()->get( 'profile_menu_default_tab' ) ],
- );
- $appearance_settings['um-profile_menu_icons'] = array(
- 'label' => __( 'Enable menu icons in desktop view', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'profile_menu_icons' ) ? $labels['yes'] : $labels['no'],
- );
- }
-
- // > Registration Form section.
- $register_templates = UM()->shortcodes()->get_templates( 'register' );
- $register_template_key = UM()->options()->get( 'register_template' );
- $register_template_title = array_key_exists( $register_template_key, $register_templates ) ? $register_templates[ $register_template_key ] : __( 'No template name', 'ultimate-member' );
- $register_secondary_btn = UM()->options()->get( 'register_secondary_btn' );
-
- $form_align_options = array(
- 'center' => __( 'Centered', 'ultimate-member' ),
- 'left' => __( 'Left aligned', 'ultimate-member' ),
- 'right' => __( 'Right aligned', 'ultimate-member' ),
- );
-
- $appearance_settings['um-register_template'] = array(
- 'label' => __( 'Registration Default Template', 'ultimate-member' ),
- // translators: %1$s - register template name, %2$s - register template filename
- 'value' => sprintf( __( '%1$s (filename: %2$s.php)', 'ultimate-member' ), $register_template_title, $register_template_key ),
- );
- $appearance_settings['um-register_max_width'] = array(
- 'label' => __( 'Registration Maximum Width', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'register_max_width' ),
- );
- $appearance_settings['um-register_align'] = array(
- 'label' => __( 'Registration Shortcode Alignment', 'ultimate-member' ),
- 'value' => $form_align_options[ UM()->options()->get( 'register_align' ) ],
- );
- $appearance_settings['um-register_icons'] = array(
- 'label' => __( 'Registration Field Icons', 'ultimate-member' ),
- 'value' => $icons_display_options[ UM()->options()->get( 'register_icons' ) ],
- );
- $appearance_settings['um-register_primary_btn_word'] = array(
- 'label' => __( 'Registration Primary Button Text ', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'register_primary_btn_word' ),
- );
- $appearance_settings['um-register_secondary_btn'] = array(
- 'label' => __( 'Registration Secondary Button', 'ultimate-member' ),
- 'value' => $register_secondary_btn ? $labels['yes'] : $labels['no'],
- );
- if ( ! empty( $register_secondary_btn ) ) {
- $appearance_settings['um-register_secondary_btn_word'] = array(
- 'label' => __( 'Registration Secondary Button Text', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'register_secondary_btn_word' ),
- );
- $appearance_settings['um-register_secondary_btn_url'] = array(
- 'label' => __( 'Registration Secondary Button URL', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'register_secondary_btn_url' ),
- );
- }
-
- // > Login Form section.
- $login_templates = UM()->shortcodes()->get_templates( 'login' );
- $login_template_key = UM()->options()->get( 'login_template' );
- $login_template_title = array_key_exists( $login_template_key, $login_templates ) ? $login_templates[ $login_template_key ] : __( 'No template name', 'ultimate-member' );
- $login_secondary_btn = UM()->options()->get( 'login_secondary_btn' );
-
- $appearance_settings['um-login_template'] = array(
- 'label' => __( 'Login Default Template', 'ultimate-member' ),
- // translators: %1$s - login template name, %2$s - login template filename
- 'value' => sprintf( __( '%1$s (filename: %2$s.php)', 'ultimate-member' ), $login_template_title, $login_template_key ),
- );
- $appearance_settings['um-login_max_width'] = array(
- 'label' => __( 'Login Maximum Width', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'login_max_width' ),
- );
- $appearance_settings['um-login_align'] = array(
- 'label' => __( 'Login Shortcode Alignment', 'ultimate-member' ),
- 'value' => $form_align_options[ UM()->options()->get( 'login_align' ) ],
- );
- $appearance_settings['um-login_icons'] = array(
- 'label' => __( 'Login Field Icons', 'ultimate-member' ),
- 'value' => $icons_display_options[ UM()->options()->get( 'login_icons' ) ],
- );
- $appearance_settings['um-login_primary_btn_word'] = array(
- 'label' => __( 'Login Primary Button Text', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'login_primary_btn_word' ),
- );
- $appearance_settings['um-login_secondary_btn'] = array(
- 'label' => __( 'Login Secondary Button', 'ultimate-member' ),
- 'value' => $login_secondary_btn ? $labels['yes'] : $labels['no'],
- );
- if ( ! empty( $login_secondary_btn ) ) {
- $appearance_settings['um-login_secondary_btn_word'] = array(
- 'label' => __( 'Login Secondary Button Text', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'login_secondary_btn_word' ),
- );
- $appearance_settings['um-login_secondary_btn_url'] = array(
- 'label' => __( 'Login Secondary Button URL', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'login_secondary_btn_url' ),
- );
- }
- $appearance_settings['um-login_forgot_pass_link'] = array(
- 'label' => __( 'Login Forgot Password Link', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'login_forgot_pass_link' ) ? $labels['yes'] : $labels['no'],
- );
- $appearance_settings['um-login_show_rememberme'] = array(
- 'label' => __( 'Show "Remember Me"', 'ultimate-member' ),
- 'value' => UM()->options()->get( 'login_show_rememberme' ) ? $labels['yes'] : $labels['no'],
- );
+ // Appearance settings sitehealth
+ $appearance_sitehealth = $this->appearance_sitehealth();
// Misc settings.
$misc_settings = array(
@@ -1373,7 +587,8 @@ class Site_Health {
*/
$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'], $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();
@@ -2608,4 +1823,885 @@ class Site_Health {
*/
return apply_filters( 'um_site_health_extend', $info );
}
+
+ public function general_siteheath() {
+ $labels = self::get_labels();
+
+ // Pages settings.
+ $pages = array();
+ $predefined_pages = UM()->config()->core_pages;
+ foreach ( $predefined_pages as $page_s => $page ) {
+ $page_id = UM()->options()->get_predefined_page_option_key( $page_s );
+ $page_title = ! empty( $page['title'] ) ? $page['title'] : '';
+ if ( empty( $page_title ) ) {
+ continue;
+ }
+
+ $predefined_page_id = UM()->options()->get( $page_id );
+
+ if ( empty( $predefined_page_id ) ) {
+ $pages[ $page_title ] = $labels['nopages'];
+ continue;
+ }
+ // translators: %1$s is a predefined page title; %2$d is a predefined page ID; %3$s is a predefined page permalink.
+ $pages[ $page_title ] = sprintf( __( '%1$s (ID#%2$d) | %3$s', 'ultimate-member' ), get_the_title( $predefined_page_id ), $predefined_page_id, get_permalink( $predefined_page_id ) );
+ }
+
+ $pages = apply_filters( 'um_debug_information_pages', $pages );
+
+ $pages_settings = array(
+ 'um-pages' => array(
+ 'label' => __( 'Pages', 'ultimate-member' ),
+ 'value' => $pages,
+ ),
+ );
+
+ // User settings
+ $permalink_base = UM()->config()->permalink_base_options;
+ $display_name = UM()->config()->display_name_options;
+
+ $user_settings = array(
+ 'um-user_separator' => array(
+ 'label' => __( 'User settings', 'ultimate-member' ),
+ 'value' => '---------------------------------------------------------------------',
+ ),
+ 'um-register_role' => array(
+ 'label' => __( 'Registration Default Role', 'ultimate-member' ),
+ 'value' => ! empty( UM()->options()->get( 'register_role' ) ) ? UM()->options()->get( 'register_role' ) : __( 'Default', 'ultimate-member' ),
+ ),
+ 'um-permalink_base' => array(
+ 'label' => __( 'Profile Permalink Base', 'ultimate-member' ),
+ 'value' => isset( $permalink_base[ UM()->options()->get( 'permalink_base' ) ] ) ? $permalink_base[ UM()->options()->get( 'permalink_base' ) ] : $labels['no'],
+ ),
+ 'um-display_name' => array(
+ 'label' => __( 'User Display Name', 'ultimate-member' ),
+ 'value' => isset( $display_name[ UM()->options()->get( 'display_name' ) ] ) ? $display_name[ UM()->options()->get( 'display_name' ) ] : $labels['no'],
+ ),
+ 'um-author_redirect' => array(
+ 'label' => __( 'Hide author pages (enable author page redirect to user profile)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'author_redirect' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-members_page' => array(
+ 'label' => __( 'Enable Members Directory', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'members_page' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-use_gravatars' => array(
+ 'label' => __( 'Use Gravatars?', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'use_gravatars' ) ? $labels['yes'] : $labels['no'],
+ ),
+ );
+
+ if ( UM()->options()->get( 'use_gravatars' ) ) {
+ $gravatar_options = array(
+ 'default' => __( 'Default', 'ultimate-member' ),
+ '404' => __( '404 ( File Not Found response )', 'ultimate-member' ),
+ 'mm' => __( 'Mystery Man', 'ultimate-member' ),
+ 'identicon' => __( 'Identicon', 'ultimate-member' ),
+ 'monsterid' => __( 'Monsterid', 'ultimate-member' ),
+ 'wavatar' => __( 'Wavatar', 'ultimate-member' ),
+ 'retro' => __( 'Retro', 'ultimate-member' ),
+ 'blank' => __( 'Blank ( a transparent PNG image )', 'ultimate-member' ),
+ );
+
+ $user_settings['um-use_um_gravatar_default_builtin_image'] = array(
+ 'label' => __( 'Use Gravatar builtin image', 'ultimate-member' ),
+ 'value' => $gravatar_options[ UM()->options()->get( 'use_um_gravatar_default_builtin_image' ) ],
+ );
+ if ( 'default' === UM()->options()->get( 'use_um_gravatar_default_builtin_image' ) ) {
+ $user_settings['um-use_um_gravatar_default_image'] = array(
+ 'label' => __( 'Replace Gravatar\'s Default avatar (Set Default plugin avatar as Gravatar\'s Default avatar)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'use_um_gravatar_default_image' ) ? $labels['yes'] : $labels['no'],
+ );
+ }
+ }
+
+ $user_settings = array_merge(
+ $user_settings,
+ array(
+ 'um-admin_ignore_user_status' => array(
+ 'label' => __( 'Ignore the "User Role > Registration Options" if this user is added from the wp-admin dashboard', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'admin_ignore_user_status' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-delete_comments' => array(
+ 'label' => __( 'Delete user comments (enable deleting user comments after deleting a user)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'delete_comments' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-toggle_password' => array(
+ 'label' => __( 'Toggle Password Visibility (enable password show/hide icon on password field)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'toggle_password' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-require_strongpass' => array(
+ 'label' => __( 'Require Strong Passwords', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'require_strongpass' ) ? $labels['yes'] : $labels['no'],
+ ),
+ )
+ );
+
+ if ( UM()->options()->get( 'require_strongpass' ) ) {
+ $user_settings = array_merge(
+ $user_settings,
+ array(
+ 'um-password_min_chars' => array(
+ 'label' => __( 'Password minimum length', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'password_min_chars' ),
+ ),
+ 'um-password_max_chars' => array(
+ 'label' => __( 'Password maximum length', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'password_max_chars' ),
+ ),
+ )
+ );
+ }
+
+ $user_settings = array_merge(
+ $user_settings,
+ array(
+ 'um-activation_link_expiry_time' => array(
+ 'label' => __( 'Email activation link expiration (days)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'activation_link_expiry_time' ),
+ ),
+ 'um-profile_noindex' => array(
+ 'label' => __( 'Avoid indexing profile by search engines', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_noindex' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-profile_title' => array(
+ 'label' => __( 'User Profile Title', 'ultimate-member' ),
+ 'value' => stripslashes( UM()->options()->get( 'profile_title' ) ),
+ ),
+ 'um-profile_desc' => array(
+ 'label' => __( 'User Profile Dynamic Meta Description', 'ultimate-member' ),
+ 'value' => stripslashes( UM()->options()->get( 'profile_desc' ) ),
+ ),
+ )
+ );
+
+ if ( 'custom_meta' === UM()->options()->get( 'permalink_base' ) ) {
+ $user_settings = UM()->array_insert_before(
+ $user_settings,
+ 'um-display_name',
+ array(
+ 'um-permalink_base_custom_meta' => array(
+ 'label' => __( 'Profile Permalink Base Custom Meta Key', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'permalink_base_custom_meta' ),
+ ),
+ )
+ );
+ }
+
+ if ( 'field' === UM()->options()->get( 'display_name' ) ) {
+ $user_settings = UM()->array_insert_before(
+ $user_settings,
+ 'um-author_redirect',
+ array(
+ 'um-display_name_field' => array(
+ 'label' => __( 'Display Name Custom Field(s)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'display_name_field' ),
+ ),
+ )
+ );
+ }
+
+ // Account settings
+ $account_settings = array(
+ 'um-account_separator' => array(
+ 'label' => __( 'Account settings', 'ultimate-member' ),
+ 'value' => '---------------------------------------------------------------------',
+ ),
+ 'um-account_name' => array(
+ 'label' => __( 'Display First & Last name fields (enable to display First & Last name fields)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_name' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-account_email' => array(
+ 'label' => __( 'Allow users to change email (enable changing email via the account page)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_email' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-account_general_password' => array(
+ 'label' => __( 'Require password to update account (enable required password)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_general_password' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-account_tab_password' => array(
+ 'label' => __( 'Password Account Tab', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_tab_password' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-account_tab_privacy' => array(
+ 'label' => __( 'Privacy Account Tab', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_tab_privacy' ) ? $labels['yes'] : $labels['no'],
+ ),
+ );
+
+ if ( UM()->options()->get( 'account_name' ) ) {
+ $account_settings = UM()->array_insert_before(
+ $account_settings,
+ 'um-account_email',
+ array(
+ 'um-account_name_disable' => array(
+ 'label' => __( 'Disable First & Last name field editing', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_name_disable' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-account_name_require' => array(
+ 'label' => __( 'Require First & Last Name', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_name_require' ) ? $labels['yes'] : $labels['no'],
+ ),
+ )
+ );
+ }
+
+ if ( false !== UM()->account()->is_notifications_tab_visible() ) {
+ $account_settings['um-account_tab_notifications'] = array(
+ 'label' => __( 'Notifications Account Tab', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_tab_notifications' ) ? $labels['yes'] : $labels['no'],
+ );
+ }
+
+ if ( UM()->options()->get( 'account_tab_privacy' ) ) {
+ $account_settings['um-account_hide_in_directory'] = array(
+ 'label' => __( 'Allow users to hide their profiles from directory', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_hide_in_directory' ) ? $labels['yes'] : $labels['no'],
+ );
+
+ if ( UM()->options()->get( 'account_hide_in_directory' ) ) {
+ $account_settings['um-account_hide_in_directory_default'] = array(
+ 'label' => __( 'Hide profiles from directory by default', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_hide_in_directory_default' ),
+ );
+ }
+ }
+
+ $account_settings = array_merge(
+ $account_settings,
+ array(
+ 'um-account_tab_delete' => array(
+ 'label' => __( 'Delete Account Tab', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'account_tab_delete' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-delete_account_text' => array(
+ 'label' => __( 'Account Deletion Text', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'delete_account_text' ),
+ ),
+ 'um-delete_account_no_pass_required_text' => array(
+ 'label' => __( 'Account Deletion without password Text', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'delete_account_no_pass_required_text' ),
+ ),
+ )
+ );
+
+ // Uploads settings
+ $profile_sizes_list = '';
+ $profile_sizes = UM()->options()->get( 'photo_thumb_sizes' );
+ if ( ! empty( $profile_sizes ) ) {
+ foreach ( $profile_sizes as $size ) {
+ $profile_sizes_list = empty( $profile_sizes_list ) ? $size : $profile_sizes_list . ', ' . $size;
+ }
+ }
+ $cover_sizes_list = '';
+ $cover_sizes = UM()->options()->get( 'cover_thumb_sizes' );
+ if ( ! empty( $cover_sizes ) ) {
+ foreach ( $cover_sizes as $size ) {
+ $cover_sizes_list = empty( $cover_sizes_list ) ? $size : $cover_sizes_list . ', ' . $size;
+ }
+ }
+ $uploads_settings = array(
+ 'um-account_separator' => array(
+ 'label' => __( 'Upload settings', 'ultimate-member' ),
+ 'value' => '---------------------------------------------------------------------',
+ ),
+ 'um-image_orientation_by_exif' => array(
+ 'label' => __( 'Change image orientation', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'image_orientation_by_exif' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-image_compression' => array(
+ 'label' => __( 'Image Quality', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'image_compression' ),
+ ),
+ 'um-image_max_width' => array(
+ 'label' => __( 'Image Upload Maximum Width (px)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'image_max_width' ),
+ ),
+ 'um-profile_photo_max_size' => array(
+ 'label' => __( 'Profile Photo Maximum File Size (bytes)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_photo_max_size' ),
+ ),
+ 'um-photo_thumb_sizes' => array(
+ 'label' => __( 'Profile Photo Thumbnail Sizes (px)', 'ultimate-member' ),
+ 'value' => $profile_sizes_list,
+ ),
+ 'um-cover_photo_max_size' => array(
+ 'label' => __( 'Cover Photo Maximum File Size (bytes)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'cover_photo_max_size' ),
+ ),
+ 'um-cover_min_width' => array(
+ 'label' => __( 'Cover Photo Minimum Width (px)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'cover_min_width' ),
+ ),
+ 'um-cover_thumb_sizes' => array(
+ 'label' => __( 'Cover Photo Thumbnail Sizes (px)', 'ultimate-member' ),
+ 'value' => $cover_sizes_list,
+ ),
+ );
+
+ return array_merge( $pages_settings, $user_settings, $account_settings, $uploads_settings );
+ }
+
+ public function access_sitehealth() {
+ $labels = self::get_labels();
+
+ // Content Restriction settings
+ $restricted_posts = UM()->options()->get( 'restricted_access_post_metabox' );
+ $restricted_posts_list = '';
+ if ( ! empty( $restricted_posts ) ) {
+ foreach ( $restricted_posts as $key => $posts ) {
+ $restricted_posts_list = empty( $restricted_posts_list ) ? $key : $restricted_posts_list . ', ' . $key;
+ }
+ }
+ $restricted_taxonomy = UM()->options()->get( 'restricted_access_taxonomy_metabox' );
+ $restricted_taxonomy_list = '';
+ if ( ! empty( $restricted_taxonomy ) ) {
+ foreach ( $restricted_taxonomy as $key => $posts ) {
+ $restricted_taxonomy_list = empty( $restricted_taxonomy_list ) ? $key : $restricted_taxonomy_list . ', ' . $key;
+ }
+ }
+
+ $accessible = absint( UM()->options()->get( 'accessible' ) );
+
+ $restrict_settings = array(
+ 'um-accessible_separator' => array(
+ 'label' => __( 'Access settings', 'ultimate-member' ),
+ 'value' => '---------------------------------------------------------------------',
+ ),
+ 'um-accessible' => array(
+ 'label' => __( 'Global Site Access', 'ultimate-member' ),
+ 'value' => 0 === $accessible ? __( 'Site accessible to Everyone', 'ultimate-member' ) : __( 'Site accessible to Logged In Users', 'ultimate-member' ),
+ ),
+ );
+
+ if ( 2 === $accessible ) {
+ $exclude_uris = UM()->options()->get( 'access_exclude_uris' );
+ $exclude_uris_list = '';
+ if ( ! empty( $exclude_uris ) ) {
+ $exclude_uris_list = implode( ', ', $exclude_uris );
+ }
+ $restrict_settings['um-access_redirect'] = array(
+ 'label' => __( 'Custom Redirect URL', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'access_redirect' ),
+ );
+ $restrict_settings['um-access_exclude_uris'] = array(
+ 'label' => __( 'Exclude the following URLs', 'ultimate-member' ),
+ 'value' => $exclude_uris_list,
+ );
+ $restrict_settings['um-home_page_accessible'] = array(
+ 'label' => __( 'Allow Homepage to be accessible', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'home_page_accessible' ) ? $labels['yes'] : $labels['no'],
+ );
+ $restrict_settings['um-category_page_accessible'] = array(
+ 'label' => __( 'Allow Category pages to be accessible', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'category_page_accessible' ) ? $labels['yes'] : $labels['no'],
+ );
+ }
+
+ $restrict_settings['um-restricted_post_title_replace'] = array(
+ 'label' => __( 'Restricted Post Title', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'restricted_post_title_replace' ) ? $labels['yes'] : $labels['no'],
+ );
+ if ( UM()->options()->get( 'restricted_post_title_replace' ) ) {
+ $restrict_settings['um-restricted_access_post_title'] = array(
+ 'label' => __( 'Restricted Access Post Title', 'ultimate-member' ),
+ 'value' => stripslashes( UM()->options()->get( 'restricted_access_post_title' ) ),
+ );
+ }
+
+ $restrict_settings['um-restricted_access_message'] = array(
+ 'label' => __( 'Restricted Access Message', 'ultimate-member' ),
+ 'value' => stripslashes( UM()->options()->get( 'restricted_access_message' ) ),
+ );
+ $restrict_settings['um-restricted_blocks'] = array(
+ 'label' => __( 'Restricted Gutenberg Blocks (enable the "Content Restriction" settings for the Gutenberg Blocks)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'restricted_blocks' ) ? $labels['yes'] : $labels['no'],
+ );
+ if ( UM()->options()->get( 'restricted_blocks' ) ) {
+ $restrict_settings['um-restricted_block_message'] = array(
+ 'label' => __( 'Restricted Access Block Message', 'ultimate-member' ),
+ 'value' => stripslashes( UM()->options()->get( 'restricted_block_message' ) ),
+ );
+ }
+ $restrict_settings['um-restricted_access_post_metabox'] = array(
+ 'label' => __( 'Enable the "Content Restriction" settings for post types', 'ultimate-member' ),
+ 'value' => $restricted_posts_list,
+ );
+ $restrict_settings['um-restricted_access_taxonomy_metabox'] = array(
+ 'label' => __( 'Enable the "Content Restriction" settings for taxonomies', 'ultimate-member' ),
+ 'value' => $restricted_taxonomy_list,
+ );
+
+ // Access other settings
+ $blocked_emails = str_replace( '
', ', ', nl2br( UM()->options()->get( 'blocked_emails' ) ) );
+ $blocked_words = str_replace( '
', ', ', nl2br( UM()->options()->get( 'blocked_words' ) ) );
+
+ $access_other_settings = array(
+ 'um-enable_reset_password_limit' => array(
+ 'label' => __( 'Enable the Reset Password Limit?', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'enable_reset_password_limit' ) ? $labels['yes'] : $labels['no'],
+ ),
+ );
+ if ( UM()->options()->get( 'enable_reset_password_limit' ) ) {
+ $access_other_settings['um-reset_password_limit_number'] = array(
+ 'label' => __( 'Password Limit (maximum reset password limit)', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'reset_password_limit_number' ),
+ );
+ }
+ $access_other_settings['um-change_password_request_limit'] = array(
+ 'label' => __( 'Change Password request limit ', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'change_password_request_limit' ) ? $labels['yes'] : $labels['no'],
+ );
+ $access_other_settings['um-only_approved_user_reset_password'] = array(
+ 'label' => __( 'Only approved user Reset Password', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'only_approved_user_reset_password' ) ? $labels['yes'] : $labels['no'],
+ );
+ $access_other_settings['um-blocked_emails'] = array(
+ 'label' => __( 'Blocked Email Addresses', 'ultimate-member' ),
+ 'value' => stripslashes( $blocked_emails ),
+ );
+ $access_other_settings['um-blocked_words'] = array(
+ 'label' => __( 'Blacklist Words', 'ultimate-member' ),
+ 'value' => stripslashes( $blocked_words ),
+ );
+
+ return array_merge( $restrict_settings, $access_other_settings );
+ }
+
+ public function emails_sitehealth() {
+ $labels = self::get_labels();
+
+ // Email settings
+ $email_settings = array(
+ 'um-email_separator' => array(
+ 'label' => __( 'Emails settings', 'ultimate-member' ),
+ 'value' => '---------------------------------------------------------------------',
+ ),
+ 'um-admin_email' => array(
+ 'label' => __( 'Admin Email Address', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'admin_email' ),
+ ),
+ 'um-mail_from' => array(
+ 'label' => __( 'Mail appears from', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'mail_from' ),
+ ),
+ 'um-mail_from_addr' => array(
+ 'label' => __( 'Mail appears from address', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'mail_from_addr' ),
+ ),
+ 'um-email_html' => array(
+ 'label' => __( 'Use HTML for Emails?', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'email_html' ) ? $labels['yes'] : $labels['no'],
+ ),
+ );
+
+ $emails = UM()->config()->email_notifications;
+ foreach ( $emails as $key => $email ) {
+ if ( UM()->options()->get( $key . '_on' ) ) {
+ $email_settings[ 'um-' . $key ] = array(
+ // translators: %s is email template title.
+ 'label' => sprintf( __( '"%s" Subject', 'ultimate-member' ), $email['title'] ),
+ 'value' => UM()->options()->get( $key . '_sub' ),
+ );
+
+ $email_settings[ 'um-theme_' . $key ] = array(
+ // translators: %s is email template title.
+ 'label' => sprintf( __( 'Template "%s" in theme?', 'ultimate-member' ), $email['title'] ),
+ 'value' => '' !== locate_template( array( 'ultimate-member/emails/' . $key . '.php' ) ) ? $labels['yes'] : $labels['no'],
+ );
+ }
+ }
+
+ return $email_settings;
+ }
+
+ public function appearance_sitehealth() {
+ $labels = self::get_labels();
+
+ // > Profile section.
+ $icons_display_options = array(
+ 'field' => __( 'Show inside text field', 'ultimate-member' ),
+ 'label' => __( 'Show with label', 'ultimate-member' ),
+ 'off' => __( 'Turn off', 'ultimate-member' ),
+ );
+ $profile_header_menu_options = array(
+ 'bc' => __( 'Bottom of Icon', 'ultimate-member' ),
+ 'lc' => __( 'Left of Icon (right for RTL)', 'ultimate-member' ),
+ );
+
+ $profile_templates = UM()->shortcodes()->get_templates( 'profile' );
+ $profile_template_key = UM()->options()->get( 'profile_template' );
+ $profile_template_title = array_key_exists( $profile_template_key, $profile_templates ) ? $profile_templates[ $profile_template_key ] : __( 'No template name', 'ultimate-member' );
+ $profile_secondary_btn = UM()->options()->get( 'profile_secondary_btn' );
+ $profile_cover_enabled = UM()->options()->get( 'profile_cover_enabled' );
+ $profile_empty_text = UM()->options()->get( 'profile_empty_text' );
+ $default_avatar = UM()->options()->get( 'default_avatar' );
+ $default_cover = UM()->options()->get( 'default_cover' );
+
+ $appearance_settings = array(
+ 'um-appearance_separator' => array(
+ 'label' => __( 'Appearance settings', 'ultimate-member' ),
+ 'value' => '---------------------------------------------------------------------',
+ ),
+ 'um-profile_template' => array(
+ 'label' => __( 'Profile Default Template', 'ultimate-member' ),
+ // translators: %1$s - profile template name, %2$s - profile template filename
+ 'value' => sprintf( __( '%1$s (filename: %2$s.php)', 'ultimate-member' ), $profile_template_title, $profile_template_key ),
+ ),
+ 'um-profile_max_width' => array(
+ 'label' => __( 'Profile Maximum Width', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_max_width' ),
+ ),
+ 'um-profile_area_max_width' => array(
+ 'label' => __( 'Profile Area Maximum Width', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_area_max_width' ),
+ ),
+ 'um-default_avatar' => array(
+ 'label' => __( 'Default Profile Photo', 'ultimate-member' ),
+ 'value' => ! empty( $default_avatar['url'] ) ? $default_avatar['url'] : '',
+ ),
+ 'um-disable_profile_photo_upload' => array(
+ 'label' => __( 'Disable Profile Photo Upload', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'disable_profile_photo_upload' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-profile_photosize' => array(
+ 'label' => __( 'Profile Photo Size', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_photosize' ) . 'x' . UM()->options()->get( 'profile_photosize' ) . 'px',
+ ),
+ 'um-default_cover' => array(
+ 'label' => __( 'Default Cover Photo', 'ultimate-member' ),
+ 'value' => ! empty( $default_cover['url'] ) ? $default_cover['url'] : '',
+ ),
+ 'um-profile_cover_enabled' => array(
+ 'label' => __( 'Profile Cover Photos', 'ultimate-member' ),
+ 'value' => $profile_cover_enabled ? $labels['yes'] : $labels['no'],
+ ),
+ );
+
+ if ( ! empty( $profile_cover_enabled ) ) {
+ $appearance_settings['um-profile_coversize'] = array(
+ 'label' => __( 'Profile Cover Size', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_coversize' ) . 'px',
+ );
+ $appearance_settings['um-profile_cover_ratio'] = array(
+ 'label' => __( 'Profile Cover Ratio', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_cover_ratio' ),
+ );
+ }
+
+ $appearance_settings = array_merge(
+ $appearance_settings,
+ array(
+ 'um-profile_show_metaicon' => array(
+ 'label' => __( 'Profile Header Meta Text Icon', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_show_metaicon' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-profile_show_name' => array(
+ 'label' => __( 'Show display name in profile header', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_show_name' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-profile_show_social_links' => array(
+ 'label' => __( 'Show social links in profile header', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_show_social_links' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-profile_show_bio' => array(
+ 'label' => __( 'Show user description in profile header', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_show_bio' ) ? $labels['yes'] : $labels['no'],
+ ),
+ )
+ );
+
+ if ( UM()->options()->get( 'profile_show_bio' ) ) {
+ $appearance_settings['um-profile_bio_maxchars'] = array(
+ 'label' => __( 'User description maximum chars', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_bio_maxchars' ),
+ );
+ }
+
+ $appearance_settings = array_merge(
+ $appearance_settings,
+ array(
+ 'um-profile_show_html_bio' => array(
+ 'label' => __( 'Enable HTML support for user description', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_show_html_bio' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-profile_header_menu' => array(
+ 'label' => __( 'Profile Header Menu Position', 'ultimate-member' ),
+ 'value' => $profile_header_menu_options[ UM()->options()->get( 'profile_header_menu' ) ],
+ ),
+ 'um-profile_primary_btn_word' => array(
+ 'label' => __( 'Profile Primary Button Text', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_primary_btn_word' ),
+ ),
+ 'um-profile_secondary_btn' => array(
+ 'label' => __( 'Profile Secondary Button', 'ultimate-member' ),
+ 'value' => $profile_secondary_btn ? $labels['yes'] : $labels['no'],
+ ),
+ )
+ );
+
+ if ( ! empty( $profile_secondary_btn ) ) {
+ $appearance_settings['um-profile_secondary_btn_word'] = array(
+ 'label' => __( 'Profile Secondary Button Text ', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_secondary_btn_word' ),
+ );
+ }
+
+ $appearance_settings = array_merge(
+ $appearance_settings,
+ array(
+ 'um-profile_icons' => array(
+ 'label' => __( 'Profile Field Icons', 'ultimate-member' ),
+ 'value' => $icons_display_options[ UM()->options()->get( 'profile_icons' ) ],
+ ),
+ 'um-profile_empty_text' => array(
+ 'label' => __( 'Show a custom message if profile is empty', 'ultimate-member' ),
+ 'value' => $profile_empty_text ? $labels['yes'] : $labels['no'],
+ ),
+ )
+ );
+
+ if ( ! empty( $profile_empty_text ) ) {
+ $appearance_settings['um-profile_empty_text_emo'] = array(
+ 'label' => __( 'Show the emoticon', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_empty_text_emo' ) ? $labels['yes'] : $labels['no'],
+ );
+ }
+
+ // > Profile Menu section.
+ $profile_menu = UM()->options()->get( 'profile_menu' );
+
+ $appearance_settings['um-profile_menu'] = array(
+ 'label' => __( 'Enable profile menu', 'ultimate-member' ),
+ 'value' => $profile_menu ? $labels['yes'] : $labels['no'],
+ );
+
+ if ( ! empty( $profile_menu ) ) {
+ /**
+ * Filters a privacy list extend.
+ *
+ * @since 2.7.0
+ * @hook um_profile_tabs_privacy_list
+ *
+ * @param {array} $privacy_option Add options for profile tabs' privacy.
+ *
+ * @return {array} Options for profile tabs' privacy.
+ *
+ * @example Add options for profile tabs' privacy.
+ * function um_profile_menu_link_attrs( $privacy_option ) {
+ * // your code here
+ * return $privacy_option;
+ * }
+ * add_filter( 'um_profile_tabs_privacy_list', 'um_profile_tabs_privacy_list', 10, 1 );
+ */
+ $privacy_option = UM()->profile()->tabs_privacy();
+
+ $tabs = UM()->profile()->tabs();
+ foreach ( $tabs as $id => $tab ) {
+ if ( ! empty( $tab['hidden'] ) ) {
+ continue;
+ }
+
+ $tab_enabled = UM()->options()->get( 'profile_tab_' . $id );
+
+ $appearance_settings[ 'um-profile_tab_' . $id ] = array(
+ // translators: %s Profile Tab Title
+ 'label' => sprintf( __( '%s Tab', 'ultimate-member' ), $tab['name'] ),
+ 'value' => $tab_enabled ? $labels['yes'] : $labels['no'],
+ );
+
+ if ( ! isset( $tab['default_privacy'] ) && ! empty( $tab_enabled ) ) {
+ $privacy = UM()->options()->get( 'profile_tab_' . $id . '_privacy' );
+ if ( is_numeric( $privacy ) ) {
+ $appearance_settings[ 'um-profile_tab_' . $id . '_privacy' ] = array(
+ // translators: %s Profile Tab Title
+ 'label' => sprintf( __( 'Who can see %s Tab?', 'ultimate-member' ), $tab['name'] ),
+ 'value' => $privacy_option[ UM()->options()->get( 'profile_tab_' . $id . '_privacy' ) ],
+ );
+ }
+ }
+ }
+ /**
+ * Filters appearance settings for Site Health extend.
+ *
+ * @since 2.7.0
+ * @hook um_profile_tabs_site_health
+ *
+ * @param {array} $appearance_settings Appearance settings for Site Health.
+ *
+ * @return {array} Appearance settings for Site Health.
+ *
+ * @example Add options for appearance settings for Site Health.
+ * function um_profile_tabs_site_health( $appearance_settings ) {
+ * // your code here
+ * return $appearance_settings;
+ * }
+ * add_filter( 'um_profile_tabs_site_health', 'um_profile_tabs_site_health', 10, 1 );
+ */
+ $appearance_settings = apply_filters( 'um_profile_tabs_site_health', $appearance_settings );
+
+ /**
+ * Filters user profile tabs
+ *
+ * @since 2.7.0
+ * @hook um_profile_tabs
+ *
+ * @param {array} $tabs tabs list.
+ *
+ * @return {array} tabs list.
+ *
+ * @example Add options for profile tabs' privacy.
+ * function um_profile_tabs( $tabs ) {
+ * // your code here
+ * return $tabs;
+ * }
+ * add_filter( 'um_profile_tabs', 'um_profile_tabs', 10, 1 );
+ */
+ $tabs_options = apply_filters(
+ 'um_profile_tabs',
+ array(
+ 'main' => array(
+ 'name' => __( 'About', 'ultimate-member' ),
+ 'icon' => 'um-faicon-user',
+ ),
+ 'posts' => array(
+ 'name' => __( 'Posts', 'ultimate-member' ),
+ 'icon' => 'um-faicon-pencil',
+ ),
+ 'comments' => array(
+ 'name' => __( 'Comments', 'ultimate-member' ),
+ 'icon' => 'um-faicon-comment',
+ ),
+ )
+ );
+
+ $appearance_settings['um-profile_menu_default_tab'] = array(
+ 'label' => __( 'Profile menu default tab', 'ultimate-member' ),
+ 'value' => $tabs_options[ UM()->options()->get( 'profile_menu_default_tab' ) ],
+ );
+ $appearance_settings['um-profile_menu_icons'] = array(
+ 'label' => __( 'Enable menu icons in desktop view', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'profile_menu_icons' ) ? $labels['yes'] : $labels['no'],
+ );
+ }
+
+ // > Registration Form section.
+ $register_templates = UM()->shortcodes()->get_templates( 'register' );
+ $register_template_key = UM()->options()->get( 'register_template' );
+ $register_template_title = array_key_exists( $register_template_key, $register_templates ) ? $register_templates[ $register_template_key ] : __( 'No template name', 'ultimate-member' );
+ $register_secondary_btn = UM()->options()->get( 'register_secondary_btn' );
+
+ $form_align_options = array(
+ 'center' => __( 'Centered', 'ultimate-member' ),
+ 'left' => __( 'Left aligned', 'ultimate-member' ),
+ 'right' => __( 'Right aligned', 'ultimate-member' ),
+ );
+
+ $appearance_settings = array_merge(
+ $appearance_settings,
+ array(
+ 'um-register_template' => array(
+ 'label' => __( 'Registration Default Template', 'ultimate-member' ),
+ // translators: %1$s - register template name, %2$s - register template filename
+ 'value' => sprintf( __( '%1$s (filename: %2$s.php)', 'ultimate-member' ), $register_template_title, $register_template_key ),
+ ),
+ 'um-register_max_width' => array(
+ 'label' => __( 'Registration Maximum Width', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'register_max_width' ),
+ ),
+ 'um-register_align' => array(
+ 'label' => __( 'Registration Shortcode Alignment', 'ultimate-member' ),
+ 'value' => $form_align_options[ UM()->options()->get( 'register_align' ) ],
+ ),
+ 'um-register_primary_btn_word' => array(
+ 'label' => __( 'Registration Primary Button Text ', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'register_primary_btn_word' ),
+ ),
+ 'um-register_secondary_btn' => array(
+ 'label' => __( 'Registration Secondary Button', 'ultimate-member' ),
+ 'value' => $register_secondary_btn ? $labels['yes'] : $labels['no'],
+ ),
+ )
+ );
+
+ if ( ! empty( $register_secondary_btn ) ) {
+ $appearance_settings['um-register_secondary_btn_word'] = array(
+ 'label' => __( 'Registration Secondary Button Text', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'register_secondary_btn_word' ),
+ );
+ $appearance_settings['um-register_secondary_btn_url'] = array(
+ 'label' => __( 'Registration Secondary Button URL', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'register_secondary_btn_url' ),
+ );
+ }
+
+ $appearance_settings['um-register_icons'] = array(
+ 'label' => __( 'Registration Field Icons', 'ultimate-member' ),
+ 'value' => $icons_display_options[ UM()->options()->get( 'register_icons' ) ],
+ );
+
+ // > Login Form section.
+ $login_templates = UM()->shortcodes()->get_templates( 'login' );
+ $login_template_key = UM()->options()->get( 'login_template' );
+ $login_template_title = array_key_exists( $login_template_key, $login_templates ) ? $login_templates[ $login_template_key ] : __( 'No template name', 'ultimate-member' );
+ $login_secondary_btn = UM()->options()->get( 'login_secondary_btn' );
+
+ $appearance_settings = array_merge(
+ $appearance_settings,
+ array(
+ 'um-login_template' => array(
+ 'label' => __( 'Login Default Template', 'ultimate-member' ),
+ // translators: %1$s - login template name, %2$s - login template filename
+ 'value' => sprintf( __( '%1$s (filename: %2$s.php)', 'ultimate-member' ), $login_template_title, $login_template_key ),
+ ),
+ 'um-login_max_width' => array(
+ 'label' => __( 'Login Maximum Width', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'login_max_width' ),
+ ),
+ 'um-login_align' => array(
+ 'label' => __( 'Login Shortcode Alignment', 'ultimate-member' ),
+ 'value' => $form_align_options[ UM()->options()->get( 'login_align' ) ],
+ ),
+ 'um-login_primary_btn_word' => array(
+ 'label' => __( 'Login Primary Button Text', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'login_primary_btn_word' ),
+ ),
+ 'um-login_secondary_btn' => array(
+ 'label' => __( 'Login Secondary Button', 'ultimate-member' ),
+ 'value' => $login_secondary_btn ? $labels['yes'] : $labels['no'],
+ ),
+ )
+ );
+
+ if ( ! empty( $login_secondary_btn ) ) {
+ $appearance_settings['um-login_secondary_btn_word'] = array(
+ 'label' => __( 'Login Secondary Button Text', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'login_secondary_btn_word' ),
+ );
+ $appearance_settings['um-login_secondary_btn_url'] = array(
+ 'label' => __( 'Login Secondary Button URL', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'login_secondary_btn_url' ),
+ );
+ }
+
+ $appearance_settings = array_merge(
+ $appearance_settings,
+ array(
+ 'um-login_forgot_pass_link' => array(
+ 'label' => __( 'Login Forgot Password Link', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'login_forgot_pass_link' ) ? $labels['yes'] : $labels['no'],
+ ),
+ 'um-login_show_rememberme' => array(
+ 'label' => __( 'Login Maximum Width', 'ultimate-member' ),
+ 'value' => UM()->options()->get( 'login_max_width' ),
+ ),
+ 'um-login_icons' => array(
+ 'label' => __( 'Login Field Icons', 'ultimate-member' ),
+ 'value' => $icons_display_options[ UM()->options()->get( 'login_icons' ) ],
+ ),
+ )
+ );
+
+ return $appearance_settings;
+ }
}