From cc92e91aa720b0a619f2ca01aebf9eeca3c57305 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Thu, 18 Dec 2025 17:02:39 +0200 Subject: [PATCH 01/17] Update stable tag to 2.11.1 in readme.txt Bumped the stable tag from 2.11.0 to 2.11.1 in the plugin's readme file. This ensures consistency with the latest release version and avoids potential confusion for users. --- readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index fc130685..497bcb29 100644 --- a/readme.txt +++ b/readme.txt @@ -6,7 +6,7 @@ Tags: community, member, membership, user-profile, user-registration Requires PHP: 7.0 Requires at least: 6.2 Tested up to: 6.9 -Stable tag: 2.11.0 +Stable tag: 2.11.1 License: GPLv3 License URI: http://www.gnu.org/licenses/gpl-3.0.txt From 690154b42f998a239547834c080e898a048fda52 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Tue, 30 Dec 2025 11:12:01 +0200 Subject: [PATCH 02/17] Fix critical security vulnerability in Ultimate Member plugin Resolved CVE-2025-15064 by deprecating HTML usage in user descriptions. Updated plugin version to 2.11.2 across files and documentation, ensuring users are informed and prompted to upgrade immediately. --- .wordpress-org/blueprints/blueprint.json | 2 +- README.md | 2 +- changelog.txt | 6 ++ includes/core/class-form.php | 90 ++---------------------- readme.txt | 11 ++- ultimate-member.php | 6 +- 6 files changed, 28 insertions(+), 89 deletions(-) diff --git a/.wordpress-org/blueprints/blueprint.json b/.wordpress-org/blueprints/blueprint.json index 3f11dd67..d52cb449 100644 --- a/.wordpress-org/blueprints/blueprint.json +++ b/.wordpress-org/blueprints/blueprint.json @@ -15,7 +15,7 @@ "step": "installPlugin", "pluginZipFile": { "resource": "url", - "url": "https:\/\/downloads.wordpress.org\/plugin\/ultimate-member.2.11.1.zip" + "url": "https:\/\/downloads.wordpress.org\/plugin\/ultimate-member.2.11.2.zip" }, "options": { "activate": true diff --git a/README.md b/README.md index 3855d9de..6b6ea1e9 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ GNU Version 2 or Any Later Version ### IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSION 2.6.7 PATCHES SECURITY PRIVILEGE ESCALATION VULNERABILITY. PLEASE SEE [THIS ARTICLE](https://docs.ultimatemember.com/article/1866-security-incident-update-and-recommended-actions) FOR MORE INFORMATION -[Official Release Version: 2.11.1](https://github.com/ultimatemember/ultimatemember/releases/tag/2.11.1). +[Official Release Version: 2.11.2](https://github.com/ultimatemember/ultimatemember/releases/tag/2.11.2). ## Changelog diff --git a/changelog.txt b/changelog.txt index 9862c572..8b0d1c9d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,11 @@ == Changelog == += 2.11.2 January xx, 2026 = + +* Bugfixes: + + - Fixed: Security issue CVE ID: CVE-2025-15064. Deprecated ability to use HTML inside the user description. + = 2.11.1 December 16, 2025 = * Enhancements: diff --git a/includes/core/class-form.php b/includes/core/class-form.php index 8a8c6e3e..a2bbc284 100644 --- a/includes/core/class-form.php +++ b/includes/core/class-form.php @@ -843,26 +843,7 @@ if ( ! class_exists( 'um\core\Form' ) ) { if ( ! empty( $field['html'] ) || ( UM()->profile()->get_show_bio_key( $form ) === $k && UM()->options()->get( 'profile_show_html_bio' ) ) ) { $form[ $k ] = html_entity_decode( $form[ $k ] ); // required because WP_Editor send sometimes encoded content. $form[ $k ] = self::maybe_apply_tidy( $form[ $k ], $field ); - - $allowed_html = UM()->get_allowed_html( 'templates' ); - if ( empty( $allowed_html['iframe'] ) ) { - $allowed_html['iframe'] = array( - 'allow' => true, - 'frameborder' => true, - 'loading' => true, - 'name' => true, - 'referrerpolicy' => true, - 'sandbox' => true, - 'src' => true, - 'srcdoc' => true, - 'title' => true, - 'width' => true, - 'height' => true, - 'allowfullscreen' => true, - ); - } - $form[ $k ] = wp_kses( strip_shortcodes( $form[ $k ] ), $allowed_html ); - add_filter( 'wp_kses_allowed_html', array( &$this, 'wp_kses_user_desc' ), 10, 2 ); + $form[ $k ] = wp_kses( strip_shortcodes( $form[ $k ] ), UM()->get_allowed_html( 'templates' ) ); } else { $form[ $k ] = sanitize_textarea_field( strip_shortcodes( $form[ $k ] ) ); } @@ -983,27 +964,7 @@ if ( ! class_exists( 'um\core\Form' ) ) { if ( ! empty( $custom_fields[ $description_key ]['html'] ) && $bio_html ) { $form[ $description_key ] = html_entity_decode( $form[ $description_key ] ); // required because WP_Editor send sometimes encoded content. $form[ $description_key ] = self::maybe_apply_tidy( $form[ $description_key ], $custom_fields[ $description_key ] ); - - $allowed_html = UM()->get_allowed_html( 'templates' ); - if ( empty( $allowed_html['iframe'] ) ) { - $allowed_html['iframe'] = array( - 'allow' => true, - 'frameborder' => true, - 'loading' => true, - 'name' => true, - 'referrerpolicy' => true, - 'sandbox' => true, - 'src' => true, - 'srcdoc' => true, - 'title' => true, - 'width' => true, - 'height' => true, - 'allowfullscreen' => true, - ); - } - $form[ $description_key ] = wp_kses( strip_shortcodes( $form[ $description_key ] ), $allowed_html ); - - add_filter( 'wp_kses_allowed_html', array( &$this, 'wp_kses_user_desc' ), 10, 2 ); + $form[ $description_key ] = wp_kses( strip_shortcodes( $form[ $description_key ] ), UM()->get_allowed_html( 'templates' ) ); } else { $form[ $description_key ] = sanitize_textarea_field( strip_shortcodes( $form[ $description_key ] ) ); } @@ -1012,26 +973,9 @@ if ( ! class_exists( 'um\core\Form' ) ) { if ( ! $field_exists ) { if ( $bio_html ) { - $allowed_html = UM()->get_allowed_html( 'templates' ); - if ( empty( $allowed_html['iframe'] ) ) { - $allowed_html['iframe'] = array( - 'allow' => true, - 'frameborder' => true, - 'loading' => true, - 'name' => true, - 'referrerpolicy' => true, - 'sandbox' => true, - 'src' => true, - 'srcdoc' => true, - 'title' => true, - 'width' => true, - 'height' => true, - 'allowfullscreen' => true, - ); - } - $form[ $description_key ] = wp_kses( strip_shortcodes( $form[ $description_key ] ), $allowed_html ); - - add_filter( 'wp_kses_allowed_html', array( &$this, 'wp_kses_user_desc' ), 10, 2 ); + $form[ $description_key ] = html_entity_decode( $form[ $description_key ] ); // required because WP_Editor send sometimes encoded content. + $form[ $description_key ] = self::maybe_apply_tidy( $form[ $description_key ], array() ); + $form[ $description_key ] = wp_kses( strip_shortcodes( $form[ $description_key ] ), UM()->get_allowed_html( 'templates' ) ); } else { $form[ $description_key ] = sanitize_textarea_field( strip_shortcodes( $form[ $description_key ] ) ); } @@ -1042,30 +986,6 @@ if ( ! class_exists( 'um\core\Form' ) ) { return $form; } - public function wp_kses_user_desc( $tags, $context ) { - if ( 'user_description' === $context || 'pre_user_description' === $context ) { - $allowed_html = UM()->get_allowed_html( 'templates' ); - if ( empty( $allowed_html['iframe'] ) ) { - $allowed_html['iframe'] = array( - 'allow' => true, - 'frameborder' => true, - 'loading' => true, - 'name' => true, - 'referrerpolicy' => true, - 'sandbox' => true, - 'src' => true, - 'srcdoc' => true, - 'title' => true, - 'width' => true, - 'height' => true, - 'allowfullscreen' => true, - ); - } - $tags = $allowed_html; - } - return $tags; - } - /** * Display form type as Title * @param string $mode diff --git a/readme.txt b/readme.txt index 497bcb29..df3581f8 100644 --- a/readme.txt +++ b/readme.txt @@ -6,7 +6,7 @@ Tags: community, member, membership, user-profile, user-registration Requires PHP: 7.0 Requires at least: 6.2 Tested up to: 6.9 -Stable tag: 2.11.1 +Stable tag: 2.11.2 License: GPLv3 License URI: http://www.gnu.org/licenses/gpl-3.0.txt @@ -167,6 +167,12 @@ No specific extensions are needed. But we highly recommended keep active these P IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSION 2.6.7 PATCHES SECURITY PRIVILEGE ESCALATION VULNERABILITY. PLEASE SEE [THIS ARTICLE](https://docs.ultimatemember.com/article/1866-security-incident-update-and-recommended-actions) FOR MORE INFORMATION += 2.11.2 2026-01-xx = + +**Bugfixes** + +* Fixed: Security issue CVE ID: CVE-2025-15064. Deprecated ability to use HTML inside the user description. + = 2.11.1 2025-12-16 = **Enhancements** @@ -209,6 +215,9 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI == Upgrade Notice == += 2.11.2 = +This version fixes a security related bug. Upgrade immediately. + = 2.11.1 = This version fixes a security related bug. Upgrade immediately. diff --git a/ultimate-member.php b/ultimate-member.php index 28be4e52..a3038838 100644 --- a/ultimate-member.php +++ b/ultimate-member.php @@ -3,7 +3,7 @@ * Plugin Name: Ultimate Member * Plugin URI: http://ultimatemember.com/ * Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress - * Version: 2.11.1 + * Version: 2.11.2 * Author: Ultimate Member * Author URI: http://ultimatemember.com/ * License: GPLv3 @@ -41,3 +41,7 @@ define( 'UM_UPDATER_DEBUG', false ); // Set true then need to debug the upgrade require_once 'includes/class-functions.php'; require_once 'includes/class-init.php'; +// +//echo wp_kses( '', UM()->get_allowed_html( 'templates' ) ); +//echo wp_kses( '', UM()->get_allowed_html( 'templates' ) ); +//exit; From 4b6fb473eead4dfead6c11382276345bc0589478 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Tue, 30 Dec 2025 11:19:02 +0200 Subject: [PATCH 03/17] Remove commented-out debug code from main plugin file Cleaned up unnecessary and potentially confusing commented-out debug code. This improves code readability and ensures no ambiguity in the plugin's source. --- ultimate-member.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ultimate-member.php b/ultimate-member.php index a3038838..670a958d 100644 --- a/ultimate-member.php +++ b/ultimate-member.php @@ -41,7 +41,3 @@ define( 'UM_UPDATER_DEBUG', false ); // Set true then need to debug the upgrade require_once 'includes/class-functions.php'; require_once 'includes/class-init.php'; -// -//echo wp_kses( '', UM()->get_allowed_html( 'templates' ) ); -//echo wp_kses( '', UM()->get_allowed_html( 'templates' ) ); -//exit; From 6299aa2503ba1590a696ccd03a57af902ed8facc Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Mon, 19 Jan 2026 11:17:27 +0200 Subject: [PATCH 04/17] Update WordPress compatibility to version 6.9.0 Updated `UM_WP_FUNCTIONS_VERSION` and `php-scoper-wordpress-excludes` to align with WordPress 6.9.0. This ensures compatibility with the latest WordPress release while keeping dependencies up-to-date. --- composer.json | 2 +- ultimate-member.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index e3727a0b..a6b33d61 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ "wp-coding-standards/wpcs": "*", "symplify/phpstan-rules": "*", "phpdocumentor/phpdocumentor": "3.8.*", - "sniccowp/php-scoper-wordpress-excludes": "6.8.*" + "sniccowp/php-scoper-wordpress-excludes": "6.9.*" }, "scripts": { "wordpress-excludes": [ diff --git a/ultimate-member.php b/ultimate-member.php index 670a958d..da1f8dfa 100644 --- a/ultimate-member.php +++ b/ultimate-member.php @@ -34,7 +34,7 @@ define( 'UM_PATH', plugin_dir_path( __FILE__ ) ); define( 'UM_PLUGIN', plugin_basename( __FILE__ ) ); define( 'UM_VERSION', $plugin_data['Version'] ); define( 'UM_PLUGIN_NAME', $plugin_data['Name'] ); -define( 'UM_WP_FUNCTIONS_VERSION', '6.8.0' ); // Updates every major WordPress release. +define( 'UM_WP_FUNCTIONS_VERSION', '6.9.0' ); // Updates every major WordPress release. define( 'UM_LICENSE_REQUEST_DEBUG', false ); // Set true then need to debug the license request. define( 'UM_UPDATER_DEBUG', false ); // Set true then need to debug the upgrade packages. // define( 'UM_DEV_MODE', true ); From fd44b978cf6e16a3029010db74d464927dbf7f5f Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Mon, 19 Jan 2026 11:55:22 +0200 Subject: [PATCH 05/17] Refactor form sanitization to improve data handling. Changed `wp_kses` to utilize 'user_description' instead of dynamic HTML templates, ensuring stricter sanitization. Introduced a new filter, `um_sanitize_form_submission`, for extending form sanitization logic, and preserved the original input in `$submission_input` for additional context. --- includes/core/class-form.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/includes/core/class-form.php b/includes/core/class-form.php index a2bbc284..f3a82cf1 100644 --- a/includes/core/class-form.php +++ b/includes/core/class-form.php @@ -822,6 +822,7 @@ if ( ! class_exists( 'um\core\Form' ) ) { * @return array $form */ public function sanitize( $form ) { + $submission_input = $form; if ( isset( $form['form_id'] ) ) { if ( isset( $this->form_data['custom_fields'] ) ) { $custom_fields = maybe_unserialize( $this->form_data['custom_fields'] ); @@ -843,7 +844,7 @@ if ( ! class_exists( 'um\core\Form' ) ) { if ( ! empty( $field['html'] ) || ( UM()->profile()->get_show_bio_key( $form ) === $k && UM()->options()->get( 'profile_show_html_bio' ) ) ) { $form[ $k ] = html_entity_decode( $form[ $k ] ); // required because WP_Editor send sometimes encoded content. $form[ $k ] = self::maybe_apply_tidy( $form[ $k ], $field ); - $form[ $k ] = wp_kses( strip_shortcodes( $form[ $k ] ), UM()->get_allowed_html( 'templates' ) ); + $form[ $k ] = wp_kses( strip_shortcodes( $form[ $k ] ), 'user_description' ); } else { $form[ $k ] = sanitize_textarea_field( strip_shortcodes( $form[ $k ] ) ); } @@ -964,7 +965,7 @@ if ( ! class_exists( 'um\core\Form' ) ) { if ( ! empty( $custom_fields[ $description_key ]['html'] ) && $bio_html ) { $form[ $description_key ] = html_entity_decode( $form[ $description_key ] ); // required because WP_Editor send sometimes encoded content. $form[ $description_key ] = self::maybe_apply_tidy( $form[ $description_key ], $custom_fields[ $description_key ] ); - $form[ $description_key ] = wp_kses( strip_shortcodes( $form[ $description_key ] ), UM()->get_allowed_html( 'templates' ) ); + $form[ $description_key ] = wp_kses( strip_shortcodes( $form[ $description_key ] ), 'user_description' ); } else { $form[ $description_key ] = sanitize_textarea_field( strip_shortcodes( $form[ $description_key ] ) ); } @@ -975,7 +976,7 @@ if ( ! class_exists( 'um\core\Form' ) ) { if ( $bio_html ) { $form[ $description_key ] = html_entity_decode( $form[ $description_key ] ); // required because WP_Editor send sometimes encoded content. $form[ $description_key ] = self::maybe_apply_tidy( $form[ $description_key ], array() ); - $form[ $description_key ] = wp_kses( strip_shortcodes( $form[ $description_key ] ), UM()->get_allowed_html( 'templates' ) ); + $form[ $description_key ] = wp_kses( strip_shortcodes( $form[ $description_key ] ), 'user_description' ); } else { $form[ $description_key ] = sanitize_textarea_field( strip_shortcodes( $form[ $description_key ] ) ); } @@ -983,7 +984,7 @@ if ( ! class_exists( 'um\core\Form' ) ) { } } - return $form; + return apply_filters( 'um_sanitize_form_submission', $form, $submission_input ); } /** From 11ee024bfdabf9b50ac5188660597383104ad201 Mon Sep 17 00:00:00 2001 From: yuriinalivaiko Date: Wed, 21 Jan 2026 20:36:19 +0200 Subject: [PATCH 06/17] Fixed "User registration role" and "Template" in the site health info for registration forms --- includes/admin/class-site-health.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/admin/class-site-health.php b/includes/admin/class-site-health.php index 00845b5e..b0ecdf1e 100644 --- a/includes/admin/class-site-health.php +++ b/includes/admin/class-site-health.php @@ -2130,11 +2130,11 @@ class Site_Health { $debug_info[] = array( 'role' => array( 'label' => __( 'User registration role', 'ultimate-member' ), - 'value' => 0 === absint( get_post_meta( $form_id, '_um_register_role', true ) ) ? $labels['default'] : get_post_meta( $form_id, '_um_register_role', true ), + 'value' => empty( get_post_meta( $form_id, '_um_register_role', true ) ) ? $labels['default'] : get_post_meta( $form_id, '_um_register_role', true ), ), 'template' => array( 'label' => __( 'Template', 'ultimate-member' ), - 'value' => 0 === absint( get_post_meta( $form_id, '_um_register_template', true ) ) ? $labels['default'] : get_post_meta( $form_id, '_um_register_template', true ), + 'value' => empty( get_post_meta( $form_id, '_um_register_template', true ) ) ? $labels['default'] : get_post_meta( $form_id, '_um_register_template', true ), ), 'max_width' => array( 'label' => __( 'Max. Width (px)', 'ultimate-member' ), From 9ba4e4b8d4da2f647af341b172a1376c90aa321e Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Wed, 28 Jan 2026 11:52:06 +0200 Subject: [PATCH 07/17] Update 'ultimatemember_searchform' shortcode in Ultimate Member plugin Refactored template, CSS and JS to fix the security vulnerability. --- assets/css/um-styles.css | 8 +- assets/css/um-styles.min.css | 2 +- assets/js/um-scripts.js | 93 +++++++++++---------- assets/js/um-scripts.min.js | 2 +- includes/ajax/class-pages.php | 57 +++++++++++++ includes/core/class-shortcodes.php | 13 ++- includes/um-deprecated-functions.php | 6 +- includes/widgets/class-um-search-widget.php | 7 +- templates/searchform.php | 21 ++--- 9 files changed, 126 insertions(+), 83 deletions(-) diff --git a/assets/css/um-styles.css b/assets/css/um-styles.css index 9e412f48..52b104a3 100644 --- a/assets/css/um-styles.css +++ b/assets/css/um-styles.css @@ -900,14 +900,14 @@ small.um-max-filesize span{ max-width: 300px; } -.um-search-area .um-search-field { +.um .um-form.um-search-area .um-search-field { width: 100%; margin: 0; - padding-left: 25px; + padding-left: 25px !important; } -.rtl .um-search-area .um-search-field { - padding-right: 25px; +.rtl .um .um-form.um-search-area .um-search-field { + padding-right: 25px !important; padding-left: initial; } diff --git a/assets/css/um-styles.min.css b/assets/css/um-styles.min.css index c068aa84..62fa5221 100644 --- a/assets/css/um-styles.min.css +++ b/assets/css/um-styles.min.css @@ -1 +1 @@ -.um:not(.um-admin){width:100%;text-align:left;box-sizing:border-box;color:#666;font-size:15px;margin-bottom:30px!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;opacity:0}.um-s1,.um-s2{display:none}.um:not(.um-admin) :after,.um:not(.um-admin) :before{box-sizing:content-box}.um-account-side li a,.um-cover a,.um-field-value a,.um-header a,.um-member-less a,.um-member-more a,.um-member-name a,.um-member-photo a,.um-members a,.um-members-pagi a,.um-members-pagi span{border-bottom:0!important}.um-modal a:focus,.um:not(.um-admin) a:focus{outline:0!important}.um:not(.um-admin) a .image-overlay,.um:not(.um-admin) a:hover .image-overlay,.um:not(.um-admin) a:hover .image-overlay *{display:none!important;width:0!important;height:0!important;position:static!important}.um.um-in-admin{padding-top:0}.um.um-in-admin .um-tip{display:none!important}.um:not(.um-admin):not(.um-directory) input,.um:not(.um-admin):not(.um-directory) select,.um:not(.um-admin):not(.um-directory) textarea{font-size:15px}.um:not(.um-admin) *{-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}.um-left{float:left}.um-right{float:right}.um-clear{clear:both}.um-center{text-align:center}.um-center .um-button{display:inline-block!important;width:auto!important;min-width:250px!important}.um-half{width:48%}.um-field-half{width:48%;float:left}.um-field-half.right{float:right}.um-field-tri{width:30%;float:left;margin-right:3%}.um img{box-shadow:none!important}.um-col{padding-bottom:20px}.um-col-alt{margin:15px 0 5px 0}.um-col-alt-s{padding-top:10px}.um-col-alt-b{padding-top:20px}.um-col-121{float:left;width:48%}.um-col-122{float:right;width:48%}.um-col-131{float:left;width:30%}.um-col-132{float:left;width:30%;margin:0 5%}.um-col-133{float:left;width:30%}.um-raty i{font-size:26px}.um-field-half .um-raty i{font-size:21px}.um-field-tri .um-raty i{font-size:21px}.um-button i{font-size:22px;width:22px;height:12px!important;display:inline-block;line-height:12px!important;vertical-align:middle!important;position:relative;top:-6px;margin-right:8px}.um-row-heading{padding:5px 0;font-size:16px}.um-row-heading i{font-size:24px;height:24px;line-height:24px;margin:0 12px 0 0;display:inline-block;width:30px;text-align:center}.um-row-heading i:before{vertical-align:middle!important}p.um-notice{width:auto;color:#fff;box-sizing:border-box;font-size:15px;padding:12px!important;margin:12px 0 0 0!important;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;position:relative}p.um-notice a{color:#fff;text-decoration:underline}p.um-notice i{position:absolute;right:14px;font-size:36px;cursor:pointer;top:7px;display:block;height:30px;line-height:30px}p.um-notice.success{background:#7acf58}p.um-notice.err{background:#c74a4a}p.um-notice.warning{background:#f9f9d1;color:#666;border:1px solid #efe4a2;padding:8px 15px!important}p.um-notice.warning a{color:#666;text-decoration:underline}.um-field-error{width:auto;max-width:100%;background:#c74a4a;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#fff;box-sizing:border-box;position:relative;padding:12px;font-size:14px;line-height:20px!important;margin:12px 0 0 0}.um-field-error a{color:#fff!important;text-decoration:underline!important}.um-field-arrow{top:-17px;left:10px;position:absolute;z-index:1;color:#c74a4a;font-size:28px;line-height:1em!important}.um-error-block{width:auto;max-width:100%;background:#c74a4a;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#fff;box-sizing:border-box;position:relative;padding:12px;font-size:14px;line-height:1em!important;margin:12px 0 0 0}.um-field-notice{width:auto;max-width:100%;background:#497bc7;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#fff;box-sizing:border-box;position:relative;padding:12px;font-size:14px;line-height:20px!important;margin:5px 0 0 0}.um-field-notice a{color:#fff!important;text-decoration:underline!important}.um-field-notice .um-field-arrow{top:-17px;left:10px;position:absolute;z-index:1;color:#497bc7!important;font-size:28px;line-height:1em!important}.um-notice-block{width:auto;max-width:100%;background:#497bc7;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#fff;box-sizing:border-box;position:relative;padding:12px;font-size:14px;line-height:1em!important;margin:12px 0 0 0}.um-tip{margin:0 0 0 8px;cursor:pointer;display:inline-block;position:relative;top:3px}.um-tip i{font-size:22px;height:22px;line-height:22px;display:block;position:relative}.um-tip-text{display:block;font-size:13px;line-height:15px;color:#999}.um-form button::-moz-focus-inner,.um-form input::-moz-focus-inner{border:0!important;padding:0!important}.um-field{position:relative;padding:15px 0 0 0}.um-field-b,.um-field-c{padding-top:0!important}.um-field-label{display:block;margin:0 0 8px 0}.um-field-label .um-field-label-icon{float:left;margin:0 8px 0 0;height:22px;line-height:18px;display:inline-block;width:24px;text-align:center}.um-field-label .um-field-label-icon i{font-size:22px;position:relative;top:1px}.um-field-label label{font-size:15px!important;line-height:22px!important;font-weight:600}.um-field-area{position:relative;word-wrap:break-word}.um-field-area-password{position:relative}.um-toggle-password{cursor:pointer;display:block;position:absolute;right:0;top:0;height:100%;width:40px;text-align:center;box-sizing:border-box;font-size:20px;line-height:2}.um-toggle-password i{transition:all .2s linear}.um-toggle-password:hover i{color:#44b0ec}.um-field-value p{margin:0 0 6px 0!important;padding:0}.um-field-block{color:#777;font-size:17px}.um-field-spacing{width:100%}.um-field-divider{width:100%;margin:0 0 12px 0;height:24px;position:relative}.um-field-divider-text{position:absolute;width:100%;text-align:center;bottom:-24px;left:0;font-size:16px;padding:10px 0}.um-field-divider-text span{background:#fff;color:#555;display:inline-block;padding:0 15px}.um-field-icon{position:absolute;cursor:default;text-align:center!important;top:2px;left:0;width:44px;font-size:22px;line-height:1.7em;z-index:1}.um-form input[type=number],.um-form input[type=password],.um-form input[type=search],.um-form input[type=tel],.um-form input[type=text]{padding:0 12px!important;width:100%;display:block!important;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;outline:0!important;cursor:text!important;font-size:15px!important;height:40px!important;box-sizing:border-box!important;box-shadow:none!important;margin:0!important;position:static}.um-form .um-field-area-password input[type=password]{padding-right:40px!important}.um-form .um-field-area-password input[type=password]::-ms-clear,.um-form .um-field-area-password input[type=password]::-ms-reveal{display:none}.um-form input[type=number]{width:auto;padding:0 0 0 5px!important;height:30px!important}.um-form input[type=number]:focus,.um-form input[type=password]:focus,.um-form input[type=search]:focus,.um-form input[type=tel]:focus,.um-form input[type=text]:focus,.um-form textarea:focus{box-shadow:none!important;outline:0!important}.um-form input[type=password].um-iconed,.um-form input[type=tel].um-iconed,.um-form input[type=text].um-iconed{padding-left:44px!important}.um-form input[type=password].um-error,.um-form input[type=tel].um-error,.um-form input[type=text].um-error{border-color:#c74a4a!important}.um-form textarea{width:100%;padding:8px 12px!important;display:block;font-size:15px!important;line-height:22px!important;background:#fff;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;box-sizing:border-box;min-height:80px!important;box-shadow:none;outline:0!important}.um-form .um-meta-text textarea{max-width:100%}.um-form .wp-editor-container{border:1px solid #ddd}.um-form .wp-editor-container textarea{background:#ddd!important;color:#222!important;border-radius:0}.um-field-c .um-field-checkbox{margin-bottom:14px;margin-top:0!important;position:relative}.um-field-checkbox:not(.um-field),.um-field-radio:not(.um-field){display:block;margin:8px 0;position:relative}.um-profile.um-editing .um-field-checkbox,.um-profile.um-editing .um-field-radio{cursor:pointer!important}.um-field-checkbox:hover i,.um-field-radio:hover i{color:#666}.um-field-checkbox input,.um-field-radio input{opacity:0!important;display:inline!important;width:0!important;float:left}.um-field-checkbox-state,.um-field-radio-state{position:absolute;top:0;left:1px;width:24px;height:24px}.um-field-checkbox-state i,.um-field-radio-state i{font-size:24px;line-height:24px;height:24px;color:#aaa;transition:all .2s linear}.um-field-checkbox-option,.um-field-radio-option{margin:0 0 0 36px;line-height:24px;color:#888!important;display:block}.um-field-group{margin-top:20px}.um-field-group-head{cursor:pointer;color:#fff;font-size:16px;line-height:22px;padding:10px 20px;transition:.25s;box-sizing:border-box;-moz-border-radius:4px!important;-webkit-border-radius:4px!important;border-radius:4px!important;border-top:1px solid transparent!important;border-bottom:2px solid rgba(0,0,0,.1)!important}.um-field-group-head i{font-size:20px;margin:0 8px 0 0}.um-field-group-head i:before{vertical-align:middle!important}.um-field-group-body{display:none;margin:15px 0 0 0;padding:15px 20px 5px 20px;background:#f9f9f9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;position:relative;box-sizing:border-box;width:100%}.um-field-group-body div.um-field{padding:0 0 15px 0}.um-field-group-cancel{font-size:18px;position:absolute;z-index:800;right:8px;top:8px;color:#ccc!important;text-decoration:none!important}.um-field-group-cancel:hover{color:#777!important}.um div.disabled,.um input[type=number]:disabled,.um input[type=submit]:disabled,.um input[type=text]:disabled,.um-disabled{opacity:.6!important;cursor:no-drop!important}input[type=submit].um-button,input[type=submit].um-button:focus{vertical-align:middle!important;height:auto!important;font-size:15px;cursor:pointer!important;width:100%;box-shadow:none;text-shadow:none;font-family:inherit;outline:0!important;margin:0;opacity:1;-webkit-appearance:none}input[type=submit].um-button:hover{opacity:1}.um-button{font-size:15px;border:none!important;display:block;width:100%;line-height:1em!important;padding:16px 20px!important;text-decoration:none!important;text-align:center;text-transform:none!important;font-weight:400!important;overflow:hidden;position:relative;transition:.25s;box-sizing:border-box;-moz-border-radius:4px!important;-webkit-border-radius:4px!important;border-radius:4px!important;-webkit-box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);opacity:1}a.um-button{font-size:15px;border:none!important;display:block;width:100%;line-height:1em!important;padding:16px 20px!important;text-decoration:none!important;text-align:center;text-transform:none!important;font-weight:400!important;overflow:hidden;position:relative;transition:.25s;box-sizing:border-box;-moz-border-radius:4px!important;-webkit-border-radius:4px!important;border-radius:4px!important;-webkit-box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);opacity:1}a.um-button:hover{-webkit-box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08)}.um-button.um-btn-auto-width{width:auto;display:inline-block;padding:14px 20px!important;min-width:200px;max-width:450px}a.um-link-alt{line-height:22px;color:#888!important;display:block!important;text-decoration:none!important;font-weight:400;text-align:center;border-bottom:none!important}a.um-link-alt:hover{text-decoration:underline!important}.um-dropdown{position:absolute;height:auto;background:#fff;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;z-index:55;display:none;border:1px solid #e5e5e5;box-sizing:border-box;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1);box-shadow:0 0 1px rgba(0,0,0,.1)}.um-dropdown li,.um-dropdown ul{list-style-type:none!important;padding:0!important;margin:0!important}.um-dropdown ul{background:#fff;position:relative;z-index:16}.um-dropdown li a{display:block;padding:8px 12px;color:#666;font-size:14px;line-height:18px}.um-dropdown li:last-child a{border-top:1px solid #e5e5e5;padding:12px}.um-dropdown-b{position:relative}.um-dropdown-arr{position:absolute;font-size:24px;width:24px;height:24px;overflow:hidden;z-index:15;color:#eee}.um-dropdown-arr *{display:block!important;width:24px!important;height:24px!important;vertical-align:bottom!important;overflow:hidden!important;line-height:24px!important}div.um-photo{margin:20px auto 0 auto;text-align:center;box-sizing:border-box;max-width:100%}div.um-photo,div.um-photo a,div.um-photo img{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}div.um-photo a{border:1px solid #e5e5e5;padding:5px;box-sizing:border-box;display:inline-block;box-shadow:0 1px 1px #eee;margin:0 auto;max-width:100%}div.um-photo img{max-height:300px;max-width:100%}span.um-req{margin:0 0 0 8px;font-size:14px;display:inline-block}small.um-max-filesize{display:block;color:#999;padding-top:5px}small.um-max-filesize span{font-size:12px}.um-form .um-field .um-field-area input.um-form-field.um-validate-not-matched,.um-form .um-field .um-field-area input.um-form-field.um-validate-not-matched:focus,.um-form .um-field .um-field-area input.um-form-field.um-validate-username-exists,.um-form .um-field .um-field-area input.um-form-field.um-validate-username-exists:focus{border-color:#db2929!important}.um-form .um-field .um-field-area input.um-searching-username{background-image:url(../img/loading.gif);background-position:right center;background-repeat:no-repeat;background-size:24px 24px}.um-search-area{position:relative;max-width:300px}.um-search-area .um-search-field{width:100%;margin:0;padding-left:25px}.rtl .um-search-area .um-search-field{padding-right:25px;padding-left:initial}.um-search-area .um-search-icon{position:absolute;height:100%;left:6px;top:0}.rtl .um-search-area .um-search-icon{right:6px;left:initial}.um-faicon-search:before{display:flex;align-items:center;justify-content:center;height:100%}.um-field .select2-container.select2-container--open,.um-search-filter .select2-container.select2-container--open{z-index:9999999}.um-field .select2.select2-container .select2-selection,.um-search-filter .select2.select2-container .select2-selection{display:block!important;height:40px;padding:0 0 0 12px!important;overflow:hidden!important;position:relative!important;white-space:nowrap!important;line-height:35px!important;color:#666!important;font-size:15px!important;-moz-border-radius:2px!important;-webkit-border-radius:2px!important;border-radius:2px!important;background-clip:padding-box!important;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:#fff!important;border:1px solid #ddd!important}.rtl .um-field .select2.select2-container .select2-selection,.rtl .um-search-filter .select2.select2-container .select2-selection{padding:0 12px 0 0!important}.um-field .select2.select2-container .select2-selection .select2-selection__arrow,.um-search-filter .select2.select2-container .select2-selection .select2-selection__arrow{display:inline-block!important;width:34px!important;height:100%!important;position:absolute;right:0;top:0;text-align:center;background:0 0!important;border:none!important}.rtl .um-field .select2.select2-container .select2-selection .select2-selection__arrow,.rtl .um-search-filter .select2.select2-container .select2-selection .select2-selection__arrow{right:initial;left:0}.um-field .select2.select2-container .select2-selection .select2-selection__arrow:before,.um-search-filter .select2.select2-container .select2-selection .select2-selection__arrow:before{content:"\f3d0"!important;font-size:28px!important;font-family:Ionicons!important;display:block;height:100%;line-height:40px;min-width:1em;text-align:center;color:#aaa}.um-field .select2.select2-container .select2-selection .select2-selection__arrow b[role=presentation],.um-search-filter .select2.select2-container .select2-selection .select2-selection__arrow b[role=presentation]{display:none}.um-field .select2-container.select2-container--open .select2-dropdown,.um-search-filter .select2-container.select2-container--open .select2-dropdown{border:1px solid #ddd!important;border-radius:0}.um-field .select2-container.select2-container--open .select2-dropdown .select2-results li,.um-search-filter .select2-container.select2-container--open .select2-dropdown .select2-results li{list-style:none;display:list-item;background:0 0;font-size:15px;margin:5px!important;color:#666!important;padding:3px 7px 4px!important;cursor:pointer;min-height:1em}.um-field .select2.select2-container .select2-selection.select2-selection--multiple,.um-search-filter .select2.select2-container .select2-selection.select2-selection--multiple{height:auto!important;line-height:.8!important;min-height:40px;padding-bottom:4px!important}.um-field .select2-container--default .select2-selection--single .select2-selection__rendered,.um-search-filter .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:37px;padding-left:0;padding-right:24px}.rtl .um-field .select2-container--default .select2-selection--single .select2-selection__rendered,.rtl .um-search-filter .select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:24px;padding-right:0}.um-field .select2-container--default .select2-selection--multiple .select2-selection__rendered,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__rendered{line-height:37px;box-sizing:border-box;list-style:none;margin:0;padding-left:0;padding-right:30px;width:100%;font-size:13px}.rtl .um-field .select2-container--default .select2-selection--multiple .select2-selection__rendered,.rtl .um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__rendered{padding-left:30px;padding-right:0}.um-field .select2-dropdown .select2-results li.select2-results__option.select2-results__option--highlighted,.um-search-filter .select2-dropdown .select2-results li.select2-results__option.select2-results__option--highlighted{background:#f4f4f4;color:#666}.um-field .select2-dropdown .select2-results li.select2-results__option[aria-selected=true],.um-search-filter .select2-dropdown .select2-results li.select2-results__option[aria-selected=true]{background-color:#ddd}.um-field .select2-container--default .select2-selection--multiple .select2-selection__clear,.um-field .select2-container--default .select2-selection--single .select2-selection__clear,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__clear,.um-search-filter .select2-container--default .select2-selection--single .select2-selection__clear{color:#aaa;font-size:28px;font-weight:400;line-height:34px;margin:0!important;right:0;text-align:center;width:1em}.rtl .um-field .select2-container--default .select2-selection--multiple .select2-selection__clear,.rtl .um-field .select2-container--default .select2-selection--single .select2-selection__clear,.rtl .um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__clear,.rtl .um-search-filter .select2-container--default .select2-selection--single .select2-selection__clear{left:0;right:initial}.um-field .select2-container--default .select2-selection--multiple .select2-selection__clear,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__clear{position:absolute}.um-field .select2-container--default .select2-selection--multiple .select2-selection__choice,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__choice{margin:5px 5px 0 0;max-height:28px;padding:3px 3px 3px 5px}.rtl .um-field .select2-container--default .select2-selection--multiple .select2-selection__choice,.rtl .um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__choice{margin:5px 0 0 5px;padding:3px 5px 3px 3px}.um-field .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline,.um-search-filter .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline{margin:5px 5px 0 0;padding:0}.rtl .um-field .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline,.rtl .um-search-filter .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline{margin:5px 0 0 5px}.um-field .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline>input,.um-search-filter .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline>input{border:none!important;padding:0!important;max-height:28px}.um-field .select2-container--default .select2-selection--multiple .select2-selection__rendered li,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__rendered li{overflow-x:hidden;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;line-height:20px}.um-field-multiselect .um-field-area .um-field-icon,.um-field-select .um-field-area .um-field-icon{z-index:99999999}.um-field-select .um-field-area.um-field-area-has-icon .select2-selection__rendered{text-indent:20px}.um-field-multiselect .um-field-area.um-field-area-has-icon ul:first-child{margin-left:30px!important}.um-field-area .wp-switch-editor{float:none;height:auto}.um_request_name{display:none!important} \ No newline at end of file +.um:not(.um-admin){width:100%;text-align:left;box-sizing:border-box;color:#666;font-size:15px;margin-bottom:30px!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;opacity:0}.um-s1,.um-s2{display:none}.um:not(.um-admin) :after,.um:not(.um-admin) :before{box-sizing:content-box}.um-account-side li a,.um-cover a,.um-field-value a,.um-header a,.um-member-less a,.um-member-more a,.um-member-name a,.um-member-photo a,.um-members a,.um-members-pagi a,.um-members-pagi span{border-bottom:0!important}.um-modal a:focus,.um:not(.um-admin) a:focus{outline:0!important}.um:not(.um-admin) a .image-overlay,.um:not(.um-admin) a:hover .image-overlay,.um:not(.um-admin) a:hover .image-overlay *{display:none!important;width:0!important;height:0!important;position:static!important}.um.um-in-admin{padding-top:0}.um.um-in-admin .um-tip{display:none!important}.um:not(.um-admin):not(.um-directory) input,.um:not(.um-admin):not(.um-directory) select,.um:not(.um-admin):not(.um-directory) textarea{font-size:15px}.um:not(.um-admin) *{-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}.um-left{float:left}.um-right{float:right}.um-clear{clear:both}.um-center{text-align:center}.um-center .um-button{display:inline-block!important;width:auto!important;min-width:250px!important}.um-half{width:48%}.um-field-half{width:48%;float:left}.um-field-half.right{float:right}.um-field-tri{width:30%;float:left;margin-right:3%}.um img{box-shadow:none!important}.um-col{padding-bottom:20px}.um-col-alt{margin:15px 0 5px 0}.um-col-alt-s{padding-top:10px}.um-col-alt-b{padding-top:20px}.um-col-121{float:left;width:48%}.um-col-122{float:right;width:48%}.um-col-131{float:left;width:30%}.um-col-132{float:left;width:30%;margin:0 5%}.um-col-133{float:left;width:30%}.um-raty i{font-size:26px}.um-field-half .um-raty i{font-size:21px}.um-field-tri .um-raty i{font-size:21px}.um-button i{font-size:22px;width:22px;height:12px!important;display:inline-block;line-height:12px!important;vertical-align:middle!important;position:relative;top:-6px;margin-right:8px}.um-row-heading{padding:5px 0;font-size:16px}.um-row-heading i{font-size:24px;height:24px;line-height:24px;margin:0 12px 0 0;display:inline-block;width:30px;text-align:center}.um-row-heading i:before{vertical-align:middle!important}p.um-notice{width:auto;color:#fff;box-sizing:border-box;font-size:15px;padding:12px!important;margin:12px 0 0 0!important;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;position:relative}p.um-notice a{color:#fff;text-decoration:underline}p.um-notice i{position:absolute;right:14px;font-size:36px;cursor:pointer;top:7px;display:block;height:30px;line-height:30px}p.um-notice.success{background:#7acf58}p.um-notice.err{background:#c74a4a}p.um-notice.warning{background:#f9f9d1;color:#666;border:1px solid #efe4a2;padding:8px 15px!important}p.um-notice.warning a{color:#666;text-decoration:underline}.um-field-error{width:auto;max-width:100%;background:#c74a4a;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#fff;box-sizing:border-box;position:relative;padding:12px;font-size:14px;line-height:20px!important;margin:12px 0 0 0}.um-field-error a{color:#fff!important;text-decoration:underline!important}.um-field-arrow{top:-17px;left:10px;position:absolute;z-index:1;color:#c74a4a;font-size:28px;line-height:1em!important}.um-error-block{width:auto;max-width:100%;background:#c74a4a;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#fff;box-sizing:border-box;position:relative;padding:12px;font-size:14px;line-height:1em!important;margin:12px 0 0 0}.um-field-notice{width:auto;max-width:100%;background:#497bc7;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#fff;box-sizing:border-box;position:relative;padding:12px;font-size:14px;line-height:20px!important;margin:5px 0 0 0}.um-field-notice a{color:#fff!important;text-decoration:underline!important}.um-field-notice .um-field-arrow{top:-17px;left:10px;position:absolute;z-index:1;color:#497bc7!important;font-size:28px;line-height:1em!important}.um-notice-block{width:auto;max-width:100%;background:#497bc7;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#fff;box-sizing:border-box;position:relative;padding:12px;font-size:14px;line-height:1em!important;margin:12px 0 0 0}.um-tip{margin:0 0 0 8px;cursor:pointer;display:inline-block;position:relative;top:3px}.um-tip i{font-size:22px;height:22px;line-height:22px;display:block;position:relative}.um-tip-text{display:block;font-size:13px;line-height:15px;color:#999}.um-form button::-moz-focus-inner,.um-form input::-moz-focus-inner{border:0!important;padding:0!important}.um-field{position:relative;padding:15px 0 0 0}.um-field-b,.um-field-c{padding-top:0!important}.um-field-label{display:block;margin:0 0 8px 0}.um-field-label .um-field-label-icon{float:left;margin:0 8px 0 0;height:22px;line-height:18px;display:inline-block;width:24px;text-align:center}.um-field-label .um-field-label-icon i{font-size:22px;position:relative;top:1px}.um-field-label label{font-size:15px!important;line-height:22px!important;font-weight:600}.um-field-area{position:relative;word-wrap:break-word}.um-field-area-password{position:relative}.um-toggle-password{cursor:pointer;display:block;position:absolute;right:0;top:0;height:100%;width:40px;text-align:center;box-sizing:border-box;font-size:20px;line-height:2}.um-toggle-password i{transition:all .2s linear}.um-toggle-password:hover i{color:#44b0ec}.um-field-value p{margin:0 0 6px 0!important;padding:0}.um-field-block{color:#777;font-size:17px}.um-field-spacing{width:100%}.um-field-divider{width:100%;margin:0 0 12px 0;height:24px;position:relative}.um-field-divider-text{position:absolute;width:100%;text-align:center;bottom:-24px;left:0;font-size:16px;padding:10px 0}.um-field-divider-text span{background:#fff;color:#555;display:inline-block;padding:0 15px}.um-field-icon{position:absolute;cursor:default;text-align:center!important;top:2px;left:0;width:44px;font-size:22px;line-height:1.7em;z-index:1}.um-form input[type=number],.um-form input[type=password],.um-form input[type=search],.um-form input[type=tel],.um-form input[type=text]{padding:0 12px!important;width:100%;display:block!important;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;outline:0!important;cursor:text!important;font-size:15px!important;height:40px!important;box-sizing:border-box!important;box-shadow:none!important;margin:0!important;position:static}.um-form .um-field-area-password input[type=password]{padding-right:40px!important}.um-form .um-field-area-password input[type=password]::-ms-clear,.um-form .um-field-area-password input[type=password]::-ms-reveal{display:none}.um-form input[type=number]{width:auto;padding:0 0 0 5px!important;height:30px!important}.um-form input[type=number]:focus,.um-form input[type=password]:focus,.um-form input[type=search]:focus,.um-form input[type=tel]:focus,.um-form input[type=text]:focus,.um-form textarea:focus{box-shadow:none!important;outline:0!important}.um-form input[type=password].um-iconed,.um-form input[type=tel].um-iconed,.um-form input[type=text].um-iconed{padding-left:44px!important}.um-form input[type=password].um-error,.um-form input[type=tel].um-error,.um-form input[type=text].um-error{border-color:#c74a4a!important}.um-form textarea{width:100%;padding:8px 12px!important;display:block;font-size:15px!important;line-height:22px!important;background:#fff;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;box-sizing:border-box;min-height:80px!important;box-shadow:none;outline:0!important}.um-form .um-meta-text textarea{max-width:100%}.um-form .wp-editor-container{border:1px solid #ddd}.um-form .wp-editor-container textarea{background:#ddd!important;color:#222!important;border-radius:0}.um-field-c .um-field-checkbox{margin-bottom:14px;margin-top:0!important;position:relative}.um-field-checkbox:not(.um-field),.um-field-radio:not(.um-field){display:block;margin:8px 0;position:relative}.um-profile.um-editing .um-field-checkbox,.um-profile.um-editing .um-field-radio{cursor:pointer!important}.um-field-checkbox:hover i,.um-field-radio:hover i{color:#666}.um-field-checkbox input,.um-field-radio input{opacity:0!important;display:inline!important;width:0!important;float:left}.um-field-checkbox-state,.um-field-radio-state{position:absolute;top:0;left:1px;width:24px;height:24px}.um-field-checkbox-state i,.um-field-radio-state i{font-size:24px;line-height:24px;height:24px;color:#aaa;transition:all .2s linear}.um-field-checkbox-option,.um-field-radio-option{margin:0 0 0 36px;line-height:24px;color:#888!important;display:block}.um-field-group{margin-top:20px}.um-field-group-head{cursor:pointer;color:#fff;font-size:16px;line-height:22px;padding:10px 20px;transition:.25s;box-sizing:border-box;-moz-border-radius:4px!important;-webkit-border-radius:4px!important;border-radius:4px!important;border-top:1px solid transparent!important;border-bottom:2px solid rgba(0,0,0,.1)!important}.um-field-group-head i{font-size:20px;margin:0 8px 0 0}.um-field-group-head i:before{vertical-align:middle!important}.um-field-group-body{display:none;margin:15px 0 0 0;padding:15px 20px 5px 20px;background:#f9f9f9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;position:relative;box-sizing:border-box;width:100%}.um-field-group-body div.um-field{padding:0 0 15px 0}.um-field-group-cancel{font-size:18px;position:absolute;z-index:800;right:8px;top:8px;color:#ccc!important;text-decoration:none!important}.um-field-group-cancel:hover{color:#777!important}.um div.disabled,.um input[type=number]:disabled,.um input[type=submit]:disabled,.um input[type=text]:disabled,.um-disabled{opacity:.6!important;cursor:no-drop!important}input[type=submit].um-button,input[type=submit].um-button:focus{vertical-align:middle!important;height:auto!important;font-size:15px;cursor:pointer!important;width:100%;box-shadow:none;text-shadow:none;font-family:inherit;outline:0!important;margin:0;opacity:1;-webkit-appearance:none}input[type=submit].um-button:hover{opacity:1}.um-button{font-size:15px;border:none!important;display:block;width:100%;line-height:1em!important;padding:16px 20px!important;text-decoration:none!important;text-align:center;text-transform:none!important;font-weight:400!important;overflow:hidden;position:relative;transition:.25s;box-sizing:border-box;-moz-border-radius:4px!important;-webkit-border-radius:4px!important;border-radius:4px!important;-webkit-box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);opacity:1}a.um-button{font-size:15px;border:none!important;display:block;width:100%;line-height:1em!important;padding:16px 20px!important;text-decoration:none!important;text-align:center;text-transform:none!important;font-weight:400!important;overflow:hidden;position:relative;transition:.25s;box-sizing:border-box;-moz-border-radius:4px!important;-webkit-border-radius:4px!important;border-radius:4px!important;-webkit-box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);opacity:1}a.um-button:hover{-webkit-box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08);box-shadow:0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08)}.um-button.um-btn-auto-width{width:auto;display:inline-block;padding:14px 20px!important;min-width:200px;max-width:450px}a.um-link-alt{line-height:22px;color:#888!important;display:block!important;text-decoration:none!important;font-weight:400;text-align:center;border-bottom:none!important}a.um-link-alt:hover{text-decoration:underline!important}.um-dropdown{position:absolute;height:auto;background:#fff;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;z-index:55;display:none;border:1px solid #e5e5e5;box-sizing:border-box;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1);box-shadow:0 0 1px rgba(0,0,0,.1)}.um-dropdown li,.um-dropdown ul{list-style-type:none!important;padding:0!important;margin:0!important}.um-dropdown ul{background:#fff;position:relative;z-index:16}.um-dropdown li a{display:block;padding:8px 12px;color:#666;font-size:14px;line-height:18px}.um-dropdown li:last-child a{border-top:1px solid #e5e5e5;padding:12px}.um-dropdown-b{position:relative}.um-dropdown-arr{position:absolute;font-size:24px;width:24px;height:24px;overflow:hidden;z-index:15;color:#eee}.um-dropdown-arr *{display:block!important;width:24px!important;height:24px!important;vertical-align:bottom!important;overflow:hidden!important;line-height:24px!important}div.um-photo{margin:20px auto 0 auto;text-align:center;box-sizing:border-box;max-width:100%}div.um-photo,div.um-photo a,div.um-photo img{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}div.um-photo a{border:1px solid #e5e5e5;padding:5px;box-sizing:border-box;display:inline-block;box-shadow:0 1px 1px #eee;margin:0 auto;max-width:100%}div.um-photo img{max-height:300px;max-width:100%}span.um-req{margin:0 0 0 8px;font-size:14px;display:inline-block}small.um-max-filesize{display:block;color:#999;padding-top:5px}small.um-max-filesize span{font-size:12px}.um-form .um-field .um-field-area input.um-form-field.um-validate-not-matched,.um-form .um-field .um-field-area input.um-form-field.um-validate-not-matched:focus,.um-form .um-field .um-field-area input.um-form-field.um-validate-username-exists,.um-form .um-field .um-field-area input.um-form-field.um-validate-username-exists:focus{border-color:#db2929!important}.um-form .um-field .um-field-area input.um-searching-username{background-image:url(../img/loading.gif);background-position:right center;background-repeat:no-repeat;background-size:24px 24px}.um-search-area{position:relative;max-width:300px}.um .um-form.um-search-area .um-search-field{width:100%;margin:0;padding-left:25px!important}.rtl .um .um-form.um-search-area .um-search-field{padding-right:25px!important;padding-left:initial}.um-search-area .um-search-icon{position:absolute;height:100%;left:6px;top:0}.rtl .um-search-area .um-search-icon{right:6px;left:initial}.um-faicon-search:before{display:flex;align-items:center;justify-content:center;height:100%}.um-field .select2-container.select2-container--open,.um-search-filter .select2-container.select2-container--open{z-index:9999999}.um-field .select2.select2-container .select2-selection,.um-search-filter .select2.select2-container .select2-selection{display:block!important;height:40px;padding:0 0 0 12px!important;overflow:hidden!important;position:relative!important;white-space:nowrap!important;line-height:35px!important;color:#666!important;font-size:15px!important;-moz-border-radius:2px!important;-webkit-border-radius:2px!important;border-radius:2px!important;background-clip:padding-box!important;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:#fff!important;border:1px solid #ddd!important}.rtl .um-field .select2.select2-container .select2-selection,.rtl .um-search-filter .select2.select2-container .select2-selection{padding:0 12px 0 0!important}.um-field .select2.select2-container .select2-selection .select2-selection__arrow,.um-search-filter .select2.select2-container .select2-selection .select2-selection__arrow{display:inline-block!important;width:34px!important;height:100%!important;position:absolute;right:0;top:0;text-align:center;background:0 0!important;border:none!important}.rtl .um-field .select2.select2-container .select2-selection .select2-selection__arrow,.rtl .um-search-filter .select2.select2-container .select2-selection .select2-selection__arrow{right:initial;left:0}.um-field .select2.select2-container .select2-selection .select2-selection__arrow:before,.um-search-filter .select2.select2-container .select2-selection .select2-selection__arrow:before{content:"\f3d0"!important;font-size:28px!important;font-family:Ionicons!important;display:block;height:100%;line-height:40px;min-width:1em;text-align:center;color:#aaa}.um-field .select2.select2-container .select2-selection .select2-selection__arrow b[role=presentation],.um-search-filter .select2.select2-container .select2-selection .select2-selection__arrow b[role=presentation]{display:none}.um-field .select2-container.select2-container--open .select2-dropdown,.um-search-filter .select2-container.select2-container--open .select2-dropdown{border:1px solid #ddd!important;border-radius:0}.um-field .select2-container.select2-container--open .select2-dropdown .select2-results li,.um-search-filter .select2-container.select2-container--open .select2-dropdown .select2-results li{list-style:none;display:list-item;background:0 0;font-size:15px;margin:5px!important;color:#666!important;padding:3px 7px 4px!important;cursor:pointer;min-height:1em}.um-field .select2.select2-container .select2-selection.select2-selection--multiple,.um-search-filter .select2.select2-container .select2-selection.select2-selection--multiple{height:auto!important;line-height:.8!important;min-height:40px;padding-bottom:4px!important}.um-field .select2-container--default .select2-selection--single .select2-selection__rendered,.um-search-filter .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:37px;padding-left:0;padding-right:24px}.rtl .um-field .select2-container--default .select2-selection--single .select2-selection__rendered,.rtl .um-search-filter .select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:24px;padding-right:0}.um-field .select2-container--default .select2-selection--multiple .select2-selection__rendered,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__rendered{line-height:37px;box-sizing:border-box;list-style:none;margin:0;padding-left:0;padding-right:30px;width:100%;font-size:13px}.rtl .um-field .select2-container--default .select2-selection--multiple .select2-selection__rendered,.rtl .um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__rendered{padding-left:30px;padding-right:0}.um-field .select2-dropdown .select2-results li.select2-results__option.select2-results__option--highlighted,.um-search-filter .select2-dropdown .select2-results li.select2-results__option.select2-results__option--highlighted{background:#f4f4f4;color:#666}.um-field .select2-dropdown .select2-results li.select2-results__option[aria-selected=true],.um-search-filter .select2-dropdown .select2-results li.select2-results__option[aria-selected=true]{background-color:#ddd}.um-field .select2-container--default .select2-selection--multiple .select2-selection__clear,.um-field .select2-container--default .select2-selection--single .select2-selection__clear,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__clear,.um-search-filter .select2-container--default .select2-selection--single .select2-selection__clear{color:#aaa;font-size:28px;font-weight:400;line-height:34px;margin:0!important;right:0;text-align:center;width:1em}.rtl .um-field .select2-container--default .select2-selection--multiple .select2-selection__clear,.rtl .um-field .select2-container--default .select2-selection--single .select2-selection__clear,.rtl .um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__clear,.rtl .um-search-filter .select2-container--default .select2-selection--single .select2-selection__clear{left:0;right:initial}.um-field .select2-container--default .select2-selection--multiple .select2-selection__clear,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__clear{position:absolute}.um-field .select2-container--default .select2-selection--multiple .select2-selection__choice,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__choice{margin:5px 5px 0 0;max-height:28px;padding:3px 3px 3px 5px}.rtl .um-field .select2-container--default .select2-selection--multiple .select2-selection__choice,.rtl .um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__choice{margin:5px 0 0 5px;padding:3px 5px 3px 3px}.um-field .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline,.um-search-filter .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline{margin:5px 5px 0 0;padding:0}.rtl .um-field .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline,.rtl .um-search-filter .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline{margin:5px 0 0 5px}.um-field .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline>input,.um-search-filter .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline>input{border:none!important;padding:0!important;max-height:28px}.um-field .select2-container--default .select2-selection--multiple .select2-selection__rendered li,.um-search-filter .select2-container--default .select2-selection--multiple .select2-selection__rendered li{overflow-x:hidden;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;line-height:20px}.um-field-multiselect .um-field-area .um-field-icon,.um-field-select .um-field-area .um-field-icon{z-index:99999999}.um-field-select .um-field-area.um-field-area-has-icon .select2-selection__rendered{text-indent:20px}.um-field-multiselect .um-field-area.um-field-area-has-icon ul:first-child{margin-left:30px!important}.um-field-area .wp-switch-editor{float:none;height:auto}.um_request_name{display:none!important} \ No newline at end of file diff --git a/assets/js/um-scripts.js b/assets/js/um-scripts.js index 4a7f0b98..92e0caeb 100644 --- a/assets/js/um-scripts.js +++ b/assets/js/um-scripts.js @@ -440,60 +440,63 @@ jQuery(document).ready(function() { return false; }); - jQuery( document.body ).on('click', '#um-search-button', function() { - var action = jQuery(this).parents('.um-search-form').data('members_page'); + jQuery( document.body ).on('click', '#um-search-button', function(e) { + e.preventDefault(); - var search_keys = []; - jQuery(this).parents('.um-search-form').find('input[name="um-search-keys[]"]').each( function() { - search_keys.push( jQuery(this).val() ); - }); - - var search = jQuery(this).parents('.um-search-form').find('.um-search-field').val(); - - var url; - if ( search === '' ) { - url = action; - } else { - var query = '?'; - for ( var i = 0; i < search_keys.length; i++ ) { - query += search_keys[i] + '=' + search; - if ( i !== search_keys.length - 1 ) { - query += '&'; - } - } - - url = action + query; + let $btn = jQuery(this); + if ( $btn.hasClass( 'um-disabled' ) ) { + return; } - window.location = url; + + let $form = $btn.parents('.um-search-form'); + let search = $form.find('.um-search-field').val(); + let nonce = $form.data('nonce'); + + $btn.addClass('um-disabled'); + wp.ajax.send( 'um_search_widget_request', { + data: { + search: search, + _wpnonce: nonce + }, + success: function(response) { + $btn.removeClass('um-disabled'); + window.location = response.url; + }, + error: function(e) { + console.log(e); + $btn.removeClass('um-disabled'); + } + }); }); //make search on Enter click jQuery( document.body ).on( 'keypress', '.um-search-field', function(e) { if ( e.which === 13 ) { - var action = jQuery(this).parents('.um-search-form').data('members_page'); + let $field = jQuery(this); + let $form = $field.parents('.um-search-form'); - var search_keys = []; - jQuery(this).parents('.um-search-form').find('input[name="um-search-keys[]"]').each( function() { - search_keys.push( jQuery(this).val() ); - }); - - var search = jQuery(this).val(); - - var url; - if ( search === '' ) { - url = action; - } else { - var query = '?'; - for ( var i = 0; i < search_keys.length; i++ ) { - query += search_keys[i] + '=' + search; - if ( i !== search_keys.length - 1 ) { - query += '&'; - } - } - - url = action + query; + let $btn = $form.find('#um-search-button'); + if ( $btn.hasClass( 'um-disabled' ) ) { + return; } - window.location = url; + let search = $field.val(); + let nonce = $form.data('nonce'); + + $btn.addClass('um-disabled'); + wp.ajax.send( 'um_search_widget_request', { + data: { + search: search, + _wpnonce: nonce + }, + success: function(response) { + $btn.removeClass('um-disabled'); + window.location = response.url; + }, + error: function(e) { + console.log(e); + $btn.removeClass('um-disabled'); + } + }); } }); diff --git a/assets/js/um-scripts.min.js b/assets/js/um-scripts.min.js index 0d903e3c..fe8f6131 100644 --- a/assets/js/um-scripts.min.js +++ b/assets/js/um-scripts.min.js @@ -1 +1 @@ -function um_sanitize_value(e,t){var a=document.createElement("div"),e=(a.innerText=e,a.innerHTML);return t&&jQuery(t).val(e),e}function um_unsanitize_value(e){var t=document.createElement("textarea");return t.innerHTML=e,0===t.childNodes.length?"":t.childNodes[0].nodeValue}jQuery(document).ready(function(){function n(e){var a=jQuery(e.currentTarget),e=a.find(":selected");1'),a.find(".um-single-image-preview").removeAttr("style").hide(),a.find(".ajax-upload-dragdrop").show(),a.find(".um-modal-btn.um-finish-upload").addClass("disabled"),um_modal_responsive()}}):(a=jQuery(this).parents(".um-field"),n=a.data("mode"),i=a.find(".um-single-image-preview img").attr("src"),e=a.find('input[type="hidden"]#'+a.data("key")+"-"+jQuery(this).parents("form").find('input[type="hidden"][name="form_id"]').val()).val(),r={data:{mode:n,filename:e,src:i,nonce:um_scripts.nonce},success:function(){a.find(".um-single-image-preview img").replaceWith(''),a.find(".um-single-image-preview").removeAttr("style").hide(),a.find(".um-btn-auto-width").html(a.data("upload-label")),a.find('input[type="hidden"]').val("empty_file")}},"register"!==n&&(r.data.user_id=jQuery(this).parents("form").find("#user_id").val())),wp.ajax.send("um_remove_file",r)}),jQuery(document.body).on("click",".um-single-file-preview a.cancel",function(e){e.preventDefault();let t=!1;0'),a.find(".um-single-image-preview").removeAttr("style").hide(),a.find(".ajax-upload-dragdrop").show(),a.find(".um-modal-btn.um-finish-upload").addClass("disabled"),um_modal_responsive()}}):(a=jQuery(this).parents(".um-field"),n=a.data("mode"),i=a.find(".um-single-image-preview img").attr("src"),e=a.find('input[type="hidden"]#'+a.data("key")+"-"+jQuery(this).parents("form").find('input[type="hidden"][name="form_id"]').val()).val(),r={data:{mode:n,filename:e,src:i,nonce:um_scripts.nonce},success:function(){a.find(".um-single-image-preview img").replaceWith(''),a.find(".um-single-image-preview").removeAttr("style").hide(),a.find(".um-btn-auto-width").html(a.data("upload-label")),a.find('input[type="hidden"]').val("empty_file")}},"register"!==n&&(r.data.user_id=jQuery(this).parents("form").find("#user_id").val())),wp.ajax.send("um_remove_file",r)}),jQuery(document.body).on("click",".um-single-file-preview a.cancel",function(e){e.preventDefault();let t=!1;0options()->get( 'members_page' ) ) { + wp_send_json_error( __( 'No members page enabled', 'ultimate-member' ) ); + } + + $member_directory_ids = array(); + + $page_id = UM()->config()->permalinks['members']; + if ( ! empty( $page_id ) ) { + $member_directory_ids = UM()->member_directory()->get_member_directory_id( $page_id ); + } + + if ( empty( $member_directory_ids ) ) { + wp_send_json_error( __( 'No members page enabled', 'ultimate-member' ) ); + } + + $url = um_get_predefined_page_url( 'members' ); + + $search = isset( $_POST['search'] ) ? sanitize_text_field( $_POST['search'] ) : ''; + if ( empty( $search ) ) { + wp_send_json_success( array( 'url' => $url ) ); + } + + // Current user priority role + $priority_user_role = false; + if ( is_user_logged_in() ) { + $priority_user_role = UM()->roles()->get_priority_user_role( get_current_user_id() ); + } + + foreach ( $member_directory_ids as $directory_id ) { + $directory_data = UM()->query()->post_data( $directory_id ); + + if ( isset( $directory_data['roles_can_search'] ) ) { + $directory_data['roles_can_search'] = maybe_unserialize( $directory_data['roles_can_search'] ); + } + + $show_search = empty( $directory_data['roles_can_search'] ) || ( ! empty( $priority_user_role ) && in_array( $priority_user_role, $directory_data['roles_can_search'], true ) ); + if ( empty( $directory_data['search'] ) || ! $show_search ) { + continue; + } + + $hash = UM()->member_directory()->get_directory_hash( $directory_id ); + + $url = add_query_arg( array( 'search_' . $hash => $search ), $url ); + } + + wp_send_json_success( array( 'url' => $url ) ); + } } diff --git a/includes/core/class-shortcodes.php b/includes/core/class-shortcodes.php index 80f3c7fa..10d324f5 100644 --- a/includes/core/class-shortcodes.php +++ b/includes/core/class-shortcodes.php @@ -1370,12 +1370,10 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) { } /** - * @param array $args - * @param string $content * * @return string */ - public function ultimatemember_searchform( $args = array(), $content = '' ) { + public function ultimatemember_searchform() { if ( ! UM()->options()->get( 'members_page' ) ) { return ''; } @@ -1391,7 +1389,7 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) { return ''; } - //current user priority role + // Current user priority role $priority_user_role = false; if ( is_user_logged_in() ) { $priority_user_role = UM()->roles()->get_priority_user_role( get_current_user_id() ); @@ -1405,7 +1403,7 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) { $directory_data['roles_can_search'] = maybe_unserialize( $directory_data['roles_can_search'] ); } - $show_search = empty( $directory_data['roles_can_search'] ) || ( ! empty( $priority_user_role ) && in_array( $priority_user_role, $directory_data['roles_can_search'] ) ); + $show_search = empty( $directory_data['roles_can_search'] ) || ( ! empty( $priority_user_role ) && in_array( $priority_user_role, $directory_data['roles_can_search'], true ) ); if ( empty( $directory_data['search'] ) || ! $show_search ) { continue; } @@ -1419,12 +1417,11 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) { return ''; } + $query = array_filter( $query ); $search_value = array_values( $query ); $t_args = array( - 'query' => $query, - 'search_value' => $search_value[0], - 'members_page' => um_get_core_page( 'members' ), + 'search_value' => ! empty( $search_value ) ? $search_value[0] : '', ); return UM()->get_template( 'searchform.php', '', $t_args ); } diff --git a/includes/um-deprecated-functions.php b/includes/um-deprecated-functions.php index d8fe3a44..156e972c 100644 --- a/includes/um-deprecated-functions.php +++ b/includes/um-deprecated-functions.php @@ -462,11 +462,7 @@ function um_members( $argument ) { function um_get_search_form() { //um_deprecated_function( 'um_get_search_form', '2.1.0', 'do_shortcode( \'[ultimatemember_searchform]\' )' ); - if ( version_compare( get_bloginfo('version'),'5.4', '<' ) ) { - return do_shortcode( '[ultimatemember_searchform]' ); - } else { - return apply_shortcodes( '[ultimatemember_searchform]' ); - } + return apply_shortcodes( '[ultimatemember_searchform]' ); } diff --git a/includes/widgets/class-um-search-widget.php b/includes/widgets/class-um-search-widget.php index a1d29719..1421b685 100644 --- a/includes/widgets/class-um-search-widget.php +++ b/includes/widgets/class-um-search-widget.php @@ -58,12 +58,7 @@ class UM_Search_Widget extends \WP_Widget { } // display the search form - if ( version_compare( get_bloginfo('version'),'5.4', '<' ) ) { - echo do_shortcode( '[ultimatemember_searchform /]' ); - } else { - echo apply_shortcodes( '[ultimatemember_searchform /]' ); - } - + echo apply_shortcodes( '[ultimatemember_searchform /]' ); echo $args['after_widget']; } diff --git a/templates/searchform.php b/templates/searchform.php index acdc6a2d..8e0e3482 100644 --- a/templates/searchform.php +++ b/templates/searchform.php @@ -6,23 +6,18 @@ * * Call: function ultimatemember_searchform() * - * @version 2.6.1 + * @version 2.11.2 * - * @var string $members_page * @var string $search_value - * @var array $query */ if ( ! defined( 'ABSPATH' ) ) { exit; -} ?> - -
- - - -
- - - +} +?> +
+
+ + +
From cd28e1089038d45b245dfa4b81f13f15a03deb43 Mon Sep 17 00:00:00 2001 From: yuriinalivaiko Date: Tue, 3 Feb 2026 22:03:10 +0200 Subject: [PATCH 08/17] Fixed the profile photo drop-down menu position for very small screens. --- assets/js/um-functions.js | 4 ++-- assets/js/um-functions.min.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/js/um-functions.js b/assets/js/um-functions.js index 7056d926..46b93093 100644 --- a/assets/js/um-functions.js +++ b/assets/js/um-functions.js @@ -60,7 +60,7 @@ UM.dropdown = { // profile photo if ( $element.is('.um-profile-photo') ) { var $imgBox = $element.find('.um-profile-photo-img'); - if ( $element.closest('div.uimob500').length ) { + if ( $element.closest('div.uimob340,div.uimob500').length ) { top_p = $element.outerHeight() - $imgBox.outerHeight() / 4; } else { left_p = ($imgBox.outerWidth() - menu_width) / 2; @@ -71,7 +71,7 @@ UM.dropdown = { // cover photo if ( $element.is('.um-cover') ) { var $imgBox = $element.find('.um-cover-e'); - if ( $element.closest('div.uimob500').length ) { + if ( $element.closest('div.uimob340,div.uimob500').length ) { left_p = ($imgBox.outerWidth() - menu_width) / 2; top_p = $imgBox.outerHeight() / 2 + 24; } else { diff --git a/assets/js/um-functions.min.js b/assets/js/um-functions.min.js index 9f2bd412..e4a449f5 100644 --- a/assets/js/um-functions.min.js +++ b/assets/js/um-functions.min.js @@ -1 +1 @@ -function UM_domenus(){jQuery(".um-dropdown").each(function(e,o){UM.dropdown.setPosition(o)})}function UM_check_password_matched(){jQuery(document).on("keyup","input[data-key=user_password],input[data-key=confirm_user_password]",function(e){var o=jQuery("input[data-key=user_password]").val(),t=jQuery("input[data-key=confirm_user_password]").val(),a=jQuery("input[data-key=user_password],input[data-key=confirm_user_password]");o||t?o!==t?a.removeClass("um-validate-matched").addClass("um-validate-not-matched"):a.removeClass("um-validate-not-matched").addClass("um-validate-matched"):a.removeClass("um-validate-matched").removeClass("um-validate-not-matched")})}function um_responsive(){jQuery(".um").each(function(){(element_width=jQuery(this).width())<=340?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob340")):element_width<=500?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob500")):element_width<=800?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob800")):element_width<=960?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob960")):960'+d.data("upload_help_text")+"":"",icon=d.data("icon")?'':"",upload_text=d.data("upload_text")?''+d.data("upload_text")+"":"";var e=0;jQuery("#um_upload_single:visible").data("user_id")&&(e=jQuery("#um_upload_single:visible").data("user_id")),d.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_imageupload",key:d.data("key"),set_id:d.data("set_id"),set_mode:d.data("set_mode"),_wpnonce:d.data("nonce"),timestamp:d.data("timestamp"),user_id:e},fileName:d.data("key"),allowedTypes:d.data("allowed_types"),maxFileSize:d.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:d.data("max_size_error"),extErrorStr:d.data("extension_error"),maxFileCountErrorStr:d.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,returnType:"json",onSubmit:function(e){d.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,o,t){d.selectedFiles=0,o.success&&0==o.success||void 0!==o.data.error?(d.parents(".um-modal-body").append('
'+o.data.error+"
"),d.parents(".um-modal-body").find(".upload-statusbar").hide(0),um_modal_responsive()):jQuery.each(o.data,function(e,o){var t=d.parents(".um-modal-body").find(".um-single-image-preview img"),a=d.parents(".um-modal-body").find(".um-single-image-preview"),i=new Date;t.removeAttr("loading"),t.attr("src",o.url+"?"+i.getTime()),t.data("file",o.file),t.on("load",function(){d.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),d.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),a.show(0),um_modal_responsive()})})},onError:function(e){console.log(e)}})}function initFileUpload_UM(a){upload_help_text=a.data("upload_help_text")?''+a.data("upload_help_text")+"":"",icon=a.data("icon")?'':"",upload_text=a.data("upload_text")?''+a.data("upload_text")+"":"",jQuery("#um_upload_single:visible").data("user_id")&&(user_id=jQuery("#um_upload_single:visible").data("user_id")),a.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_fileupload",key:a.data("key"),set_id:a.data("set_id"),user_id:a.data("user_id"),set_mode:a.data("set_mode"),_wpnonce:a.data("nonce"),timestamp:a.data("timestamp")},fileName:a.data("key"),allowedTypes:a.data("allowed_types"),maxFileSize:a.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:a.data("max_size_error"),extErrorStr:a.data("extension_error"),maxFileCountErrorStr:a.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,onSubmit:function(e){a.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,o,t){a.selectedFiles=0,o.success&&0==o.success||void 0!==o.data.error?(a.parents(".um-modal-body").append('
'+o.data.error+"
"),a.parents(".um-modal-body").find(".upload-statusbar").hide(0)):jQuery.each(o.data,function(e,o){a.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),a.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),a.parents(".um-modal-body").find(".um-single-file-preview").show(0),"icon"==e?a.parents(".um-modal-body").find(".um-single-fileinfo i").removeClass().addClass(o):"icon_bg"==e?a.parents(".um-modal-body").find(".um-single-fileinfo span.icon").css({"background-color":o}):"filename"==e?a.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-file",o):"original_name"==e?(a.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-orignal-name",o),a.parents(".um-modal-body").find(".um-single-fileinfo span.filename").html(o)):"url"==e&&a.parents(".um-modal-body").find(".um-single-fileinfo a").attr("href",o)}),setTimeout(function(){um_modal_responsive()},1e3)},onError:function(e){console.log(e)}})}function um_new_modal(e,o,t,a){var i,d,r,s=jQuery(".um-modal-overlay"),s=(0!==s.length&&(s.hide(),s.next(".um-modal").hide()),UM.common.tipsy.hide(),UM.dropdown.hideAll(),jQuery("body,html,textarea").css("overflow","hidden"),jQuery(document).bind("touchmove",function(e){e.preventDefault()}),jQuery(".um-modal").on("touchmove",function(e){e.stopPropagation()}),jQuery('
')),u=s.filter(".um-modal");u.append(jQuery("#"+e)),jQuery("body").append(s),t?(i=jQuery(''),d=jQuery(window).width()-60,r=jQuery(window).height()-.25*jQuery(window).height(),i.on("load",function(){u.find(".um-modal-photo").html(i),u.addClass("is-photo").css({width:i.width(),"margin-left":"-"+i.width()/2+"px"}).show().children().show(),i.css({opacity:0,"max-width":d,"max-height":r}).animate({opacity:1},1e3),um_modal_responsive()})):(u.addClass("no-photo").show().children().show(),um_modal_size(o),initImageUpload_UM(jQuery(".um-modal:visible .um-single-image-upload")),initFileUpload_UM(jQuery(".um-modal:visible .um-single-file-upload")),um_modal_responsive())}function um_modal_responsive(){var e,o,t,a=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,i=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,d=jQuery(".um-modal:visible").not(".um-modal-hidden"),r=d.find(".um-modal-body.photo:visible");(r.length||d.length)&&(e=(i-d.innerHeight())/2+"px",d.removeClass("uimob340").removeClass("uimob500"),r.length?(r=a-60,t=i-.25*i,(o=jQuery(".um-modal-photo img")).css({opacity:0}),o.css({"max-width":r}),o.css({"max-height":t}),d.css({width:o.width(),"margin-left":"-"+o.width()/2+"px"}),o.animate({opacity:1},1e3),d.animate({bottom:e},300)):d.length&&(a<=340?d.addClass("uimob340"):a<=500&&d.addClass("uimob500"),UM.frontend.cropper.init(),a<=500||i-parseInt(e)>i?d.animate({bottom:0},300):d.animate({bottom:e},300)))}function um_remove_modal(){wp.hooks.doAction("um_remove_modal"),jQuery("body,html,textarea").css("overflow","auto"),jQuery(document).unbind("touchmove"),jQuery('body > .um-modal div[id^="um_"]').hide().appendTo("body"),jQuery("body > .um-modal, body > .um-modal-overlay").remove()}function um_modal_size(e){jQuery(".um-modal:visible").not(".um-modal-hidden").addClass(e)}function prepare_Modal(){0==jQuery(".um-popup-overlay").length&&(jQuery("body").append('
'),jQuery("body").append('
'),jQuery(".um-popup").addClass("loading"),jQuery("body,html").css({overflow:"hidden"}))}function remove_Modal(){jQuery(".um-popup-overlay").length&&(wp.hooks.doAction("um_before_modal_removed",jQuery(".um-popup")),UM.common.tipsy.hide(),jQuery(".um-popup").empty().remove(),jQuery(".um-popup-overlay").empty().remove(),jQuery("body,html").css({overflow:"auto"}))}function show_Modal(e){jQuery(".um-popup-overlay").length&&(jQuery(".um-popup").removeClass("loading").html(e),UM.common.tipsy.init())}function responsive_Modal(){jQuery(".um-popup-overlay").length&&(350<(ag_height=jQuery(window).height()-jQuery(".um-popup .um-popup-header").outerHeight()-jQuery(".um-popup .um-popup-footer").outerHeight()-80)&&(ag_height=350),jQuery(".um-popup-autogrow:visible").length?jQuery(".um-popup-autogrow:visible").css({height:ag_height+"px"}):jQuery(".um-popup-autogrow2:visible").length&&jQuery(".um-popup-autogrow2:visible").css({"max-height":ag_height+"px"}))}function um_reset_field(e){jQuery(e).find("div.um-field-area").find("input,textarea,select").not(":button, :submit, :reset, :hidden").val("").prop("checked",!1).prop("selected",!1)}"object"!=typeof window.UM&&(window.UM={}),UM.dropdown={hide:function(e){e=jQuery(e);e.parents("div").find("a").removeClass("active"),e.hide()},hideAll:function(){var e=jQuery(".um-dropdown");e.parents("div").find("a").removeClass("active"),e.hide()},setPosition:function(e){var o,t=jQuery(e),a=200,e=jQuery("html").attr("dir"),i=t.attr("data-element"),d=t.attr("data-position"),r=t.attr("data-trigger"),s=i&&jQuery(i).length?jQuery(i):t.siblings("a").length?t.siblings("a").first():t.parent(),u=(s.addClass("um-trigger-menu-on-"+r),0),n=(s.outerWidth()-a)/2,l=s.outerHeight(),i=s.offset();switch(s.is(".um-profile-photo")&&(o=s.find(".um-profile-photo-img"),l=s.closest("div.uimob500").length?s.outerHeight()-o.outerHeight()/4:(n=(o.outerWidth()-a)/2,o.outerHeight()/4)),s.is(".um-cover")&&(o=s.find(".um-cover-e"),l=s.closest("div.uimob500").length?(n=(o.outerWidth()-a)/2,o.outerHeight()/2+24):(n=(o.outerWidth()-a)/2,o.outerHeight()/2+46)),"lc"===d&&"rtl"===e&&(d="rc"),s.outerWidth()'+d.data("upload_help_text")+"":"",icon=d.data("icon")?'':"",upload_text=d.data("upload_text")?''+d.data("upload_text")+"":"";var e=0;jQuery("#um_upload_single:visible").data("user_id")&&(e=jQuery("#um_upload_single:visible").data("user_id")),d.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_imageupload",key:d.data("key"),set_id:d.data("set_id"),set_mode:d.data("set_mode"),_wpnonce:d.data("nonce"),timestamp:d.data("timestamp"),user_id:e},fileName:d.data("key"),allowedTypes:d.data("allowed_types"),maxFileSize:d.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:d.data("max_size_error"),extErrorStr:d.data("extension_error"),maxFileCountErrorStr:d.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,returnType:"json",onSubmit:function(e){d.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,o,a){d.selectedFiles=0,o.success&&0==o.success||void 0!==o.data.error?(d.parents(".um-modal-body").append('
'+o.data.error+"
"),d.parents(".um-modal-body").find(".upload-statusbar").hide(0),um_modal_responsive()):jQuery.each(o.data,function(e,o){var a=d.parents(".um-modal-body").find(".um-single-image-preview img"),t=d.parents(".um-modal-body").find(".um-single-image-preview"),i=new Date;a.removeAttr("loading"),a.attr("src",o.url+"?"+i.getTime()),a.data("file",o.file),a.on("load",function(){d.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),d.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),t.show(0),um_modal_responsive()})})},onError:function(e){console.log(e)}})}function initFileUpload_UM(t){upload_help_text=t.data("upload_help_text")?''+t.data("upload_help_text")+"":"",icon=t.data("icon")?'':"",upload_text=t.data("upload_text")?''+t.data("upload_text")+"":"",jQuery("#um_upload_single:visible").data("user_id")&&(user_id=jQuery("#um_upload_single:visible").data("user_id")),t.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_fileupload",key:t.data("key"),set_id:t.data("set_id"),user_id:t.data("user_id"),set_mode:t.data("set_mode"),_wpnonce:t.data("nonce"),timestamp:t.data("timestamp")},fileName:t.data("key"),allowedTypes:t.data("allowed_types"),maxFileSize:t.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:t.data("max_size_error"),extErrorStr:t.data("extension_error"),maxFileCountErrorStr:t.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,onSubmit:function(e){t.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,o,a){t.selectedFiles=0,o.success&&0==o.success||void 0!==o.data.error?(t.parents(".um-modal-body").append('
'+o.data.error+"
"),t.parents(".um-modal-body").find(".upload-statusbar").hide(0)):jQuery.each(o.data,function(e,o){t.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),t.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),t.parents(".um-modal-body").find(".um-single-file-preview").show(0),"icon"==e?t.parents(".um-modal-body").find(".um-single-fileinfo i").removeClass().addClass(o):"icon_bg"==e?t.parents(".um-modal-body").find(".um-single-fileinfo span.icon").css({"background-color":o}):"filename"==e?t.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-file",o):"original_name"==e?(t.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-orignal-name",o),t.parents(".um-modal-body").find(".um-single-fileinfo span.filename").html(o)):"url"==e&&t.parents(".um-modal-body").find(".um-single-fileinfo a").attr("href",o)}),setTimeout(function(){um_modal_responsive()},1e3)},onError:function(e){console.log(e)}})}function um_new_modal(e,o,a,t){var i=jQuery(".um-modal-overlay");0!==i.length&&(i.hide(),i.next(".um-modal").hide()),UM.common.tipsy.hide(),UM.dropdown.hideAll(),jQuery("body,html,textarea").css("overflow","hidden"),jQuery(document).bind("touchmove",function(e){e.preventDefault()}),jQuery(".um-modal").on("touchmove",function(e){e.stopPropagation()});var d,r,s,i=jQuery('
'),u=i.filter(".um-modal");u.append(jQuery("#"+e)),jQuery("body").append(i),a?(d=jQuery(''),r=jQuery(window).width()-60,s=jQuery(window).height()-.25*jQuery(window).height(),d.on("load",function(){u.find(".um-modal-photo").html(d),u.addClass("is-photo").css({width:d.width(),"margin-left":"-"+d.width()/2+"px"}).show().children().show(),d.css({opacity:0,"max-width":r,"max-height":s}).animate({opacity:1},1e3),um_modal_responsive()})):(u.addClass("no-photo").show().children().show(),um_modal_size(o),initImageUpload_UM(jQuery(".um-modal:visible .um-single-image-upload")),initFileUpload_UM(jQuery(".um-modal:visible .um-single-file-upload")),um_modal_responsive())}function um_modal_responsive(){var e,o,a,t=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,i=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,d=jQuery(".um-modal:visible").not(".um-modal-hidden"),r=d.find(".um-modal-body.photo:visible");(r.length||d.length)&&(e=(i-d.innerHeight())/2+"px",d.removeClass("uimob340").removeClass("uimob500"),r.length?(o=t-60,a=i-.25*i,(r=jQuery(".um-modal-photo img")).css({opacity:0}),r.css({"max-width":o}),r.css({"max-height":a}),d.css({width:r.width(),"margin-left":"-"+r.width()/2+"px"}),r.animate({opacity:1},1e3),d.animate({bottom:e},300)):d.length&&(t<=340?d.addClass("uimob340"):t<=500&&d.addClass("uimob500"),UM.frontend.cropper.init(),t<=500||i-parseInt(e)>i?d.animate({bottom:0},300):d.animate({bottom:e},300)))}function um_remove_modal(){wp.hooks.doAction("um_remove_modal"),jQuery("body,html,textarea").css("overflow","auto"),jQuery(document).unbind("touchmove"),jQuery('body > .um-modal div[id^="um_"]').hide().appendTo("body"),jQuery("body > .um-modal, body > .um-modal-overlay").remove()}function um_modal_size(e){jQuery(".um-modal:visible").not(".um-modal-hidden").addClass(e)}function prepare_Modal(){0==jQuery(".um-popup-overlay").length&&(jQuery("body").append('
'),jQuery("body").append('
'),jQuery(".um-popup").addClass("loading"),jQuery("body,html").css({overflow:"hidden"}))}function remove_Modal(){jQuery(".um-popup-overlay").length&&(wp.hooks.doAction("um_before_modal_removed",jQuery(".um-popup")),UM.common.tipsy.hide(),jQuery(".um-popup").empty().remove(),jQuery(".um-popup-overlay").empty().remove(),jQuery("body,html").css({overflow:"auto"}))}function show_Modal(e){jQuery(".um-popup-overlay").length&&(jQuery(".um-popup").removeClass("loading").html(e),UM.common.tipsy.init())}function responsive_Modal(){jQuery(".um-popup-overlay").length&&(ag_height=jQuery(window).height()-jQuery(".um-popup .um-popup-header").outerHeight()-jQuery(".um-popup .um-popup-footer").outerHeight()-80,350 Date: Wed, 4 Feb 2026 15:01:52 +0200 Subject: [PATCH 09/17] Update release date for version 2.11.2 in readme.txt Corrected the release date of version 2.11.2 from a placeholder to the finalized date, February 9, 2026. Ensures accurate documentation for users referencing the changelog. --- readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index df3581f8..574efbad 100644 --- a/readme.txt +++ b/readme.txt @@ -167,7 +167,7 @@ No specific extensions are needed. But we highly recommended keep active these P IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSION 2.6.7 PATCHES SECURITY PRIVILEGE ESCALATION VULNERABILITY. PLEASE SEE [THIS ARTICLE](https://docs.ultimatemember.com/article/1866-security-incident-update-and-recommended-actions) FOR MORE INFORMATION -= 2.11.2 2026-01-xx = += 2.11.2 2026-02-09 = **Bugfixes** From 199fd069e292115b0e336c2493879af209f53de0 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Wed, 4 Feb 2026 15:23:26 +0200 Subject: [PATCH 10/17] Update template for members.php to improve filter rendering Replaced triple curly braces with double curly braces in Underscore.js templates to enhance security and consistency. Adjusted the version comment to reflect the update from 2.11.1 to 2.11.2. --- templates/members.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/members.php b/templates/members.php index 109ef27f..ffa4e0a3 100644 --- a/templates/members.php +++ b/templates/members.php @@ -6,7 +6,7 @@ * * Page: "Members" * - * @version 2.11.1 + * @version 2.11.2 * * @var array $args */ @@ -343,13 +343,13 @@ $postid = ! empty( $post->ID ) ? $post->ID : ''; <# _.each( data.filters, function( filter, key, list ) { #>
<# if ( filter.type == 'slider' ) { #> - {{{filter.value_label}}} + {{filter.value_label}} <# } else { #> - {{{filter.label}}}: {{{filter.value_label}}} + {{filter.label}}: {{filter.value_label}} <# } #> -
×
+
×
<# }); #> <# } #> From db337f2f1c2728d29b0c91be41e7d34f51623fbc Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Wed, 4 Feb 2026 15:23:46 +0200 Subject: [PATCH 11/17] Updated readme.txt --- readme.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index 574efbad..3fb1af4f 100644 --- a/readme.txt +++ b/readme.txt @@ -169,9 +169,19 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI = 2.11.2 2026-02-09 = +**Enhancements** + +* Added: Server side validation when Searching Form is submitted. + **Bugfixes** -* Fixed: Security issue CVE ID: CVE-2025-15064. Deprecated ability to use HTML inside the user description. +* Fixed: Security issue CVE ID: CVE-2025-15064. Deprecated ability to use HTML inside the user description. It's still allowed to use only predefined 'user_description' tags in `wp_kses()`. +* Fixed: Security issue CVE ID: CVE-2026-1404. Changed template items formatting to avoid using HTML symbols in the filter values. + +* Templates required update: + +* members.php +* searchform.php = 2.11.1 2025-12-16 = From b1a5153d5fcfd1b3353b6f86673807277d359129 Mon Sep 17 00:00:00 2001 From: yuriinalivaiko Date: Fri, 6 Feb 2026 15:36:21 +0200 Subject: [PATCH 12/17] Fixed the "Allowed roles" setting in the member directory --- includes/admin/templates/directory/privacy.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/includes/admin/templates/directory/privacy.php b/includes/admin/templates/directory/privacy.php index 01517152..3c6b301a 100644 --- a/includes/admin/templates/directory/privacy.php +++ b/includes/admin/templates/directory/privacy.php @@ -1,8 +1,19 @@ Ultimate Member > Member Directories > Edit. + * + * @package um\admin\templates + * + * @var array $box + * @var WP_Post $object + */ + if ( ! defined( 'ABSPATH' ) ) { exit; } +$_um_privacy_roles_value = get_post_meta( $object->ID, '_um_privacy_roles', true ); + $fields = array( array( 'id' => '_um_privacy', @@ -26,7 +37,7 @@ $fields = array( 'options' => UM()->roles()->get_roles(), 'placeholder' => __( 'Choose user roles...', 'ultimate-member' ), 'conditional' => array( '_um_privacy', '=', '3' ), - 'value' => UM()->query()->get_meta_value( '_um_privacy_roles', null, 'na' ), + 'value' => empty( $_um_privacy_roles_value ) ? array() : (array) $_um_privacy_roles_value, ), ); From fbcd08ed7194c18783a082b088cfcfa1bd1b43d6 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Mon, 9 Feb 2026 10:50:01 +0200 Subject: [PATCH 13/17] Add user approval action upon email confirmation. Reviewed PR #1776 Introduced a new action `um_approve_user_on_email_confirmation` to enable user approval after verifying the email activation link. Refactored related logic to enhance extensibility and allow developers to hook custom behavior post-approval. --- includes/core/class-permalinks.php | 44 +++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/includes/core/class-permalinks.php b/includes/core/class-permalinks.php index d930ab25..776baf6f 100644 --- a/includes/core/class-permalinks.php +++ b/includes/core/class-permalinks.php @@ -27,12 +27,14 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { * Permalinks constructor. */ public function __construct() { - add_action( 'init', array( &$this, 'set_current_url' ), 0 ); + add_action( 'init', array( &$this, 'set_current_url' ), 0 ); - add_action( 'init', array( &$this, 'check_for_querystrings' ), 1 ); + add_action( 'init', array( &$this, 'check_for_querystrings' ), 1 ); // don't use lower than 2 priority because there is sending email inside, but Action Scheduler is init on 1st priority. - add_action( 'init', array( &$this, 'activate_account_via_email_link' ), 2 ); + add_action( 'init', array( &$this, 'activate_account_via_email_link' ), 2 ); + // Approve the user after the activate account link is verified. + add_action( 'um_approve_user_on_email_confirmation', array( &$this, 'approve_user_on_email_confirmation' ) ); } /** @@ -135,9 +137,25 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { } // Activate account link is valid. Can be approved below. - - um_fetch_user( $user_id ); // @todo maybe don't need to fetch. - UM()->common()->users()->approve( $user_id, true ); + /** + * Fires for user activation after validation the link for email confirmation. + * + * Internal Ultimate Member callbacks (Priority -> Callback name -> Excerpt): + * 10 - `UM()->permalinks()->approve_user_on_email_confirmation()` Approve the user after the activate account link is verified. + * + * @hook um_approve_user_on_email_confirmation + * + * @param {int} $user_id The user ID. + * + * @since 2.11.2 + * + * @example Doing some code just after native approve the $user_id on email confirmation. + * function my_approve_user_on_email_confirmation( $user_id ) { + * // your code here + * } + * add_action( 'um_approve_user_on_email_confirmation', 'my_approve_user_on_email_confirmation', 11 ); + */ + do_action( 'um_approve_user_on_email_confirmation', $user_id ); $user_role = UM()->roles()->get_priority_user_role( $user_id ); $user_role_data = UM()->roles()->role_data( $user_role ); @@ -161,7 +179,7 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { * function my_after_email_confirmation( $user_id ) { * // your code here * } - * add_filter( 'um_after_email_confirmation', 'my_after_email_confirmation' ); + * add_action( 'um_after_email_confirmation', 'my_after_email_confirmation' ); */ do_action( 'um_after_email_confirmation', $user_id ); @@ -200,6 +218,18 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { } } + /** + * Natively approve the user after validation of the email activation link. + * + * @param int $user_id + * + * @return void + */ + public function approve_user_on_email_confirmation( $user_id ) { + um_fetch_user( $user_id ); // @todo maybe don't need to fetch. + UM()->common()->users()->approve( $user_id, true ); + } + /** * Makes an activate link for any user * From 57ab92ab707493b2bada8e460b01b2de6a5524fe Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Mon, 9 Feb 2026 11:19:11 +0200 Subject: [PATCH 14/17] Fix security vulnerabilities, enhance validation, and update logic Addressed several security issues including CVE-2025-15064 and CVE-2026-1404. Added server-side validation for forms and introduced hooks for email confirmation. Adjusted template handling, resolved mobile display issues, and updated Site Health debug information. --- changelog.txt | 105 ++++++++++++++++----------- includes/admin/class-site-health.php | 4 +- readme.txt | 17 +++-- 3 files changed, 75 insertions(+), 51 deletions(-) diff --git a/changelog.txt b/changelog.txt index 8b0d1c9d..36a987b2 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,10 +1,27 @@ == Changelog == -= 2.11.2 January xx, 2026 = += 2.11.2 February 09, 2026 = + +* Enhancements: + + - Added: Server-side validation when the Search Form is submitted. + - Added: Action hook `um_approve_user_on_email_confirmation` to natively approve the user after validating the email activation link. * Bugfixes: - - Fixed: Security issue CVE ID: CVE-2025-15064. Deprecated ability to use HTML inside the user description. + - Fixed: Security issue, CVE ID: CVE-2025-15064. Deprecated the ability to use HTML inside the user description. It's still allowed to use only predefined 'user_description' tags in `wp_kses()`. + - Fixed: Security issue, CVE ID: CVE-2026-1404. Modified template item formatting to avoid using HTML characters in the filter values. + - Fixed: Profile photo dropdown menu position for screens smaller than 340px. + - Fixed: Display of the saved value of the "Privacy Options" > "Allowed roles" setting for the member directory. + - Fixed: Information in Site-Health about the registration form's `Template` and `Role` settings. + - Fixed: Information in Site-Health about the login and profile form's `Template` settings. + +* Templates Requiring Update: + + - members.php + - searchform.php + +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.11.1 December 16, 2025 = @@ -20,7 +37,7 @@ - Fixed: Security issue CVE ID: CVE-2025-14081. Filtering fields based on user permissions during Account form submission. - Fixed: Security issue CVE ID: CVE-2025-12492. Added directory privacy settings and added rate limiting. -* Templates required update: +* Templates Requiring Update: - members.php - members-grid.php @@ -66,7 +83,7 @@ - Fixed: Integer validation for the 'start_of_week' WP native setting. - Fixed: Dependencies with Action Scheduler library. -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade * +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.10.5 June 25, 2025 = @@ -102,11 +119,11 @@ - Deprecated `UM()->user()->maybe_generate_password_reset_key( $userdata )` function. Use `UM()->common()->users()->maybe_generate_password_reset_key( $userdata )` instead. - Deprecated `UM()->user()->set_last_login()` function. Use `UM()->common()->users()->set_last_login( $user_id )` instead. -* Templates required update: +* Templates Requiring Update: - password-reset.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade * +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.10.4 May 15, 2025 = @@ -133,7 +150,7 @@ - Fixed: Reset Password email notification's the {password_reset_link}` placeholder. - Fixed: Changed "Turkey" to the current official term "Türkiye". -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade * +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.10.2 April 02, 2025 = @@ -155,7 +172,7 @@ - Fixed: Honeypot scripts/styles for themes without pre-rendered shortcodes. Enqueue honeypot scripts/styles everytime. - Fixed: Profile photo metadata when Gravatar image is used. -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade * +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.10.0 February 18, 2025 = @@ -180,12 +197,12 @@ - Fixed: The "Privacy Policy" field in the registration form. Disallowed HTML from the "Privacy Policy" content (like `
`) is filtered out by the `wp_kses()` function. - Fixed: Password fields are now sanitized the WordPress native way, with `wp_unslash()` omitted post-submission. -* Templates required update: +* Templates Requiring Update: - gdpr-register.php - profile.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade * +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.9.2 January 14, 2025 = @@ -216,11 +233,11 @@ - Fully deprecated `UM()->localize()` function - Fully deprecated `um_language_textdomain` filter hook -* Templates required update: +* Templates Requiring Update: - account.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.9.1 November 15, 2024 = @@ -251,7 +268,7 @@ - Fixed: User status filter on wp-admin > Users on mobile devices - Fixed: Extra unwrapping of the WP Editor field's value -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.8.9 October 14, 2024 = @@ -272,7 +289,7 @@ - Fixed: Sending email notifications based on user status after registration - Fixed: PHP error when meta `um_member_directory_data` has a wrong format -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.8.8 October 04, 2024 = @@ -283,7 +300,7 @@ - Fixed: User registration if email activation or admin review are required - Fixed: First installation errors -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.8.7 October 01, 2024 = @@ -320,11 +337,11 @@ - Fixed: Parsing /modal/ templates and parsing templates on the Windows hosting - Fixed: Validation `form_id` attribute in the `ultimatemember` shortcode -* Templates required update: +* Templates Requiring Update: - login-to-view.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * * Deprecated: @@ -368,12 +385,12 @@ - Fixed: PHP errors while uploading files - Fixed: Parsing error on the license activation -* Templates required update: +* Templates Requiring Update: - Renamed templates/modal/um_upload_single.php → templates/modal/upload-single.php - Renamed templates/modal/um_view_photo.php → templates/modal/view-photo.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.8.5: April 9, 2024 = @@ -392,7 +409,7 @@ - Fixed: Reset Password urlencoded username - Fixed: Clear media JS in wp-admin settings -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.8.4: March 6, 2024 = @@ -431,7 +448,7 @@ - Fixed: Default email notification body color - Fixed: Ignore username slug when custom meta slug exists when parse user from query -* Templates required update: +* Templates Requiring Update: - email/notification_deletion.php - email/notification_new_user.php @@ -439,7 +456,7 @@ - email/welcome_email.php - password-change.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.8.2: January 15, 2024 = @@ -463,11 +480,11 @@ - Fixed: Account styles - Fixed: Saving `um_form_version` postmeta -* Templates required update: +* Templates Requiring Update: - profile/posts-single.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.8.1: December 20, 2023 = @@ -534,7 +551,7 @@ - `um-admin-clear` CSS class. It duplicates WordPress native `clear`. Using WordPress native instead. - `um-admin-tipsy-{x}` classes to make Tipsy.JS initialization commonly for wp-admin and frontend by `um-tip-{x}` class. -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.7.0: October 11, 2023 = @@ -568,7 +585,7 @@ - `UM()->admin()->enqueue()->suffix` property use `UM()->frontend()->enqueue()::get_suffix()` - Changed directories for the fonts (fonticons + raty), and JS/CSS files related to libs `jquery-ui`, `raty`, `select2`, `tipsy`, `fonticons (FontAwesome + Ionicons)` -* Templates required update: +* Templates Requiring Update: - account.php - login.php @@ -577,7 +594,7 @@ - register.php - profile/posts-single.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.6.11: September 06, 2023 = @@ -609,7 +626,7 @@ - Fixed: Performance for `um_get_form_fields` hook - Fixed: Admin Modal JS library conflict with bootstrap.js -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.6.9: July 26, 2023 = @@ -630,11 +647,11 @@ - Fixed: Maximum allowed words option for textarea where you may insert HTML tags. Ignore HTML tags symbols when count - Fixed: Sanitize for fields (Min characters, Max characters, etc.) where can be empty string or absint value -* Templates required update: +* Templates Requiring Update: - profile.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.6.8: July 19, 2023 = @@ -668,7 +685,7 @@ - Deprecated: Unnecessary `um_multiselect_option_value` hook -* Templates required update: +* Templates Requiring Update: - members.php @@ -740,7 +757,7 @@ - Deprecated: `um_localize_permalink_filter`. Use `post_link` instead -* Templates required update: +* Templates Requiring Update: - members.php @@ -777,7 +794,7 @@ * All templates required update. Please add the version comments to your custom templates in themes -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.6.0: March 29, 2023 = @@ -806,7 +823,7 @@ - Deprecated: VKontakte and Google+ predefined fields. VKontakte and Google+ fields validation changed to just URL validation. -* Templates required update: +* Templates Requiring Update: - members.php = 2.5.4: February 17, 2023 = @@ -851,10 +868,10 @@ - Fixed: Multiple users approve - Fixed: Using regular URL-type field for displaying -* Templates required update: +* Templates Requiring Update: - members.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.5.1: October 26, 2022 = @@ -901,11 +918,11 @@ - `UM()->user()->get_pending_users_count()`. Use `UM()->query()->get_pending_users_count()` instead. It's unused since 2.5.0. Will be removed since 2.7.0 - `UM()->user()->remove_cached_queue()` without alternativities. It's unused since 2.5.0. Will be removed since 2.7.0 -* Templates required update: +* Templates Requiring Update: - password-change.php - password-reset.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.4.2: July 14, 2022 = @@ -1016,12 +1033,12 @@ - Fixed: Canonical link of the user profile if WPML plugin is active. - Fixed: Replacing placeholders in nav menus. Used an earlier hook for filtering items before generating HTML and avoided issues with raw, not-escaped HTML inside tags' attributes. -* Templates required update: +* Templates Requiring Update: - members-grid.php - members-list.php - password-reset.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.2.5: September 22, 2021 = @@ -1126,11 +1143,11 @@ - WordPress 5.8 compatibility. Widgets screen changes based on the new features with Legacy Widget block -* Templates required update: +* Templates Requiring Update: - members.php - password-reset.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.1.21: June 17, 2021 = @@ -1143,12 +1160,12 @@ - Fixed: Displaying avatar on the logout page - Fixed: Role meta sanitizing and related XSS vulnerability -* Templates required update: +* Templates Requiring Update: - logout.php - members.php - members-list.php -* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade +* Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade * = 2.1.20: May 7, 2021 = diff --git a/includes/admin/class-site-health.php b/includes/admin/class-site-health.php index b0ecdf1e..e6285654 100644 --- a/includes/admin/class-site-health.php +++ b/includes/admin/class-site-health.php @@ -2220,7 +2220,7 @@ class Site_Health { $debug_info[] = array( 'template' => array( 'label' => __( 'Template', 'ultimate-member' ), - 'value' => 0 === absint( get_post_meta( $form_id, '_um_login_template', true ) ) ? $labels['default'] : get_post_meta( $form_id, '_um_login_template', true ), + 'value' => empty( get_post_meta( $form_id, '_um_login_template', true ) ) ? $labels['default'] : get_post_meta( $form_id, '_um_login_template', true ), ), 'max_width' => array( 'label' => __( 'Max. Width (px)', 'ultimate-member' ), @@ -2292,7 +2292,7 @@ class Site_Health { ), 'template' => array( 'label' => __( 'Template', 'ultimate-member' ), - 'value' => 0 === absint( get_post_meta( $form_id, '_um_profile_template', true ) ) ? $labels['default'] : get_post_meta( $form_id, '_um_profile_template', true ), + 'value' => empty( get_post_meta( $form_id, '_um_profile_template', true ) ) ? $labels['default'] : get_post_meta( $form_id, '_um_profile_template', true ), ), 'max_width' => array( 'label' => __( 'Max. Width (px)', 'ultimate-member' ), diff --git a/readme.txt b/readme.txt index 3fb1af4f..ea574ada 100644 --- a/readme.txt +++ b/readme.txt @@ -171,18 +171,25 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI **Enhancements** -* Added: Server side validation when Searching Form is submitted. +* Added: Server-side validation when the Search Form is submitted. +* Added: Action hook `um_approve_user_on_email_confirmation` to natively approve the user after validating the email activation link. **Bugfixes** -* Fixed: Security issue CVE ID: CVE-2025-15064. Deprecated ability to use HTML inside the user description. It's still allowed to use only predefined 'user_description' tags in `wp_kses()`. -* Fixed: Security issue CVE ID: CVE-2026-1404. Changed template items formatting to avoid using HTML symbols in the filter values. +* Fixed: Security issue, CVE ID: CVE-2025-15064. Deprecated the ability to use HTML inside the user description. It's still allowed to use only predefined 'user_description' tags in `wp_kses()`. +* Fixed: Security issue, CVE ID: CVE-2026-1404. Modified template item formatting to avoid using HTML characters in the filter values. +* Fixed: Profile photo dropdown menu position for screens smaller than 340px. +* Fixed: Display of the saved value of the "Privacy Options" > "Allowed roles" setting for the member directory. +* Fixed: Information in Site-Health about the registration form's `Template` and `Role` settings. +* Fixed: Information in Site-Health about the login and profile form's `Template` settings. -* Templates required update: +**Templates Requiring Update** * members.php * searchform.php +**Note: Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after the upgrade** + = 2.11.1 2025-12-16 = **Enhancements** @@ -197,7 +204,7 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI * Fixed: Security issue CVE ID: CVE-2025-14081. Filtering fields based on user permissions during Account form submission. * Fixed: Security issue CVE ID: CVE-2025-12492. Added directory privacy settings and added rate limiting. -* Templates required update: +**Templates Requiring Update** * members.php * members-grid.php From a3f652a4ce31d0c5b58a3a6c179eb5ed9d1af028 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Mon, 9 Feb 2026 11:22:32 +0200 Subject: [PATCH 15/17] Fix security vulnerabilities, enhance validation, and update logic Addressed several security issues including CVE-2025-15064 and CVE-2026-1404. Added server-side validation for forms and introduced hooks for email confirmation. Adjusted template handling, resolved mobile display issues, and updated Site Health debug information. --- assets/js/um-functions.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/um-functions.min.js b/assets/js/um-functions.min.js index e4a449f5..333f88b4 100644 --- a/assets/js/um-functions.min.js +++ b/assets/js/um-functions.min.js @@ -1 +1 @@ -function UM_domenus(){jQuery(".um-dropdown").each(function(e,o){UM.dropdown.setPosition(o)})}function UM_check_password_matched(){jQuery(document).on("keyup","input[data-key=user_password],input[data-key=confirm_user_password]",function(e){var o=jQuery("input[data-key=user_password]").val(),a=jQuery("input[data-key=confirm_user_password]").val(),t=jQuery("input[data-key=user_password],input[data-key=confirm_user_password]");o||a?o!==a?t.removeClass("um-validate-matched").addClass("um-validate-not-matched"):t.removeClass("um-validate-not-matched").addClass("um-validate-matched"):t.removeClass("um-validate-matched").removeClass("um-validate-not-matched")})}function um_responsive(){jQuery(".um").each(function(){element_width=jQuery(this).width(),element_width<=340?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob340")):element_width<=500?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob500")):element_width<=800?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob800")):element_width<=960?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob960")):960'+d.data("upload_help_text")+"":"",icon=d.data("icon")?'':"",upload_text=d.data("upload_text")?''+d.data("upload_text")+"":"";var e=0;jQuery("#um_upload_single:visible").data("user_id")&&(e=jQuery("#um_upload_single:visible").data("user_id")),d.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_imageupload",key:d.data("key"),set_id:d.data("set_id"),set_mode:d.data("set_mode"),_wpnonce:d.data("nonce"),timestamp:d.data("timestamp"),user_id:e},fileName:d.data("key"),allowedTypes:d.data("allowed_types"),maxFileSize:d.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:d.data("max_size_error"),extErrorStr:d.data("extension_error"),maxFileCountErrorStr:d.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,returnType:"json",onSubmit:function(e){d.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,o,a){d.selectedFiles=0,o.success&&0==o.success||void 0!==o.data.error?(d.parents(".um-modal-body").append('
'+o.data.error+"
"),d.parents(".um-modal-body").find(".upload-statusbar").hide(0),um_modal_responsive()):jQuery.each(o.data,function(e,o){var a=d.parents(".um-modal-body").find(".um-single-image-preview img"),t=d.parents(".um-modal-body").find(".um-single-image-preview"),i=new Date;a.removeAttr("loading"),a.attr("src",o.url+"?"+i.getTime()),a.data("file",o.file),a.on("load",function(){d.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),d.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),t.show(0),um_modal_responsive()})})},onError:function(e){console.log(e)}})}function initFileUpload_UM(t){upload_help_text=t.data("upload_help_text")?''+t.data("upload_help_text")+"":"",icon=t.data("icon")?'':"",upload_text=t.data("upload_text")?''+t.data("upload_text")+"":"",jQuery("#um_upload_single:visible").data("user_id")&&(user_id=jQuery("#um_upload_single:visible").data("user_id")),t.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_fileupload",key:t.data("key"),set_id:t.data("set_id"),user_id:t.data("user_id"),set_mode:t.data("set_mode"),_wpnonce:t.data("nonce"),timestamp:t.data("timestamp")},fileName:t.data("key"),allowedTypes:t.data("allowed_types"),maxFileSize:t.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:t.data("max_size_error"),extErrorStr:t.data("extension_error"),maxFileCountErrorStr:t.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,onSubmit:function(e){t.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,o,a){t.selectedFiles=0,o.success&&0==o.success||void 0!==o.data.error?(t.parents(".um-modal-body").append('
'+o.data.error+"
"),t.parents(".um-modal-body").find(".upload-statusbar").hide(0)):jQuery.each(o.data,function(e,o){t.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),t.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),t.parents(".um-modal-body").find(".um-single-file-preview").show(0),"icon"==e?t.parents(".um-modal-body").find(".um-single-fileinfo i").removeClass().addClass(o):"icon_bg"==e?t.parents(".um-modal-body").find(".um-single-fileinfo span.icon").css({"background-color":o}):"filename"==e?t.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-file",o):"original_name"==e?(t.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-orignal-name",o),t.parents(".um-modal-body").find(".um-single-fileinfo span.filename").html(o)):"url"==e&&t.parents(".um-modal-body").find(".um-single-fileinfo a").attr("href",o)}),setTimeout(function(){um_modal_responsive()},1e3)},onError:function(e){console.log(e)}})}function um_new_modal(e,o,a,t){var i=jQuery(".um-modal-overlay");0!==i.length&&(i.hide(),i.next(".um-modal").hide()),UM.common.tipsy.hide(),UM.dropdown.hideAll(),jQuery("body,html,textarea").css("overflow","hidden"),jQuery(document).bind("touchmove",function(e){e.preventDefault()}),jQuery(".um-modal").on("touchmove",function(e){e.stopPropagation()});var d,r,s,i=jQuery('
'),u=i.filter(".um-modal");u.append(jQuery("#"+e)),jQuery("body").append(i),a?(d=jQuery(''),r=jQuery(window).width()-60,s=jQuery(window).height()-.25*jQuery(window).height(),d.on("load",function(){u.find(".um-modal-photo").html(d),u.addClass("is-photo").css({width:d.width(),"margin-left":"-"+d.width()/2+"px"}).show().children().show(),d.css({opacity:0,"max-width":r,"max-height":s}).animate({opacity:1},1e3),um_modal_responsive()})):(u.addClass("no-photo").show().children().show(),um_modal_size(o),initImageUpload_UM(jQuery(".um-modal:visible .um-single-image-upload")),initFileUpload_UM(jQuery(".um-modal:visible .um-single-file-upload")),um_modal_responsive())}function um_modal_responsive(){var e,o,a,t=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,i=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,d=jQuery(".um-modal:visible").not(".um-modal-hidden"),r=d.find(".um-modal-body.photo:visible");(r.length||d.length)&&(e=(i-d.innerHeight())/2+"px",d.removeClass("uimob340").removeClass("uimob500"),r.length?(o=t-60,a=i-.25*i,(r=jQuery(".um-modal-photo img")).css({opacity:0}),r.css({"max-width":o}),r.css({"max-height":a}),d.css({width:r.width(),"margin-left":"-"+r.width()/2+"px"}),r.animate({opacity:1},1e3),d.animate({bottom:e},300)):d.length&&(t<=340?d.addClass("uimob340"):t<=500&&d.addClass("uimob500"),UM.frontend.cropper.init(),t<=500||i-parseInt(e)>i?d.animate({bottom:0},300):d.animate({bottom:e},300)))}function um_remove_modal(){wp.hooks.doAction("um_remove_modal"),jQuery("body,html,textarea").css("overflow","auto"),jQuery(document).unbind("touchmove"),jQuery('body > .um-modal div[id^="um_"]').hide().appendTo("body"),jQuery("body > .um-modal, body > .um-modal-overlay").remove()}function um_modal_size(e){jQuery(".um-modal:visible").not(".um-modal-hidden").addClass(e)}function prepare_Modal(){0==jQuery(".um-popup-overlay").length&&(jQuery("body").append('
'),jQuery("body").append('
'),jQuery(".um-popup").addClass("loading"),jQuery("body,html").css({overflow:"hidden"}))}function remove_Modal(){jQuery(".um-popup-overlay").length&&(wp.hooks.doAction("um_before_modal_removed",jQuery(".um-popup")),UM.common.tipsy.hide(),jQuery(".um-popup").empty().remove(),jQuery(".um-popup-overlay").empty().remove(),jQuery("body,html").css({overflow:"auto"}))}function show_Modal(e){jQuery(".um-popup-overlay").length&&(jQuery(".um-popup").removeClass("loading").html(e),UM.common.tipsy.init())}function responsive_Modal(){jQuery(".um-popup-overlay").length&&(ag_height=jQuery(window).height()-jQuery(".um-popup .um-popup-header").outerHeight()-jQuery(".um-popup .um-popup-footer").outerHeight()-80,350'+d.data("upload_help_text")+"":"",icon=d.data("icon")?'':"",upload_text=d.data("upload_text")?''+d.data("upload_text")+"":"";var e=0;jQuery("#um_upload_single:visible").data("user_id")&&(e=jQuery("#um_upload_single:visible").data("user_id")),d.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_imageupload",key:d.data("key"),set_id:d.data("set_id"),set_mode:d.data("set_mode"),_wpnonce:d.data("nonce"),timestamp:d.data("timestamp"),user_id:e},fileName:d.data("key"),allowedTypes:d.data("allowed_types"),maxFileSize:d.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:d.data("max_size_error"),extErrorStr:d.data("extension_error"),maxFileCountErrorStr:d.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,returnType:"json",onSubmit:function(e){d.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,o,t){d.selectedFiles=0,o.success&&0==o.success||void 0!==o.data.error?(d.parents(".um-modal-body").append('
'+o.data.error+"
"),d.parents(".um-modal-body").find(".upload-statusbar").hide(0),um_modal_responsive()):jQuery.each(o.data,function(e,o){var t=d.parents(".um-modal-body").find(".um-single-image-preview img"),a=d.parents(".um-modal-body").find(".um-single-image-preview"),i=new Date;t.removeAttr("loading"),t.attr("src",o.url+"?"+i.getTime()),t.data("file",o.file),t.on("load",function(){d.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),d.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),a.show(0),um_modal_responsive()})})},onError:function(e){console.log(e)}})}function initFileUpload_UM(a){upload_help_text=a.data("upload_help_text")?''+a.data("upload_help_text")+"":"",icon=a.data("icon")?'':"",upload_text=a.data("upload_text")?''+a.data("upload_text")+"":"",jQuery("#um_upload_single:visible").data("user_id")&&(user_id=jQuery("#um_upload_single:visible").data("user_id")),a.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_fileupload",key:a.data("key"),set_id:a.data("set_id"),user_id:a.data("user_id"),set_mode:a.data("set_mode"),_wpnonce:a.data("nonce"),timestamp:a.data("timestamp")},fileName:a.data("key"),allowedTypes:a.data("allowed_types"),maxFileSize:a.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:a.data("max_size_error"),extErrorStr:a.data("extension_error"),maxFileCountErrorStr:a.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,onSubmit:function(e){a.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,o,t){a.selectedFiles=0,o.success&&0==o.success||void 0!==o.data.error?(a.parents(".um-modal-body").append('
'+o.data.error+"
"),a.parents(".um-modal-body").find(".upload-statusbar").hide(0)):jQuery.each(o.data,function(e,o){a.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),a.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),a.parents(".um-modal-body").find(".um-single-file-preview").show(0),"icon"==e?a.parents(".um-modal-body").find(".um-single-fileinfo i").removeClass().addClass(o):"icon_bg"==e?a.parents(".um-modal-body").find(".um-single-fileinfo span.icon").css({"background-color":o}):"filename"==e?a.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-file",o):"original_name"==e?(a.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-orignal-name",o),a.parents(".um-modal-body").find(".um-single-fileinfo span.filename").html(o)):"url"==e&&a.parents(".um-modal-body").find(".um-single-fileinfo a").attr("href",o)}),setTimeout(function(){um_modal_responsive()},1e3)},onError:function(e){console.log(e)}})}function um_new_modal(e,o,t,a){var i,d,r,s=jQuery(".um-modal-overlay"),s=(0!==s.length&&(s.hide(),s.next(".um-modal").hide()),UM.common.tipsy.hide(),UM.dropdown.hideAll(),jQuery("body,html,textarea").css("overflow","hidden"),jQuery(document).bind("touchmove",function(e){e.preventDefault()}),jQuery(".um-modal").on("touchmove",function(e){e.stopPropagation()}),jQuery('
')),u=s.filter(".um-modal");u.append(jQuery("#"+e)),jQuery("body").append(s),t?(i=jQuery(''),d=jQuery(window).width()-60,r=jQuery(window).height()-.25*jQuery(window).height(),i.on("load",function(){u.find(".um-modal-photo").html(i),u.addClass("is-photo").css({width:i.width(),"margin-left":"-"+i.width()/2+"px"}).show().children().show(),i.css({opacity:0,"max-width":d,"max-height":r}).animate({opacity:1},1e3),um_modal_responsive()})):(u.addClass("no-photo").show().children().show(),um_modal_size(o),initImageUpload_UM(jQuery(".um-modal:visible .um-single-image-upload")),initFileUpload_UM(jQuery(".um-modal:visible .um-single-file-upload")),um_modal_responsive())}function um_modal_responsive(){var e,o,t,a=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,i=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,d=jQuery(".um-modal:visible").not(".um-modal-hidden"),r=d.find(".um-modal-body.photo:visible");(r.length||d.length)&&(e=(i-d.innerHeight())/2+"px",d.removeClass("uimob340").removeClass("uimob500"),r.length?(r=a-60,t=i-.25*i,(o=jQuery(".um-modal-photo img")).css({opacity:0}),o.css({"max-width":r}),o.css({"max-height":t}),d.css({width:o.width(),"margin-left":"-"+o.width()/2+"px"}),o.animate({opacity:1},1e3),d.animate({bottom:e},300)):d.length&&(a<=340?d.addClass("uimob340"):a<=500&&d.addClass("uimob500"),UM.frontend.cropper.init(),a<=500||i-parseInt(e)>i?d.animate({bottom:0},300):d.animate({bottom:e},300)))}function um_remove_modal(){wp.hooks.doAction("um_remove_modal"),jQuery("body,html,textarea").css("overflow","auto"),jQuery(document).unbind("touchmove"),jQuery('body > .um-modal div[id^="um_"]').hide().appendTo("body"),jQuery("body > .um-modal, body > .um-modal-overlay").remove()}function um_modal_size(e){jQuery(".um-modal:visible").not(".um-modal-hidden").addClass(e)}function prepare_Modal(){0==jQuery(".um-popup-overlay").length&&(jQuery("body").append('
'),jQuery("body").append('
'),jQuery(".um-popup").addClass("loading"),jQuery("body,html").css({overflow:"hidden"}))}function remove_Modal(){jQuery(".um-popup-overlay").length&&(wp.hooks.doAction("um_before_modal_removed",jQuery(".um-popup")),UM.common.tipsy.hide(),jQuery(".um-popup").empty().remove(),jQuery(".um-popup-overlay").empty().remove(),jQuery("body,html").css({overflow:"auto"}))}function show_Modal(e){jQuery(".um-popup-overlay").length&&(jQuery(".um-popup").removeClass("loading").html(e),UM.common.tipsy.init())}function responsive_Modal(){jQuery(".um-popup-overlay").length&&(350<(ag_height=jQuery(window).height()-jQuery(".um-popup .um-popup-header").outerHeight()-jQuery(".um-popup .um-popup-footer").outerHeight()-80)&&(ag_height=350),jQuery(".um-popup-autogrow:visible").length?jQuery(".um-popup-autogrow:visible").css({height:ag_height+"px"}):jQuery(".um-popup-autogrow2:visible").length&&jQuery(".um-popup-autogrow2:visible").css({"max-height":ag_height+"px"}))}function um_reset_field(e){jQuery(e).find("div.um-field-area").find("input,textarea,select").not(":button, :submit, :reset, :hidden").val("").prop("checked",!1).prop("selected",!1)}"object"!=typeof window.UM&&(window.UM={}),UM.dropdown={hide:function(e){e=jQuery(e);e.parents("div").find("a").removeClass("active"),e.hide()},hideAll:function(){var e=jQuery(".um-dropdown");e.parents("div").find("a").removeClass("active"),e.hide()},setPosition:function(e){var o,t=jQuery(e),a=200,e=jQuery("html").attr("dir"),i=t.attr("data-element"),d=t.attr("data-position"),r=t.attr("data-trigger"),s=i&&jQuery(i).length?jQuery(i):t.siblings("a").length?t.siblings("a").first():t.parent(),u=(s.addClass("um-trigger-menu-on-"+r),0),n=(s.outerWidth()-a)/2,l=s.outerHeight(),i=s.offset();switch(s.is(".um-profile-photo")&&(o=s.find(".um-profile-photo-img"),l=s.closest("div.uimob340,div.uimob500").length?s.outerHeight()-o.outerHeight()/4:(n=(o.outerWidth()-a)/2,o.outerHeight()/4)),s.is(".um-cover")&&(o=s.find(".um-cover-e"),l=s.closest("div.uimob340,div.uimob500").length?(n=(o.outerWidth()-a)/2,o.outerHeight()/2+24):(n=(o.outerWidth()-a)/2,o.outerHeight()/2+46)),"lc"===d&&"rtl"===e&&(d="rc"),s.outerWidth() Date: Mon, 9 Feb 2026 11:47:53 +0200 Subject: [PATCH 16/17] Added filter wp.hook `um_member_directory_popstate_ignore`. Ability to ignore popstate with 3rd-party handlers. --- assets/js/um-members.js | 5 +++++ assets/js/um-members.min.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/assets/js/um-members.js b/assets/js/um-members.js index c39492d4..137b277d 100644 --- a/assets/js/um-members.js +++ b/assets/js/um-members.js @@ -1670,6 +1670,11 @@ jQuery(document.body).ready( function() { //history events when back/forward and change window.location.hash window.addEventListener( "popstate", function(e) { + let ignorePopstate = wp.hooks.applyFilters( 'um_member_directory_popstate_ignore', false ); + if ( false !== ignorePopstate ) { + return; + } + jQuery( '.um-directory' ).each( function() { var directory = jQuery(this); var hash = um_members_get_hash( directory ); diff --git a/assets/js/um-members.min.js b/assets/js/um-members.min.js index 367efa99..f9d60430 100644 --- a/assets/js/um-members.min.js +++ b/assets/js/um-members.min.js @@ -1 +1 @@ -var um_members_directory_busy=[],um_member_directories=[],um_member_directory_last_data=[];function um_parse_current_url(){var r={},t=window.location.search.substring(1).split("&");return jQuery.each(t,function(e){e=t[e].split("=");r[e[0]]=e[1]}),r}function um_get_data_for_directory(e,r){var t=um_members_get_hash(e),a={},i=um_parse_current_url();if(jQuery.each(i,function(e){-1!==e.indexOf("_"+t)&&""!==i[e]&&(a[e.replace("_"+t,"")]=i[e])}),r){if(void 0!==a[r])try{a[r]=decodeURIComponent(a[r])}catch(e){console.error(e)}return a[r]}return a}function um_set_url_from_data(e,r,t){var a=um_members_get_hash(e),i=um_get_data_for_directory(e),m={},d=(Array.isArray(t)?(jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")):jQuery.isNumeric(t)||(t=t.split("||"),jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")),""!==t&&(m[r+"_"+a]=t),jQuery.each(i,function(e){r===e?""!==t&&(m[e+"_"+a]=t):m[e+"_"+a]=i[e]}),jQuery.each(um_member_directories,function(e){var r,t=um_member_directories[e];t!==a&&(r=um_get_data_for_directory(jQuery('.um-directory[data-hash="'+t+'"]')),jQuery.each(r,function(e){m[e+"_"+t]=r[e]}))}),[]),e=(jQuery.each(m,function(e){d.push(e+"="+m[e])}),"?"+(d=wp.hooks.applyFilters("um_member_directory_url_attrs",d)).join("&"));"?"===e&&(e=""),window.history.pushState("string","UM Member Directory",window.location.origin+window.location.pathname+e)}function um_members_get_hash(e){return e.data("hash")}function um_is_directory_busy(e){e=um_members_get_hash(e);return void 0!==um_members_directory_busy[e]&&um_members_directory_busy[e]}function um_members_show_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!0,e.find(".um-members-overlay").show()}function um_members_hide_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!1,e.find(".um-members-overlay").hide()}function um_set_range_label(e,r){var t,a="",i=e.siblings(".um-slider-range").data("placeholder-s"),m=e.siblings(".um-slider-range").data("placeholder-p"),r=r?(a=(r.values[0]===r.values[1]?i.replace("{value}",r.values[0]):m.replace("{min_range}",r.values[0]).replace("{max_range}",r.values[1])).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=r.values[0],r.values[1]):(a=(e.slider("values",0)===e.slider("values",1)?i.replace("{value}",e.slider("values",0)):m.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1))).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=e.slider("values",0),e.slider("values",1));e.siblings(".um-slider-range").html(a),e.siblings(".um_range_min").val(t),e.siblings(".um_range_max").val(r)}function um_get_search(e){return e.find(".um-search-line").length?e.find(".um-search-line").val():""}function um_get_sort(e){return e.data("sorting")}function um_get_current_page(e){e=e.data("page");return e=e&&void 0!==e?e:1}function um_time_convert(e,r){var t=Math.floor(e/60),e=e%60;return(t=60<=e&&(e=0,24<=(t+=1))?0:t)+":"+(e=e<10?"0"+e:e)}function um_ajax_get_members(_,e){var r,t,a,i,s,m=um_members_get_hash(_);wp.hooks.applyFilters("um_member_directory_get_members_allow",!0,m,_)?(r=um_get_current_page(_),t=um_get_search(_),a=um_get_sort(_),i=-(new Date).getTimezoneOffset()/60,s={directory_id:m,page:r,search:t,sorting:a,gmt_offset:i,post_refferer:_.data("base-post"),nonce:um_scripts.nonce},_.find(".um-search-filter").length&&_.find(".um-search-filter").each(function(){var e,r,t,a,i,m,d,u=jQuery(this);u.find(".um-slider").length?(m=u.find(".um-slider").data("field_name"),r=um_get_data_for_directory(_,"filter_"+m+"_from"),e=um_get_data_for_directory(_,"filter_"+m+"_to"),void 0===r&&void 0===e||(s[m]=[r,e])):u.find(".um-datepicker-filter").length?(m=u.find(".um-datepicker-filter").data("filter_name"),r=um_get_data_for_directory(_,"filter_"+m+"_from"),e=um_get_data_for_directory(_,"filter_"+m+"_to"),void 0===r&&void 0===e||(s[m]=[r,e])):u.find(".um-timepicker-filter").length?(m=u.find(".um-timepicker-filter").data("filter_name"),r=um_get_data_for_directory(_,"filter_"+m+"_from"),e=um_get_data_for_directory(_,"filter_"+m+"_to"),void 0!==r&&(r=(i=(i=+(r=r.split(":"))[0])<10?"0"+i:i)+":"+(a=(a=+r[1])<10?"0"+a:a)+":00"),void 0!==e&&(a=+(t=e.split(":"))[1],e=(i=(i=+t[0])<10?"0"+i:i)+":"+(a=a<10?"0"+a:a)+":59"),void 0===r&&void 0===e||(s[m]=[r,e])):u.find("select").length?(m=u.find("select").attr("name"),void 0!==(d=um_get_data_for_directory(_,"filter_"+m))&&(d=um_unsanitize_value(d),s[m]=d.split("||"))):u.hasClass("um-text-filter-type")&&u.find('input[type="text"]').length?(m=u.find('input[type="text"]').attr("name"),void 0!==(d=um_get_data_for_directory(_,"filter_"+m))&&(d=um_unsanitize_value(d),s[m]=d)):s=wp.hooks.applyFilters("um_member_directory_custom_filter_handler",s,u,_)}),s=wp.hooks.applyFilters("um_member_directory_filter_request",s),wp.ajax.send("um_get_members",{data:s,success:function(e){um_member_directory_last_data[m]=e,um_build_template(_,e);var r=wp.template("um-members-pagination");_.find(".um-members-pagination-box").html(r(e)),_.data("total_pages",e.pagination.total_pages),e.pagination.total_pages?(_.find(".um-member-directory-sorting-options").prop("disabled",!1),_.find(".um-member-directory-view-type").removeClass("um-disabled")):(_.find(".um-member-directory-sorting-options").prop("disabled",!0),_.find(".um-member-directory-view-type").addClass("um-disabled")),wp.hooks.doAction("um_member_directory_loaded",_,e),um_init_new_dropdown(),um_members_hide_preloader(_)},error:function(e){console.log(e),um_members_hide_preloader(_)}})):setTimeout(um_ajax_get_members,600,_,e)}function um_build_template(e,r){var t,a=e.data("view_type"),a=wp.template("um-member-"+a+"-"+um_members_get_hash(e));jQuery(".um-"+um_members_get_hash(e)).length&&(e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-members-wrapper").prepend(a(r.users)),a=wp.template("um-members-header"),e.find(".um-members-intro").remove(),t=wp.hooks.applyFilters("um_member_directory_generate_header",!1,e),(void 0!==r.is_search&&r.is_search||t)&&e.find(".um-members-wrapper").prepend(a(r)),e.addClass("um-loaded"),wp.hooks.addAction("um_window_resize","um_members",function(){e.find(".um-members.um-members-grid").length&&UM_Member_Grid(e.find(".um-members.um-members-grid"))}),jQuery(document).trigger("um_build_template",[e,r]),jQuery(window).trigger("resize"),UM.common.tipsy.init())}function UM_Member_Grid(r){r.find(".um-member").length&&r.imagesLoaded(function(){var e=wp.hooks.applyFilters("um_member_directory_grid_masonry_attrs",{itemSelector:".um-member",columnWidth:".um-member",gutter:".um-gutter-sizer"},r);r.masonry(e).on("layoutComplete",function(e,r){jQuery(document).trigger("um_grid_initialized",[e,r])})})}function um_get_filters_data(_){var s=[];return _.find(".um-search-filter").each(function(){var d,t,a,i,e,r,m,u=jQuery(this);u.find("input.um-datepicker-filter").length?(d="datepicker",u.find("input.um-datepicker-filter").each(function(){var e,r,t,a,i,m;"to"!==jQuery(this).data("range")&&(e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(_,"filter_"+e+"_from"),t=um_get_data_for_directory(_,"filter_"+e+"_to"),void 0!==r||void 0!==t)&&((a=jQuery(this).val())===(i=_.find('input.um-datepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val())?m=i:""!==a&&""!==i?m=a+" - "+i:""===a?m="before "+i:""===i&&(m="since "+a),s.push({name:e,label:jQuery(this).data("filter-label"),value_label:m,value:[r,t],type:d}))})):u.find("input.um-timepicker-filter").length?(d="timepicker",u.find("input.um-timepicker-filter").each(function(){var e,r,t,a,i,m;"to"!==jQuery(this).data("range")&&(e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(_,"filter_"+e+"_from"),t=um_get_data_for_directory(_,"filter_"+e+"_to"),void 0!==r||void 0!==t)&&((a=jQuery(this).val())===(i=_.find('input.um-timepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val())?m=i:""!==a&&""!==i?m=a+" - "+i:""===a?m="before "+i:""===i&&(m="since "+a),s.push({name:e,label:jQuery(this).data("filter-label"),value_label:m,value:[r,t],type:d}))})):u.find("select").length?(d="select",t=u.find("select").attr("name"),a=u.find("select").data("placeholder"),i=void 0===(i=um_get_data_for_directory(_,"filter_"+t))?[]:(i=um_unsanitize_value(i)).split("||"),jQuery.each(i,function(e){var r=u.find('select option[value="'+i[e]+'"]').data("value_label");s.push({name:t,label:a,value_label:r,value:i[e],type:d})})):u.hasClass("um-text-filter-type")&&u.find('input[type="text"]').length?(d="text",t=u.find('input[type="text"]').attr("name"),a=u.find('input[type="text"]').attr("placeholder"),""!=(i=void 0===(i=um_get_data_for_directory(_,"filter_"+t))?"":i)&&s.push({name:t,label:a,value_label:i,value:i,type:d})):u.find("div.ui-slider").length?(d="slider",t=u.find("div.ui-slider").data("field_name"),e=um_get_data_for_directory(_,"filter_"+t+"_from"),r=um_get_data_for_directory(_,"filter_"+t+"_to"),void 0===e&&void 0===r||(m=(e===r?u.find("div.um-slider-range").data("placeholder-s").replace("{value}",e):u.find("div.um-slider-range").data("placeholder-p").replace("{min_range}",e).replace("{max_range}",r)).replace("{field_label}",u.find("div.um-slider-range").data("label")),a=u.find("div.um-slider-range").data("label"),s.push({name:t,label:a,value_label:m,value:[e,r],type:d}))):s=wp.hooks.applyFilters("um_member_directory_get_filter_data",s,_,u)}),s}function um_change_tag(e){var r,t=um_get_filters_data(e),a=(e.find(".um-members-filter-tag").remove(),e.find(".um-filtered-line"));a.length&&(r=wp.template("um-members-filtered-line"),a.prepend(r({filters:t})),0===e.find(".um-members-filter-remove").length?(e.find(".um-clear-filters").hide(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(e.find(".um-clear-filters").show(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible")))}function um_run_search(e){if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=um_get_data_for_directory(e,"search"),t=um_sanitize_value(e.find(".um-search-line").val());if(t===r||""===t&&void 0===r)um_members_hide_preloader(e);else{e.data("general_search",t),um_set_url_from_data(e,"search",t),e.data("page",1),um_set_url_from_data(e,"page","");if(!wp.hooks.applyFilters("um_member_directory_ignore_after_search",!1,e)){r=e.data("must-search");if(1===r&&(t=um_get_search(e),0===e.find(".um-members-filter-remove").length)&&!t)return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e)}e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}}function um_slider_filter_init(e){e.find(".um-slider").each(function(){var e=jQuery(this),t=e.parents(".um-directory"),a=e.data("field_name"),r=um_get_data_for_directory(t,"filter_"+a+"_from"),i=um_get_data_for_directory(t,"filter_"+a+"_to"),r=[r=void 0===r?parseInt(e.data("min")):r,i=void 0===i?parseInt(e.data("max")):i];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:r,create:function(e,r){},step:1,slide:function(e,r){um_set_range_label(jQuery(this),r)},stop:function(e,r){um_is_directory_busy(t)||(um_members_show_preloader(t),um_set_url_from_data(t,"filter_"+a+"_from",r.values[0]),um_set_url_from_data(t,"filter_"+a+"_to",r.values[1]),t.data("page",1),um_set_url_from_data(t,"page",""),um_ajax_get_members(t),um_change_tag(t),t.data("searched",1),t.find(".um-member-directory-sorting-options").prop("disabled",!1),t.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),um_set_range_label(e)})}function um_datepicker_filter_init(e){e.find(".um-datepicker-filter").each(function(){var d=jQuery(this),u=new Date(1e3*d.data("date_min")),_=new Date(1e3*d.data("date_max")),e=d.pickadate({selectYears:!0,min:u,max:_,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){d.blur()},onClose:function(){d.blur()},onSet:function(e){var r,t,a,i,m;!e.select||um_is_directory_busy(r=d.parents(".um-directory"))||(um_members_show_preloader(r),t=d.data("filter_name"),a=d.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to"),void 0===i&&(i=u/1e3),void 0===m&&(m=_/1e3),e=e.select/1e3,d.val(),"from"===a?i=e:"to"===a&&(m=e),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled"))}}).pickadate("picker"),r=d.data("filter_name"),t=d.data("range"),r=um_get_data_for_directory(d.parents(".um-directory"),"filter_"+r+"_"+t);void 0!==r&&e.set("select",1e3*r)})}function um_timepicker_filter_init(e){e.find(".um-timepicker-filter").each(function(){var d=jQuery(this),u=d.attr("id"),_=d.data("filter_name"),s=d.attr("data-min"),o=d.attr("data-max"),e=s.split(":"),r=o.split(":"),e=d.pickatime({format:d.data("format"),interval:parseInt(d.data("intervals")),min:[e[0],e[1]],max:[r[0],r[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){d.blur()},onClose:function(){d.blur()},onSet:function(e){var r,t,a,i,m;!e.select||um_is_directory_busy(r=d.parents(".um-directory"))||(um_members_show_preloader(r),t=d.data("filter_name"),a=d.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to"),void 0===i&&(i=s),void 0===m&&(m=o),void 0!==e.select?(e=um_time_convert(e.select,a),"from"===a?i=e:"to"===a&&(m=e)):"from"===a?i=s:"to"===a&&(m=o),e=jQuery("#"+u).val(),"from"===d.data("range")?jQuery("#"+_+"_to").pickatime("picker").set("min",e):jQuery("#"+_+"_from").pickatime("picker").set("max",e),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled"))}}).pickatime("picker"),r=d.data("filter_name"),t=d.data("range"),r=um_get_data_for_directory(d.parents(".um-directory"),"filter_"+r+"_"+t);void 0!==r&&(t=r.split(":"),e.set("select",60*t[0]+ +t[1]))})}jQuery(document.body).ready(function(){jQuery(".um-directory .um-search-filter select").each(function(){1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0);var e=jQuery(this);e.select2("destroy").select2({dropdownParent:e.parent()})}),jQuery(document.body).on("mouseover",".um-directory .um-member-directory-view-type",function(){var e;jQuery(this).hasClass("um-disabled")||((e=jQuery(this).find(".um-member-directory-view-type-a:visible")).hide(),(e.next().length?e.next():jQuery(this).find(".um-member-directory-view-type-a:first")).show().tipsy("show"))}).on("mouseout",".um-directory .um-member-directory-view-type",function(){jQuery(this).hasClass("um-disabled")||(jQuery(this).find(".um-member-directory-view-type-a").hide().tipsy("hide"),jQuery(this).find('.um-member-directory-view-type-a[data-type="'+jQuery(this).parents(".um-directory").data("view_type")+'"]').show())}),jQuery(document.body).on("click",".um-directory .um-member-directory-view-type-a",function(){var e=jQuery(this).parents(".um-directory");if(um_is_directory_busy(e))return!1;var r,t=jQuery(this),a=t.parents(".um-member-directory-view-type");a.hasClass("um-disabled")||(um_members_show_preloader(e),(r=a.find(".um-member-directory-view-type-a:visible")).hide(),(r.next().length?r.next():a.find(".um-member-directory-view-type-a:first")).show().tipsy("show"),null!==(r=um_member_directory_last_data[um_members_get_hash(e)])&&(um_set_url_from_data(e,"view_type",a=t.data("type")),e.data("view_type",a),um_build_template(e,r),um_init_new_dropdown()),um_members_hide_preloader(e))}),jQuery(document.body).on("click",".um-directory .um-do-search",function(){um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("keypress",".um-directory .um-search-line",function(e){13===e.which&&um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("click",'.um-new-dropdown[data-element=".um-member-directory-sorting-a"] li a',function(){var e,r,t;1===jQuery(this).data("selected")||(e=jQuery(this).data("directory-hash"),um_is_directory_busy(e=jQuery('.um-directory[data-hash="'+e+'"]')))||(um_members_show_preloader(e),r=jQuery(this).html(),t=jQuery(this).data("value"),e.data("sorting",t),um_set_url_from_data(e,"sort",t),um_ajax_get_members(e),e.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),e.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"] a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),e.find(".um-member-directory-sorting-a").find("> a").html(r))}),jQuery(document.body).on("click",".um-directory .pagi:not(.current)",function(){var e,r;jQuery(this).hasClass("disabled")||um_is_directory_busy(e=jQuery(this).parents(".um-directory"))||(um_members_show_preloader(e),(1===(r="first"===jQuery(this).data("page")?1:"prev"===jQuery(this).data("page")?+e.data("page")-1:"next"===jQuery(this).data("page")?+e.data("page")+1:"last"===jQuery(this).data("page")?parseInt(e.data("total_pages")):parseInt(jQuery(this).data("page")))?(e.find('.pagi[data-page="first"], .pagi[data-page="prev"]').addClass("disabled"),e.find('.pagi[data-page="prev"], .pagi[data-page="last"]')):(r===parseInt(e.data("total_pages"))?e.find('.pagi[data-page="prev"], .pagi[data-page="last"]').addClass("disabled"):e.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled"),e.find('.pagi[data-page="first"], .pagi[data-page="prev"]'))).removeClass("disabled"),e.find(".pagi").removeClass("current"),e.find('.pagi[data-page="'+r+'"]').addClass("current"),e.data("page",r),um_set_url_from_data(e,"page",1===r?"":r),um_ajax_get_members(e))}),jQuery(document.body).on("change",".um-directory .um-members-pagi-dropdown",function(){var e,r=jQuery(this).parents(".um-directory");um_is_directory_busy(r)||(um_members_show_preloader(r),e=jQuery(this).val(),r.find(".pagi").removeClass("current"),r.find('.pagi[data-page="'+e+'"]').addClass("current"),r.data("page",e),um_set_url_from_data(r,"page",1===e?"":e),um_ajax_get_members(r))}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-more a",function(e){e.preventDefault();e=jQuery(this).parents(".um-member");return e.find(".um-member-more").hide(),e.find(".um-member-meta-main").slideDown(),e.find(".um-member-less").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-less a",function(e){e.preventDefault();e=jQuery(this).parents(".um-member");return e.find(".um-member-less").hide(),e.find(".um-member-meta-main").slideUp(),e.find(".um-member-more").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-more a",function(e){e.preventDefault();var e=jQuery(this).parents(".um-member"),r=jQuery(this).parents(".um-members");return e.find(".um-member-more").hide(),e.find(".um-member-meta").slideDown(function(){UM_Member_Grid(r)}),e.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(r)},100),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-less").hide(),r.find(".um-member-meta").slideUp(function(){r.find(".um-member-more").fadeIn(),UM_Member_Grid(t)}),!1}),jQuery(".um-member-directory-filters-a").on("click",function(){var e=jQuery(this),r=e.parents(".um-directory").find(".um-search");r.is(":visible")?r.slideUp(250,function(){e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}):r.slideDown({duration:250,start:function(){jQuery(this).css({display:"grid"}),e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}})}),jQuery(document.body).on("change",".um-directory .um-search-filter select",function(){var e,r,t,a=jQuery(this).val(),i=um_sanitize_value(a);""===i||um_is_directory_busy(e=jQuery(this).parents(".um-directory"))||(um_members_show_preloader(e),t=void 0===(t=um_get_data_for_directory(e,"filter_"+(r=jQuery(this).prop("name"))))?[]:t.split("||"),-1===jQuery.inArray(i,t)&&(t.push(i),um_set_url_from_data(e,"filter_"+r,t=t.join("||")),e.data("page",1),um_set_url_from_data(e,"page","")),jQuery(this).find('option[value="'+a+'"]').prop("disabled",!0).hide(),1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),(i=jQuery(this)).select2("destroy").select2({dropdownParent:i.parent()}),i.val("").trigger("change"),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}),jQuery(document.body).on("blur",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(){var e,r,t,a=jQuery(this).parents(".um-directory");um_is_directory_busy(a)||(e=um_sanitize_value(jQuery(this).val()))!==(t=void 0===(t=um_get_data_for_directory(a,"filter_"+(r=jQuery(this).prop("name"))))?"":t)&&(um_members_show_preloader(a),um_set_url_from_data(a,"filter_"+r,e),a.data("page",1),um_set_url_from_data(a,"page",""),um_ajax_get_members(a),um_change_tag(a),a.data("searched",1),a.find(".um-member-directory-sorting-options").prop("disabled",!1),a.find(".um-member-directory-view-type").removeClass("um-disabled"))}),jQuery(document.body).on("keypress",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(e){var r,t,a;13!==e.which||um_is_directory_busy(e=jQuery(this).parents(".um-directory"))||(r=um_sanitize_value(jQuery(this).val()))!==(a=void 0===(a=um_get_data_for_directory(e,"filter_"+(t=jQuery(this).prop("name"))))?"":a)&&(um_members_show_preloader(e),um_set_url_from_data(e,"filter_"+t,r),e.data("page",1),um_set_url_from_data(e,"page",""),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}),jQuery(document.body).on("click",".um-directory .um-members-filter-remove",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&e){um_members_show_preloader(e);var r=jQuery(this).data("value"),t=jQuery(this).data("name"),a=jQuery(this).data("type"),i=("text"===a?(um_set_url_from_data(e,"filter_"+t,""),jQuery('.um-search-filter input[name="'+t+'"]').val("")):"select"===a?(m=void 0===(m=um_get_data_for_directory(e,"filter_"+t))?[]:(m=um_unsanitize_value(m)).split("||"),um_set_url_from_data(e,"filter_"+t,m=(m=-1!==jQuery.inArray(r.toString(),m)?jQuery.grep(m,function(e){return e!==r.toString()}):m).length?m:""),(m=jQuery('.um-search-filter select[name="'+t+'"]')).find('option[value="'+r+'"]').prop("disabled",!1).show(),1a.data("total_pages")&&(t=a.data("total_pages")),a.data("page",t).attr("data-page",t),a.find(".um-member-directory-sorting").length&&(void 0===(t=um_get_data_for_directory(a,"sort"))&&(t=a.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find('a[data-default="1"]').data("value")),a.data("sorting",t),(e=a.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]')).find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),e.find('a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),a.find(".um-member-directory-sorting-a").find("> a").html(e.find('a[data-value="'+t+'"]').html())),a.find(".um-member-directory-view-type").length&&(void 0===(e=um_get_data_for_directory(a,"view_type"))&&(e=a.find('.um-member-directory-view-type-a[data-default="1"]').data("type")),a.data("view_type",e),a.find(".um-member-directory-view-type .um-member-directory-view-type-a").hide(),a.find('.um-member-directory-view-type .um-member-directory-view-type-a[data-type="'+e+'"]').show()),a.find(".um-datepicker-filter").each(function(){var e=jQuery(this),r=e.pickadate("picker"),t=e.data("filter_name"),e=e.data("range"),t=um_get_data_for_directory(a,"filter_"+t+"_"+e);void 0!==t?r.set("select",1e3*t):r.clear()}),a.find(".um-slider").each(function(){var e=jQuery(this),r=e.data("field_name"),t=um_get_data_for_directory(a,"filter_"+r+"_from"),r=um_get_data_for_directory(a,"filter_"+r+"_to");void 0===t&&(t=e.data("min")),t=parseInt(t),void 0===r&&(r=e.data("max")),r=parseInt(r),e.slider("values",[t,r]),um_set_range_label(e)}),a.find(".um-timepicker-filter").each(function(){var e=jQuery(this),r=e.pickatime("picker"),t=e.data("filter_name"),e=e.data("range"),t=um_get_data_for_directory(a,"filter_"+t+"_"+e);void 0!==t?(e=t.split(":"),r.set("select",60*e[0])):r.clear()}),wp.hooks.applyFilters("um_member_directory_ignore_after_search",!1,a));if(!t&&1===a.data("must-search")){var i=um_get_search(a);if(!um_get_filters_data(a).length&&!i)return a.data("searched",0),void um_members_hide_preloader(a);a.data("searched",1)}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,a,r)||(um_ajax_get_members(a),um_change_tag(a))})})}); \ No newline at end of file +var um_members_directory_busy=[],um_member_directories=[],um_member_directory_last_data=[];function um_parse_current_url(){var r={},t=window.location.search.substring(1).split("&");return jQuery.each(t,function(e){e=t[e].split("=");r[e[0]]=e[1]}),r}function um_get_data_for_directory(e,r){var t=um_members_get_hash(e),a={},i=um_parse_current_url();if(jQuery.each(i,function(e){-1!==e.indexOf("_"+t)&&""!==i[e]&&(a[e.replace("_"+t,"")]=i[e])}),r){if(void 0!==a[r])try{a[r]=decodeURIComponent(a[r])}catch(e){console.error(e)}return a[r]}return a}function um_set_url_from_data(e,r,t){var a=um_members_get_hash(e),i=um_get_data_for_directory(e),m={},d=(Array.isArray(t)?(jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")):jQuery.isNumeric(t)||(t=t.split("||"),jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")),""!==t&&(m[r+"_"+a]=t),jQuery.each(i,function(e){r===e?""!==t&&(m[e+"_"+a]=t):m[e+"_"+a]=i[e]}),jQuery.each(um_member_directories,function(e){var r,t=um_member_directories[e];t!==a&&(r=um_get_data_for_directory(jQuery('.um-directory[data-hash="'+t+'"]')),jQuery.each(r,function(e){m[e+"_"+t]=r[e]}))}),[]),e=(jQuery.each(m,function(e){d.push(e+"="+m[e])}),"?"+(d=wp.hooks.applyFilters("um_member_directory_url_attrs",d)).join("&"));"?"===e&&(e=""),window.history.pushState("string","UM Member Directory",window.location.origin+window.location.pathname+e)}function um_members_get_hash(e){return e.data("hash")}function um_is_directory_busy(e){e=um_members_get_hash(e);return void 0!==um_members_directory_busy[e]&&um_members_directory_busy[e]}function um_members_show_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!0,e.find(".um-members-overlay").show()}function um_members_hide_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!1,e.find(".um-members-overlay").hide()}function um_set_range_label(e,r){var t,a="",i=e.siblings(".um-slider-range").data("placeholder-s"),m=e.siblings(".um-slider-range").data("placeholder-p"),r=r?(a=(r.values[0]===r.values[1]?i.replace("{value}",r.values[0]):m.replace("{min_range}",r.values[0]).replace("{max_range}",r.values[1])).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=r.values[0],r.values[1]):(a=(e.slider("values",0)===e.slider("values",1)?i.replace("{value}",e.slider("values",0)):m.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1))).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=e.slider("values",0),e.slider("values",1));e.siblings(".um-slider-range").html(a),e.siblings(".um_range_min").val(t),e.siblings(".um_range_max").val(r)}function um_get_search(e){return e.find(".um-search-line").length?e.find(".um-search-line").val():""}function um_get_sort(e){return e.data("sorting")}function um_get_current_page(e){e=e.data("page");return e=e&&void 0!==e?e:1}function um_time_convert(e,r){var t=Math.floor(e/60),e=e%60;return(t=60<=e&&(e=0,24<=(t+=1))?0:t)+":"+(e=e<10?"0"+e:e)}function um_ajax_get_members(_,e){var r,t,a,i,s,m=um_members_get_hash(_);wp.hooks.applyFilters("um_member_directory_get_members_allow",!0,m,_)?(r=um_get_current_page(_),t=um_get_search(_),a=um_get_sort(_),i=-(new Date).getTimezoneOffset()/60,s={directory_id:m,page:r,search:t,sorting:a,gmt_offset:i,post_refferer:_.data("base-post"),nonce:um_scripts.nonce},_.find(".um-search-filter").length&&_.find(".um-search-filter").each(function(){var e,r,t,a,i,m,d,u=jQuery(this);u.find(".um-slider").length?(m=u.find(".um-slider").data("field_name"),r=um_get_data_for_directory(_,"filter_"+m+"_from"),e=um_get_data_for_directory(_,"filter_"+m+"_to"),void 0===r&&void 0===e||(s[m]=[r,e])):u.find(".um-datepicker-filter").length?(m=u.find(".um-datepicker-filter").data("filter_name"),r=um_get_data_for_directory(_,"filter_"+m+"_from"),e=um_get_data_for_directory(_,"filter_"+m+"_to"),void 0===r&&void 0===e||(s[m]=[r,e])):u.find(".um-timepicker-filter").length?(m=u.find(".um-timepicker-filter").data("filter_name"),r=um_get_data_for_directory(_,"filter_"+m+"_from"),e=um_get_data_for_directory(_,"filter_"+m+"_to"),void 0!==r&&(r=(i=(i=+(r=r.split(":"))[0])<10?"0"+i:i)+":"+(a=(a=+r[1])<10?"0"+a:a)+":00"),void 0!==e&&(a=+(t=e.split(":"))[1],e=(i=(i=+t[0])<10?"0"+i:i)+":"+(a=a<10?"0"+a:a)+":59"),void 0===r&&void 0===e||(s[m]=[r,e])):u.find("select").length?(m=u.find("select").attr("name"),void 0!==(d=um_get_data_for_directory(_,"filter_"+m))&&(d=um_unsanitize_value(d),s[m]=d.split("||"))):u.hasClass("um-text-filter-type")&&u.find('input[type="text"]').length?(m=u.find('input[type="text"]').attr("name"),void 0!==(d=um_get_data_for_directory(_,"filter_"+m))&&(d=um_unsanitize_value(d),s[m]=d)):s=wp.hooks.applyFilters("um_member_directory_custom_filter_handler",s,u,_)}),s=wp.hooks.applyFilters("um_member_directory_filter_request",s),wp.ajax.send("um_get_members",{data:s,success:function(e){um_member_directory_last_data[m]=e,um_build_template(_,e);var r=wp.template("um-members-pagination");_.find(".um-members-pagination-box").html(r(e)),_.data("total_pages",e.pagination.total_pages),e.pagination.total_pages?(_.find(".um-member-directory-sorting-options").prop("disabled",!1),_.find(".um-member-directory-view-type").removeClass("um-disabled")):(_.find(".um-member-directory-sorting-options").prop("disabled",!0),_.find(".um-member-directory-view-type").addClass("um-disabled")),wp.hooks.doAction("um_member_directory_loaded",_,e),um_init_new_dropdown(),um_members_hide_preloader(_)},error:function(e){console.log(e),um_members_hide_preloader(_)}})):setTimeout(um_ajax_get_members,600,_,e)}function um_build_template(e,r){var t,a=e.data("view_type"),a=wp.template("um-member-"+a+"-"+um_members_get_hash(e));jQuery(".um-"+um_members_get_hash(e)).length&&(e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-members-wrapper").prepend(a(r.users)),a=wp.template("um-members-header"),e.find(".um-members-intro").remove(),t=wp.hooks.applyFilters("um_member_directory_generate_header",!1,e),(void 0!==r.is_search&&r.is_search||t)&&e.find(".um-members-wrapper").prepend(a(r)),e.addClass("um-loaded"),wp.hooks.addAction("um_window_resize","um_members",function(){e.find(".um-members.um-members-grid").length&&UM_Member_Grid(e.find(".um-members.um-members-grid"))}),jQuery(document).trigger("um_build_template",[e,r]),jQuery(window).trigger("resize"),UM.common.tipsy.init())}function UM_Member_Grid(r){r.find(".um-member").length&&r.imagesLoaded(function(){var e=wp.hooks.applyFilters("um_member_directory_grid_masonry_attrs",{itemSelector:".um-member",columnWidth:".um-member",gutter:".um-gutter-sizer"},r);r.masonry(e).on("layoutComplete",function(e,r){jQuery(document).trigger("um_grid_initialized",[e,r])})})}function um_get_filters_data(_){var s=[];return _.find(".um-search-filter").each(function(){var d,t,a,i,e,r,m,u=jQuery(this);u.find("input.um-datepicker-filter").length?(d="datepicker",u.find("input.um-datepicker-filter").each(function(){var e,r,t,a,i,m;"to"!==jQuery(this).data("range")&&(e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(_,"filter_"+e+"_from"),t=um_get_data_for_directory(_,"filter_"+e+"_to"),void 0!==r||void 0!==t)&&((a=jQuery(this).val())===(i=_.find('input.um-datepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val())?m=i:""!==a&&""!==i?m=a+" - "+i:""===a?m="before "+i:""===i&&(m="since "+a),s.push({name:e,label:jQuery(this).data("filter-label"),value_label:m,value:[r,t],type:d}))})):u.find("input.um-timepicker-filter").length?(d="timepicker",u.find("input.um-timepicker-filter").each(function(){var e,r,t,a,i,m;"to"!==jQuery(this).data("range")&&(e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(_,"filter_"+e+"_from"),t=um_get_data_for_directory(_,"filter_"+e+"_to"),void 0!==r||void 0!==t)&&((a=jQuery(this).val())===(i=_.find('input.um-timepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val())?m=i:""!==a&&""!==i?m=a+" - "+i:""===a?m="before "+i:""===i&&(m="since "+a),s.push({name:e,label:jQuery(this).data("filter-label"),value_label:m,value:[r,t],type:d}))})):u.find("select").length?(d="select",t=u.find("select").attr("name"),a=u.find("select").data("placeholder"),i=void 0===(i=um_get_data_for_directory(_,"filter_"+t))?[]:(i=um_unsanitize_value(i)).split("||"),jQuery.each(i,function(e){var r=u.find('select option[value="'+i[e]+'"]').data("value_label");s.push({name:t,label:a,value_label:r,value:i[e],type:d})})):u.hasClass("um-text-filter-type")&&u.find('input[type="text"]').length?(d="text",t=u.find('input[type="text"]').attr("name"),a=u.find('input[type="text"]').attr("placeholder"),""!=(i=void 0===(i=um_get_data_for_directory(_,"filter_"+t))?"":i)&&s.push({name:t,label:a,value_label:i,value:i,type:d})):u.find("div.ui-slider").length?(d="slider",t=u.find("div.ui-slider").data("field_name"),e=um_get_data_for_directory(_,"filter_"+t+"_from"),r=um_get_data_for_directory(_,"filter_"+t+"_to"),void 0===e&&void 0===r||(m=(e===r?u.find("div.um-slider-range").data("placeholder-s").replace("{value}",e):u.find("div.um-slider-range").data("placeholder-p").replace("{min_range}",e).replace("{max_range}",r)).replace("{field_label}",u.find("div.um-slider-range").data("label")),a=u.find("div.um-slider-range").data("label"),s.push({name:t,label:a,value_label:m,value:[e,r],type:d}))):s=wp.hooks.applyFilters("um_member_directory_get_filter_data",s,_,u)}),s}function um_change_tag(e){var r,t=um_get_filters_data(e),a=(e.find(".um-members-filter-tag").remove(),e.find(".um-filtered-line"));a.length&&(r=wp.template("um-members-filtered-line"),a.prepend(r({filters:t})),0===e.find(".um-members-filter-remove").length?(e.find(".um-clear-filters").hide(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(e.find(".um-clear-filters").show(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible")))}function um_run_search(e){if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=um_get_data_for_directory(e,"search"),t=um_sanitize_value(e.find(".um-search-line").val());if(t===r||""===t&&void 0===r)um_members_hide_preloader(e);else{e.data("general_search",t),um_set_url_from_data(e,"search",t),e.data("page",1),um_set_url_from_data(e,"page","");if(!wp.hooks.applyFilters("um_member_directory_ignore_after_search",!1,e)){r=e.data("must-search");if(1===r&&(t=um_get_search(e),0===e.find(".um-members-filter-remove").length)&&!t)return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e)}e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}}function um_slider_filter_init(e){e.find(".um-slider").each(function(){var e=jQuery(this),t=e.parents(".um-directory"),a=e.data("field_name"),r=um_get_data_for_directory(t,"filter_"+a+"_from"),i=um_get_data_for_directory(t,"filter_"+a+"_to"),r=[r=void 0===r?parseInt(e.data("min")):r,i=void 0===i?parseInt(e.data("max")):i];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:r,create:function(e,r){},step:1,slide:function(e,r){um_set_range_label(jQuery(this),r)},stop:function(e,r){um_is_directory_busy(t)||(um_members_show_preloader(t),um_set_url_from_data(t,"filter_"+a+"_from",r.values[0]),um_set_url_from_data(t,"filter_"+a+"_to",r.values[1]),t.data("page",1),um_set_url_from_data(t,"page",""),um_ajax_get_members(t),um_change_tag(t),t.data("searched",1),t.find(".um-member-directory-sorting-options").prop("disabled",!1),t.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),um_set_range_label(e)})}function um_datepicker_filter_init(e){e.find(".um-datepicker-filter").each(function(){var d=jQuery(this),u=new Date(1e3*d.data("date_min")),_=new Date(1e3*d.data("date_max")),e=d.pickadate({selectYears:!0,min:u,max:_,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){d.blur()},onClose:function(){d.blur()},onSet:function(e){var r,t,a,i,m;!e.select||um_is_directory_busy(r=d.parents(".um-directory"))||(um_members_show_preloader(r),t=d.data("filter_name"),a=d.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to"),void 0===i&&(i=u/1e3),void 0===m&&(m=_/1e3),e=e.select/1e3,d.val(),"from"===a?i=e:"to"===a&&(m=e),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled"))}}).pickadate("picker"),r=d.data("filter_name"),t=d.data("range"),r=um_get_data_for_directory(d.parents(".um-directory"),"filter_"+r+"_"+t);void 0!==r&&e.set("select",1e3*r)})}function um_timepicker_filter_init(e){e.find(".um-timepicker-filter").each(function(){var d=jQuery(this),u=d.attr("id"),_=d.data("filter_name"),s=d.attr("data-min"),o=d.attr("data-max"),e=s.split(":"),r=o.split(":"),e=d.pickatime({format:d.data("format"),interval:parseInt(d.data("intervals")),min:[e[0],e[1]],max:[r[0],r[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){d.blur()},onClose:function(){d.blur()},onSet:function(e){var r,t,a,i,m;!e.select||um_is_directory_busy(r=d.parents(".um-directory"))||(um_members_show_preloader(r),t=d.data("filter_name"),a=d.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to"),void 0===i&&(i=s),void 0===m&&(m=o),void 0!==e.select?(e=um_time_convert(e.select,a),"from"===a?i=e:"to"===a&&(m=e)):"from"===a?i=s:"to"===a&&(m=o),e=jQuery("#"+u).val(),"from"===d.data("range")?jQuery("#"+_+"_to").pickatime("picker").set("min",e):jQuery("#"+_+"_from").pickatime("picker").set("max",e),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled"))}}).pickatime("picker"),r=d.data("filter_name"),t=d.data("range"),r=um_get_data_for_directory(d.parents(".um-directory"),"filter_"+r+"_"+t);void 0!==r&&(t=r.split(":"),e.set("select",60*t[0]+ +t[1]))})}jQuery(document.body).ready(function(){jQuery(".um-directory .um-search-filter select").each(function(){1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0);var e=jQuery(this);e.select2("destroy").select2({dropdownParent:e.parent()})}),jQuery(document.body).on("mouseover",".um-directory .um-member-directory-view-type",function(){var e;jQuery(this).hasClass("um-disabled")||((e=jQuery(this).find(".um-member-directory-view-type-a:visible")).hide(),(e.next().length?e.next():jQuery(this).find(".um-member-directory-view-type-a:first")).show().tipsy("show"))}).on("mouseout",".um-directory .um-member-directory-view-type",function(){jQuery(this).hasClass("um-disabled")||(jQuery(this).find(".um-member-directory-view-type-a").hide().tipsy("hide"),jQuery(this).find('.um-member-directory-view-type-a[data-type="'+jQuery(this).parents(".um-directory").data("view_type")+'"]').show())}),jQuery(document.body).on("click",".um-directory .um-member-directory-view-type-a",function(){var e=jQuery(this).parents(".um-directory");if(um_is_directory_busy(e))return!1;var r,t=jQuery(this),a=t.parents(".um-member-directory-view-type");a.hasClass("um-disabled")||(um_members_show_preloader(e),(r=a.find(".um-member-directory-view-type-a:visible")).hide(),(r.next().length?r.next():a.find(".um-member-directory-view-type-a:first")).show().tipsy("show"),null!==(r=um_member_directory_last_data[um_members_get_hash(e)])&&(um_set_url_from_data(e,"view_type",a=t.data("type")),e.data("view_type",a),um_build_template(e,r),um_init_new_dropdown()),um_members_hide_preloader(e))}),jQuery(document.body).on("click",".um-directory .um-do-search",function(){um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("keypress",".um-directory .um-search-line",function(e){13===e.which&&um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("click",'.um-new-dropdown[data-element=".um-member-directory-sorting-a"] li a',function(){var e,r,t;1===jQuery(this).data("selected")||(e=jQuery(this).data("directory-hash"),um_is_directory_busy(e=jQuery('.um-directory[data-hash="'+e+'"]')))||(um_members_show_preloader(e),r=jQuery(this).html(),t=jQuery(this).data("value"),e.data("sorting",t),um_set_url_from_data(e,"sort",t),um_ajax_get_members(e),e.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),e.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"] a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),e.find(".um-member-directory-sorting-a").find("> a").html(r))}),jQuery(document.body).on("click",".um-directory .pagi:not(.current)",function(){var e,r;jQuery(this).hasClass("disabled")||um_is_directory_busy(e=jQuery(this).parents(".um-directory"))||(um_members_show_preloader(e),(1===(r="first"===jQuery(this).data("page")?1:"prev"===jQuery(this).data("page")?+e.data("page")-1:"next"===jQuery(this).data("page")?+e.data("page")+1:"last"===jQuery(this).data("page")?parseInt(e.data("total_pages")):parseInt(jQuery(this).data("page")))?(e.find('.pagi[data-page="first"], .pagi[data-page="prev"]').addClass("disabled"),e.find('.pagi[data-page="prev"], .pagi[data-page="last"]')):(r===parseInt(e.data("total_pages"))?e.find('.pagi[data-page="prev"], .pagi[data-page="last"]').addClass("disabled"):e.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled"),e.find('.pagi[data-page="first"], .pagi[data-page="prev"]'))).removeClass("disabled"),e.find(".pagi").removeClass("current"),e.find('.pagi[data-page="'+r+'"]').addClass("current"),e.data("page",r),um_set_url_from_data(e,"page",1===r?"":r),um_ajax_get_members(e))}),jQuery(document.body).on("change",".um-directory .um-members-pagi-dropdown",function(){var e,r=jQuery(this).parents(".um-directory");um_is_directory_busy(r)||(um_members_show_preloader(r),e=jQuery(this).val(),r.find(".pagi").removeClass("current"),r.find('.pagi[data-page="'+e+'"]').addClass("current"),r.data("page",e),um_set_url_from_data(r,"page",1===e?"":e),um_ajax_get_members(r))}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-more a",function(e){e.preventDefault();e=jQuery(this).parents(".um-member");return e.find(".um-member-more").hide(),e.find(".um-member-meta-main").slideDown(),e.find(".um-member-less").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-less a",function(e){e.preventDefault();e=jQuery(this).parents(".um-member");return e.find(".um-member-less").hide(),e.find(".um-member-meta-main").slideUp(),e.find(".um-member-more").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-more a",function(e){e.preventDefault();var e=jQuery(this).parents(".um-member"),r=jQuery(this).parents(".um-members");return e.find(".um-member-more").hide(),e.find(".um-member-meta").slideDown(function(){UM_Member_Grid(r)}),e.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(r)},100),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-less").hide(),r.find(".um-member-meta").slideUp(function(){r.find(".um-member-more").fadeIn(),UM_Member_Grid(t)}),!1}),jQuery(".um-member-directory-filters-a").on("click",function(){var e=jQuery(this),r=e.parents(".um-directory").find(".um-search");r.is(":visible")?r.slideUp(250,function(){e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}):r.slideDown({duration:250,start:function(){jQuery(this).css({display:"grid"}),e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}})}),jQuery(document.body).on("change",".um-directory .um-search-filter select",function(){var e,r,t,a=jQuery(this).val(),i=um_sanitize_value(a);""===i||um_is_directory_busy(e=jQuery(this).parents(".um-directory"))||(um_members_show_preloader(e),t=void 0===(t=um_get_data_for_directory(e,"filter_"+(r=jQuery(this).prop("name"))))?[]:t.split("||"),-1===jQuery.inArray(i,t)&&(t.push(i),um_set_url_from_data(e,"filter_"+r,t=t.join("||")),e.data("page",1),um_set_url_from_data(e,"page","")),jQuery(this).find('option[value="'+a+'"]').prop("disabled",!0).hide(),1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),(i=jQuery(this)).select2("destroy").select2({dropdownParent:i.parent()}),i.val("").trigger("change"),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}),jQuery(document.body).on("blur",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(){var e,r,t,a=jQuery(this).parents(".um-directory");um_is_directory_busy(a)||(e=um_sanitize_value(jQuery(this).val()))!==(t=void 0===(t=um_get_data_for_directory(a,"filter_"+(r=jQuery(this).prop("name"))))?"":t)&&(um_members_show_preloader(a),um_set_url_from_data(a,"filter_"+r,e),a.data("page",1),um_set_url_from_data(a,"page",""),um_ajax_get_members(a),um_change_tag(a),a.data("searched",1),a.find(".um-member-directory-sorting-options").prop("disabled",!1),a.find(".um-member-directory-view-type").removeClass("um-disabled"))}),jQuery(document.body).on("keypress",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(e){var r,t,a;13!==e.which||um_is_directory_busy(e=jQuery(this).parents(".um-directory"))||(r=um_sanitize_value(jQuery(this).val()))!==(a=void 0===(a=um_get_data_for_directory(e,"filter_"+(t=jQuery(this).prop("name"))))?"":a)&&(um_members_show_preloader(e),um_set_url_from_data(e,"filter_"+t,r),e.data("page",1),um_set_url_from_data(e,"page",""),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}),jQuery(document.body).on("click",".um-directory .um-members-filter-remove",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&e){um_members_show_preloader(e);var r=jQuery(this).data("value"),t=jQuery(this).data("name"),a=jQuery(this).data("type"),i=("text"===a?(um_set_url_from_data(e,"filter_"+t,""),jQuery('.um-search-filter input[name="'+t+'"]').val("")):"select"===a?(m=void 0===(m=um_get_data_for_directory(e,"filter_"+t))?[]:(m=um_unsanitize_value(m)).split("||"),um_set_url_from_data(e,"filter_"+t,m=(m=-1!==jQuery.inArray(r.toString(),m)?jQuery.grep(m,function(e){return e!==r.toString()}):m).length?m:""),(m=jQuery('.um-search-filter select[name="'+t+'"]')).find('option[value="'+r+'"]').prop("disabled",!1).show(),1a.data("total_pages")&&(t=a.data("total_pages")),a.data("page",t).attr("data-page",t),a.find(".um-member-directory-sorting").length&&(void 0===(t=um_get_data_for_directory(a,"sort"))&&(t=a.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find('a[data-default="1"]').data("value")),a.data("sorting",t),(e=a.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]')).find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),e.find('a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),a.find(".um-member-directory-sorting-a").find("> a").html(e.find('a[data-value="'+t+'"]').html())),a.find(".um-member-directory-view-type").length&&(void 0===(e=um_get_data_for_directory(a,"view_type"))&&(e=a.find('.um-member-directory-view-type-a[data-default="1"]').data("type")),a.data("view_type",e),a.find(".um-member-directory-view-type .um-member-directory-view-type-a").hide(),a.find('.um-member-directory-view-type .um-member-directory-view-type-a[data-type="'+e+'"]').show()),a.find(".um-datepicker-filter").each(function(){var e=jQuery(this),r=e.pickadate("picker"),t=e.data("filter_name"),e=e.data("range"),t=um_get_data_for_directory(a,"filter_"+t+"_"+e);void 0!==t?r.set("select",1e3*t):r.clear()}),a.find(".um-slider").each(function(){var e=jQuery(this),r=e.data("field_name"),t=um_get_data_for_directory(a,"filter_"+r+"_from"),r=um_get_data_for_directory(a,"filter_"+r+"_to");void 0===t&&(t=e.data("min")),t=parseInt(t),void 0===r&&(r=e.data("max")),r=parseInt(r),e.slider("values",[t,r]),um_set_range_label(e)}),a.find(".um-timepicker-filter").each(function(){var e=jQuery(this),r=e.pickatime("picker"),t=e.data("filter_name"),e=e.data("range"),t=um_get_data_for_directory(a,"filter_"+t+"_"+e);void 0!==t?(e=t.split(":"),r.set("select",60*e[0])):r.clear()}),wp.hooks.applyFilters("um_member_directory_ignore_after_search",!1,a));if(!t&&1===a.data("must-search")){var i=um_get_search(a);if(!um_get_filters_data(a).length&&!i)return a.data("searched",0),void um_members_hide_preloader(a);a.data("searched",1)}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,a,r)||(um_ajax_get_members(a),um_change_tag(a))})})}); \ No newline at end of file From 42aa4ab1698430c62de01f9554bc99c8602cb44a Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Tue, 10 Feb 2026 10:30:30 +0200 Subject: [PATCH 17/17] Update plugin changelog and readme for version 2.11.2 Adjusted dates for version 2.11.2 release and added details of a new JS filter for improved 3rd-party integration. This update includes enhancements like server-side validation for search forms and a new action hook for user approval after email validation. --- changelog.txt | 3 ++- readme.txt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/changelog.txt b/changelog.txt index 36a987b2..4dfd29cb 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,11 +1,12 @@ == Changelog == -= 2.11.2 February 09, 2026 = += 2.11.2 February 10, 2026 = * Enhancements: - Added: Server-side validation when the Search Form is submitted. - Added: Action hook `um_approve_user_on_email_confirmation` to natively approve the user after validating the email activation link. + - Added: JS filter wp.hook `um_member_directory_popstate_ignore` to stop window.pushSate in the member directory for 3rd-party integrations. * Bugfixes: diff --git a/readme.txt b/readme.txt index ea574ada..f30a5bf3 100644 --- a/readme.txt +++ b/readme.txt @@ -167,12 +167,13 @@ No specific extensions are needed. But we highly recommended keep active these P IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSION 2.6.7 PATCHES SECURITY PRIVILEGE ESCALATION VULNERABILITY. PLEASE SEE [THIS ARTICLE](https://docs.ultimatemember.com/article/1866-security-incident-update-and-recommended-actions) FOR MORE INFORMATION -= 2.11.2 2026-02-09 = += 2.11.2 2026-02-10 = **Enhancements** * Added: Server-side validation when the Search Form is submitted. * Added: Action hook `um_approve_user_on_email_confirmation` to natively approve the user after validating the email activation link. +* Added: JS filter wp.hook `um_member_directory_popstate_ignore` to stop window.pushSate in the member directory for 3rd-party integrations. **Bugfixes**