diff --git a/README.md b/README.md
index c78512ef..d4f28e78 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.10 | WordPress 4.9 or higher| 2.0.10 |
+| 2.0.12 | WordPress 4.9 or higher| 2.0.12 |
Features of the plugin include:
@@ -48,7 +48,7 @@ GNU Version 2 or Any Later Version
Releases
====================
-[Official Release Version: 2.0.10](https://github.com/ultimatemember/ultimatemember/releases/tag/2.0.10).
+[Official Release Version: 2.0.12](https://github.com/ultimatemember/ultimatemember/releases/tag/2.0.12).
[Official Release Version: 1.3.88](https://github.com/ultimatemember/ultimatemember/releases).
diff --git a/assets/css/um-profile.css b/assets/css/um-profile.css
index 8ee8dd23..00a07b6a 100644
--- a/assets/css/um-profile.css
+++ b/assets/css/um-profile.css
@@ -545,10 +545,4 @@ font-weight: normal;
.um-profile.um-viewing .um-field-checkbox, .um-profile.um-viewing .um-field-radio{
cursor: default !important;
-}
-
-@media (min-width: 880px) {
- .um-profile-nav-item .um-tip-n {
- display: none;
- }
}
\ No newline at end of file
diff --git a/assets/css/um-responsive.css b/assets/css/um-responsive.css
index c125e09b..43558ccd 100644
--- a/assets/css/um-responsive.css
+++ b/assets/css/um-responsive.css
@@ -6,6 +6,14 @@
display: none;
}
+.um-profile-nav-item a.uimob340-show,
+.um-profile-nav-item a.uimob500-show,
+.um-profile-nav-item a.uimob800-show,
+.um-profile-nav-item a.uimob960-show
+{
+ display: none;
+}
+
div.uimob340 .uimob340-show,
div.uimob500 .uimob500-show,
div.uimob800 .uimob800-show,
diff --git a/assets/js/um-members.js b/assets/js/um-members.js
index ac80292c..32d44c48 100644
--- a/assets/js/um-members.js
+++ b/assets/js/um-members.js
@@ -4,7 +4,7 @@ jQuery(document).ready(function() {
UM_Member_Grid( jQuery(this) );
});
- jQuery('.um-member-connect').each(function(){
+ jQuery('.um-directory .um-member-connect').each(function(){
if ( jQuery(this).find('a').length == 0 ) {
jQuery(this).remove();
}
diff --git a/assets/js/um-members.min.js b/assets/js/um-members.min.js
index f497cad8..58df4dbf 100644
--- a/assets/js/um-members.min.js
+++ b/assets/js/um-members.min.js
@@ -1 +1 @@
-jQuery(document).ready(function(){jQuery(".um-members").each(function(){UM_Member_Grid(jQuery(this))}),jQuery(".um-member-connect").each(function(){0==jQuery(this).find("a").length&&jQuery(this).remove()}),jQuery(".um-member-meta-main").each(function(){0==jQuery(this).find(".um-member-metaline").length&&0==jQuery(this).find(".um-member-connect").find("a").length&&jQuery(this).remove()}),jQuery(document).on("click",".um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),m=jQuery(this).parents(".um-members");return r.find(".um-member-more").hide(),r.find(".um-member-meta").slideDown(function(){UM_Member_Grid(m)}),r.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(m)},100),!1}),jQuery(document).on("click",".um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),m=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(m)}),!1}),jQuery(document).on("click",".um-do-search",function(e){return e.preventDefault(),jQuery(this).parents("form").find("input").filter(function(e){if(0===this.value.length)return!0}).prop("disabled",!0),jQuery(this).parents("form").find("select").filter(function(e){if(0===this.value.length)return!0}).prop("disabled",!0),jQuery(this).parents("form").submit(),!1})});
\ No newline at end of file
+jQuery(document).ready(function(){jQuery(".um-members").each(function(){UM_Member_Grid(jQuery(this))}),jQuery(".um-directory .um-member-connect").each(function(){0==jQuery(this).find("a").length&&jQuery(this).remove()}),jQuery(".um-member-meta-main").each(function(){0==jQuery(this).find(".um-member-metaline").length&&0==jQuery(this).find(".um-member-connect").find("a").length&&jQuery(this).remove()}),jQuery(document).on("click",".um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),m=jQuery(this).parents(".um-members");return r.find(".um-member-more").hide(),r.find(".um-member-meta").slideDown(function(){UM_Member_Grid(m)}),r.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(m)},100),!1}),jQuery(document).on("click",".um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),m=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(m)}),!1}),jQuery(document).on("click",".um-do-search",function(e){return e.preventDefault(),jQuery(this).parents("form").find("input").filter(function(e){if(0===this.value.length)return!0}).prop("disabled",!0),jQuery(this).parents("form").find("select").filter(function(e){if(0===this.value.length)return!0}).prop("disabled",!0),jQuery(this).parents("form").submit(),!1})});
\ No newline at end of file
diff --git a/assets/js/um-scripts.js b/assets/js/um-scripts.js
index 665643c0..91913505 100644
--- a/assets/js/um-scripts.js
+++ b/assets/js/um-scripts.js
@@ -1,3 +1,7 @@
+/*jQuery('body').on('error', '.um-avatar', function() {
+ if( jQuery(this).data('load-error') != undefined ) return;
+ jQuery(this).data('load-error', '1').attr('src', jQuery(this).data('default'));
+});*/
jQuery(document).ready(function() {
jQuery(document).on('click', '.um-dropdown a', function(e){
diff --git a/includes/admin/core/class-admin-notices.php b/includes/admin/core/class-admin-notices.php
index ce698225..a26b409d 100644
--- a/includes/admin/core/class-admin-notices.php
+++ b/includes/admin/core/class-admin-notices.php
@@ -38,7 +38,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
$this->localize_note();
$this->show_update_messages();
$this->check_wrong_install_folder();
- $this->admin_notice_tracking();
+ //$this->admin_notice_tracking();
$this->need_upgrade();
$this->check_wrong_licenses();
@@ -225,9 +225,32 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
function old_extensions_notice() {
$show = false;
+ $old_extensions = array(
+ 'bbpress',
+ 'followers',
+ 'friends',
+ 'instagram',
+ 'mailchimp',
+ 'messaging',
+ 'mycred',
+ 'notices',
+ 'notifications',
+ 'online',
+ 'private-content',
+ 'profile-completeness',
+ 'recaptcha',
+ 'reviews',
+ 'social-activity',
+ 'social-login',
+ 'terms-conditions',
+ 'user-tags',
+ 'verified-users',
+ 'woocommerce',
+ );
+
$slugs = array_map( function( $item ) {
return 'um-' . $item . '/um-' . $item . '.php';
- }, array_keys( UM()->dependencies()->ext_required_version ) );
+ }, $old_extensions );
$active_plugins = UM()->dependencies()->get_active_plugins();
foreach ( $slugs as $slug ) {
diff --git a/includes/admin/core/class-admin-users.php b/includes/admin/core/class-admin-users.php
index e7c2ff9e..fb4b2aa2 100644
--- a/includes/admin/core/class-admin-users.php
+++ b/includes/admin/core/class-admin-users.php
@@ -44,7 +44,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
*/
function user_action_hook( $action ) {
switch ( $action ) {
-
default:
/**
* UM hook
@@ -74,6 +73,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
case 'um_approve_membership':
case 'um_reenable':
+
UM()->user()->approve();
break;
@@ -362,8 +362,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
* Bulk user editing actions
*/
function um_bulk_users_edit() {
- $admin_err = 0;
-
// bulk edit users
if ( ! empty( $_REQUEST['users'] ) && ! empty( $_REQUEST['um_bulkedit'] ) && ! empty( $_REQUEST['um_bulk_action'] ) ) {
@@ -377,66 +375,61 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
foreach ( $users as $user_id ) {
UM()->user()->set( $user_id );
- if ( ! um_user( 'super_admin' ) ) {
- /**
- * UM hook
- *
- * @type action
- * @title um_admin_user_action_hook
- * @description Action on bulk user action
- * @input_vars
- * [{"var":"$bulk_action","type":"string","desc":"Bulk Action"}]
- * @change_log
- * ["Since: 2.0"]
- * @usage add_action( 'um_admin_user_action_hook{$action}', 'function_name', 10, 1 );
- * @example
- *
- */
- do_action( "um_admin_user_action_hook", $bulk_action );
+ /**
+ * UM hook
+ *
+ * @type action
+ * @title um_admin_user_action_hook
+ * @description Action on bulk user action
+ * @input_vars
+ * [{"var":"$bulk_action","type":"string","desc":"Bulk Action"}]
+ * @change_log
+ * ["Since: 2.0"]
+ * @usage add_action( 'um_admin_user_action_hook{$action}', 'function_name', 10, 1 );
+ * @example
+ *
+ */
+ do_action( "um_admin_user_action_hook", $bulk_action );
- /**
- * UM hook
- *
- * @type action
- * @title um_admin_user_action_{$bulk_action}_hook
- * @description Action on bulk user action
- * @change_log
- * ["Since: 2.0"]
- * @usage add_action( 'um_admin_user_action_{$bulk_action}_hook', 'function_name', 10 );
- * @example
- *
- */
- do_action( "um_admin_user_action_{$bulk_action}_hook" );
-
- } else {
- $admin_err = 1;
- }
+ /**
+ * UM hook
+ *
+ * @type action
+ * @title um_admin_user_action_{$bulk_action}_hook
+ * @description Action on bulk user action
+ * @change_log
+ * ["Since: 2.0"]
+ * @usage add_action( 'um_admin_user_action_{$bulk_action}_hook', 'function_name', 10 );
+ * @example
+ *
+ */
+ do_action( "um_admin_user_action_{$bulk_action}_hook" );
}
// Finished. redirect now
- if ( $admin_err == 0 ) {
+ //if ( $admin_err == 0 ) {
- $uri = $this->set_redirect_uri( admin_url( 'users.php' ) );
- $uri = add_query_arg( 'update', 'users_updated', $uri );
+ $uri = $this->set_redirect_uri( admin_url( 'users.php' ) );
+ $uri = add_query_arg( 'update', 'users_updated', $uri );
- wp_redirect( $uri );
+ wp_redirect( $uri );
+ exit;
- exit;
- } else {
+ /*} else {
wp_redirect( admin_url( 'users.php?update=err_users_updated' ) );
exit;
- }
+ }*/
} else if ( ! empty( $_REQUEST['um_bulkedit'] ) ) {
diff --git a/includes/admin/core/packages/2.0-beta1/menus.php b/includes/admin/core/packages/2.0-beta1/menus.php
index a1ecb262..80f0ce2a 100644
--- a/includes/admin/core/packages/2.0-beta1/menus.php
+++ b/includes/admin/core/packages/2.0-beta1/menus.php
@@ -18,9 +18,15 @@ $menus = get_posts( array(
foreach ( $menus as $menu ) {
$menu_roles = get_post_meta( $menu->ID, 'menu-item-um_nav_roles', true );
- foreach ( $menu_roles as $i => $role_k ) {
- $menu_roles[ $i ] = $roles_associations[ $role_k ];
+ if( !is_array( $menu_roles ) ) {
+ $menu_roles = array();
}
+ foreach ( $menu_roles as $i => $role_k ) {
+ if( $role_k != '' && isset( $roles_associations[ $role_k ] ) ) {
+ $menu_roles[ $i ] = $roles_associations[ $role_k ];
+ }
+ }
+
update_post_meta( $menu->ID, 'menu-item-um_nav_roles', $menu_roles );
}
\ No newline at end of file
diff --git a/includes/admin/templates/dashboard/cache.php b/includes/admin/templates/dashboard/cache.php
index 2299e8f5..13121cc1 100644
--- a/includes/admin/templates/dashboard/cache.php
+++ b/includes/admin/templates/dashboard/cache.php
@@ -1,11 +1,10 @@
- $v ) {
- if ( strstr( $k, 'um_cache_userdata_' ) !== false ) {
- $count++;
- }
-} ?>
+$count = $wpdb->get_var(
+ "SELECT COUNT( option_id )
+ FROM {$wpdb->options}
+ WHERE option_name LIKE 'um_cache_userdata_%'"
+); ?>
diff --git a/includes/admin/templates/form/login_customize.php b/includes/admin/templates/form/login_customize.php
index a4ed6046..aafe97ab 100644
--- a/includes/admin/templates/form/login_customize.php
+++ b/includes/admin/templates/form/login_customize.php
@@ -65,7 +65,7 @@
array(
'id' => '_um_login_secondary_btn_word',
'type' => 'text',
- 'label' => __( 'Primary Button Text', 'ultimate-member' ),
+ 'label' => __( 'Secondary Button Text', 'ultimate-member' ),
'tooltip' => __( 'Customize the button text', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_login_secondary_btn_word', null, UM()->options()->get( 'login_secondary_btn_word' ) ),
'conditional' => array( '_um_login_secondary_btn', '=', 1 )
diff --git a/includes/admin/templates/form/profile_customize.php b/includes/admin/templates/form/profile_customize.php
index 06964965..6104eae0 100644
--- a/includes/admin/templates/form/profile_customize.php
+++ b/includes/admin/templates/form/profile_customize.php
@@ -90,7 +90,7 @@
array(
'id' => '_um_profile_secondary_btn_word',
'type' => 'text',
- 'label' => __( 'Primary Button Text', 'ultimate-member' ),
+ 'label' => __( 'Secondary Button Text', 'ultimate-member' ),
'tooltip' => __( 'Customize the button text', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_profile_secondary_btn_word', null, UM()->options()->get( 'profile_secondary_btn_word' ) ),
'conditional' => array( '_um_profile_secondary_btn', '=', 1 )
diff --git a/includes/admin/templates/form/register_customize.php b/includes/admin/templates/form/register_customize.php
index 4ac2e907..3d94efd2 100644
--- a/includes/admin/templates/form/register_customize.php
+++ b/includes/admin/templates/form/register_customize.php
@@ -80,7 +80,7 @@
array(
'id' => '_um_register_secondary_btn_word',
'type' => 'text',
- 'label' => __( 'Primary Button Text', 'ultimate-member' ),
+ 'label' => __( 'Secondary Button Text', 'ultimate-member' ),
'tooltip' => __( 'Customize the button text', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_register_secondary_btn_word', null, UM()->options()->get( 'register_secondary_btn_word' ) ),
'conditional' => array( '_um_register_secondary_btn', '=', 1 )
diff --git a/includes/class-dependencies.php b/includes/class-dependencies.php
index d25f1f9a..b0fe53b9 100644
--- a/includes/class-dependencies.php
+++ b/includes/class-dependencies.php
@@ -57,6 +57,7 @@ if ( ! class_exists( 'um\Dependencies' ) ) {
'woocommerce' => '2.0.1',
'restrict-content' => '2.0',
'beaver-builder' => '2.0',
+ 'gdpr' => '1.0.0',
);
diff --git a/includes/class-init.php b/includes/class-init.php
index 249a103e..10112ed0 100644
--- a/includes/class-init.php
+++ b/includes/class-init.php
@@ -30,6 +30,7 @@ if ( ! class_exists( 'UM' ) ) {
* @method UM_Terms_Conditions_API Terms_Conditions_API()
* @method UM_Private_Content_API Private_Content_API()
* @method UM_User_Location_API User_Location_API()
+ * @method UM_GDPR_API GDPR_API()
*
*/
final class UM extends UM_Functions {
@@ -385,47 +386,6 @@ if ( ! class_exists( 'UM' ) ) {
}
- /**
- * Show notice for customers with old extension's versions
- */
- /*function old_extensions_notice() {
- if ( ! is_admin() ) {
- return;
- }
-
- if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
- return;
- }
-
- $show = false;
-
- $slugs = array_map( function( $item ) {
- return 'um-' . $item . '/um-' . $item . '.php';
- }, array_keys( $this->dependencies()->ext_required_version ) );
-
- $active_plugins = $this->dependencies()->get_active_plugins();
- foreach ( $slugs as $slug ) {
- if ( in_array( $slug, $active_plugins ) ) {
- $plugin_data = get_plugin_data( um_path . '..' . DIRECTORY_SEPARATOR . $slug );
- if ( version_compare( '2.0', $plugin_data['Version'], '>' ) ) {
- $show = true;
- break;
- }
- }
- }
-
- if ( ! $show ) {
- return;
- }
-
- /*global $um_woocommerce;
- remove_action( 'init', array( $um_woocommerce, 'plugin_check' ), 1 );
- $um_woocommerce->plugin_inactive = true;*
-
- echo '
' . sprintf( __( '%s %s requires 2.0 extensions. You have pre 2.0 extensions installed on your site. Please update %s extensions to latest versions. For more info see this doc .', 'ultimate-member' ), ultimatemember_plugin_name, ultimatemember_version, ultimatemember_plugin_name, 'http://docs.ultimatemember.com/article/266-updating-to-2-0-versions-of-extensions' ) . '
';
- }*/
-
-
/**
* Autoload UM classes handler
*
@@ -562,7 +522,7 @@ if ( ! class_exists( 'UM' ) ) {
$this->permalinks();
$this->modal();
$this->cron();
- $this->tracking();
+ //$this->tracking();
$this->mobile();
$this->external_integrations();
}
diff --git a/includes/core/class-access.php b/includes/core/class-access.php
index e789523b..7f1c1fc5 100644
--- a/includes/core/class-access.php
+++ b/includes/core/class-access.php
@@ -524,14 +524,15 @@ if ( ! class_exists( 'um\core\Access' ) ) {
*/
function get_post_privacy_settings( $post ) {
//if logged in administrator all pages are visible
- if ( current_user_can( 'administrator' ) )
+ if ( current_user_can( 'administrator' ) ) {
return false;
+ }
//exlude from privacy UM default pages (except Members list and User(Profile) page)
if ( ! empty( $post->post_type ) && $post->post_type == 'page' ) {
if ( um_is_core_post( $post, 'login' ) || um_is_core_post( $post, 'register' ) ||
um_is_core_post( $post, 'account' ) || um_is_core_post( $post, 'logout' ) ||
- um_is_core_post( $post, 'password-reset' ) )
+ um_is_core_post( $post, 'password-reset' ) || um_is_core_post( $post, 'user' ) )
return false;
}
@@ -541,7 +542,7 @@ if ( ! class_exists( 'um\core\Access' ) ) {
$restriction = get_post_meta( $post->ID, 'um_content_restriction', true );
if ( ! empty( $restriction['_um_custom_access_settings'] ) ) {
- if ( ! isset( $restriction['_um_accessible'] ) || '0' == $restriction['_um_accessible'] )
+ if ( ! isset( $restriction['_um_accessible'] ) )
return false;
else
return $restriction;
@@ -624,6 +625,7 @@ if ( ! class_exists( 'um\core\Access' ) ) {
//post is private
if ( '0' == $restriction['_um_accessible'] ) {
+ $this->singular_page = true;
$filtered_posts[] = $post;
continue;
} elseif ( '1' == $restriction['_um_accessible'] ) {
diff --git a/includes/core/class-enqueue.php b/includes/core/class-enqueue.php
index 1fe726e6..4365b686 100644
--- a/includes/core/class-enqueue.php
+++ b/includes/core/class-enqueue.php
@@ -463,7 +463,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
wp_register_script('um_responsive', um_url . 'assets/js/um-responsive' . $this->suffix . '.js' );
wp_enqueue_script('um_responsive');
- wp_register_style('um_responsive', um_url . 'assets/css/um-responsive.css' );
+ wp_register_style('um_responsive', um_url . 'assets/css/um-responsive.css', array( 'um_profile' ) );
wp_enqueue_style('um_responsive');
}
diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php
index bc8069e3..9a82bd01 100644
--- a/includes/core/class-fields.php
+++ b/includes/core/class-fields.php
@@ -43,9 +43,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
-
+
+
@@ -800,6 +799,11 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
return true;
}
+ $stripslashed = array_map( 'stripslashes', UM()->form()->post_form[ $key ] );
+ if ( in_array( $value, $stripslashed ) ) {
+ return true;
+ }
+
if ( in_array( html_entity_decode( $value ), UM()->form()->post_form[ $key ] ) ) {
return true;
}
@@ -1530,10 +1534,11 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
* @param string $key
* @param array $data
* @param boolean $rule
+ * @param array $args
*
* @return string
*/
- function edit_field( $key, $data, $rule = false ) {
+ function edit_field( $key, $data, $rule = false, $args = array() ) {
global $_um_profile_id;
$output = null;
$disabled = '';
@@ -1567,7 +1572,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
* @var boolean $required
* @var string $validate
* @var string $default
- * @var string $conditional
+ * @var string $conditional
*/
extract( $data );
}
@@ -1579,7 +1584,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
if ($visibility == 'view' && $this->set_mode != 'register') return;
- if (( $visibility == 'view' && $this->set_mode == 'register' ) ||
+ if ( ( $visibility == 'view' && $this->set_mode == 'register' ) ||
( isset( $data['editable'] ) && $data['editable'] == 0 && $this->set_mode == 'profile' )
) {
@@ -1663,7 +1668,47 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
* ?>
*/
$type = apply_filters( "um_hook_for_field_{$type}", $type );
+ switch ( $type ) {
+ case 'textarea':
+ case 'multiselect':
+ $field_id = $field_name = $key;
+ $field_value = $this->field_value( $key, $default, $data );
+ break;
+
+ case 'select':
+ case 'radio':
+ $form_key = str_replace( 'role_select', 'role', $key );
+ $field_id = $form_key;
+ break;
+ default:
+ $field_id = '';
+ break;
+ }
+
+ /**
+ * UM hook
+ *
+ * @type filter
+ * @title um_completeness_field_id
+ * @description use for change core id not allowed duplicate
+ * @input_vars
+ * [{"var":"$field_id","type":"string","desc":"Field id"},
+ * {"var":"$data","type":"array","desc":"Field Data"}]
+ * {"var":"$args","type":"array","desc":"Optional field arguments"}]
+ * @change_log
+ * ["Since: 2.0.13"]
+ * @usage add_filter( 'um_completeness_field_id', 'function_name', 10, 3 );
+ * @example
+ *
+ */
+ $field_id = apply_filters( 'um_completeness_field_id', $field_id, $data, $args );
/* Begin by field type */
switch ( $type ) {
@@ -1722,8 +1767,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
';
- if (!empty( $disabled )) {
- $output .= $this->disabled_hidden_field( $field_name, $field_value );
+ if (!empty( $disabled )) {
+ $output .= $this->disabled_hidden_field( $field_name, $field_value );
}
if ($this->is_error( $key )) {
@@ -2033,8 +2078,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
}
$output .= '';
- $field_name = $key;
- $field_value = $this->field_value( $key, $default, $data );
if (isset( $data['html'] ) && $data['html'] != 0 && $key != "description") {
@@ -2085,16 +2128,17 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
// add the contents of the buffer to the output variable
$output .= ob_get_clean();
- } else $output .= '';
+ } else {
+ $output .= '';
+ }
- $output .= '
-
';
+ $output .= '';
- if (!empty( $disabled )) {
+ if ( ! empty( $disabled ) ) {
$output .= $this->disabled_hidden_field( $field_name, $field_value );
}
- if ($this->is_error( $key )) {
+ if ( $this->is_error( $key ) ) {
$output .= $this->field_error( $this->show_error( $key ) );
}
@@ -2112,7 +2156,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$output .= '';
$output .= '
';
-
$output .= '
';
$output .= '';
@@ -2314,8 +2357,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
/* Select dropdown */
case 'select':
- $form_key = str_replace( 'role_select', 'role', $key );
-
$output .= '';
@@ -2435,10 +2476,10 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
}
if( ! empty( $placeholder ) ) {
- $placeholder = strip_tags( $placeholder );
- }
+ $placeholder = strip_tags( $placeholder );
+ }
- $output .= '
';
+ $output .= '';
/**
* UM hook
@@ -2632,7 +2673,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$output .= '
';
}
- $output .= '';
+ $output .= '';
if ( isset( $options ) && $options == 'builtin' ) {
@@ -2769,8 +2810,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
/* Radio */
case 'radio':
- $form_key = str_replace( 'role_radio', 'role', $key );
-
if ( isset( $options ) ) {
/**
* UM hook
diff --git a/includes/core/class-permalinks.php b/includes/core/class-permalinks.php
index c852c3ee..56e27224 100644
--- a/includes/core/class-permalinks.php
+++ b/includes/core/class-permalinks.php
@@ -136,22 +136,15 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
$um_port_forwarding_url = UM()->options()->get( 'um_port_forwarding_url' );
$um_port_forwarding_url = ! empty( $um_port_forwarding_url ) ? $um_port_forwarding_url : '';
+ $page_url = '';
if ( is_multisite() ) {
-
- $page_url = '';
$blog_id = get_current_blog_id();
$siteurl = get_site_url( $blog_id );
$network_permalink_structure = UM()->options()->get( 'network_permalink_structure' );
if( $network_permalink_structure == "sub-directory" ){
- if ( is_ssl() ) {
- $page_url = 'https';
- } else {
- $page_url = 'http';
- }
- $page_url .= "://";
-
+ $page_url .= "//";
$page_url .= $_SERVER[ $server_name_method ];
}else{
$page_url .= $siteurl;
@@ -159,7 +152,6 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
if ( $um_port_forwarding_url == 1 && isset( $_SERVER["SERVER_PORT"] ) ) {
$page_url .= ":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
-
} else {
$page_url .= $_SERVER["REQUEST_URI"];
}
@@ -168,13 +160,7 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
if ( !isset( $_SERVER['SERVER_NAME'] ) )
return '';
-
- if ( is_ssl() ) {
- $page_url = 'https';
- } else {
- $page_url = 'http';
- }
- $page_url .= "://";
+ $page_url .= "//";
if ( $um_port_forwarding_url == 1 && isset( $_SERVER["SERVER_PORT"] ) ) {
$page_url .= $_SERVER[ $server_name_method ].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
@@ -210,7 +196,7 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
* }
* ?>
*/
- return apply_filters( 'um_get_current_page_url', $page_url );
+ return apply_filters( 'um_get_current_page_url', set_url_scheme( $page_url ) );
}
diff --git a/includes/core/class-rest-api.php b/includes/core/class-rest-api.php
index bd42c056..8a75f37e 100644
--- a/includes/core/class-rest-api.php
+++ b/includes/core/class-rest-api.php
@@ -524,9 +524,9 @@ if ( ! class_exists( 'um\core\REST_API' ) ) {
$val->first_name = um_user('first_name');
$val->last_name = um_user('last_name');
$val->account_status = um_user('account_status');
- $val->profile_pic_original = $this->getsrc( um_user('profile_photo', 'original') );
- $val->profile_pic_normal = $this->getsrc( um_user('profile_photo', 200) );
- $val->profile_pic_small = $this->getsrc( um_user('profile_photo', 40) );
+ $val->profile_pic_original = um_get_user_avatar_url('', 'original');
+ $val->profile_pic_normal = um_get_user_avatar_url('', 200);
+ $val->profile_pic_small = um_get_user_avatar_url('', 40);
$val->cover_photo = $this->getsrc( um_user('cover_photo', 1000) );
/**
@@ -667,9 +667,9 @@ if ( ! class_exists( 'um\core\REST_API' ) ) {
break;
case 'profile_pic':
- $response['profile_pic_original'] = $this->getsrc( um_user('profile_photo', 'original') );
- $response['profile_pic_normal'] = $this->getsrc( um_user('profile_photo', 200) );
- $response['profile_pic_small'] = $this->getsrc( um_user('profile_photo', 40) );
+ $response['profile_pic_original'] = um_get_user_avatar_url('', 'original');
+ $response['profile_pic_normal'] = um_get_user_avatar_url('', 200);
+ $response['profile_pic_small'] = um_get_user_avatar_url('', 40);
break;
case 'status':
@@ -699,9 +699,9 @@ if ( ! class_exists( 'um\core\REST_API' ) ) {
$val->first_name = um_user('first_name');
$val->last_name = um_user('last_name');
$val->account_status = um_user('account_status');
- $val->profile_pic_original = $this->getsrc( um_user('profile_photo', 'original') );
- $val->profile_pic_normal = $this->getsrc( um_user('profile_photo', 200) );
- $val->profile_pic_small = $this->getsrc( um_user('profile_photo', 40) );
+ $val->profile_pic_original = um_get_user_avatar_url('', 'original');
+ $val->profile_pic_normal = um_get_user_avatar_url('', 200);
+ $val->profile_pic_small = um_get_user_avatar_url('', 40);
$val->cover_photo = $this->getsrc( um_user('cover_photo', 1000) );
/**
diff --git a/includes/core/class-roles-capabilities.php b/includes/core/class-roles-capabilities.php
index 8f65270d..3f2a1489 100644
--- a/includes/core/class-roles-capabilities.php
+++ b/includes/core/class-roles-capabilities.php
@@ -506,13 +506,20 @@ if ( ! class_exists( 'um\core\Roles_Capabilities' ) ) {
* @return mixed|void
*/
function role_data( $roleID ) {
- if ( strpos( $roleID, 'um_' ) === 0 )
- $roleID = substr( $roleID, 3 );
+ if ( strpos( $roleID, 'um_' ) === 0 ) {
+ $role_data = get_option( "um_role_{$roleID}_meta" );
- $role_data = get_option( "um_role_{$roleID}_meta" );
+ if ( ! $role_data ) {
+ $roleID = substr( $roleID, 3 );
+ $role_data = get_option( "um_role_{$roleID}_meta" );
+ }
+ } else {
+ $role_data = get_option( "um_role_{$roleID}_meta" );
+ }
- if ( ! $role_data )
+ if ( ! $role_data ) {
return array();
+ }
$temp = array();
foreach ( $role_data as $key=>$value ) {
diff --git a/includes/core/class-user.php b/includes/core/class-user.php
index c58f0410..6a0a9aca 100644
--- a/includes/core/class-user.php
+++ b/includes/core/class-user.php
@@ -890,6 +890,20 @@ if ( ! class_exists( 'um\core\User' ) ) {
unset( $submitted['confirm_user_password'] );
}
+ //remove all password field values from submitted details
+ $password_fields = array();
+ foreach ( $submitted as $k => $v ) {
+ if ( UM()->fields()->get_field_type( $k ) == 'password' ) {
+ $password_fields[] = $k;
+ $password_fields[] = 'confirm_' . $k;
+ }
+ }
+
+ foreach ( $password_fields as $pw_field ) {
+ unset( $submitted[ $pw_field ] );
+ }
+
+
/**
* UM hook
*
diff --git a/includes/core/um-actions-profile.php b/includes/core/um-actions-profile.php
index a57a5255..8d064021 100644
--- a/includes/core/um-actions-profile.php
+++ b/includes/core/um-actions-profile.php
@@ -221,6 +221,9 @@ function um_user_edit_profile( $args ) {
foreach ( $fields as $key => $array ) {
+ /*if ( ! um_can_edit_field( $fields[ $key ] ) )
+ continue;*/
+
if ( ! um_can_edit_field( $fields[ $key ] ) && isset( $fields[ $key ]['editable'] ) && ! $fields[ $key ]['editable'] )
continue;
@@ -524,11 +527,7 @@ function um_profile_dynamic_meta_desc() {
$user_id = um_user( 'ID' );
$url = um_user_profile_url();
- if (um_profile( 'profile_photo' )) {
- $avatar = um_user_uploads_uri() . um_profile( 'profile_photo' );
- } else {
- $avatar = um_get_default_avatar_uri();
- }
+ $avatar = um_get_user_avatar_url( $user_id, 'original' );
um_reset_user(); ?>
diff --git a/includes/core/um-actions-register.php b/includes/core/um-actions-register.php
index 4dfab462..3abc44ed 100644
--- a/includes/core/um-actions-register.php
+++ b/includes/core/um-actions-register.php
@@ -54,8 +54,9 @@ function um_after_insert_user( $user_id, $args ) {
//clear Users cached queue
UM()->user()->remove_cached_queue();
+ um_fetch_user( $user_id );
+ UM()->user()->set_status( um_user('status') );
if ( ! empty( $args['submitted'] ) ) {
- um_fetch_user( $user_id );
UM()->user()->set_registration_details( $args['submitted'] );
}
@@ -103,7 +104,7 @@ function um_after_insert_user( $user_id, $args ) {
*/
do_action( 'um_registration_complete', $user_id, $args );
}
-add_action( 'um_user_register', 'um_after_insert_user', 10, 2 );
+add_action( 'um_user_register', 'um_after_insert_user', 1, 2 );
/**
@@ -118,7 +119,7 @@ function um_send_registration_notification( $user_id, $args ) {
$emails = um_multi_admin_email();
if ( ! empty( $emails ) ) {
foreach ( $emails as $email ) {
- if ( um_user( 'status' ) != 'pending' ) {
+ if ( um_user( 'account_status' ) != 'pending' ) {
UM()->mail()->send( $email, 'notification_new_user', array( 'admin' => true ) );
} else {
UM()->mail()->send( $email, 'notification_review', array( 'admin' => true ) );
@@ -136,7 +137,7 @@ add_action( 'um_registration_complete', 'um_send_registration_notification', 10,
* @param $args
*/
function um_check_user_status( $user_id, $args ) {
- $status = um_user( 'status' );
+ $status = um_user( 'account_status' );
/**
* UM hook
diff --git a/includes/core/um-filters-avatars.php b/includes/core/um-filters-avatars.php
index 715e8aec..12aec65c 100644
--- a/includes/core/um-filters-avatars.php
+++ b/includes/core/um-filters-avatars.php
@@ -27,7 +27,6 @@ add_filter( 'avatar_defaults', 'um_avatar_defaults', 99999 );
* @return string returns avatar in image html elements
*/
function um_get_avatar( $avatar = '', $id_or_email='', $size = '96', $avatar_class = '', $default = '', $alt = '' ) {
-
if ( is_numeric($id_or_email) )
$user_id = (int) $id_or_email;
elseif ( is_string( $id_or_email ) && ( $user = get_user_by( 'email', $id_or_email ) ) )
@@ -41,64 +40,6 @@ function um_get_avatar( $avatar = '', $id_or_email='', $size = '96', $avatar_cla
$avatar = um_user('profile_photo', $size);
- /**
- * UM hook
- *
- * @type filter
- * @title um_avatar_image_alternate_text
- * @description Change avatar image alt
- * @input_vars
- * [{"var":"$avatar_alt","type":"string","desc":"Image alternate text. Display name by default"}]
- * @change_log
- * ["Since: 2.0"]
- * @usage
- *
- * @example
- *
- */
- $image_alt = apply_filters( "um_avatar_image_alternate_text", um_user("display_name") );
-
- if ( ! $avatar && UM()->options()->get( 'use_gravatars' ) ) {
-
- $default = get_option( 'avatar_default', 'mystery' );
- if ( $default == 'gravatar_default' ) {
- $default = '';
- }
-
- $rating = get_option('avatar_rating');
- if ( !empty( $rating ) ) {
- $rating = "&r={$rating}";
- }
-
- if ( UM()->options()->get('use_gravatars') && ! um_user('synced_profile_photo') && ! $has_profile_photo ){
- $avatar_url = um_get_domain_protocol().'gravatar.com/avatar/'.um_user('synced_gravatar_hashed_id');
- $avatar_url = add_query_arg('s',400, $avatar_url);
- $gravatar_type = UM()->options()->get( 'use_um_gravatar_default_builtin_image' );
-
- if ( $gravatar_type == 'default' ) {
- if ( UM()->options()->get( 'use_um_gravatar_default_image' ) ) {
- $avatar_url = add_query_arg('d', um_get_default_avatar_uri(), $avatar_url );
- }
- } else {
- $avatar_url = add_query_arg('d', $gravatar_type, $avatar_url );
- }
-
- }
-
- $avatar = ' ';
-
- }else if( empty( $avatar ) ){
- $default_avatar_uri = um_get_default_avatar_uri();
-
- $avatar = ' ';
- }
-
return $avatar;
}
add_filter( 'get_avatar', 'um_get_avatar', 99999, 5 );
\ No newline at end of file
diff --git a/includes/core/um-filters-fields.php b/includes/core/um-filters-fields.php
index e68498ce..7f55479e 100644
--- a/includes/core/um-filters-fields.php
+++ b/includes/core/um-filters-fields.php
@@ -367,18 +367,70 @@ add_filter( 'um_get_form_fields', 'um_get_form_fields', 99 );
*/
function um_get_custom_field_array( $array, $fields ) {
- if ( isset( $array['conditions'] ) ) {
- for ( $a = 0; $a < count( $array['conditions'] ); $a++ ) {
- if ( isset( $array['conditional_value'] ) || isset( $array['conditional_value' . $a] ) ) {
- foreach ( $array['conditions'] as $key => $value ) {
- $condition_metakey = $fields[ $value[1] ]['metakey'];
+ if ( ! empty( $array['conditions'] ) ) {
+ foreach ( $array['conditions'] as $key => $value ) {
+ $condition_metakey = $fields[ $value[1] ]['metakey'];
+ if ( isset( $_POST[ $condition_metakey ] ) ) {
+ $cond_value = ( $fields[ $value[1] ]['type'] == 'radio' ) ? $_POST[ $condition_metakey ][0] : $_POST[ $condition_metakey ];
+ list( $visibility, $parent_key, $op, $parent_value ) = $value;
- if ( isset( $_POST[ $condition_metakey ] ) ) {
- $cond_value = ( $fields[ $value[1] ]['type'] == 'radio' ) ? $_POST[ $condition_metakey ][0] : $_POST[ $condition_metakey ];
-
- if ( isset( $array['conditional_value'] ) && $cond_value !== $array['conditional_value'] ) {
+ if ( $visibility == 'hide' ) {
+ if ( $op == 'empty' ) {
+ if ( empty( $cond_value ) ) {
$array['required'] = 0;
- } elseif ( isset( $array['conditional_value'.$a] ) && $cond_value !== $array['conditional_value'.$a] ) {
+ }
+ } elseif ( $op == 'not empty' ) {
+ if ( ! empty( $cond_value ) ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'equals to' ) {
+ if ( $cond_value == $parent_value ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'not equals' ) {
+ if ( $cond_value != $parent_value ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'greater than' ) {
+ if ( $cond_value > $op ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'less than' ) {
+ if ( $cond_value < $op ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'contains' ) {
+ if ( strstr( $cond_value, $parent_value ) ) {
+ $array['required'] = 0;
+ }
+ }
+ } elseif ( $visibility == 'show' ) {
+ if ( $op == 'empty' ) {
+ if ( ! empty( $cond_value ) ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'not empty' ) {
+ if ( empty( $cond_value ) ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'equals to' ) {
+ if ( $cond_value != $parent_value ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'not equals' ) {
+ if ( $cond_value == $parent_value ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'greater than' ) {
+ if ( $cond_value <= $op ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'less than' ) {
+ if ( $cond_value >= $op ) {
+ $array['required'] = 0;
+ }
+ } elseif ( $op == 'contains' ) {
+ if ( ! strstr( $cond_value, $parent_value ) ) {
$array['required'] = 0;
}
}
diff --git a/includes/core/um-navmenu.php b/includes/core/um-navmenu.php
index e46b3a4b..214e3258 100644
--- a/includes/core/um-navmenu.php
+++ b/includes/core/um-navmenu.php
@@ -47,7 +47,7 @@ if ( ! class_exists( 'UM_Menu_Item_Custom_Fields_Editor' ) ) {
if ( empty( $_POST['menu-item-db-id'] ) || ! in_array( $menu_item_db_id, $_POST['menu-item-db-id'] ) ) {
return;
}
-
+ //var_dump($_POST['menu-item-um_nav_roles']); exit;
foreach ( self::$fields as $_key => $label ) {
$key = sprintf( 'menu-item-%s', $_key );
@@ -55,7 +55,8 @@ if ( ! class_exists( 'UM_Menu_Item_Custom_Fields_Editor' ) ) {
// Sanitize
if ( ! empty( $_POST[ $key ][ $menu_item_db_id ] ) ) {
// Do some checks here...
- $value = $_POST[ $key ][ $menu_item_db_id ];
+ $value = is_array( $_POST[ $key ][ $menu_item_db_id ] ) ?
+ array_keys( $_POST[ $key ][ $menu_item_db_id ] ) : $_POST[ $key ][ $menu_item_db_id ];
} else {
$value = null;
}
@@ -165,7 +166,7 @@ if ( ! class_exists( 'UM_Menu_Item_Custom_Fields_Editor' ) ) {
$id_attr = ' id="edit-menu-item-um_nav_roles-{{data.menuItemID}}_' . $k . '" ';
$for_attr = ' for="edit-menu-item-um_nav_roles-{{data.menuItemID}}_' . $k . '" ';
$html .= "
- checked='checked'<# } #> />
+ checked='checked'<# } #> />
{$title}
";
}
diff --git a/includes/um-short-functions.php b/includes/um-short-functions.php
index b70e18c8..b0758afa 100644
--- a/includes/um-short-functions.php
+++ b/includes/um-short-functions.php
@@ -442,7 +442,7 @@ function um_js_redirect( $url ) {
if (headers_sent() || empty( $url )) {
//for blank redirects
if ('' == $url) {
- $url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
+ $url = set_url_scheme( '//' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] );
}
$funtext = "echo \"\";";
@@ -508,10 +508,11 @@ function um_user_submitted_registration( $style = false ) {
$data = um_user( 'submitted' );
- if ($style)
+ if ( $style ) {
$output .= '';
+ }
- if (isset( $data ) && is_array( $data )) {
+ if ( isset( $data ) && is_array( $data ) ) {
/**
* UM hook
@@ -535,38 +536,51 @@ function um_user_submitted_registration( $style = false ) {
*/
$data = apply_filters( 'um_email_registration_data', $data );
- foreach ($data as $k => $v) {
+ $pw_fields = array();
+ foreach ( $data as $k => $v ) {
- if (!is_array( $v ) && strstr( $v, 'ultimatemember/temp' )) {
+ if ( strstr( $k, 'user_pass' ) || in_array( $k, array( 'g-recaptcha-response', 'request', '_wpnonce', '_wp_http_referer' ) ) ) {
+ continue;
+ }
+
+ if ( UM()->fields()->get_field_type( $k ) == 'password' ) {
+ $pw_fields[] = $k;
+ $pw_fields[] = 'confirm_' . $k;
+ continue;
+ }
+
+ if ( ! empty( $pw_fields ) && in_array( $k, $pw_fields ) ) {
+ continue;
+ }
+
+ if ( ! is_array( $v ) && strstr( $v, 'ultimatemember/temp' ) ) {
$file = basename( $v );
$v = um_user_uploads_uri() . $file;
}
- if (!strstr( $k, 'user_pass' ) && !in_array( $k, array( 'g-recaptcha-response', 'request', '_wpnonce', '_wp_http_referer' ) )) {
-
- if (is_array( $v )) {
- $v = implode( ',', $v );
- }
-
- if ($k == 'timestamp') {
- $k = __( 'date submitted', 'ultimate-member' );
- $v = date( "d M Y H:i", $v );
- }
-
- if ($style) {
- if (!$v) $v = __( '(empty)', 'ultimate-member' );
- $output .= "
$k $v
";
- } else {
- $output .= "$k: $v" . "
";
- }
-
+ if ( is_array( $v ) ) {
+ $v = implode( ',', $v );
}
+ if ( $k == 'timestamp' ) {
+ $k = __( 'date submitted', 'ultimate-member' );
+ $v = date( "d M Y H:i", $v );
+ }
+
+ if ( $style ) {
+ if ( ! $v ) {
+ $v = __( '(empty)', 'ultimate-member' );
+ }
+ $output .= "
$k $v
";
+ } else {
+ $output .= "$k: $v" . "
";
+ }
}
}
- if ($style)
+ if ( $style ) {
$output .= '
';
+ }
return $output;
}
@@ -710,6 +724,9 @@ function um_profile_id() {
* @return bool|string
*/
function um_is_temp_upload( $url ) {
+ if( is_string( $url ) ) {
+ $url = trim($url);
+ }
if (filter_var( $url, FILTER_VALIDATE_URL ) === false)
$url = realpath( $url );
@@ -1591,9 +1608,7 @@ function um_youtube_id_from_url( $url ) {
* @return string
*/
function um_user_uploads_uri() {
- if (is_ssl()) {
- UM()->files()->upload_baseurl = str_replace( "http://", "https://", UM()->files()->upload_baseurl );
- }
+ UM()->files()->upload_baseurl = set_url_scheme( UM()->files()->upload_baseurl );
$uri = UM()->files()->upload_baseurl . um_user( 'ID' ) . '/';
@@ -1703,33 +1718,23 @@ function um_get_avatar_uri( $image, $attrs ) {
*/
$cache_time = apply_filters( 'um_filter_avatar_cache_time', current_time( 'timestamp' ), um_user( 'ID' ) );
- if (!empty( $cache_time )) {
- $cache_time = "?{$cache_time}";
- }
-
- if (file_exists( UM()->files()->upload_basedir . um_user( 'ID' ) . "/profile_photo-{$attrs}{$ext}" )) {
-
- $uri = um_user_uploads_uri() . "profile_photo-{$attrs}{$ext}{$cache_time}";
-
+ if( $attrs == 'original' && file_exists( um_user_uploads_dir() . "profile_photo{$ext}" ) ) {
+ $uri = um_user_uploads_uri() . "profile_photo{$ext}";
+ } else if (file_exists( um_user_uploads_dir() . "profile_photo-{$attrs}{$ext}" )) {
+ $uri = um_user_uploads_uri() . "profile_photo-{$attrs}{$ext}";
} else {
-
$sizes = UM()->options()->get( 'photo_thumb_sizes' );
if (is_array( $sizes )) $find = um_closest_num( $sizes, $attrs );
- if (file_exists( UM()->files()->upload_basedir . um_user( 'ID' ) . "/profile_photo-{$find}{$ext}" )) {
-
- $uri = um_user_uploads_uri() . "profile_photo-{$find}{$ext}{$cache_time}";
-
- } else if (file_exists( UM()->files()->upload_basedir . um_user( 'ID' ) . "/profile_photo{$ext}" )) {
-
- $uri = um_user_uploads_uri() . "profile_photo{$ext}{$cache_time}";
-
- }
-
- if ($attrs == 'original') {
- $uri = um_user_uploads_uri() . "profile_photo{$ext}{$cache_time}";
+ if (file_exists( um_user_uploads_dir() . "profile_photo-{$find}{$ext}" )) {
+ $uri = um_user_uploads_uri() . "profile_photo-{$find}{$ext}";
+ } else if (file_exists( um_user_uploads_dir() . "profile_photo{$ext}" )) {
+ $uri = um_user_uploads_uri() . "profile_photo{$ext}";
}
+ }
+ if ( !empty( $cache_time ) ) {
+ $uri .= "?{$cache_time}";
}
return $uri;
@@ -1746,35 +1751,128 @@ function um_get_default_avatar_uri() {
$uri = !empty( $uri['url'] ) ? $uri['url'] : '';
if ( ! $uri ) {
$uri = um_url . 'assets/img/default_avatar.jpg';
- } else {
-
- //http <-> https compatibility default avatar option of SSL was changed
- $url_array = parse_url( $uri );
-
- if (is_ssl() && $url_array['scheme'] == 'http') {
- $uri = str_replace( 'http://', 'https://', $uri );
- } else if (!is_ssl() && $url_array['scheme'] == 'https') {
- $uri = str_replace( 'https://', 'http://', $uri );
- }
}
- return $uri;
+ return set_url_scheme( $uri );
}
/**
* get user avatar url
*
+ * @param $user_id
+ * @param $size
+ *
* @return bool|string
*/
-function um_get_user_avatar_url() {
- if (um_profile( 'profile_photo' )) {
- $avatar_uri = um_get_avatar_uri( um_profile( 'profile_photo' ), 32 );
- } else {
- $avatar_uri = um_get_default_avatar_uri();
- }
+function um_get_user_avatar_data( $user_id = '', $size = '96' ) {
+ if( empty( $user_id ) ) {
+ $user_id = um_user( 'ID' );
+ } else {
+ um_fetch_user( $user_id );
+ }
- return $avatar_uri;
+ $data = array(
+ 'user_id' => $user_id,
+ 'default' => um_get_default_avatar_uri(),
+ 'class' => 'gravatar avatar avatar-' . $size . ' um-avatar',
+ 'size' => $size
+ );
+
+ if ( $profile_photo = um_profile( 'profile_photo' ) ) {
+ $data['url'] = um_get_avatar_uri( $profile_photo, $size );
+ $data['type'] = 'upload';
+ $data['class'] .= ' um-avatar-uploaded';
+ } else if( $synced_profile_photo = um_user( 'synced_profile_photo' ) ) {
+ $data['url'] = $synced_profile_photo;
+ $data['type'] = 'sync';
+ $data['class'] .= ' um-avatar-default';
+ } else if( UM()->options()->get( 'use_gravatars' ) ) {
+ $avatar_hash_id = get_user_meta( $user_id, 'synced_gravatar_hashed_id', true );
+ $data['url'] = set_url_scheme( '//gravatar.com/avatar/' . $avatar_hash_id );
+ $data['url'] = add_query_arg( 's', 400, $data['url'] );
+ $rating = get_option('avatar_rating');
+ if ( !empty( $rating ) ) {
+ $data['url'] = add_query_arg( 'r', $rating, $data['url'] );
+ }
+ $gravatar_type = UM()->options()->get( 'use_um_gravatar_default_builtin_image' );
+ if ( $gravatar_type == 'default' ) {
+ if ( UM()->options()->get( 'use_um_gravatar_default_image' ) ) {
+ $data['url'] = add_query_arg( 'd', $data['default'], $data['url'] );
+ }
+ } else {
+ $default = get_option( 'avatar_default', 'mystery' );
+ if ( $default == 'gravatar_default' ) {
+ $default = '';
+ }
+ $data['url'] = add_query_arg( 'd', $default, $data['url'] );
+ }
+ $data['type'] = 'gravatar';
+ $data['class'] .= ' um-avatar-gravatar';
+ } else {
+ $data['url'] = $data['default'];
+ $data['type'] = 'default';
+ $data['class'] .= ' um-avatar-default';
+ }
+
+ /**
+ * UM hook
+ *
+ * @type filter
+ * @title um_user_avatar_url_filter
+ * @description Change user avatar URL
+ * @input_vars
+ * [{"var":"$avatar_uri","type":"string","desc":"Avatar URL"},
+ * {"var":"$user_id","type":"int","desc":"User ID"}]
+ * @change_log
+ * ["Since: 2.0"]
+ * @usage add_filter( 'um_user_avatar_url_filter', 'function_name', 10, 2 );
+ * @example
+ *
+ */
+ $data['url'] = apply_filters( 'um_user_avatar_url_filter', $data['url'], $user_id, $data );
+ /**
+ * UM hook
+ *
+ * @type filter
+ * @title um_avatar_image_alternate_text
+ * @description Change user display name on um_user function profile photo
+ * @input_vars
+ * [{"var":"$display_name","type":"string","desc":"User Display Name"}]
+ * @change_log
+ * ["Since: 2.0"]
+ * @usage add_filter( 'um_avatar_image_alternate_text', 'function_name', 10, 1 );
+ * @example
+ *
+ */
+ $data['alt'] = apply_filters( "um_avatar_image_alternate_text", um_user( "display_name" ), $data );
+
+ return $data;
+}
+
+/**
+ * get user avatar url
+ *
+ * @param $user_id
+ * @param $size
+ *
+ * @return bool|string
+ */
+function um_get_user_avatar_url( $user_id = '', $size = '96' ) {
+ $data = um_get_user_avatar_data( $user_id, $size );
+ return $data['url'];
}
@@ -2063,88 +2161,15 @@ function um_user( $data, $attrs = null ) {
break;
case 'profile_photo':
+ $data = um_get_user_avatar_data( um_user( 'ID' ), $attrs );
- $has_profile_photo = false;
- $photo_type = 'um-avatar-default';
-
- /**
- * UM hook
- *
- * @type filter
- * @title um_avatar_image_alternate_text
- * @description Change user display name on um_user function profile photo
- * @input_vars
- * [{"var":"$display_name","type":"string","desc":"User Display Name"}]
- * @change_log
- * ["Since: 2.0"]
- * @usage add_filter( 'um_avatar_image_alternate_text', 'function_name', 10, 1 );
- * @example
- *
- */
- $image_alt = apply_filters( "um_avatar_image_alternate_text", um_user( "display_name" ) );
-
- if (um_profile( 'profile_photo' )) {
- $avatar_uri = um_get_avatar_uri( um_profile( 'profile_photo' ), $attrs );
- $has_profile_photo = true;
- $photo_type = 'um-avatar-uploaded';
- } else if (um_user( 'synced_profile_photo' )) {
- $avatar_uri = um_user( 'synced_profile_photo' );
- } else {
- $avatar_uri = um_get_default_avatar_uri();
- }
-
- /**
- * UM hook
- *
- * @type filter
- * @title um_user_avatar_url_filter
- * @description Change user avatar URL
- * @input_vars
- * [{"var":"$avatar_uri","type":"string","desc":"Avatar URL"},
- * {"var":"$user_id","type":"int","desc":"User ID"}]
- * @change_log
- * ["Since: 2.0"]
- * @usage add_filter( 'um_user_avatar_url_filter', 'function_name', 10, 2 );
- * @example
- *
- */
- $avatar_uri = apply_filters( 'um_user_avatar_url_filter', $avatar_uri, um_user( 'ID' ) );
-
-
- if (!$avatar_uri)
- return '';
-
- if ( UM()->options()->get( 'use_gravatars' ) && !um_user( 'synced_profile_photo' ) && !$has_profile_photo) {
- $avatar_hash_id = get_user_meta( um_user( 'ID' ), 'synced_gravatar_hashed_id', true );
- $avatar_uri = um_get_domain_protocol() . 'gravatar.com/avatar/' . $avatar_hash_id;
- $avatar_uri = add_query_arg( 's', 400, $avatar_uri );
- $gravatar_type = UM()->options()->get( 'use_um_gravatar_default_builtin_image' );
- $photo_type = 'um-avatar-gravatar';
- if ( $gravatar_type == 'default' ) {
- if ( UM()->options()->get( 'use_um_gravatar_default_image' ) ) {
- $avatar_uri = add_query_arg( 'd', um_get_default_avatar_uri(), $avatar_uri );
- }
- } else {
- $avatar_uri = add_query_arg( 'd', $gravatar_type, $avatar_uri );
- }
-
- }
-
- $default_avatar = um_get_default_avatar_uri();
-
- return ' ';
+ return ' '; //don't move attribute before src
break;
diff --git a/readme.txt b/readme.txt
index 445ec6c6..847b4fee 100644
--- a/readme.txt
+++ b/readme.txt
@@ -6,7 +6,7 @@ Donate link:
Tags: community, member, membership, user-profile, user-registration
Requires at least: 4.1
Tested up to: 4.9
-Stable tag: 2.0.10
+Stable tag: 2.0.13
License: GNU Version 2 or Any Later Version
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
@@ -131,6 +131,22 @@ 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.13: May 2, 2018 =
+
+* Bugfixes:
+ - Fixed and optimized user avatars
+ - Fixed Profile Menu on some installs
+ - Fixed fields IDs duplicates
+ - Fixed cache users count
+
+= 2.0.12: April 30, 2018 =
+
+* Bugfixes:
+ - Fixed approving users with "Administrator" role
+ - Fixed problem with URLs for upload images
+ - Fixed not UM roles, which start from "um_" symbols
+ - Fixed content restriction logic
+
= 2.0.11: April 19, 2018 =
* Bugfixes:
diff --git a/ultimate-member.php b/ultimate-member.php
index 5a3cb40a..bd87426e 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.0.11
+Version: 2.0.13
Author: Ultimate Member
Author URI: http://ultimatemember.com/
Text Domain: ultimate-member