diff --git a/README.md b/README.md index 3a8a3db0..e6e01e29 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Ultimate Member is the #1 user profile & membership plugin for WordPress. The pl | Latest Version |Requires at least|Stable Tag| | :------------: |:------------:|:------------:| -| 2.0.33 | WordPress 4.9 or higher| 2.0.33 | +| 2.0.34 | WordPress 4.9 or higher| 2.0.34 | Features of the plugin include: @@ -48,7 +48,7 @@ GNU Version 2 or Any Later Version Releases ==================== -[Official Release Version: 2.0.33](https://github.com/ultimatemember/ultimatemember/releases/tag/2.0.33). +[Official Release Version: 2.0.34](https://github.com/ultimatemember/ultimatemember/releases/tag/2.0.34). Changelog ==================== diff --git a/includes/admin/class-admin.php b/includes/admin/class-admin.php index 48494113..fc1107f4 100644 --- a/includes/admin/class-admin.php +++ b/includes/admin/class-admin.php @@ -79,8 +79,7 @@ if ( ! class_exists( 'um\admin\Admin' ) ) { if ( empty( $last_request ) || time() > $last_request + DAY_IN_SECONDS ) { - delete_transient( 'update_plugins' ); - delete_site_transient( 'update_plugins' ); + wp_clean_update_cache(); UM()->plugin_updater()->um_checklicenses(); diff --git a/includes/admin/core/class-admin-forms.php b/includes/admin/core/class-admin-forms.php index 1f227fa2..1a700812 100644 --- a/includes/admin/core/class-admin-forms.php +++ b/includes/admin/core/class-admin-forms.php @@ -393,7 +393,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) { $name_attr = ' name="' . $name . '" '; $value = $this->get_field_value( $field_data ); - $value_attr = ' value="' . $value . '" '; + $value_attr = ' value="' . esc_attr( $value ) . '" '; $html = ""; diff --git a/includes/core/class-logout.php b/includes/core/class-logout.php index 4547bf7a..27498654 100644 --- a/includes/core/class-logout.php +++ b/includes/core/class-logout.php @@ -1,9 +1,11 @@ config()->permalinks['login']; + return get_permalink( $login_page_id ); } @@ -28,44 +40,44 @@ if ( ! class_exists( 'um\core\Logout' ) ) { * Logout via logout page */ function logout_page() { - - $language_code = ''; - $current_page_ID = get_the_ID(); - $logout_page_id = UM()->config()->permalinks['logout']; - $trid = 0; - - if ( is_home() /*|| is_front_page()*/ ) { + if ( is_home() ) { return; } + $trid = 0; + $language_code = ''; if ( UM()->external_integrations()->is_wpml_active() ) { global $sitepress; $default_lang = $sitepress->get_default_language(); - $language_code = $sitepress->get_current_language(); + $language_code = $sitepress->get_current_language(); + if ( $language_code == $default_lang ) { + $language_code = ''; + } + + $current_page_ID = get_the_ID(); if ( function_exists( 'icl_object_id' ) ) { $trid = icl_object_id( $current_page_ID, 'page', true, $default_lang ); } else { $trid = wpml_object_id_filter( $current_page_ID, 'page', true, $default_lang ); } - - if ( $language_code == $default_lang ) { - $language_code = ''; - } } + $logout_page_id = UM()->config()->permalinks['logout']; if ( um_is_core_page( 'logout' ) || ( $trid > 0 && $trid == $logout_page_id ) ) { if ( is_user_logged_in() ) { + add_filter( 'wp_safe_redirect_fallback', array( &$this, 'safe_redirect_default' ), 10, 2 ); + if ( isset( $_REQUEST['redirect_to'] ) && $_REQUEST['redirect_to'] !== '' ) { wp_logout(); session_unset(); - exit( wp_redirect( $_REQUEST['redirect_to'] ) ); + exit( wp_safe_redirect( $_REQUEST['redirect_to'] ) ); } else if ( um_user('after_logout') == 'redirect_home' ) { wp_logout(); session_unset(); - exit( wp_redirect( home_url( $language_code ) ) ); + exit( wp_safe_redirect( home_url( $language_code ) ) ); } else { /** * UM hook @@ -92,12 +104,12 @@ if ( ! class_exists( 'um\core\Logout' ) ) { $redirect_url = apply_filters( 'um_logout_redirect_url', um_user( 'logout_redirect_url' ), um_user( 'ID' ) ); wp_logout(); session_unset(); - exit( wp_redirect( $redirect_url ) ); - + exit( wp_safe_redirect( $redirect_url ) ); } } else { - exit( wp_redirect( home_url( $language_code ) ) ); + add_filter( 'wp_safe_redirect_fallback', array( &$this, 'safe_redirect_default' ), 10, 2 ); + exit( wp_safe_redirect( home_url( $language_code ) ) ); } } diff --git a/includes/core/class-plugin-updater.php b/includes/core/class-plugin-updater.php index 54c30af3..db5aa261 100644 --- a/includes/core/class-plugin-updater.php +++ b/includes/core/class-plugin-updater.php @@ -126,10 +126,15 @@ if ( ! class_exists( 'um\core\Plugin_Updater' ) ) { // Per site activated $sites = get_sites(); + $sitewide_plugins = get_site_option( 'active_sitewide_plugins' ); + $sitewide_plugins = array_keys( $sitewide_plugins ); + foreach ( $sites as $site ) { switch_to_blog( $site->blog_id ); $the_plugs = get_option( 'active_plugins' ); + $the_plugs = array_merge( $the_plugs, $sitewide_plugins ); + foreach ( $the_plugs as $key => $value ) { if ( in_array( $value, array_keys( $paid_extensions ) ) ) { diff --git a/includes/core/um-actions-login.php b/includes/core/um-actions-login.php index 5e6ec0d1..f6d74f06 100644 --- a/includes/core/um-actions-login.php +++ b/includes/core/um-actions-login.php @@ -386,7 +386,7 @@ function um_add_submit_button_to_login( $args ) { * } * ?> */ - $secondary_btn_word = apply_filters('um_login_form_button_two', $args['secondary_btn_word'], $args ); + $secondary_btn_word = apply_filters( 'um_login_form_button_two', $args['secondary_btn_word'], $args ); $secondary_btn_url = ( isset( $args['secondary_btn_url'] ) && $args['secondary_btn_url'] ) ? $args['secondary_btn_url'] : um_get_core_page('register'); /** @@ -423,18 +423,18 @@ function um_add_submit_button_to_login( $args ) { if ( isset( $args['secondary_btn'] ) && $args['secondary_btn'] != 0 ) { ?>
- +
- +
- +
diff --git a/includes/core/um-actions-profile.php b/includes/core/um-actions-profile.php index 500f28af..6bf5c79a 100644 --- a/includes/core/um-actions-profile.php +++ b/includes/core/um-actions-profile.php @@ -1191,18 +1191,22 @@ function um_add_submit_button_to_profile( $args ) {
- + -
-
+
+ +
+ -
+
+ +
diff --git a/includes/core/um-actions-register.php b/includes/core/um-actions-register.php index 5fe71b58..eba640c7 100644 --- a/includes/core/um-actions-register.php +++ b/includes/core/um-actions-register.php @@ -509,7 +509,7 @@ function um_add_submit_button_to_register( $args ) { * } * ?> */ - $secondary_btn_word = apply_filters('um_register_form_button_two', $secondary_btn_word, $args ); + $secondary_btn_word = apply_filters( 'um_register_form_button_two', $secondary_btn_word, $args ); $secondary_btn_url = ( isset( $args['secondary_btn_url'] ) && $args['secondary_btn_url'] ) ? $args['secondary_btn_url'] : um_get_core_page('login'); /** @@ -538,14 +538,22 @@ function um_add_submit_button_to_register( $args ) {
- + -
-
+
+ +
+
+ + + +
-
+
+ +
diff --git a/languages/ultimate-member-en_US.po b/languages/ultimate-member-en_US.po index 525b73a0..3057990d 100644 --- a/languages/ultimate-member-en_US.po +++ b/languages/ultimate-member-en_US.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: Ultimate Member\n" -"POT-Creation-Date: 2018-12-05 10:54+0200\n" -"PO-Revision-Date: 2018-12-05 10:54+0200\n" +"POT-Creation-Date: 2018-12-07 10:26+0200\n" +"PO-Revision-Date: 2018-12-07 10:26+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: en_US\n" @@ -25,53 +25,53 @@ msgstr "" msgid "Wrong Nonce" msgstr "" -#: includes/admin/class-admin.php:181 +#: includes/admin/class-admin.php:180 #, php-format msgid "Duplicate of %s" msgstr "" -#: includes/admin/class-admin.php:295 +#: includes/admin/class-admin.php:294 msgid "Docs" msgstr "" -#: includes/admin/class-admin.php:296 +#: includes/admin/class-admin.php:295 #: includes/admin/core/class-admin-settings.php:1128 msgid "Settings" msgstr "" -#: includes/admin/class-admin.php:367 includes/admin/class-admin.php:370 +#: includes/admin/class-admin.php:366 includes/admin/class-admin.php:369 msgid "Form updated." msgstr "" -#: includes/admin/class-admin.php:368 +#: includes/admin/class-admin.php:367 msgid "Custom field updated." msgstr "" -#: includes/admin/class-admin.php:369 +#: includes/admin/class-admin.php:368 msgid "Custom field deleted." msgstr "" -#: includes/admin/class-admin.php:371 +#: includes/admin/class-admin.php:370 msgid "Form restored to revision." msgstr "" -#: includes/admin/class-admin.php:372 +#: includes/admin/class-admin.php:371 msgid "Form created." msgstr "" -#: includes/admin/class-admin.php:373 +#: includes/admin/class-admin.php:372 msgid "Form saved." msgstr "" -#: includes/admin/class-admin.php:374 +#: includes/admin/class-admin.php:373 msgid "Form submitted." msgstr "" -#: includes/admin/class-admin.php:375 +#: includes/admin/class-admin.php:374 msgid "Form scheduled." msgstr "" -#: includes/admin/class-admin.php:376 +#: includes/admin/class-admin.php:375 msgid "Form draft updated." msgstr "" @@ -103,7 +103,7 @@ msgstr "" #: includes/admin/core/class-admin-builder.php:767 #: includes/admin/core/class-admin-dragdrop.php:32 #: includes/admin/core/class-admin-menu.php:104 -#: includes/core/class-fields.php:4065 +#: includes/core/class-fields.php:4066 msgid "Please login as administrator" msgstr "" @@ -2514,7 +2514,7 @@ msgid "UM Action" msgstr "" #: includes/admin/core/class-admin-users.php:116 -#: includes/core/class-fields.php:2300 +#: includes/core/class-fields.php:2301 msgid "Apply" msgstr "" @@ -3488,7 +3488,7 @@ msgstr "" #: includes/admin/templates/modal/dynamic_new_group.php:15 #: includes/admin/templates/modal/fonticons.php:11 #: includes/admin/templates/role/publish.php:24 -#: includes/core/class-fields.php:2301 includes/core/class-fields.php:2398 +#: includes/core/class-fields.php:2302 includes/core/class-fields.php:2399 #: includes/core/um-actions-profile.php:554 #: includes/core/um-actions-profile.php:693 #: includes/core/um-actions-profile.php:726 @@ -6205,89 +6205,89 @@ msgstr "" msgid "Add translation to %s" msgstr "" -#: includes/core/class-fields.php:1165 templates/message.php:5 +#: includes/core/class-fields.php:1166 templates/message.php:5 #, php-format msgid "%s" msgstr "" -#: includes/core/class-fields.php:1184 +#: includes/core/class-fields.php:1185 msgid "Custom Field" msgstr "" -#: includes/core/class-fields.php:1481 +#: includes/core/class-fields.php:1482 msgid "Please upload a valid image!" msgstr "" -#: includes/core/class-fields.php:1488 includes/core/class-fields.php:1509 +#: includes/core/class-fields.php:1489 includes/core/class-fields.php:1510 msgid "Upload" msgstr "" -#: includes/core/class-fields.php:1489 +#: includes/core/class-fields.php:1490 msgid "Sorry this is not a valid image." msgstr "" -#: includes/core/class-fields.php:1490 +#: includes/core/class-fields.php:1491 msgid "This image is too large!" msgstr "" -#: includes/core/class-fields.php:1491 +#: includes/core/class-fields.php:1492 msgid "This image is too small!" msgstr "" -#: includes/core/class-fields.php:1492 +#: includes/core/class-fields.php:1493 msgid "You can only upload one image" msgstr "" -#: includes/core/class-fields.php:1959 +#: includes/core/class-fields.php:1960 msgid "Current Password" msgstr "" -#: includes/core/class-fields.php:1988 +#: includes/core/class-fields.php:1989 msgid "New Password" msgstr "" -#: includes/core/class-fields.php:2020 +#: includes/core/class-fields.php:2021 #, php-format msgid "Confirm %s" msgstr "" -#: includes/core/class-fields.php:2255 +#: includes/core/class-fields.php:2256 msgid "Upload Photo" msgstr "" -#: includes/core/class-fields.php:2276 includes/core/class-fields.php:2300 +#: includes/core/class-fields.php:2277 includes/core/class-fields.php:2301 #: includes/core/um-actions-profile.php:724 msgid "Change photo" msgstr "" -#: includes/core/class-fields.php:2300 includes/core/class-fields.php:2397 +#: includes/core/class-fields.php:2301 includes/core/class-fields.php:2398 msgid "Processing..." msgstr "" -#: includes/core/class-fields.php:2322 +#: includes/core/class-fields.php:2323 msgid "Upload File" msgstr "" -#: includes/core/class-fields.php:2364 includes/core/um-filters-fields.php:243 +#: includes/core/class-fields.php:2365 includes/core/um-filters-fields.php:243 msgid "This file has been removed." msgstr "" -#: includes/core/class-fields.php:2367 includes/core/class-fields.php:2397 +#: includes/core/class-fields.php:2368 includes/core/class-fields.php:2398 msgid "Change file" msgstr "" -#: includes/core/class-fields.php:2397 +#: includes/core/class-fields.php:2398 msgid "Save" msgstr "" -#: includes/core/class-fields.php:3820 +#: includes/core/class-fields.php:3821 #, php-format msgid "" "Your profile is looking a little empty. Why not add some " "information!" msgstr "" -#: includes/core/class-fields.php:3822 +#: includes/core/class-fields.php:3823 msgid "This user has not added any information to their profile yet." msgstr "" @@ -6374,7 +6374,7 @@ msgid "This activation link is expired or have already been used." msgstr "" #. translators: %s: support forums URL -#: includes/core/class-plugin-updater.php:220 +#: includes/core/class-plugin-updater.php:248 #, php-format msgid "" "An unexpected error occurred. Something may be wrong with https://" @@ -6382,7 +6382,7 @@ msgid "" "have problems, please try the support forums." msgstr "" -#: includes/core/class-plugin-updater.php:221 +#: includes/core/class-plugin-updater.php:249 msgid "https://wordpress.org/support/" msgstr "" @@ -6720,35 +6720,35 @@ msgstr "" msgid "Only fill in if you are not human" msgstr "" -#: includes/core/um-actions-login.php:20 +#: includes/core/um-actions-login.php:18 msgid "Please enter your username or email" msgstr "" -#: includes/core/um-actions-login.php:24 +#: includes/core/um-actions-login.php:22 msgid "Please enter your username" msgstr "" -#: includes/core/um-actions-login.php:28 +#: includes/core/um-actions-login.php:26 msgid "Please enter your email" msgstr "" -#: includes/core/um-actions-login.php:61 +#: includes/core/um-actions-login.php:59 msgid "Please enter your password" msgstr "" -#: includes/core/um-actions-login.php:68 +#: includes/core/um-actions-login.php:66 msgid "Password is incorrect. Please try again." msgstr "" -#: includes/core/um-actions-login.php:199 +#: includes/core/um-actions-login.php:195 msgid "This action has been prevented for security measures." msgstr "" -#: includes/core/um-actions-login.php:423 +#: includes/core/um-actions-login.php:419 msgid "Keep me signed in" msgstr "" -#: includes/core/um-actions-login.php:458 +#: includes/core/um-actions-login.php:463 msgid "Forgot your password?" msgstr "" diff --git a/readme.txt b/readme.txt index c47ec432..ebbacc38 100644 --- a/readme.txt +++ b/readme.txt @@ -137,21 +137,25 @@ The plugin works with popular caching plugins by automatically excluding Ultimat = Important: UM2.0+ is a significant update to the code base from 1.3.88. Please make sure you take a full-site backup with restore point before updating the plugin = -= 2.0.34: December , 2018 = += 2.0.34: December 7, 2018 = * Enhancements: - Added new "Extensions" class for future integrations * Bugfixes: + - Fixed logout redirect vulnerability - Fixed modal window responsive position - Fixed class autoloader for Windows servers - Fixed admin forms integration - Fixed empty value for select2 selectbox - Fixed unchecked Remember Me by default on login page + - Fixed admin forms esc_attr value + - Fixed admin forms buttons wp_unslash + - Fixed get/clean plugin upgrades on multisites * Deprecated: - - removed "UM_TEXTDOMAIN" constant; - - removed function UM()->get_ajax_route(); + - removed "UM_TEXTDOMAIN" constant + - removed function UM()->get_ajax_route() for AJAX vulnerability fix = 2.0.33: November 22, 2018 =