diff --git a/composer.json b/composer.json
index 994e1a1f..e309c5c1 100644
--- a/composer.json
+++ b/composer.json
@@ -7,6 +7,14 @@
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
+ "ext-mbstring": "*",
+ "ext-json": "*",
+ "ext-dom": "*",
+ "ext-exif": "*",
+ "ext-gd": "*",
+ "ext-fileinfo": "*",
+ "ext-curl": "*",
+ "ext-iconv": "*",
"woocommerce/action-scheduler": "3.2.1"
},
"require-dev": {
diff --git a/includes/admin/assets/css/um-admin-settings.css b/includes/admin/assets/css/um-admin-settings.css
index 0f8d78df..8dab9844 100644
--- a/includes/admin/assets/css/um-admin-settings.css
+++ b/includes/admin/assets/css/um-admin-settings.css
@@ -46,6 +46,20 @@
text-align: center;
}
+.wp-list-table.templates .column-core_version {
+ width: 100px;
+ text-align: center;
+}
+
+.wp-list-table.templates .column-theme_version {
+ width: 100px;
+ text-align: center;
+}
+
+.wp-list-table.templates .column-status {
+ width: 260px;
+}
+
th.column-email.column-primary {
padding-left: 48px;
}
@@ -213,6 +227,16 @@ th.column-email.column-primary {
.um-small-field {
width:50%;
}
+
+ .wp-list-table.templates .column-core_version {
+ width: auto;
+ text-align: left;
+ }
+
+ .wp-list-table.templates .column-theme_version {
+ width: auto;
+ text-align: left;
+ }
}
/*
@@ -243,4 +267,4 @@ th.column-email.column-primary {
.um_setting_ajax_button_response.complete {
color:darkgreen;
font-style: italic;
-}
\ No newline at end of file
+}
diff --git a/includes/admin/class-admin.php b/includes/admin/class-admin.php
index c6cf0c80..0e59a9fb 100644
--- a/includes/admin/class-admin.php
+++ b/includes/admin/class-admin.php
@@ -80,6 +80,7 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
add_action( 'um_admin_do_action__um_can_register_notice', array( &$this, 'um_hide_notice' ) );
add_action( 'um_admin_do_action__um_hide_exif_notice', array( &$this, 'um_hide_notice' ) );
add_action( 'um_admin_do_action__user_action', array( &$this, 'user_action' ) );
+ add_action( 'um_admin_do_action__check_templates_version', array( &$this, 'check_templates_version' ) );
add_action( 'um_admin_do_action__install_core_pages', array( &$this, 'install_core_pages' ) );
@@ -1868,6 +1869,36 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
}
+ /**
+ * Manual check templates versions
+ *
+ * @param $action
+ */
+ public function check_templates_version( $action ) {
+ $templates = UM()->admin_settings()->get_override_templates( true );
+ $out_date = false;
+
+ foreach ( $templates as $template ) {
+ if ( 0 === $template['status_code'] ) {
+ $out_date = true;
+ break;
+ }
+ }
+
+ if ( false === $out_date ) {
+ delete_option( 'um_override_templates_outdated' );
+ }
+
+ $url = add_query_arg(
+ array(
+ 'page' => 'um_options',
+ 'tab' => 'override_templates',
+ ),
+ admin_url( 'admin.php' )
+ );
+ wp_safe_redirect( $url );
+ exit;
+ }
/**
* Add any custom links to plugin page
diff --git a/includes/admin/core/class-admin-notices.php b/includes/admin/core/class-admin-notices.php
index 7b335fc5..fa68e9f1 100644
--- a/includes/admin/core/class-admin-notices.php
+++ b/includes/admin/core/class-admin-notices.php
@@ -52,6 +52,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
$this->extensions_page();
+ $this->template_version();
+
// removed for now to avoid the bad reviews
//$this->reviews_notice();
@@ -714,6 +716,37 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
}
+ /**
+ * Check Templates Versions notice
+ */
+ public function template_version() {
+ if ( true === get_option( 'um_override_templates_outdated' ) ) {
+ $link = admin_url( 'admin.php?page=um_options&tab=override_templates' );
+ ob_start();
+ ?>
+
+
+ override templates status page and update templates.', 'ultimate-member' ), $link ), UM()->get_allowed_html( 'admin_notice' ) );
+ ?>
+
+
+ admin()->notices()->add_notice(
+ 'um_override_templates_notice',
+ array(
+ 'class' => 'error',
+ 'message' => $message,
+ 'dismissible' => false,
+ ),
+ 10
+ );
+ }
+ }
+
+
function dismiss_notice() {
UM()->admin()->check_ajax_nonce();
diff --git a/includes/admin/core/class-admin-settings.php b/includes/admin/core/class-admin-settings.php
index d7beb454..a12d75a8 100644
--- a/includes/admin/core/class-admin-settings.php
+++ b/includes/admin/core/class-admin-settings.php
@@ -64,10 +64,12 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
add_filter( 'um_settings_section_install_info__content', array( $this, 'settings_install_info_tab' ), 10, 2 );
+ //custom content for override templates tab
+ add_action( 'plugins_loaded', array( $this, 'um_check_template_version' ), 10 );
+ add_filter( 'um_settings_section_override_templates__content', array( $this, 'settings_override_templates_tab' ), 10, 2 );
add_filter( 'um_settings_structure', array( $this, 'sorting_licenses_options' ), 9999, 1 );
-
//save handlers
add_action( 'admin_init', array( $this, 'save_settings_handler' ), 10 );
@@ -75,10 +77,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
add_action( 'um_settings_before_save', array( $this, 'check_permalinks_changes' ) );
add_action( 'um_settings_save', array( $this, 'on_settings_save' ) );
-
add_filter( 'um_change_settings_before_save', array( $this, 'save_email_templates' ) );
-
//save licenses options
add_action( 'um_settings_before_save', array( $this, 'before_licenses_save' ) );
add_action( 'um_settings_save', array( $this, 'licenses_save' ) );
@@ -1839,6 +1839,14 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
),
),
),
+ 'override_templates' => array(
+ 'title' => __( 'Override templates', 'ultimate-member' ),
+ 'fields' => array(
+ array(
+ 'type' => 'override_templates',
+ ),
+ ),
+ ),
)
);
@@ -1966,7 +1974,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
*/
do_action( "um_settings_page_before_" . $current_tab . "_" . $current_subtab . "_content" );
- if ( in_array( $current_tab, apply_filters('um_settings_custom_tabs', array( 'licenses', 'install_info' ) ) ) || in_array( $current_subtab, apply_filters( 'um_settings_custom_subtabs', array(), $current_tab ) ) ) {
+ if ( in_array( $current_tab, apply_filters('um_settings_custom_tabs', array( 'licenses', 'install_info', 'override_templates' ) ) ) || in_array( $current_subtab, apply_filters( 'um_settings_custom_subtabs', array(), $current_tab ) ) ) {
/**
* UM hook
@@ -3007,6 +3015,186 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
return $section;
}
+ /**
+ * Periodically checking the versions of templates.
+ *
+ * @since 2.6.1
+ *
+ * @return void
+ */
+ public function um_check_template_version() {
+ $um_check_version = get_transient( 'um_check_template_versions' );
+ if ( false === $um_check_version ) {
+ $this->get_override_templates();
+ }
+ }
+
+ /**
+ * HTML for Settings > Override Templates tab.
+ * @return void
+ */
+ public function settings_override_templates_tab() {
+ $um_check_version = get_transient( 'um_check_template_versions' );
+ ?>
+
+
+
+
+
+
+
+
+ here.', 'ultimate-member' ), 'https://docs.ultimatemember.com/article/1516-templates-map' ), UM()->get_allowed_html( 'admin_notice' ) );
+ ?>
+
+
+ scan_template_files( um_path . '/templates/' );
+ $scan_files = apply_filters( 'um_override_templates_scan_files', $scan_files );
+ $out_date = false;
+
+ set_transient( 'um_check_template_versions', time(), 12 * HOUR_IN_SECONDS );
+
+ foreach ( $scan_files as $key => $file ) {
+ if ( ! str_contains( $file, 'email/' ) ) {
+ $located = apply_filters( 'um_override_templates_get_template_path', array(), $file );
+
+ if ( ! empty( $located ) ) {
+ $theme_file = $located['theme'];
+ } elseif ( file_exists( get_stylesheet_directory() . '/ultimate-member/templates/' . $file ) ) {
+ $theme_file = get_stylesheet_directory() . '/ultimate-member/templates/' . $file;
+ } else {
+ $theme_file = false;
+ }
+ if ( ! empty( $theme_file ) ) {
+ $core_file = $file;
+
+ if ( ! empty( $located ) ) {
+ $core_path = $located['core'];
+ } else {
+ $core_path = um_path . '/templates/' . $core_file;
+ }
+ $core_version = $this->get_file_version( $core_path );
+ $theme_version = $this->get_file_version( $theme_file );
+
+ $status = esc_html__( 'Theme version up to date', 'ultimate-member' );
+ $status_code = 1;
+ if ( version_compare( $theme_version, $core_version, '<' ) ) {
+ $status = esc_html__( 'Theme version is out of date', 'ultimate-member' );
+ $status_code = 0;
+ }
+ if ( '' === $theme_version ) {
+ $status = esc_html__( 'Theme version is empty', 'ultimate-member' );
+ $status_code = 0;
+ }
+ if ( 0 === $status_code ) {
+ $out_date = true;
+ update_option( 'um_override_templates_outdated', true );
+ }
+ $outdated_files[] = array(
+ 'core_version' => $core_version,
+ 'theme_version' => $theme_version,
+ 'core_file' => stristr( um_path . 'templates/' . $core_file, 'wp-content' ),
+ 'theme_file' => stristr( $theme_file, 'wp-content' ),
+ 'status' => $status,
+ 'status_code' => $status_code,
+ );
+ }
+ }
+ }
+
+ if ( false === $out_date ) {
+ delete_option( 'um_override_templates_outdated' );
+ }
+ update_option( 'um_template_statuses', $outdated_files );
+ if ( true === $get_list ) {
+ return $outdated_files;
+ }
+ }
+
+
+ /**
+ * Scan the template files.
+ *
+ * @param string $template_path Path to the template directory.
+ * @return array
+ */
+ public static function scan_template_files( $template_path ) {
+ $files = @scandir( $template_path ); // @codingStandardsIgnoreLine.
+ $result = array();
+
+ if ( ! empty( $files ) ) {
+
+ foreach ( $files as $value ) {
+
+ if ( ! in_array( $value, array( '.', '..' ), true ) ) {
+
+ if ( is_dir( $template_path . DIRECTORY_SEPARATOR . $value ) ) {
+ $sub_files = self::scan_template_files( $template_path . DIRECTORY_SEPARATOR . $value );
+ foreach ( $sub_files as $sub_file ) {
+ $result[] = $value . DIRECTORY_SEPARATOR . $sub_file;
+ }
+ } else {
+ $result[] = $value;
+ }
+ }
+ }
+ }
+ return $result;
+ }
+
+ /**
+ * @param $file string
+ *
+ * @return string
+ */
+ public static function get_file_version( $file ) {
+ // Avoid notices if file does not exist.
+ if ( ! file_exists( $file ) ) {
+ return '';
+ }
+
+ // We don't need to write to the file, so just open for reading.
+ $fp = fopen( $file, 'r' ); // @codingStandardsIgnoreLine.
+
+ // Pull only the first 8kiB of the file in.
+ $file_data = fread( $fp, 8192 ); // @codingStandardsIgnoreLine.
+
+ // PHP will close file handle, but we are good citizens.
+ fclose( $fp ); // @codingStandardsIgnoreLine.
+
+ // Make sure we catch CR-only line endings.
+ $file_data = str_replace( "\r", "\n", $file_data );
+ $version = '';
+
+ if ( preg_match( '/^[ \t\/*#@]*' . preg_quote( '@version', '/' ) . '(.*)$/mi', $file_data, $match ) && $match[1] ) {
+ $version = _cleanup_header_comment( $match[1] );
+ }
+
+ return $version;
+ }
+
/**
* @param $html
diff --git a/includes/admin/core/list-tables/version-template-list-table.php b/includes/admin/core/list-tables/version-template-list-table.php
new file mode 100644
index 00000000..940ba523
--- /dev/null
+++ b/includes/admin/core/list-tables/version-template-list-table.php
@@ -0,0 +1,215 @@
+ __( 'item', 'ultimate-member' ),
+ 'plural' => __( 'items', 'ultimate-member' ),
+ 'ajax' => false,
+ )
+ );
+
+ $this->no_items_message = $args['plural'] . ' ' . __( 'not found.', 'ultimate-member' );
+
+ parent::__construct( $args );
+ }
+
+ /**
+ * @param callable $name
+ * @param array $arguments
+ *
+ * @return mixed
+ */
+ public function __call( $name, $arguments ) {
+ return call_user_func_array( array( $this, $name ), $arguments );
+ }
+
+ /**
+ *
+ */
+ public function prepare_items() {
+ $screen = $this->screen;
+
+ $columns = $this->get_columns();
+ $sortable = $this->get_sortable_columns();
+ $this->_column_headers = array( $columns, array(), $sortable );
+
+ $templates = get_option( 'um_template_statuses', array() );
+ $templates = is_array( $templates ) ? $templates : array();
+
+ @uasort(
+ $templates,
+ function ( $a, $b ) {
+ if ( strtolower( $a['status_code'] ) === strtolower( $b['status_code'] ) ) {
+ return 0;
+ }
+ return ( strtolower( $a['status_code'] ) < strtolower( $b['status_code'] ) ) ? -1 : 1;
+ }
+ );
+
+ $per_page = $this->get_items_per_page( str_replace( '-', '_', $screen->id . '_per_page' ), 999 );
+ $paged = $this->get_pagenum();
+
+ $this->items = array_slice( $templates, ( $paged - 1 ) * $per_page, $per_page );
+
+ $this->set_pagination_args(
+ array(
+ 'total_items' => count( $templates ),
+ 'per_page' => $per_page,
+ )
+ );
+ }
+
+ /**
+ * @param object $item
+ * @param string $column_name
+ *
+ * @return string
+ */
+ public function column_default( $item, $column_name ) {
+ if ( isset( $item[ $column_name ] ) ) {
+ return $item[ $column_name ];
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ *
+ */
+ public function no_items() {
+ echo $this->no_items_message;
+ }
+
+ /**
+ * @param array $args
+ *
+ * @return $this
+ */
+ public function set_columns( $args = array() ) {
+ $this->columns = $args;
+ return $this;
+ }
+
+ /**
+ * @return array
+ */
+ public function get_columns() {
+ return $this->columns;
+ }
+
+ /**
+ * @param $item
+ *
+ * @return string
+ */
+ public function column_template( $item ) {
+ $output = esc_html__( 'Core path - ', 'ultimate-member' );
+ $output .= $item['core_file'] . '
';
+ $output .= esc_html__( 'Theme path - ', 'ultimate-member' );
+ $output .= $item['theme_file'];
+
+ return $output;
+ }
+
+ /**
+ * @param $item
+ *
+ * @return string
+ */
+ public function column_core_version( $item ) {
+ return $item['core_version'];
+ }
+
+ /**
+ * @param $item
+ *
+ * @return string
+ */
+ public function column_theme_version( $item ) {
+ return $item['theme_version'] ? $item['theme_version'] : '-';
+ }
+
+ /**
+ * @param $item
+ *
+ * @return string
+ */
+ public function column_status( $item ) {
+ $icon = 1 === $item['status_code'] ? 'um-notification-is-active dashicons-yes' : 'dashicons-no-alt';
+ return $item['status'] . ' ';
+ }
+}
+
+$list_table = new UM_Versions_List_Table(
+ array(
+ 'singular' => __( 'Template', 'ultimate-member' ),
+ 'plural' => __( 'Templates', 'ultimate-member' ),
+ 'ajax' => false,
+ )
+);
+
+/**
+ * UM hook
+ *
+ * @type filter
+ * @title um_versions_templates_columns
+ * @description Version Templates List Table columns
+ * @input_vars
+ * [{"var":"$columns","type":"array","desc":"Columns"}]
+ * @change_log
+ * ["Since: 2.0"]
+ * @usage add_filter( 'um_versions_templates_columns', 'function_name', 10, 1 );
+ * @example
+ *
+ */
+$columns = apply_filters(
+ 'um_versions_templates_columns',
+ array(
+ 'template' => __( 'Template', 'ultimate-member' ),
+ 'core_version' => __( 'Core version', 'ultimate-member' ),
+ 'theme_version' => __( 'Theme version', 'ultimate-member' ),
+ 'status' => __( 'Status', 'ultimate-member' ),
+ )
+);
+
+$list_table->set_columns( $columns );
+$list_table->prepare_items();
+?>
+
+
diff --git a/includes/class-config.php b/includes/class-config.php
index c0b812f1..1892d6fe 100644
--- a/includes/class-config.php
+++ b/includes/class-config.php
@@ -449,7 +449,7 @@ if ( ! class_exists( 'um\Config' ) ) {
'If you did not make this change and believe your {site_name} account has been compromised, please contact us at the following email address: {admin_email}
' .
'Thanks,
' .
'{site_name}',
- 'description' => __('Whether to send the user an email when he request to reset password (Recommended, please keep on)','ultimate-member'),
+ 'description' => __('Whether to send the user an email when he requests to reset password (Recommended, please keep on)','ultimate-member'),
'recipient' => 'user',
'default_active' => true
),
diff --git a/includes/core/class-profile.php b/includes/core/class-profile.php
index 21d6196b..506973ca 100644
--- a/includes/core/class-profile.php
+++ b/includes/core/class-profile.php
@@ -31,6 +31,11 @@ if ( ! class_exists( 'um\core\Profile' ) ) {
*/
var $active_tab;
+ /**
+ * @var null
+ */
+ public $active_subnav = null;
+
/**
* Profile constructor.
diff --git a/includes/core/um-filters-profile.php b/includes/core/um-filters-profile.php
index f6b6d869..34a7f3d7 100644
--- a/includes/core/um-filters-profile.php
+++ b/includes/core/um-filters-profile.php
@@ -66,7 +66,7 @@ function um_dynamic_user_profile_title( $title, $id = '' ) {
return $title;
}
- return ( strlen( $title ) !== mb_strlen( $title ) ) ? $title : utf8_encode( $title );
+ return ( strlen( $title ) !== mb_strlen( $title ) ) ? $title : mb_convert_encoding( $title, 'UTF-8' );
}
add_filter( 'the_title', 'um_dynamic_user_profile_title', 100000, 2 );
diff --git a/readme.txt b/readme.txt
index 642a02a5..9f9b8124 100644
--- a/readme.txt
+++ b/readme.txt
@@ -2,10 +2,10 @@
Author URI: https://ultimatemember.com/
Plugin URI: https://ultimatemember.com/
Contributors: ultimatemember, champsupertramp, nsinelnikov
-Donate link:
+Donate link:
Tags: community, member, membership, user-profile, user-registration
Requires PHP: 5.6
-Requires at least: 5.0
+Requires at least: 5.3
Tested up to: 6.2
Stable tag: 2.6.0
License: GNU Version 2 or Any Later Version
@@ -119,7 +119,7 @@ No, we have built Ultimate Member to be extremely easy to use and does not requi
= Is Ultimate Member mobile responsive? =
-Yes. Ultimate Member is designed to adapt nicely to any screen resolution. It includes specific designs for phones, tablets and desktops.
+Yes. Ultimate Member is designed to adapt nicely to any screen resolution. It includes specific designs for phones, tablets and desktops.
= Is Ultimate Member multi-site compatible? =
@@ -131,7 +131,7 @@ Yes. Ultimate Member will work with any properly coded theme. However, some them
= Does the plugin work with caching plugins? =
-The plugin works with popular caching plugins by automatically excluding Ultimate Member pages from being cached. This ensures other visitors to a page will not see the private information of another user. However, if you add features of Ultimate Member to other pages you have to exclude those pages from being cached through your cache plugin settings panel.
+The plugin works with popular caching plugins by automatically excluding Ultimate Member pages from being cached. This ensures other visitors to a page will not see the private information of another user. However, if you add features of Ultimate Member to other pages you have to exclude those pages from being cached through your cache plugin settings panel.
= Does Ultimate Member restrict access to wp-login.php when the plugin is active? =
@@ -1494,7 +1494,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
- Add class for member tagline in directory grid `um-member-tagline-`
- Add recaptcha support and submit button id
- Update extensions page layout
-
+
* Bugfixes:
- Fix Conditional Logic fields
- Fix required field with specific roles in privacy
@@ -1510,7 +1510,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Enhancements:
- Update readme.txt
-
+
= 1.3.85: June 19, 2017 =
@@ -1540,12 +1540,12 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Fix png image upload with transparency
* Fix extra slashes in form edit view when invalid input fields occur
* Remove notices
-
-
+
+
= 1.3.84: April 18, 2017 =
* Enhancements:
- * Adds new action hooks before and after WP_User_Query.
+ * Adds new action hooks before and after WP_User_Query.
* `um_user_before_query`
* `um_user_after_query`
* Adds a dismiss link in locale / language translation notices
@@ -1561,7 +1561,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Bugfixes
* Fix image url cache filter
- * Fix PHP 7.1+ compatibility issues
+ * Fix PHP 7.1+ compatibility issues
* Fix UTF8 encoding in form fields
* Fix hide member directory option.
* Fix conditional logic fields.
@@ -1576,7 +1576,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Enhancements:
* Adds user avatar's alternate text. The default text is set to `display_name`
- * Adds new filter hook to modif the user avatar's alternate text.
+ * Adds new filter hook to modif the user avatar's alternate text.
* `um_avatar_image_alternate_text`
* Set gravatar for newly registered users
* Adds Tag archive page access settings
@@ -1674,11 +1674,11 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Bugfixes:
* Fix 'Invalid user ID' on profile update
-
+
= 1.3.74: November 29, 2016 =
* Enhancements:
- * Improves clear users cache.
+ * Improves clear users cache.
* Removes user id from redirect URL on registration process for pending review and email activation statuses.
* Bugfixes:
@@ -1723,10 +1723,10 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Enhancements:
* Improves the bulk filters, actions and redirection in `User Screens`
- * Adds new access options to disallow access on homepage and category pages.
+ * Adds new access options to disallow access on homepage and category pages.
* Adds Textarea to show in profile tagline on Member Directory
* Adds a filter hook `um_allow_frontend_image_uploads` to allow profile and cover photo uploads on front-end pages.
- * Adds new filter hooks to modify image field data on upload:
+ * Adds new filter hooks to modify image field data on upload:
* `um_image_handle_global__option`
* `um_image_handle_{$field}__option`
* Adds a new filter hook to modify the redirection of non logged in users who visit the parent user page.
@@ -1745,7 +1745,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Fixes a typo in Password Reset Email option's description
* Fixes a bug where conditional fields 'equals to' validation on registration process
* Fixes a bug to disable the query with hiding account on member directory
- * Fixes a bug to retrieve specific number of members
+ * Fixes a bug to retrieve specific number of members
* Fixes a bug to retrieve all members with `get_members` new parameter `number`
* Fixes a typo in Welcome Email template.
* Fixes a bug where login form redirection is set to `wp-admin/admin-ajax.php` instead of the current page when loaded via ajax.
@@ -1754,20 +1754,20 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Fixes a bug where non-logged in users are not able to access the profile page when `Global Site Access` is set to `Site accessible to Logged In Users`.
* Fixes a bug to modify the login redirection url especially when DOING_AJAX is defined.
* Fixes a bug to retrieve correct community roles per site in a Multisite Network setup.
-
+
= 1.3.71: September 12, 2016 =
-* Enhancements:
+* Enhancements:
* Adds a new filter hook to modify the `cover photo` uri.
* `um_user_cover_photo_uri__filter`
* Bugfixes:
* Fixes a bug to allow users change their password in account form
- * Fixes a bug to allow role validation and assigning of roles to users on registration process
+ * Fixes a bug to allow role validation and assigning of roles to users on registration process
* Fixes a bug to avoid blank admin footer text all around WordPress
= 1.3.70: September 09, 2016 =
-* Enhancements:
+* Enhancements:
* Adds a new filter hook to modify the profile `cover photo` uri.
* `um_user_cover_photo_uri__filter`
* Bugfixes:
@@ -1783,10 +1783,10 @@ No, you do not need to use our plugin’s login or registration pages and can us
* This improves the performance when loading profiles in directories. It generates profile slug on Profile Update ( front and back-end ), Registration Process and viewing the Users in the back-end.
* Adds new filter hook `um_activate_url` to modify the account activation url.
* Adds new filter hooks to modify first and last name cases
- * `um_user_first_name_case`
+ * `um_user_first_name_case`
* `um_user_last_name_case`
* Adds new filter hooks to modify nonces of image and file uploads
- * `um_file_upload_nonce`
+ * `um_file_upload_nonce`
* `um_image_upload_nonce`
* Improves search member filters and keyword sensitivity
* Improves generation of profile slugs
@@ -1913,13 +1913,13 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Fixed: select fields with accented characters
* Fixed: select fields with accented text values
* Fixed: select fields in overlay
-* Fixed: admin front-end access restriction
+* Fixed: admin front-end access restriction
* Fixed: pages query
= 1.3.54: June 02, 2016 =
* Fixed: remove quick edit from Built-in roles row actions
* Fixed: remove notices
-* Fixed: dropdown/select fields
+* Fixed: dropdown/select fields
* Fixed: upload file extension's case sensitive issue
* Fixed: reset and change password
@@ -1954,7 +1954,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
* Added: option to force display name to be capitlized
* Fixed: remove notices
* Fixed: redirect url on login
-* Fixed: optimize query and object caching
+* Fixed: optimize query and object caching
* Fixed: profile photo as required field
* Fixed: admin access in front-end login
* Fixed: typos in tooltips
@@ -2442,7 +2442,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
* New: user profiles are cached to speed up load time
* New: emoji support added to bio / user descriptions
-* Fixed: issues with bio field HTML
+* Fixed: issues with bio field HTML
* Fixed: WP-admin PHP warning
* Fixed: bug with localization of en_US.po file
diff --git a/templates/account.php b/templates/account.php
index 143dc14d..a6ee074c 100644
--- a/templates/account.php
+++ b/templates/account.php
@@ -1,11 +1,27 @@
-
+
diff --git a/templates/email/approved_email.php b/templates/email/approved_email.php
index 1365f197..d5276526 100644
--- a/templates/email/approved_email.php
+++ b/templates/email/approved_email.php
@@ -1,37 +1,47 @@
-
-
-
+
-
+
Thank you for signing up!Your account is now approved.
-
+
-
+
Account Information
-
+
Your account e-mail: {email}
Your account username: {username}
-
+
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/changedaccount_email.php b/templates/email/changedaccount_email.php
index 03b3907a..80bb1738 100644
--- a/templates/email/changedaccount_email.php
+++ b/templates/email/changedaccount_email.php
@@ -1,28 +1,40 @@
-
+
-
+
You recently updated your account.
-
+
If you did not make this change and believe your account has been compromised, please
contact us ASAP.
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/changedpw_email.php b/templates/email/changedpw_email.php
index 63c8b305..0f7db9c2 100644
--- a/templates/email/changedpw_email.php
+++ b/templates/email/changedpw_email.php
@@ -1,28 +1,39 @@
-
-
+
-
+
You recently changed the password associated with your account.
-
+
If you did not make this change and believe your account has been compromised, please
contact us ASAP.
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/checkmail_email.php b/templates/email/checkmail_email.php
index 5cf88f99..92cb56fc 100644
--- a/templates/email/checkmail_email.php
+++ b/templates/email/checkmail_email.php
@@ -1,28 +1,39 @@
-
-
+
-
+
Thank you for signing up!Please click the following link to activate your account.
-
+
-
+
-
+
diff --git a/templates/email/deletion_email.php b/templates/email/deletion_email.php
index 41fa1f04..fe2e7bfe 100644
--- a/templates/email/deletion_email.php
+++ b/templates/email/deletion_email.php
@@ -1,26 +1,38 @@
-
+
-
+
Your account has been deleted.All your personal details and any uploads have been permanently removed.
-
+
If your account has been deleted by accident please
contact us.
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/inactive_email.php b/templates/email/inactive_email.php
index 65df7c32..14748311 100644
--- a/templates/email/inactive_email.php
+++ b/templates/email/inactive_email.php
@@ -1,26 +1,37 @@
-
-
+
-
+
Your account is now deactivated.
-
+
If you want your account to be re-activated, please
contact us.
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/notification_deletion.php b/templates/email/notification_deletion.php
index 17c4f6d4..6d58d35b 100644
--- a/templates/email/notification_deletion.php
+++ b/templates/email/notification_deletion.php
@@ -1,25 +1,35 @@
-
-
-
+
-
+
{display_name} has just deleted their {site_name} account.
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/notification_new_user.php b/templates/email/notification_new_user.php
index 0bb89392..59be08f7 100644
--- a/templates/email/notification_new_user.php
+++ b/templates/email/notification_new_user.php
@@ -1,34 +1,45 @@
-
+
-
+
{display_name} has just created an account on {site_name}.
-
+
-
+
Here is the submitted registration form:
{submitted_registration}
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/notification_review.php b/templates/email/notification_review.php
index 0f53b7f3..cab18131 100644
--- a/templates/email/notification_review.php
+++ b/templates/email/notification_review.php
@@ -1,34 +1,45 @@
-
+
-
+
{display_name} has just applied for membership to {site_name} and is waiting to be reviewed.
-
+
-
+
Here is the submitted registration form:
{submitted_registration}
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/pending_email.php b/templates/email/pending_email.php
index 7dc70554..b8cd6f58 100644
--- a/templates/email/pending_email.php
+++ b/templates/email/pending_email.php
@@ -1,27 +1,38 @@
-
+
-
+
Thank you for signing up!Your account has to be manually reviewed.
-
+
Please allow us some time to process your request and review your information.
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/rejected_email.php b/templates/email/rejected_email.php
index 5861d29f..e1343bd2 100644
--- a/templates/email/rejected_email.php
+++ b/templates/email/rejected_email.php
@@ -1,26 +1,37 @@
-
+
-
+
Your registration request has been rejected.
-
+
Please feel free to apply at a future date or
contact us If you want your information to be reviewed again.
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/resetpw_email.php b/templates/email/resetpw_email.php
index a4d999a9..6f688ddd 100644
--- a/templates/email/resetpw_email.php
+++ b/templates/email/resetpw_email.php
@@ -1,28 +1,39 @@
-
+
-
+
We received a request to reset the password for your account. If you made this request, click the link below to change your password:
-
+
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/templates/email/welcome_email.php b/templates/email/welcome_email.php
index 58a57428..b9807834 100644
--- a/templates/email/welcome_email.php
+++ b/templates/email/welcome_email.php
@@ -1,29 +1,40 @@
-
-
+
-
+
Thank you for signing up!Your account is now active.
-
+
-
-
+
+
-
+
-
\ No newline at end of file
+
diff --git a/templates/gdpr-register.php b/templates/gdpr-register.php
index 2b175fe1..786d1a8f 100644
--- a/templates/gdpr-register.php
+++ b/templates/gdpr-register.php
@@ -1,4 +1,18 @@
-
+
-
\ No newline at end of file
+
diff --git a/templates/login-to-view.php b/templates/login-to-view.php
index 432f1b82..aaf5e87b 100644
--- a/templates/login-to-view.php
+++ b/templates/login-to-view.php
@@ -1,7 +1,21 @@
-
+
\ No newline at end of file
+
diff --git a/templates/login.php b/templates/login.php
index a72c1620..bc148c77 100644
--- a/templates/login.php
+++ b/templates/login.php
@@ -1,4 +1,20 @@
-
+
@@ -137,4 +153,4 @@
-
\ No newline at end of file
+
diff --git a/templates/logout.php b/templates/logout.php
index 6239943f..243aea8e 100644
--- a/templates/logout.php
+++ b/templates/logout.php
@@ -1,4 +1,20 @@
-
+
@@ -11,9 +27,9 @@
-
+
-
+
*/
do_action( 'um_logout_after_user_welcome', $args ); ?>
-
+
-
+
-
+
*/
do_action( 'um_logout_user_links', $args ); ?>
-
+
diff --git a/templates/members-grid.php b/templates/members-grid.php
index 125e1564..0b326965 100644
--- a/templates/members-grid.php
+++ b/templates/members-grid.php
@@ -1,4 +1,27 @@
-
diff --git a/templates/members-header.php b/templates/members-header.php
index a7b186ea..4e0b1875 100644
--- a/templates/members-header.php
+++ b/templates/members-header.php
@@ -1,4 +1,16 @@
-
+
\ No newline at end of file
+
diff --git a/templates/members-list.php b/templates/members-list.php
index 09ab2d75..78f2f6b7 100644
--- a/templates/members-list.php
+++ b/templates/members-list.php
@@ -1,4 +1,25 @@
-
diff --git a/templates/members-pagination.php b/templates/members-pagination.php
index b719824c..f1664b5f 100644
--- a/templates/members-pagination.php
+++ b/templates/members-pagination.php
@@ -1,4 +1,16 @@
-
+
\ No newline at end of file
+
diff --git a/templates/members.php b/templates/members.php
index 3a215ade..4a463c84 100644
--- a/templates/members.php
+++ b/templates/members.php
@@ -1,4 +1,18 @@
-
+
@@ -8,4 +23,4 @@
printf( __( '%s', 'ultimate-member' ), $this->custom_message ); ?>
-
\ No newline at end of file
+
diff --git a/templates/modal/um_upload_single.php b/templates/modal/um_upload_single.php
index 5fe2bc35..00257bec 100644
--- a/templates/modal/um_upload_single.php
+++ b/templates/modal/um_upload_single.php
@@ -1,3 +1,13 @@
-
+
-
\ No newline at end of file
+
diff --git a/templates/modal/um_view_photo.php b/templates/modal/um_view_photo.php
index d24dbc23..d926409f 100644
--- a/templates/modal/um_view_photo.php
+++ b/templates/modal/um_view_photo.php
@@ -1,4 +1,14 @@
-
+
-
\ No newline at end of file
+
diff --git a/templates/password-change.php b/templates/password-change.php
index 414cb6e0..d3e178ac 100644
--- a/templates/password-change.php
+++ b/templates/password-change.php
@@ -1,4 +1,21 @@
-
+
diff --git a/templates/profile/comments.php b/templates/profile/comments.php
index 4b8b3aaa..7535a0ad 100644
--- a/templates/profile/comments.php
+++ b/templates/profile/comments.php
@@ -1,4 +1,20 @@
-
+
diff --git a/templates/profile/posts.php b/templates/profile/posts.php
index 90be348c..791c8f87 100644
--- a/templates/profile/posts.php
+++ b/templates/profile/posts.php
@@ -1,4 +1,19 @@
-
*/
do_action( 'um_after_form', $args ); ?>
-
+
-
\ No newline at end of file
+
diff --git a/templates/restricted-blog.php b/templates/restricted-blog.php
index 5f682323..8fe0168f 100644
--- a/templates/restricted-blog.php
+++ b/templates/restricted-blog.php
@@ -1,4 +1,13 @@
@@ -51,4 +63,4 @@ get_header(); ?>
-
+
-
\ No newline at end of file
+