Update 1.0.56

This commit is contained in:
ultimatemember
2015-02-15 20:31:41 +02:00
parent 5ad611a472
commit 60943d9695
26 changed files with 217 additions and 61 deletions
+1
View File
@@ -27,6 +27,7 @@ class UM_Admin_Metabox {
if ( get_post_meta($post_id, '_um_core', true) ) {
flush_rewrite_rules( true ); // so they reset rewrite rules
delete_option('um_flush_rules');
}
}
+23
View File
@@ -16,6 +16,8 @@ class UM_Admin_Users {
add_filter('views_users', array(&$this, 'views_users') );
add_filter('pre_user_query', array(&$this, 'sort_by_newest') );
add_filter('pre_user_query', array(&$this, 'custom_users_filter') );
add_filter('user_row_actions', array(&$this, 'user_row_actions'), 10, 2);
@@ -44,6 +46,27 @@ class UM_Admin_Users {
return $actions;
}
/***
*** @sort users by newest first
***/
function sort_by_newest( $query ){
global $pagenow;
if ( is_admin() && $pagenow == 'users.php' ) {
global $wpdb;
if (!isset($_REQUEST['orderby'])) {
$query->query_vars["order"] = 'desc';
$query->query_orderby = " ORDER BY user_registered ".($query->query_vars["order"] == "desc" ? "desc " : "asc ");//set sort order
}
}
return $query;
}
/***
*** @custom users filter
+9
View File
@@ -97,6 +97,15 @@
</span>
</p><div class="um-admin-clear"></div>
<p>
<label><?php _e('Show "Remember Me"?','ultimatemember'); ?></label>
<span>
<?php $this->ui_on_off('_um_login_show_rememberme', um_get_option('login_show_rememberme') ); ?>
</span>
</p><div class="um-admin-clear"></div>
</div>
</div>
+2
View File
@@ -255,6 +255,8 @@ div.uimob340 .um-account-meta {
width: 100%;
}
.uimob340 .um-col-alt-s {padding-top:0}
/**
for 500px and below
**/
+27 -6
View File
@@ -100,6 +100,7 @@
.um-col {padding-bottom: 20px}
.um-col-alt {margin: 0 0 5px 0}
.um-col-alt-s {padding-top: 10px}
.um-col-alt-b {padding-top: 20px}
.um-col-121 {float: left;width: 48%}
@@ -123,10 +124,15 @@
.um-field-tri .um-raty i {font-size: 21px}
.um-button i {
font-size: 22px;
position: absolute;
left: 20px;
top: 14px;
font-size: 22px;
width: 22px;
height: 12px !important;
display: inline-block;
line-height: 12px !important;
vertical-align: middle !important;
position: relative;
top: -6px;
margin-right: 8px;
}
/*
@@ -166,6 +172,15 @@ p.um-notice {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
position: relative;
}
p.um-notice i {
position: absolute;
right: 14px;
top: 1px;
font-size: 30px;
cursor: pointer;
}
p.um-notice.success {
@@ -266,7 +281,7 @@ p.um-notice.err {
padding: 15px 0 0 0;
}
.um-field-b{
.um-field-b, .um-field-c {
padding-top: 0 !important;
}
@@ -410,6 +425,12 @@ p.um-notice.err {
- Radio & Checkboxes
*/
.um-field-c .um-field-checkbox {
margin: 0 !important;
position: relative;
top: -14px;
}
.um-field-checkbox,
.um-field-radio {
display: block;
@@ -443,7 +464,7 @@ p.um-notice.err {
.um-field-checkbox-option,
.um-field-radio-option {
margin: 0 0 0 36px;
margin: 0 0 0 32px;
line-height: 24px;
color: #888 !important;
display: inline-block;
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -159,7 +159,7 @@
if ( isset( $array['required'] ) && $array['required'] == 1 ) {
if ( !isset($args[$key]) || $args[$key] == '' ) {
$ultimatemember->form->add_error($key, sprintf(__('%s is required'), $array['label']) );
$ultimatemember->form->add_error($key, sprintf( __('%s is required','ultimatemember'), $array['label'] ) );
}
}
+1 -1
View File
@@ -20,7 +20,7 @@
if ( is_admin() ) return;
echo '<input type="hidden" name="timestamp" id="timestamp" value="'.time().'" />';
echo '<input type="hidden" name="timestamp" id="timestamp" value="'. current_time( 'timestamp' ) .'" />';
?>
+11 -5
View File
@@ -45,13 +45,13 @@
if ( !username_exists( $user_name ) ) {
if ( $is_email ) {
$ultimatemember->form->add_error( $field, __(' Sorry, we can\'t find an account with that email address') );
$ultimatemember->form->add_error( $field, __(' Sorry, we can\'t find an account with that email address','ultimatemember') );
} else {
$ultimatemember->form->add_error( $field, __(' Sorry, we can\'t find an account with that username') );
$ultimatemember->form->add_error( $field, __(' Sorry, we can\'t find an account with that username','ultimatemember') );
}
} else {
if ( $args['user_password'] == '' ) {
$ultimatemember->form->add_error( 'user_password', __('Please enter your password') );
$ultimatemember->form->add_error( 'user_password', __('Please enter your password','ultimatemember') );
}
}
@@ -66,7 +66,7 @@
case 'incorrect_password':
if ( username_exists( $user_name ) ) {
$ultimatemember->form->add_error( 'user_password', __('Password is incorrect. Please try again.') );
$ultimatemember->form->add_error( 'user_password', __('Password is incorrect. Please try again.','ultimatemember') );
}
break;
@@ -116,7 +116,9 @@
global $ultimatemember;
extract( $args );
$ultimatemember->user->auto_login( um_user('ID') );
$rememberme = ( isset($args['rememberme']) ) ? 1 : 0;
$ultimatemember->user->auto_login( um_user('ID'), $rememberme );
// Priority redirect
if ( isset( $args['redirect_to'] ) ) {
@@ -174,6 +176,10 @@
<div class="um-col-alt">
<?php if ( isset( $args['show_rememberme'] ) && $args['show_rememberme'] ) {
echo $ultimatemember->fields->checkbox('rememberme', __('Keep me signed in','ultimatemember') );
} ?>
<?php if ( isset($args['secondary_btn']) && $args['secondary_btn'] != 0 ) { ?>
<div class="um-left um-half"><input type="submit" value="<?php echo $args['primary_btn_word']; ?>" class="um-button" /></div>
+3 -5
View File
@@ -12,9 +12,7 @@
echo '<input type="hidden" name="redirect_to" id="redirect_to" value="'.$_REQUEST['redirect_to'].'" />';
}
if ( isset( $args['after_login'] ) && !empty( $args['after_login'] ) ) {
} else if ( isset( $args['after_login'] ) && !empty( $args['after_login'] ) ) {
switch( $args['after_login'] ) {
@@ -121,11 +119,11 @@
}
if ( isset( $err ) && !empty( $err ) ) {
$output .= '<p class="um-notice err">' . $err . '</p>';
$output .= '<p class="um-notice err"><i class="um-icon-ios-close-empty" onclick="jQuery(this).parent().fadeOut();"></i>' . $err . '</p>';
}
if ( isset( $success ) && !empty( $success ) ) {
$output .= '<p class="um-notice success">' . $success . '</p>';
$output .= '<p class="um-notice success"><i class="um-icon-ios-close-empty" onclick="jQuery(this).parent().fadeOut();"></i>' . $success . '</p>';
}
echo $output;
+2 -2
View File
@@ -74,7 +74,7 @@
wp_die('Hello, spam bot!');
$form_timestamp = trim($_POST['timestamp']);
$live_timestamp = time();
$live_timestamp = current_time( 'timestamp' );
if ( $form_timestamp == '' )
wp_die( __('Hello, spam bot!') );
@@ -105,7 +105,7 @@
wp_die('Hello, spam bot!');
$form_timestamp = trim($_POST['timestamp']);
$live_timestamp = time();
$live_timestamp = current_time( 'timestamp' );
if ( $form_timestamp == '' )
wp_die( __('Hello, spam bot!') );
+15 -5
View File
@@ -121,7 +121,6 @@
***/
add_action('wp_head', 'um_profile_dynamic_meta_desc', 9999999);
function um_profile_dynamic_meta_desc() {
global $ultimatemember;
if ( um_is_core_page('user') && um_get_requested_user() ) {
@@ -129,15 +128,26 @@
um_fetch_user( um_get_requested_user() );
$content = $ultimatemember->mail->convert_tags( um_get_option('profile_desc') );
$user_id = um_user('ID');
$url = um_user_profile_url();
um_reset_user();
if ( um_profile('profile_photo') ) {
$avatar = um_user_uploads_uri() . um_profile('profile_photo');
} else {
$avatar = um_get_default_avatar_uri();
}
?>
um_reset_user(); ?>
<meta name="description" content="<?php echo $content; ?>">
<meta property="og:title" content="<?php echo um_get_display_name( $user_id ); ?>" />
<meta property="og:type" content="article" />
<meta property="og:image" content="<?php echo $avatar; ?>" />
<meta property="og:url" content="<?php echo $url; ?>" />
<meta property="og:description" content="<?php echo $content; ?>" />
<?php
<?php
}
}
+11
View File
@@ -499,6 +499,17 @@ class UM_Builtin {
'editable' => 1,
),
'user_registered' => array(
'title' => __('Regisration Date','ultimatemember'),
'metakey' => 'user_registered',
'type' => 'text',
'label' => __('Regisration Date','ultimatemember'),
'required' => 0,
'public' => 1,
'editable' => 1,
'edit_forbidden' => 1,
),
'display_name' => array(
'title' => __('Display Name','ultimatemember'),
'metakey' => 'display_name',
+1 -1
View File
@@ -20,7 +20,7 @@ class UM_DateTime {
$then_ts = strtotime($then);
$then_year = date('Y', $then_ts);
$age = date('Y') - $then_year;
if(strtotime('+' . $age . ' years', $then_ts) > time()) $age--;
if( strtotime('+' . $age . ' years', $then_ts) > current_time( 'timestamp' ) ) $age--;
if ( $age == 1 )
return sprintf(__('%s year old','ultimatemember'), $age );
if ( $age > 1 )
+25 -2
View File
@@ -9,6 +9,24 @@ class UM_Fields {
}
/***
*** @standard checkbox field
***/
function checkbox( $id, $title ) {
?>
<div class="um-field um-field-c">
<div class="um-field-area">
<label class="um-field-checkbox active">
<input type="checkbox" name="<?php echo $id; ?>" value="1" checked /><span class="um-field-checkbox-state"><i class="um-icon-android-checkbox-outline"></i></span>
<span class="um-field-checkbox-option"> <?php echo $title; ?></span>
</label>
</div>
</div>
<?php
}
/***
*** @show user social links
***/
@@ -823,11 +841,15 @@ class UM_Fields {
if ( !um_can_view_field( $data ) ) return;
if ( !um_can_edit_field( $data ) ) return;
// disable these fields in profile edit only
// fields that need to be disabled in edit mode (profile)
if ( in_array( $key, array('user_email','username','user_login','user_password') ) && $this->editing == true && $this->set_mode == 'profile' ) {
return;
}
// forbidden in edit mode?
if ( isset( $data['edit_forbidden'] ) ) return;
// required option
if ( isset( $data['required_opt'] ) ) {
$opt = $data['required_opt'];
if ( um_get_option( $opt[0] ) != $opt[1] ) {
@@ -835,12 +857,14 @@ class UM_Fields {
}
}
// required user permission
if ( isset( $data['required_perm'] ) ) {
if ( !um_user( $data['required_perm'] ) ) {
return;
}
}
// do not show passwords
if ( isset( $ultimatemember->user->preview ) && $ultimatemember->user->preview ) {
if ( $data['type'] == 'password' ){
return;
@@ -848,7 +872,6 @@ class UM_Fields {
}
/* Begin by field type */
switch( $type ) {
/* Default: Integration */
+10
View File
@@ -22,6 +22,16 @@
return $label;
}
/***
*** @user's registration date
***/
add_filter('um_profile_field_filter_hook__user_registered', 'um_profile_field_filter_hook__user_registered', 99, 2);
function um_profile_field_filter_hook__user_registered( $value, $data ) {
$value = strtotime($value);
$value = sprintf(__('Joined %s','ultimatemember'), date('d M Y', $value) );
return $value;
}
/***
*** @urls in description
***/
+15 -15
View File
@@ -8,13 +8,13 @@
$actions = null;
$actions['um_approve_membership'] = array( 'label' => __('Approve Membership') );
$actions['um_reject_membership'] = array( 'label' => __('Reject Membership') );
$actions['um_put_as_pending'] = array( 'label' => __('Put as Pending Review') );
$actions['um_resend_activation'] = array( 'label' => __('Resend Activation E-mail') );
$actions['um_deactivate'] = array( 'label' => __('Deactivate') );
$actions['um_reenable'] = array( 'label' => __('Reactivate') );
$actions['um_delete'] = array( 'label' => __('Delete') );
$actions['um_approve_membership'] = array( 'label' => __('Approve Membership','ultimatemember') );
$actions['um_reject_membership'] = array( 'label' => __('Reject Membership','ultimatemember') );
$actions['um_put_as_pending'] = array( 'label' => __('Put as Pending Review','ultimatemember') );
$actions['um_resend_activation'] = array( 'label' => __('Resend Activation E-mail','ultimatemember') );
$actions['um_deactivate'] = array( 'label' => __('Deactivate','ultimatemember') );
$actions['um_reenable'] = array( 'label' => __('Reactivate','ultimatemember') );
$actions['um_delete'] = array( 'label' => __('Delete','ultimatemember') );
return $actions;
}
@@ -30,32 +30,32 @@
if ( !um_user('super_admin') ) {
if ( um_user('account_status') == 'awaiting_admin_review' ){
$actions['um_approve_membership'] = array( 'label' => __('Approve Membership') );
$actions['um_reject_membership'] = array( 'label' => __('Reject Membership') );
$actions['um_approve_membership'] = array( 'label' => __('Approve Membership','ultimatemember') );
$actions['um_reject_membership'] = array( 'label' => __('Reject Membership','ultimatemember') );
}
if ( um_user('account_status') == 'rejected' ) {
$actions['um_approve_membership'] = array( 'label' => __('Approve Membership') );
$actions['um_approve_membership'] = array( 'label' => __('Approve Membership','ultimatemember') );
}
if ( um_user('account_status') == 'approved' ) {
$actions['um_put_as_pending'] = array( 'label' => __('Put as Pending Review') );
$actions['um_put_as_pending'] = array( 'label' => __('Put as Pending Review','ultimatemember') );
}
if ( um_user('account_status') == 'awaiting_email_confirmation' ) {
$actions['um_resend_activation'] = array( 'label' => __('Resend Activation E-mail') );
$actions['um_resend_activation'] = array( 'label' => __('Resend Activation E-mail','ultimatemember') );
}
if ( um_user('account_status') != 'inactive' ) {
$actions['um_deactivate'] = array( 'label' => __('Deactivate this account') );
$actions['um_deactivate'] = array( 'label' => __('Deactivate this account','ultimatemember') );
}
if ( um_user('account_status') == 'inactive' ) {
$actions['um_reenable'] = array( 'label' => __('Reactivate this account') );
$actions['um_reenable'] = array( 'label' => __('Reactivate this account','ultimatemember') );
}
if ( um_current_user_can( 'delete', um_profile_id() ) ) {
$actions['um_delete'] = array( 'label' => __('Delete this user') );
$actions['um_delete'] = array( 'label' => __('Delete this user','ultimatemember') );
}
}
+2 -2
View File
@@ -76,12 +76,12 @@ class UM_Form {
if ( !in_array( $this->form_data['mode'], array('login') ) ) {
$form_timestamp = trim($_POST['timestamp']);
$live_timestamp = time();
$live_timestamp = current_time( 'timestamp' );
if ( $form_timestamp == '' )
wp_die( __('Hello, spam bot!') );
if ( $live_timestamp - $form_timestamp < 3 )
if ( $live_timestamp - $form_timestamp < 5 )
wp_die( __('Whoa, slow down! You\'re seeing this message because you tried to submit a form too fast and we think you might be a spam bot. If you are a real human being please wait a few seconds before submitting the form. Thanks!') );
}
+1 -1
View File
@@ -28,7 +28,7 @@ class UM_Password {
if ( $_REQUEST['hash'] != um_user('reset_pass_hash') ) wp_die( __('This is not a valid hash, or it has expired.','ultimatemember') );
$ultimatemember->user->profile['reset_pass_hash_token'] = time();
$ultimatemember->user->profile['reset_pass_hash_token'] = current_time( 'timestamp' );
$ultimatemember->user->update_usermeta_info('reset_pass_hash_token');
$this->change_password = true;
+1
View File
@@ -143,6 +143,7 @@ class UM_Setup {
'_um_login_primary_btn_hover' => '#44b0ec',
'_um_login_primary_btn_text' => '#fff',
'_um_login_forgot_pass_link' => 1,
'_um_login_show_rememberme' => 1,
'_um_login_secondary_btn' => 1,
'_um_login_secondary_btn_word' => __('Register','ultimatemember'),
'_um_login_secondary_btn_color' => '#eee',
+12 -5
View File
@@ -103,7 +103,9 @@ function um_user_ip() {
***/
function um_user_submitted_registration( $style = false ) {
$output = null;
$data = um_user('submitted');
$udata = get_userdata( um_user('ID') );
if ( $style ) $output .= '<div class="um-admin-infobox">';
@@ -116,6 +118,11 @@ function um_user_ip() {
$v = implode(',', $v );
}
if ( $k == 'timestamp' ) {
$k = __('date submitted','ultimatemember');
$v = date("d M Y H:i", $v);
}
if ( $style ) {
if ( !$v ) $v = __('(empty)','ultimatemember');
$output .= "<p><label>$k</label><span>$v</span></p>";
@@ -795,10 +802,10 @@ function um_fetch_user( $user_id ) {
global $ultimatemember;
$uri = false;
if ( file_exists( $ultimatemember->files->upload_basedir . um_user('ID') . '/cover_photo.jpg' ) ) {
$uri = um_user_uploads_uri() . 'cover_photo.jpg?' . time();
$uri = um_user_uploads_uri() . 'cover_photo.jpg?' . current_time( 'timestamp' );
}
if ( file_exists( $ultimatemember->files->upload_basedir . um_user('ID') . '/cover_photo-' . $attrs. '.jpg' ) ){
$uri = um_user_uploads_uri() . 'cover_photo-'.$attrs.'.jpg?' . time();
$uri = um_user_uploads_uri() . 'cover_photo-'.$attrs.'.jpg?' . current_time( 'timestamp' );
}
return $uri;
}
@@ -813,7 +820,7 @@ function um_fetch_user( $user_id ) {
if ( file_exists( $ultimatemember->files->upload_basedir . um_user('ID') . '/profile_photo-' . $attrs. '.jpg' ) ) {
$uri = um_user_uploads_uri() . 'profile_photo-'.$attrs.'.jpg?' . time();
$uri = um_user_uploads_uri() . 'profile_photo-'.$attrs.'.jpg?' . current_time( 'timestamp' );
} else {
@@ -822,11 +829,11 @@ function um_fetch_user( $user_id ) {
if ( file_exists( $ultimatemember->files->upload_basedir . um_user('ID') . '/profile_photo-' . $find. '.jpg' ) ) {
$uri = um_user_uploads_uri() . 'profile_photo-'.$find.'.jpg?' . time();
$uri = um_user_uploads_uri() . 'profile_photo-'.$find.'.jpg?' . current_time( 'timestamp' );
} else if ( file_exists( $ultimatemember->files->upload_basedir . um_user('ID') . '/profile_photo.jpg' ) ) {
$uri = um_user_uploads_uri() . 'profile_photo.jpg?' . time();
$uri = um_user_uploads_uri() . 'profile_photo.jpg?' . current_time( 'timestamp' );
}
+2 -2
View File
@@ -171,9 +171,9 @@ class UM_User {
/***
*** @Automatic login by user id
***/
function auto_login( $user_id ) {
function auto_login( $user_id, $rememberme = 0 ) {
wp_set_current_user($user_id);
wp_set_auth_cookie($user_id);
wp_set_auth_cookie($user_id, $rememberme );
}
/***
+1 -1
View File
@@ -3,7 +3,7 @@
Plugin Name: Ultimate Member
Plugin URI: http://ultimatemember.com/
Description: Ultimate Member is a powerful community and membership plugin that allows you to create beautiful community and membership sites with WordPress
Version: 1.0.53
Version: 1.0.56
Author: Ultimate Member
Author URI: http://ultimatemember.com/
*/
+29 -6
View File
@@ -7,7 +7,7 @@ Tags: access control, author, authors, author profile, comments, community, comm
Requires at least: 4.1
Tested up to: 4.1
Stable Tag: 1.0.53
Stable Tag: 1.0.56
License: GNU Version 2 or Any Later Version
@@ -123,11 +123,12 @@ Looking for help with Ultimate Member? Join our [community forum](https://ultima
Ultimate Member has been translated into the following languages:
* English (US)
* French
* Spanish
* German
* Italian
* Turkish
* Español
* Français
* Italiano
* Deutsch
* Nederlands
* Türkçe
== Installation ==
@@ -186,6 +187,28 @@ The plugin works with popular caching plugins by automatically excluding Ultimat
== Changelog ==
= 1.0.56: February 15, 2015 =
* Fixed: issue with permalink changes
= 1.0.55: February 15, 2015 =
* New: added Dutch (Nederlands) language
* New: show user registration/joined date in profile and/or member directory
* New: added facebook meta tags on user profiles (You have to disable facebook og tags in your SEO plugin)
* Tweak: sort users by default in "backend" by newest users first
* Tweak: added a close icon to profile and account notices
* Fixed: changed all time features to reflect WordPress installation time
* Fixed: timestamp on registration info shows form submission date/day
* Fixed: updated language files and new translation words
= 1.0.54: February 15, 2015 =
* New: added a remember me checkbox to login forms by default (optional)
* Tweak: keep your users signed in even if they close browser (optional)
* Tweak: minor css changes
* Fixed: bug with double redirects (causing incorrect loop) after login on some sites
= 1.0.53: February 14, 2015 =
* Tweak: when deleting users in backend, users will be deleted upon confirmation only
+10
View File
@@ -1634,6 +1634,16 @@ $this->sections[] = array(
'off' => __('Off','ultimatemember'),
),
array(
'id' => 'login_show_rememberme',
'type' => 'switch',
'title' => __( 'Show "Remember Me"','ultimatemember' ),
'default' => 1,
'desc' => __('Allow users to choose If they want to stay signed in even after closing the browser. If you do not show this option, the default will be to not remember login session.','ultimatemember'),
'on' => __('On','ultimatemember'),
'off' => __('Off','ultimatemember'),
),
)
);
+1
View File
@@ -20,6 +20,7 @@ class UM_API {
'fr_FR' => 'Français',
'it_IT' => 'Italiano',
'de_DE' => 'Deutsch',
'nl_NL' => 'Nederlands',
'tr_TR' => 'Türkçe',
);