mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-06-05 15:09:37 +09:00
Merge branch 'master' of https://github.com/ultimatemember/ultimatemember
This commit is contained in:
@@ -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.29 | WordPress 4.9 or higher| 2.0.29 |
|
||||
| 2.0.30 | WordPress 4.9 or higher| 2.0.30 |
|
||||
|
||||
|
||||
Features of the plugin include:
|
||||
@@ -48,7 +48,7 @@ GNU Version 2 or Any Later Version
|
||||
|
||||
Releases
|
||||
====================
|
||||
[Official Release Version: 2.0.29](https://github.com/ultimatemember/ultimatemember/releases/tag/2.0.29).
|
||||
[Official Release Version: 2.0.30](https://github.com/ultimatemember/ultimatemember/releases/tag/2.0.30).
|
||||
|
||||
Changelog
|
||||
====================
|
||||
|
||||
@@ -1,210 +0,0 @@
|
||||
/*!
|
||||
* jQuery.scrollTo
|
||||
* Copyright (c) 2007-2015 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
|
||||
* Licensed under MIT
|
||||
* http://flesler.blogspot.com/2007/10/jqueryscrollto.html
|
||||
* @projectDescription Lightweight, cross-browser and highly customizable animated scrolling with jQuery
|
||||
* @author Ariel Flesler
|
||||
* @version 2.1.1
|
||||
*/
|
||||
;(function(factory) {
|
||||
'use strict';
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof module !== 'undefined' && module.exports) {
|
||||
// CommonJS
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
// Global
|
||||
factory(jQuery);
|
||||
}
|
||||
})(function($) {
|
||||
'use strict';
|
||||
|
||||
var $scrollTo = $.scrollTo = function(target, duration, settings) {
|
||||
return $(window).scrollTo(target, duration, settings);
|
||||
};
|
||||
|
||||
$scrollTo.defaults = {
|
||||
axis:'xy',
|
||||
duration: 0,
|
||||
limit:true
|
||||
};
|
||||
|
||||
function isWin(elem) {
|
||||
return !elem.nodeName ||
|
||||
$.inArray(elem.nodeName.toLowerCase(), ['iframe','#document','html','body']) !== -1;
|
||||
}
|
||||
|
||||
$.fn.scrollTo = function(target, duration, settings) {
|
||||
if (typeof duration === 'object') {
|
||||
settings = duration;
|
||||
duration = 0;
|
||||
}
|
||||
if (typeof settings === 'function') {
|
||||
settings = { onAfter:settings };
|
||||
}
|
||||
if (target === 'max') {
|
||||
target = 9e9;
|
||||
}
|
||||
|
||||
settings = $.extend({}, $scrollTo.defaults, settings);
|
||||
// Speed is still recognized for backwards compatibility
|
||||
duration = duration || settings.duration;
|
||||
// Make sure the settings are given right
|
||||
var queue = settings.queue && settings.axis.length > 1;
|
||||
if (queue) {
|
||||
// Let's keep the overall duration
|
||||
duration /= 2;
|
||||
}
|
||||
settings.offset = both(settings.offset);
|
||||
settings.over = both(settings.over);
|
||||
|
||||
return this.each(function() {
|
||||
// Null target yields nothing, just like jQuery does
|
||||
if (target === null) return;
|
||||
|
||||
var win = isWin(this),
|
||||
elem = win ? this.contentWindow || window : this,
|
||||
$elem = $(elem),
|
||||
targ = target,
|
||||
attr = {},
|
||||
toff;
|
||||
|
||||
switch (typeof targ) {
|
||||
// A number will pass the regex
|
||||
case 'number':
|
||||
case 'string':
|
||||
if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) {
|
||||
targ = both(targ);
|
||||
// We are done
|
||||
break;
|
||||
}
|
||||
// Relative/Absolute selector
|
||||
targ = win ? $(targ) : $(targ, elem);
|
||||
if (!targ.length) return;
|
||||
/* falls through */
|
||||
case 'object':
|
||||
// DOMElement / jQuery
|
||||
if (targ.is || targ.style) {
|
||||
// Get the real position of the target
|
||||
toff = (targ = $(targ)).offset();
|
||||
}
|
||||
}
|
||||
|
||||
var offset = $.isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset;
|
||||
|
||||
$.each(settings.axis.split(''), function(i, axis) {
|
||||
var Pos = axis === 'x' ? 'Left' : 'Top',
|
||||
pos = Pos.toLowerCase(),
|
||||
key = 'scroll' + Pos,
|
||||
prev = $elem[key](),
|
||||
max = $scrollTo.max(elem, axis);
|
||||
|
||||
if (toff) {// jQuery / DOMElement
|
||||
attr[key] = toff[pos] + (win ? 0 : prev - $elem.offset()[pos]);
|
||||
|
||||
// If it's a dom element, reduce the margin
|
||||
if (settings.margin) {
|
||||
attr[key] -= parseInt(targ.css('margin'+Pos), 10) || 0;
|
||||
attr[key] -= parseInt(targ.css('border'+Pos+'Width'), 10) || 0;
|
||||
}
|
||||
|
||||
attr[key] += offset[pos] || 0;
|
||||
|
||||
if (settings.over[pos]) {
|
||||
// Scroll to a fraction of its width/height
|
||||
attr[key] += targ[axis === 'x'?'width':'height']() * settings.over[pos];
|
||||
}
|
||||
} else {
|
||||
var val = targ[pos];
|
||||
// Handle percentage values
|
||||
attr[key] = val.slice && val.slice(-1) === '%' ?
|
||||
parseFloat(val) / 100 * max
|
||||
: val;
|
||||
}
|
||||
|
||||
// Number or 'number'
|
||||
if (settings.limit && /^\d+$/.test(attr[key])) {
|
||||
// Check the limits
|
||||
attr[key] = attr[key] <= 0 ? 0 : Math.min(attr[key], max);
|
||||
}
|
||||
|
||||
// Don't waste time animating, if there's no need.
|
||||
if (!i && settings.axis.length > 1) {
|
||||
if (prev === attr[key]) {
|
||||
// No animation needed
|
||||
attr = {};
|
||||
} else if (queue) {
|
||||
// Intermediate animation
|
||||
animate(settings.onAfterFirst);
|
||||
// Don't animate this axis again in the next iteration.
|
||||
attr = {};
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
animate(settings.onAfter);
|
||||
|
||||
function animate(callback) {
|
||||
var opts = $.extend({}, settings, {
|
||||
// The queue setting conflicts with animate()
|
||||
// Force it to always be true
|
||||
queue: true,
|
||||
duration: duration,
|
||||
complete: callback && function() {
|
||||
callback.call(elem, targ, settings);
|
||||
}
|
||||
});
|
||||
$elem.animate(attr, opts);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Max scrolling position, works on quirks mode
|
||||
// It only fails (not too badly) on IE, quirks mode.
|
||||
$scrollTo.max = function(elem, axis) {
|
||||
var Dim = axis === 'x' ? 'Width' : 'Height',
|
||||
scroll = 'scroll'+Dim;
|
||||
|
||||
if (!isWin(elem))
|
||||
return elem[scroll] - $(elem)[Dim.toLowerCase()]();
|
||||
|
||||
var size = 'client' + Dim,
|
||||
doc = elem.ownerDocument || elem.document,
|
||||
html = doc.documentElement,
|
||||
body = doc.body;
|
||||
|
||||
return Math.max(html[scroll], body[scroll]) - Math.min(html[size], body[size]);
|
||||
};
|
||||
|
||||
function both(val) {
|
||||
return $.isFunction(val) || $.isPlainObject(val) ? val : { top:val, left:val };
|
||||
}
|
||||
|
||||
// Add special hooks so that window scroll properties can be animated
|
||||
$.Tween.propHooks.scrollLeft =
|
||||
$.Tween.propHooks.scrollTop = {
|
||||
get: function(t) {
|
||||
return $(t.elem)[t.prop]();
|
||||
},
|
||||
set: function(t) {
|
||||
var curr = this.get(t);
|
||||
// If interrupt is true and user scrolled, stop animating
|
||||
if (t.options.interrupt && t._last && t._last !== curr) {
|
||||
return $(t.elem).stop();
|
||||
}
|
||||
var next = Math.round(t.now);
|
||||
// Don't waste CPU
|
||||
// Browsers don't render floating point scroll
|
||||
if (curr !== next) {
|
||||
$(t.elem)[t.prop](next);
|
||||
t._last = this.get(t);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// AMD requirement
|
||||
return $scrollTo;
|
||||
});
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"undefined"!=typeof module&&module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(w){"use strict";var y=w.scrollTo=function(e,t,o){return w(window).scrollTo(e,t,o)};function g(e){return!e.nodeName||-1!==w.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])}function t(e){return w.isFunction(e)||w.isPlainObject(e)?e:{top:e,left:e}}return y.defaults={axis:"xy",duration:0,limit:!0},w.fn.scrollTo=function(e,o,x){"object"==typeof o&&(x=o,o=0),"function"==typeof x&&(x={onAfter:x}),"max"===e&&(e=9e9),x=w.extend({},y.defaults,x),o=o||x.duration;var v=x.queue&&1<x.axis.length;return v&&(o/=2),x.offset=t(x.offset),x.over=t(x.over),this.each(function(){if(null!==e){var f,u=g(this),c=u?this.contentWindow||window:this,l=w(c),d=e,m={};switch(typeof d){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(d)){d=t(d);break}if(!(d=u?w(d):w(d,c)).length)return;case"object":(d.is||d.style)&&(f=(d=w(d)).offset())}var p=w.isFunction(x.offset)&&x.offset(c,d)||x.offset;w.each(x.axis.split(""),function(e,t){var o="x"===t?"Left":"Top",n=o.toLowerCase(),r="scroll"+o,i=l[r](),s=y.max(c,t);if(f)m[r]=f[n]+(u?0:i-l.offset()[n]),x.margin&&(m[r]-=parseInt(d.css("margin"+o),10)||0,m[r]-=parseInt(d.css("border"+o+"Width"),10)||0),m[r]+=p[n]||0,x.over[n]&&(m[r]+=d["x"===t?"width":"height"]()*x.over[n]);else{var a=d[n];m[r]=a.slice&&"%"===a.slice(-1)?parseFloat(a)/100*s:a}x.limit&&/^\d+$/.test(m[r])&&(m[r]=m[r]<=0?0:Math.min(m[r],s)),!e&&1<x.axis.length&&(i===m[r]?m={}:v&&(h(x.onAfterFirst),m={}))}),h(x.onAfter)}function h(e){var t=w.extend({},x,{queue:!0,duration:o,complete:e&&function(){e.call(c,d,x)}});l.animate(m,t)}})},y.max=function(e,t){var o="x"===t?"Width":"Height",n="scroll"+o;if(!g(e))return e[n]-w(e)[o.toLowerCase()]();var r="client"+o,i=e.ownerDocument||e.document,s=i.documentElement,a=i.body;return Math.max(s[n],a[n])-Math.min(s[r],a[r])},w.Tween.propHooks.scrollLeft=w.Tween.propHooks.scrollTop={get:function(e){return w(e.elem)[e.prop]()},set:function(e){var t=this.get(e);if(e.options.interrupt&&e._last&&e._last!==t)return w(e.elem).stop();var o=Math.round(e.now);t!==o&&(w(e.elem)[e.prop](o),e._last=this.get(e))}},y});
|
||||
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
@@ -5,6 +5,7 @@
|
||||
|
||||
.um-admin.post-type-um_form .manage-column.column-id {width: 60px}
|
||||
.um-admin.post-type-um_form .manage-column.column-mode {width: 100px}
|
||||
.um-admin.post-type-um_form .manage-column.column-is_default {width: 60px}
|
||||
.um-admin.post-type-um_form .manage-column.column-title {width: 200px}
|
||||
.um-admin.post-type-um_form .manage-column.column-shortcode {width: 200px}
|
||||
.um-admin.post-type-um_form .manage-column.column-impressions {width: 100px}
|
||||
@@ -12,6 +13,7 @@
|
||||
|
||||
.um-admin.post-type-um_directory .manage-column.column-id {width: 60px}
|
||||
.um-admin.post-type-um_directory .manage-column.column-title {width: 250px}
|
||||
.um-admin.post-type-um_directory .manage-column.column-is_default {width: 60px}
|
||||
|
||||
.um-admin.post-type-um_role .manage-column.column-title {width: 200px}
|
||||
.um-admin.post-type-um_role .manage-column.column-count {width: 150px}
|
||||
|
||||
@@ -45,22 +45,32 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
|
||||
|
||||
add_action( 'um_admin_do_action__install_core_pages', array( &$this, 'install_core_pages' ) );
|
||||
|
||||
add_filter( 'admin_body_class', array( &$this, 'admin_body_class' ), 999 );
|
||||
|
||||
add_action( 'parent_file', array( &$this, 'parent_file' ), 9 );
|
||||
add_filter( 'gettext', array( &$this, 'gettext' ), 10, 4 );
|
||||
add_filter( 'post_updated_messages', array( &$this, 'post_updated_messages' ) );
|
||||
|
||||
|
||||
|
||||
add_action( 'wp_ajax_um_dynamic_modal_content', array( UM()->builder(), 'dynamic_modal_content' ) );
|
||||
add_action( 'wp_ajax_um_populate_dropdown_options', array( UM()->builder(), 'populate_dropdown_options' ) );
|
||||
add_action( 'wp_ajax_um_update_field', array( UM()->builder(), 'update_field' ) );
|
||||
add_action( 'wp_ajax_um_do_ajax_action', array( UM()->fields(), 'do_ajax_action' ) );
|
||||
add_action( 'wp_ajax_um_update_builder', array( UM()->builder(), 'update_builder' ) );
|
||||
add_action( 'wp_ajax_um_update_order', array( UM()->dragdrop(), 'update_order' ) );
|
||||
add_action( 'wp_ajax_um_rated', array( UM()->admin_menu(), 'ultimatemember_rated' ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adds class to our admin pages
|
||||
*
|
||||
* @param $classes
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function admin_body_class( $classes ) {
|
||||
if ( $this->is_um_screen() ) {
|
||||
return "$classes um-admin";
|
||||
}
|
||||
return $classes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function manual_upgrades_request() {
|
||||
if ( ! is_admin() || ! current_user_can( 'manage_options' ) ) {
|
||||
die();
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
namespace um\admin\core;
|
||||
|
||||
|
||||
// Exit if accessed directly.
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
|
||||
if ( ! class_exists( 'um\admin\core\Admin_Ajax_Hooks' ) ) {
|
||||
|
||||
|
||||
/**
|
||||
* Class Admin_Ajax_Hooks
|
||||
* @package um\admin\core
|
||||
*/
|
||||
class Admin_Ajax_Hooks {
|
||||
|
||||
|
||||
/**
|
||||
* Admin_Columns constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
add_action( 'wp_ajax_um_do_ajax_action', array( UM()->fields(), 'do_ajax_action' ) );
|
||||
add_action( 'wp_ajax_um_update_builder', array( UM()->builder(), 'update_builder' ) );
|
||||
add_action( 'wp_ajax_um_update_order', array( UM()->dragdrop(), 'update_order' ) );
|
||||
add_action( 'wp_ajax_um_update_field', array( UM()->builder(), 'update_field' ) );
|
||||
add_action( 'wp_ajax_um_dynamic_modal_content', array( UM()->builder(), 'dynamic_modal_content' ) );
|
||||
add_action( 'wp_ajax_um_populate_dropdown_options', array( UM()->builder(), 'populate_dropdown_options' ) );
|
||||
add_action( 'wp_ajax_um_rated', array( UM()->admin_menu(), 'ultimatemember_rated' ) );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -90,11 +90,12 @@ if ( ! class_exists( 'um\admin\core\Admin_Columns' ) ) {
|
||||
*/
|
||||
function manage_edit_um_form_columns( $columns ) {
|
||||
$new_columns['cb'] = '<input type="checkbox" />';
|
||||
$new_columns['title'] = __( 'Title', 'ulitmatemember' );
|
||||
$new_columns['id'] = __('ID', 'ulitmatemember' );
|
||||
$new_columns['mode'] = __( 'Type', 'ulitmatemember' );
|
||||
$new_columns['shortcode'] = __( 'Shortcode', 'ulitmatemember' );
|
||||
$new_columns['date'] = __( 'Date', 'ulitmatemember' );
|
||||
$new_columns['title'] = __( 'Title', 'ulitmate-member' );
|
||||
$new_columns['id'] = __('ID', 'ulitmate-member' );
|
||||
$new_columns['mode'] = __( 'Type', 'ulitmate-member' );
|
||||
$new_columns['is_default'] = __( 'Default', 'ulitmate-member' );
|
||||
$new_columns['shortcode'] = __( 'Shortcode', 'ulitmate-member' );
|
||||
$new_columns['date'] = __( 'Date', 'ulitmate-member' );
|
||||
|
||||
return $new_columns;
|
||||
}
|
||||
@@ -111,6 +112,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Columns' ) ) {
|
||||
$new_columns['cb'] = '<input type="checkbox" />';
|
||||
$new_columns['title'] = __( 'Title', 'ultimate-member' );
|
||||
$new_columns['id'] = __( 'ID', 'ultimate-member' );
|
||||
$new_columns['is_default'] = __( 'Default', 'ulitmate-member' );
|
||||
$new_columns['shortcode'] = __( 'Shortcode', 'ultimate-member' );
|
||||
$new_columns['date'] = __( 'Date', 'ultimate-member' );
|
||||
|
||||
@@ -131,7 +133,19 @@ if ( ! class_exists( 'um\admin\core\Admin_Columns' ) ) {
|
||||
break;
|
||||
|
||||
case 'shortcode':
|
||||
echo UM()->shortcodes()->get_shortcode( $id );
|
||||
$is_default = UM()->query()->get_attr( 'is_default', $id );
|
||||
|
||||
if ( $is_default ) {
|
||||
echo UM()->shortcodes()->get_default_shortcode( $id );
|
||||
} else {
|
||||
echo UM()->shortcodes()->get_shortcode( $id );
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'is_default':
|
||||
$is_default = UM()->query()->get_attr( 'is_default', $id );
|
||||
echo empty( $is_default ) ? __( 'No', 'ultimate-member' ) : __( 'Yes', 'ultimate-member' );
|
||||
break;
|
||||
|
||||
case 'mode':
|
||||
@@ -143,7 +157,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Columns' ) ) {
|
||||
|
||||
|
||||
/**
|
||||
* Display cusom columns for Directory
|
||||
* Display custom columns for Directory
|
||||
*
|
||||
* @param string $column_name
|
||||
* @param int $id
|
||||
@@ -154,7 +168,17 @@ if ( ! class_exists( 'um\admin\core\Admin_Columns' ) ) {
|
||||
echo '<span class="um-admin-number">'.$id.'</span>';
|
||||
break;
|
||||
case 'shortcode':
|
||||
echo UM()->shortcodes()->get_shortcode( $id );
|
||||
$is_default = UM()->query()->get_attr( 'is_default', $id );
|
||||
|
||||
if ( $is_default ) {
|
||||
echo UM()->shortcodes()->get_default_shortcode( $id );
|
||||
} else {
|
||||
echo UM()->shortcodes()->get_shortcode( $id );
|
||||
}
|
||||
break;
|
||||
case 'is_default':
|
||||
$is_default = UM()->query()->get_attr( 'is_default', $id );
|
||||
echo empty( $is_default ) ? __( 'No', 'ultimate-member' ) : __( 'Yes', 'ultimate-member' );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,8 +39,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
|
||||
add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts' ) );
|
||||
|
||||
add_filter( 'admin_body_class', array( &$this, 'admin_body_class' ), 999 );
|
||||
|
||||
add_filter( 'enter_title_here', array( &$this, 'enter_title_here' ) );
|
||||
|
||||
add_action( 'load-user-new.php', array( &$this, 'enqueue_role_wrapper' ) );
|
||||
@@ -344,21 +342,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adds class to our admin pages
|
||||
*
|
||||
* @param $classes
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function admin_body_class( $classes ) {
|
||||
if ( UM()->admin()->is_um_screen() ) {
|
||||
return "$classes um-admin";
|
||||
}
|
||||
return $classes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enqueue scripts and styles
|
||||
*/
|
||||
|
||||
@@ -1087,6 +1087,21 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
|
||||
$v = preg_split( '/[\r\n]+/', $v, -1, PREG_SPLIT_NO_EMPTY );
|
||||
}
|
||||
if ( strstr( $k, '_um_' ) ) {
|
||||
if ( $k === '_um_is_default' ) {
|
||||
$mode = UM()->query()->get_attr( 'mode', $post_id );
|
||||
if ( ! empty( $mode ) ) {
|
||||
$posts = $wpdb->get_col(
|
||||
"SELECT post_id
|
||||
FROM {$wpdb->postmeta}
|
||||
WHERE meta_key = '_um_mode' AND
|
||||
meta_value = 'directory'"
|
||||
);
|
||||
foreach ( $posts as $p_id ) {
|
||||
delete_post_meta( $p_id, '_um_is_default' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
update_post_meta( $post_id, $k, $v );
|
||||
}
|
||||
}
|
||||
@@ -1121,8 +1136,24 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
|
||||
// save
|
||||
delete_post_meta( $post_id, '_um_profile_metafields' );
|
||||
foreach ( $_POST['form'] as $k => $v ) {
|
||||
if ( strstr( $k, '_um_' ) ){
|
||||
update_post_meta( $post_id, $k, $v);
|
||||
if ( strstr( $k, '_um_' ) ) {
|
||||
if ( $k === '_um_is_default' ) {
|
||||
$mode = UM()->query()->get_attr( 'mode', $post_id );
|
||||
if ( ! empty( $mode ) ) {
|
||||
$posts = $wpdb->get_col( $wpdb->prepare(
|
||||
"SELECT post_id
|
||||
FROM {$wpdb->postmeta}
|
||||
WHERE meta_key = '_um_mode' AND
|
||||
meta_value = %s",
|
||||
$mode
|
||||
) );
|
||||
foreach ( $posts as $p_id ) {
|
||||
delete_post_meta( $p_id, '_um_is_default' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
update_post_meta( $post_id, $k, $v );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -298,11 +298,11 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
|
||||
ob_start(); ?>
|
||||
|
||||
<p>
|
||||
<?php printf( __( 'One or more of your %s pages are not correctly setup. Please visit <strong>%s > Settings</strong> to re-assign your missing pages.', 'ultimate-member' ), ultimatemember_plugin_name, ultimatemember_plugin_name ); ?>
|
||||
<?php printf( __( '%s needs to create several pages (User Profiles, Account, Registration, Login, Password Reset, Logout, Member Directory) to function correctly.', 'ultimate-member' ), ultimatemember_plugin_name ); ?>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="<?php echo esc_attr( add_query_arg( 'um_adm_action', 'install_core_pages' ) ); ?>" class="button button-primary"><?php _e( 'Setup Pages', 'ultimate-member' ) ?></a>
|
||||
<a href="<?php echo esc_attr( add_query_arg( 'um_adm_action', 'install_core_pages' ) ); ?>" class="button button-primary"><?php _e( 'Create Pages', 'ultimate-member' ) ?></a>
|
||||
|
||||
<a href="javascript:void(0);" class="button-secondary um_secondary_dimiss"><?php _e( 'No thanks', 'ultimate-member' ) ?></a>
|
||||
</p>
|
||||
@@ -531,7 +531,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
|
||||
ob_start(); ?>
|
||||
|
||||
<p>
|
||||
<?php printf( __( 'Thanks for installing <strong>%s</strong>! We hope you like the plugin. To fund full-time development and support of the plugin we also sell extensions. If you subscribe to our mailing list we will send you a 20%% discount code for our <a href="%s" target="_blank">extensions bundle</a>.', 'ultimate-member' ), ultimatemember_plugin_name, 'https://ultimatemember.com/core-extensions-bundle/' ); ?>
|
||||
<?php printf( __( 'Thanks for installing <strong>%s</strong>! We hope you like the plugin. To fund full-time development and support of the plugin we also sell extensions. If you subscribe to our mailing list we will send you a 20%% discount code for our <a href="%s" target="_blank">extensions bundle</a>.', 'ultimate-member' ), ultimatemember_plugin_name, 'https://ultimatemember.com/core-extensions-bundle/' ); ?>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
<div class="um-admin-metabox">
|
||||
<?php /*UM()->admin_forms( array(
|
||||
'class' => 'um-member-directory-shortcode um-top-label',
|
||||
'prefix_id' => 'um_metadata',
|
||||
'fields' => array(
|
||||
array(
|
||||
'id' => '_um_is_default',
|
||||
'type' => 'select',
|
||||
'label' => __( 'Default Member Directory', 'ultimate-member' ),
|
||||
'tooltip' => sprintf( __( 'If you set this member directory as default you will have an ability to use %s shortcode for the displaying directory at the page. Otherwise you will have to use %s', 'ultimate-member' ), UM()->shortcodes()->get_default_shortcode( get_the_ID() ), UM()->shortcodes()->get_shortcode( get_the_ID() ) ),
|
||||
'value' => UM()->query()->get_meta_value( '_um_is_default' ),
|
||||
'options' => array(
|
||||
0 => __( 'No', 'ultimate-member' ),
|
||||
1 => __( 'Yes', 'ultimate-member' ),
|
||||
),
|
||||
),
|
||||
)
|
||||
) )->render_form();*/ ?>
|
||||
|
||||
<!-- <div class="um-admin-clear"></div>-->
|
||||
|
||||
<p><?php echo UM()->shortcodes()->get_shortcode( get_the_ID() ); ?></p>
|
||||
<!-- <p>--><?php //echo UM()->shortcodes()->get_default_shortcode( get_the_ID() ); ?><!--</p>-->
|
||||
</div>
|
||||
@@ -1,3 +1,24 @@
|
||||
<div class="um-admin-metabox">
|
||||
<?php /*UM()->admin_forms( array(
|
||||
'class' => 'um-form-shortcode um-top-label',
|
||||
'prefix_id' => 'form',
|
||||
'fields' => array(
|
||||
array(
|
||||
'id' => '_um_is_default',
|
||||
'type' => 'select',
|
||||
'label' => __( 'Default Form', 'ultimate-member' ),
|
||||
'tooltip' => sprintf( __( 'If you set this form as default you will have an ability to use %s shortcode for the displaying form at the page. Otherwise you will have to use %s', 'ultimate-member' ), UM()->shortcodes()->get_default_shortcode( get_the_ID() ), UM()->shortcodes()->get_shortcode( get_the_ID() ) ),
|
||||
'value' => UM()->query()->get_meta_value( '_um_is_default' ),
|
||||
'options' => array(
|
||||
0 => __( 'No', 'ultimate-member' ),
|
||||
1 => __( 'Yes', 'ultimate-member' ),
|
||||
),
|
||||
),
|
||||
)
|
||||
) )->render_form();*/ ?>
|
||||
|
||||
<!-- <div class="um-admin-clear"></div>-->
|
||||
|
||||
<p><?php echo UM()->shortcodes()->get_shortcode( get_the_ID() ); ?></p>
|
||||
<!-- <p>--><?php //echo UM()->shortcodes()->get_default_shortcode( get_the_ID() ); ?><!--</p>-->
|
||||
</div>
|
||||
@@ -60,6 +60,7 @@ if ( ! class_exists( 'um\Dependencies' ) ) {
|
||||
'beaver-builder' => '2.0',
|
||||
'user-photos' => '2.0.1',
|
||||
'user-exporter' => '1.0.0',
|
||||
'bookmark' => '2.0',
|
||||
);
|
||||
|
||||
|
||||
|
||||
@@ -525,6 +525,7 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
if ( $this->is_request( 'ajax' ) ) {
|
||||
$this->admin();
|
||||
$this->ajax_init();
|
||||
$this->admin_ajax_hooks();
|
||||
$this->metabox();
|
||||
$this->admin_upgrade()->init_packages_ajax_handlers();
|
||||
$this->admin_gdpr();
|
||||
@@ -638,6 +639,17 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @since 2.0.30
|
||||
*/
|
||||
function admin_ajax_hooks() {
|
||||
if ( empty( $this->classes['admin_ajax_hooks'] ) ) {
|
||||
$this->classes['admin_ajax_hooks'] = new um\admin\core\Admin_Ajax_Hooks();
|
||||
}
|
||||
return $this->classes['admin_ajax_hooks'];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*
|
||||
@@ -1313,6 +1325,20 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*
|
||||
* @return um\core\Templates
|
||||
*/
|
||||
function templates() {
|
||||
if ( empty( $this->classes['templates'] ) ) {
|
||||
$this->classes['templates'] = new um\core\Templates();
|
||||
}
|
||||
|
||||
return $this->classes['templates'];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*
|
||||
|
||||
+82
-104
@@ -13,16 +13,33 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
*/
|
||||
class Enqueue {
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $suffix = '';
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $js_baseurl = '';
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $css_baseurl = '';
|
||||
|
||||
|
||||
/**
|
||||
* Enqueue constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
$this->suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG || defined( 'UM_SCRIPT_DEBUG' ) ) ? '' : '.min';
|
||||
|
||||
$this->js_baseurl = um_url . 'assets/js/';
|
||||
$this->css_baseurl = um_url . 'assets/css/';
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
@@ -49,31 +66,63 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Minify css string
|
||||
*
|
||||
* @param $css
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
function minify( $css ) {
|
||||
$css = str_replace(array("\r", "\n"), '', $css);
|
||||
$css = str_replace(' {','{', $css );
|
||||
$css = str_replace('{ ','{', $css );
|
||||
$css = str_replace('; ',';', $css );
|
||||
$css = str_replace(';}','}', $css );
|
||||
$css = str_replace(': ',':', $css );
|
||||
return $css;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enqueue scripts and styles
|
||||
*/
|
||||
function wp_enqueue_scripts() {
|
||||
global $post;
|
||||
|
||||
$this->suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG || defined( 'UM_SCRIPT_DEBUG' ) ) ? '' : '.min';
|
||||
$dequeue_select2 = apply_filters( 'um_dequeue_select2_scripts', false );
|
||||
if ( class_exists( 'WooCommerce' ) || $dequeue_select2 ) {
|
||||
wp_dequeue_style( 'select2' );
|
||||
wp_deregister_style( 'select2' );
|
||||
|
||||
wp_dequeue_script( 'select2');
|
||||
wp_deregister_script('select2');
|
||||
}
|
||||
wp_register_script( 'select2', $this->js_baseurl . 'select2/select2.full.min.js', array( 'jquery', 'jquery-masonry' ), ultimatemember_version, true );
|
||||
|
||||
|
||||
wp_register_script( 'um_scrollbar', $this->js_baseurl . 'um-scrollbar' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
|
||||
wp_register_script( 'um_jquery_form', $this->js_baseurl . 'um-jquery-form' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_fileupload', $this->js_baseurl . 'um-fileupload' . $this->suffix . '.js', array( 'jquery', 'um_jquery_form' ), ultimatemember_version, true );
|
||||
|
||||
|
||||
$datetime_deps = array( 'jquery' );
|
||||
// load a localized version for date/time
|
||||
$locale = get_locale();
|
||||
if ( $locale && file_exists( um_path . 'assets/js/pickadate/translations/' . $locale . '.js' ) ) {
|
||||
wp_register_script('um_datetime_locale', um_url . 'assets/js/pickadate/translations/' . $locale . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
$datetime_deps[] = 'um_datetime_locale';
|
||||
}
|
||||
wp_register_script( 'um_datetime', $this->js_baseurl . 'pickadate/picker.js', $datetime_deps, ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_date', $this->js_baseurl . 'pickadate/picker.date.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_time', $this->js_baseurl . 'pickadate/picker.time.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_legacy', $this->js_baseurl . 'pickadate/legacy.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
|
||||
|
||||
wp_register_script( 'um_tipsy', $this->js_baseurl . 'um-tipsy' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_raty', $this->js_baseurl . 'um-raty' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_crop', $this->js_baseurl . 'um-crop' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
|
||||
|
||||
//FontAwesome and FontIcons styles
|
||||
wp_register_style( 'um_fonticons_ii', $this->css_baseurl . 'um-fonticons-ii.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_fonticons_fa', $this->css_baseurl . 'um-fonticons-fa.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_crop', $this->css_baseurl . 'um-crop.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_tipsy', $this->css_baseurl . 'um-tipsy.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_raty', $this->css_baseurl . 'um-raty.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'select2', $this->css_baseurl . 'select2/select2.min.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_fileupload', $this->css_baseurl . 'um-fileupload.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_datetime', $this->css_baseurl . 'pickadate/default.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_datetime_date', $this->css_baseurl . 'pickadate/default.date.css', array( 'um-datetime' ), ultimatemember_version );
|
||||
wp_register_style( 'um_datetime_time', $this->css_baseurl . 'pickadate/default.time.css', array( 'um-datetime' ), ultimatemember_version );
|
||||
wp_register_style( 'um_scrollbar', $this->css_baseurl . 'um-scrollbar.css', array(), ultimatemember_version );
|
||||
//ui slider for filters
|
||||
//wp_enqueue_script( 'jquery-ui-slider' );
|
||||
|
||||
|
||||
global $post;
|
||||
|
||||
if ( ! is_admin() ) {
|
||||
$c_url = UM()->permalinks()->get_current_url( get_option( 'permalink_structure' ) );
|
||||
@@ -119,25 +168,26 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
|
||||
// rtl style
|
||||
if ( is_rtl() ) {
|
||||
wp_register_style('um_rtl', um_url . 'assets/css/um.rtl.css', '', ultimatemember_version, 'all' );
|
||||
wp_register_style('um_rtl', um_url . 'assets/css/um.rtl.css', array(), ultimatemember_version );
|
||||
wp_enqueue_style('um_rtl');
|
||||
}
|
||||
|
||||
// load a localized version for date/time
|
||||
$locale = get_locale();
|
||||
if ( $locale && file_exists( um_path . 'assets/js/pickadate/translations/' . $locale . '.js' ) ) {
|
||||
wp_register_script('um_datetime_locale', um_url . 'assets/js/pickadate/translations/' . $locale . '.js', '', ultimatemember_version, true );
|
||||
wp_enqueue_script('um_datetime_locale');
|
||||
}
|
||||
|
||||
if(is_object($post) && has_shortcode($post->post_content,'ultimate-member')) {
|
||||
wp_dequeue_script('jquery-form');
|
||||
}
|
||||
|
||||
//old settings before UM 2.0 CSS
|
||||
wp_register_style('um_default_css', um_url . 'assets/css/um-old-default.css', '', ultimatemember_version, 'all' );
|
||||
wp_register_style('um_default_css', um_url . 'assets/css/um-old-default.css', array(), ultimatemember_version );
|
||||
wp_enqueue_style('um_default_css');
|
||||
|
||||
$this->old_css_settings();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function old_css_settings() {
|
||||
$uploads = wp_upload_dir();
|
||||
$upload_dir = $uploads['basedir'] . DIRECTORY_SEPARATOR . 'ultimatemember' . DIRECTORY_SEPARATOR;
|
||||
if ( file_exists( $upload_dir . 'um_old_settings.css' ) ) {
|
||||
@@ -172,7 +222,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
|
||||
$this->load_raty();
|
||||
|
||||
$this->load_scrollto();
|
||||
//$this->load_scrollto();
|
||||
|
||||
$this->load_scrollbar();
|
||||
|
||||
@@ -228,20 +278,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
*/
|
||||
function load_selectjs() {
|
||||
|
||||
$dequeue_select2 = apply_filters( 'um_dequeue_select2_scripts', false );
|
||||
|
||||
if ( class_exists( 'WooCommerce' ) || $dequeue_select2 ) {
|
||||
wp_dequeue_style( 'select2' );
|
||||
wp_deregister_style( 'select2' );
|
||||
|
||||
wp_dequeue_script( 'select2');
|
||||
wp_deregister_script('select2');
|
||||
}
|
||||
|
||||
wp_register_script('select2', um_url . 'assets/js/select2/select2.full.min.js', array('jquery', 'jquery-masonry') );
|
||||
wp_enqueue_script('select2');
|
||||
|
||||
wp_register_style('select2', um_url . 'assets/css/select2/select2.min.css' );
|
||||
wp_enqueue_style('select2');
|
||||
|
||||
}
|
||||
@@ -251,13 +288,8 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
* Load Fonticons
|
||||
*/
|
||||
function load_fonticons(){
|
||||
|
||||
wp_register_style('um_fonticons_ii', um_url . 'assets/css/um-fonticons-ii.css' );
|
||||
wp_enqueue_style('um_fonticons_ii');
|
||||
|
||||
wp_register_style('um_fonticons_fa', um_url . 'assets/css/um-fonticons-fa.css' );
|
||||
wp_enqueue_style('um_fonticons_fa');
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -265,16 +297,9 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
* Load fileupload JS
|
||||
*/
|
||||
function load_fileupload() {
|
||||
|
||||
wp_register_script('um_jquery_form', um_url . 'assets/js/um-jquery-form' . $this->suffix . '.js' );
|
||||
wp_enqueue_script('um_jquery_form');
|
||||
|
||||
wp_register_script('um_fileupload', um_url . 'assets/js/um-fileupload' . $this->suffix . '.js' );
|
||||
wp_enqueue_script('um_fileupload');
|
||||
|
||||
wp_register_style('um_fileupload', um_url . 'assets/css/um-fileupload.css' );
|
||||
wp_enqueue_style('um_fileupload');
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -283,7 +308,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
*/
|
||||
function load_functions() {
|
||||
|
||||
wp_register_script('um_functions', um_url . 'assets/js/um-functions' . $this->suffix . '.js', array('jquery', 'jquery-masonry', 'wp-util') );
|
||||
wp_register_script('um_functions', um_url . 'assets/js/um-functions' . $this->suffix . '.js', array('jquery', 'jquery-masonry', 'wp-util', 'um_scrollbar') );
|
||||
wp_enqueue_script('um_functions');
|
||||
|
||||
wp_enqueue_script( 'um-gdpr', um_url . 'assets/js/um-gdpr' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, false );
|
||||
@@ -343,39 +368,13 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
* Load date & time picker
|
||||
*/
|
||||
function load_datetimepicker() {
|
||||
|
||||
wp_register_script('um_datetime', um_url . 'assets/js/pickadate/picker.js' );
|
||||
wp_enqueue_script('um_datetime');
|
||||
|
||||
wp_register_script('um_datetime_date', um_url . 'assets/js/pickadate/picker.date.js' );
|
||||
wp_enqueue_script('um_datetime_date');
|
||||
|
||||
wp_register_script('um_datetime_time', um_url . 'assets/js/pickadate/picker.time.js' );
|
||||
wp_enqueue_script('um_datetime_time');
|
||||
|
||||
wp_register_script('um_datetime_legacy', um_url . 'assets/js/pickadate/legacy.js' );
|
||||
wp_enqueue_script('um_datetime_legacy');
|
||||
|
||||
wp_register_style('um_datetime', um_url . 'assets/css/pickadate/default.css' );
|
||||
wp_enqueue_style('um_datetime');
|
||||
|
||||
wp_register_style('um_datetime_date', um_url . 'assets/css/pickadate/default.date.css' );
|
||||
wp_enqueue_style('um_datetime_date');
|
||||
|
||||
wp_register_style('um_datetime_time', um_url . 'assets/css/pickadate/default.time.css' );
|
||||
wp_enqueue_style('um_datetime_time');
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load scrollto
|
||||
*/
|
||||
function load_scrollto(){
|
||||
|
||||
wp_register_script('um_scrollto', um_url . 'assets/js/um-scrollto' . $this->suffix . '.js' );
|
||||
wp_enqueue_script('um_scrollto');
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -383,27 +382,16 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
* Load scrollbar
|
||||
*/
|
||||
function load_scrollbar(){
|
||||
|
||||
wp_register_script('um_scrollbar', um_url . 'assets/js/um-scrollbar' . $this->suffix . '.js' );
|
||||
wp_enqueue_script('um_scrollbar');
|
||||
|
||||
wp_register_style('um_scrollbar', um_url . 'assets/css/um-scrollbar.css' );
|
||||
wp_enqueue_style('um_scrollbar');
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load rating
|
||||
*/
|
||||
function load_raty(){
|
||||
|
||||
wp_register_script('um_raty', um_url . 'assets/js/um-raty' . $this->suffix . '.js' );
|
||||
function load_raty() {
|
||||
wp_enqueue_script('um_raty');
|
||||
|
||||
wp_register_style('um_raty', um_url . 'assets/css/um-raty.css' );
|
||||
wp_enqueue_style('um_raty');
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -411,13 +399,8 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
* Load crop script
|
||||
*/
|
||||
function load_imagecrop(){
|
||||
|
||||
wp_register_script('um_crop', um_url . 'assets/js/um-crop' . $this->suffix . '.js' );
|
||||
wp_enqueue_script('um_crop');
|
||||
|
||||
wp_register_style('um_crop', um_url . 'assets/css/um-crop.css' );
|
||||
wp_enqueue_style('um_crop');
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -425,13 +408,8 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
||||
* Load tipsy
|
||||
*/
|
||||
function load_tipsy(){
|
||||
|
||||
wp_register_script('um_tipsy', um_url . 'assets/js/um-tipsy' . $this->suffix . '.js' );
|
||||
wp_enqueue_script('um_tipsy');
|
||||
|
||||
wp_register_style('um_tipsy', um_url . 'assets/css/um-tipsy.css' );
|
||||
wp_enqueue_style('um_tipsy');
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -286,8 +286,8 @@ if ( ! class_exists( 'um\core\External_Integrations' ) ) {
|
||||
$language_codes = $this->get_languages_codes();
|
||||
|
||||
$lang = '';
|
||||
if ( $language_codes['default'] != $language_codes['current'] &&
|
||||
UM()->config()->email_notifications[ $template_name ]['recipient'] != 'admin' ) {
|
||||
if ( $language_codes['default'] != $language_codes['current'] /*&&
|
||||
UM()->config()->email_notifications[ $template_name ]['recipient'] != 'admin'*/ ) {
|
||||
$lang = $language_codes['current'] . '/';
|
||||
}
|
||||
|
||||
|
||||
@@ -1128,13 +1128,42 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
* @return string
|
||||
*/
|
||||
function get_label( $key ) {
|
||||
$fields = UM()->builtin()->all_user_fields;
|
||||
if ( isset( $fields[$key]['label'] ) )
|
||||
return stripslashes( $fields[$key]['label'] );
|
||||
if ( isset( $fields[$key]['title'] ) )
|
||||
return stripslashes( $fields[$key]['title'] );
|
||||
$label = '';
|
||||
|
||||
return '';
|
||||
$fields = UM()->builtin()->all_user_fields;
|
||||
if ( isset( $fields[ $key ]['label'] ) ) {
|
||||
$label = stripslashes( $fields[ $key ]['label'] );
|
||||
}
|
||||
|
||||
if ( isset( $fields[ $key ]['title'] ) ) {
|
||||
$label = stripslashes( $fields[ $key ]['title'] );
|
||||
}
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type filter
|
||||
* @title um_change_field_label
|
||||
* @description Change Field Label
|
||||
* @input_vars
|
||||
* [{"var":"$label","type":"string","desc":"Field Label"},
|
||||
* {"var":"$key","type":"string","desc":"Field Key"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0.30"]
|
||||
* @usage add_filter( 'um_change_field_label', 'function_name', 10, 2 );
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_change_field_label', 'my_change_field_label', 10, 2 );
|
||||
* function my_form_fields( $label, $key ) {
|
||||
* // your code here
|
||||
* return $label;
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$label = apply_filters( 'um_change_field_label', $label, $key );
|
||||
|
||||
$label = sprintf( __( '%s', 'ultimate-member' ), $label );
|
||||
return $label;
|
||||
}
|
||||
|
||||
|
||||
@@ -2268,8 +2297,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
$output .= '<div class="um-single-image-upload" data-user_id="' . esc_attr( $_um_profile_id ) . '" data-nonce="' . $nonce . '" data-timestamp="' . esc_attr( $this->timestamp ) . '" data-icon="' . esc_attr( $icon ) . '" data-set_id="' . esc_attr( $set_id ) . '" data-set_mode="' . esc_attr( $set_mode ) . '" data-type="' . esc_attr( $type ) . '" data-key="' . esc_attr( $key ) . '" data-max_size="' . esc_attr( $max_size ) . '" data-max_size_error="' . esc_attr( $max_size_error ) . '" data-min_size_error="' . esc_attr( $min_size_error ) . '" data-extension_error="' . esc_attr( $extension_error ) . '" data-allowed_types="' . esc_attr( $allowed_types ) . '" data-upload_text="' . esc_attr( $upload_text ) . '" data-max_files_error="' . esc_attr( $max_files_error ) . '" data-upload_help_text="' . esc_attr( $upload_help_text ) . '">' . $button_text . '</div>';
|
||||
$output .= '<div class="um-modal-footer">
|
||||
<div class="um-modal-right">
|
||||
<a href="#" class="um-modal-btn um-finish-upload image disabled" data-key="' . $key . '" data-change="' . __( 'Change photo', 'ultimate-member' ) . '" data-processing="' . __( 'Processing...', 'ultimate-member' ) . '"> ' . __( 'Apply', 'ultimate-member' ) . '</a>
|
||||
<a href="#" class="um-modal-btn alt" data-action="um_remove_modal"> ' . __( 'Cancel', 'ultimate-member' ) . '</a>
|
||||
<a href="javascript:void(0);" class="um-modal-btn um-finish-upload image disabled" data-key="' . $key . '" data-change="' . __( 'Change photo', 'ultimate-member' ) . '" data-processing="' . __( 'Processing...', 'ultimate-member' ) . '"> ' . __( 'Apply', 'ultimate-member' ) . '</a>
|
||||
<a href="javascript:void(0);" class="um-modal-btn alt" data-action="um_remove_modal"> ' . __( 'Cancel', 'ultimate-member' ) . '</a>
|
||||
</div>
|
||||
<div class="um-clear"></div>
|
||||
</div>';
|
||||
@@ -2365,8 +2394,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
$output .= '<div class="um-single-file-upload" data-user_id="' . esc_attr( $_um_profile_id ) . '" data-timestamp="' . esc_attr( $this->timestamp ) . '" data-nonce="' . $nonce . '" data-icon="' . esc_attr( $icon ) . '" data-set_id="' . esc_attr( $set_id ) . '" data-set_mode="' . esc_attr( $set_mode ) . '" data-type="' . esc_attr( $type ) . '" data-key="' . esc_attr( $key ) . '" data-max_size="' . esc_attr( $max_size ) . '" data-max_size_error="' . esc_attr( $max_size_error ) . '" data-min_size_error="' . esc_attr( $min_size_error ) . '" data-extension_error="' . esc_attr( $extension_error ) . '" data-allowed_types="' . esc_attr( $allowed_types ) . '" data-upload_text="' . esc_attr( $upload_text ) . '" data-max_files_error="' . esc_attr( $max_files_error ) . '" data-upload_help_text="' . esc_attr( $upload_help_text ) . '">' . $button_text . '</div>';
|
||||
$output .= '<div class="um-modal-footer">
|
||||
<div class="um-modal-right">
|
||||
<a href="#" class="um-modal-btn um-finish-upload file disabled" data-key="' . $key . '" data-change="' . __( 'Change file' ) . '" data-processing="' . __( 'Processing...', 'ultimate-member' ) . '"> ' . __( 'Save', 'ultimate-member' ) . '</a>
|
||||
<a href="#" class="um-modal-btn alt" data-action="um_remove_modal"> ' . __( 'Cancel', 'ultimate-member' ) . '</a>
|
||||
<a href="javascript:void(0);" class="um-modal-btn um-finish-upload file disabled" data-key="' . $key . '" data-change="' . __( 'Change file' ) . '" data-processing="' . __( 'Processing...', 'ultimate-member' ) . '"> ' . __( 'Save', 'ultimate-member' ) . '</a>
|
||||
<a href="javascript:void(0);" class="um-modal-btn alt" data-action="um_remove_modal"> ' . __( 'Cancel', 'ultimate-member' ) . '</a>
|
||||
</div>
|
||||
<div class="um-clear"></div>
|
||||
</div>';
|
||||
|
||||
@@ -83,12 +83,15 @@ if ( ! class_exists( 'um\core\Files' ) ) {
|
||||
if ( UM()->is_permalinks ) {
|
||||
$url = get_site_url( get_current_blog_id() );
|
||||
$nonce = wp_create_nonce( $user_id . $form_id . 'um-download-nonce' );
|
||||
return $url . "/um-download/{$form_id}/{$field_key}/{$user_id}/{$nonce}";
|
||||
$url = $url . "/um-download/{$form_id}/{$field_key}/{$user_id}/{$nonce}";
|
||||
} else {
|
||||
$url = get_site_url( get_current_blog_id() );
|
||||
$nonce = wp_create_nonce( $user_id . $form_id . 'um-download-nonce' );
|
||||
return add_query_arg( array( 'um_action' => 'download', 'um_form' => $form_id, 'um_field' => $field_key, 'um_user' => $user_id, 'um_verify' => $nonce ), $url );
|
||||
$url = add_query_arg( array( 'um_action' => 'download', 'um_form' => $form_id, 'um_field' => $field_key, 'um_user' => $user_id, 'um_verify' => $nonce ), $url );
|
||||
}
|
||||
|
||||
//add time to query args for sites with the cache
|
||||
return add_query_arg( array( 't' => time() ), $url );
|
||||
}
|
||||
|
||||
|
||||
@@ -183,6 +186,12 @@ if ( ! class_exists( 'um\core\Files' ) ) {
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
header('Pragma: public');
|
||||
header('Content-Length: ' . $size);
|
||||
|
||||
$levels = ob_get_level();
|
||||
for ( $i = 0; $i < $levels; $i++ ) {
|
||||
@ob_end_clean();
|
||||
}
|
||||
|
||||
readfile( $file_path );
|
||||
exit;
|
||||
}
|
||||
@@ -217,6 +226,12 @@ if ( ! class_exists( 'um\core\Files' ) ) {
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
header('Pragma: public');
|
||||
header('Content-Length: ' . $size);
|
||||
|
||||
$levels = ob_get_level();
|
||||
for ( $i = 0; $i < $levels; $i++ ) {
|
||||
@ob_end_clean();
|
||||
}
|
||||
|
||||
readfile( $file_path );
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -70,10 +70,9 @@ if ( ! class_exists( 'um\core\GDPR' ) ) {
|
||||
* @return mixed
|
||||
*/
|
||||
function email_registration_data( $submitted ) {
|
||||
|
||||
$timestamp = ! empty( $submitted['timestamp'] ) ? $submitted['timestamp'] : $submitted['use_gdpr_agreement'];
|
||||
|
||||
if ( ! empty( $submitted['use_gdpr_agreement'] ) ) {
|
||||
$timestamp = ! empty( $submitted['timestamp'] ) ? $submitted['timestamp'] : $submitted['use_gdpr_agreement'];
|
||||
|
||||
$submitted['GDPR Applied'] = date( "d M Y H:i", $timestamp );
|
||||
unset( $submitted['use_gdpr_agreement'] );
|
||||
}
|
||||
|
||||
@@ -373,11 +373,11 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
|
||||
|
||||
} else {
|
||||
|
||||
$profile_url = add_query_arg( 'um_user', $slug, $profile_url );
|
||||
$profile_url = add_query_arg( 'um_user', strtolower( $slug ), $profile_url );
|
||||
|
||||
}
|
||||
|
||||
return ! empty( $profile_url ) ? strtolower( $profile_url ) : '';
|
||||
return ! empty( $profile_url ) ? $profile_url : '';
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -26,6 +26,11 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
|
||||
add_shortcode( 'ultimatemember', array( &$this, 'ultimatemember' ) );
|
||||
|
||||
add_shortcode( 'ultimatemember_login', array( &$this, 'ultimatemember_login' ) );
|
||||
add_shortcode( 'ultimatemember_register', array( &$this, 'ultimatemember_register' ) );
|
||||
add_shortcode( 'ultimatemember_profile', array( &$this, 'ultimatemember_profile' ) );
|
||||
add_shortcode( 'ultimatemember_directory', array( &$this, 'ultimatemember_directory' ) );
|
||||
|
||||
add_shortcode( 'um_loggedin', array( &$this, 'um_loggedin' ) );
|
||||
add_shortcode( 'um_loggedout', array( &$this, 'um_loggedout' ) );
|
||||
add_shortcode( 'um_show_content', array( &$this, 'um_shortcode_show_content_for_role' ) );
|
||||
@@ -260,7 +265,7 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
|
||||
if ( isset( $this->set_args ) && is_array( $this->set_args ) ) {
|
||||
$args = $this->set_args;
|
||||
|
||||
|
||||
unset( $args['file'] );
|
||||
unset( $args['theme_file'] );
|
||||
unset( $args['tpl'] );
|
||||
@@ -358,12 +363,13 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
|
||||
$args = wp_parse_args( $args, $defaults );
|
||||
|
||||
$args['lock_text'] = $this->convert_locker_tags( $args['lock_text'] );
|
||||
|
||||
|
||||
if ( ! is_user_logged_in() ) {
|
||||
if ( $args['show_lock'] == 'no' ) {
|
||||
echo '';
|
||||
} else {
|
||||
$args['lock_text'] = $this->convert_locker_tags( $args['lock_text'] );
|
||||
$this->set_args = $args;
|
||||
$this->load_template( 'login-to-view' );
|
||||
}
|
||||
@@ -375,8 +381,14 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
return $output;
|
||||
}
|
||||
|
||||
/***
|
||||
*** @Logged-out only content
|
||||
|
||||
/**
|
||||
* Logged-out only content
|
||||
*
|
||||
* @param array $args
|
||||
* @param string $content
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function um_loggedout($args = array(), $content = "") {
|
||||
ob_start();
|
||||
@@ -393,6 +405,124 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $args
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function ultimatemember_login( $args = array() ) {
|
||||
global $wpdb;
|
||||
|
||||
$args = ! empty( $args ) ? $args : array();
|
||||
|
||||
$default_login = $wpdb->get_var(
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
LEFT JOIN {$wpdb->postmeta} pm2 ON( pm.post_id = pm2.post_id AND pm2.meta_key = '_um_is_default' )
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'login' AND
|
||||
pm2.meta_value = '1'"
|
||||
);
|
||||
|
||||
$args['form_id'] = $default_login;
|
||||
$shortcode_attrs = '';
|
||||
foreach ( $args as $key => $value ) {
|
||||
$shortcode_attrs .= " {$key}=\"{$value}\"";
|
||||
}
|
||||
|
||||
return do_shortcode( "[ultimatemember {$shortcode_attrs} /]" );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $args
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function ultimatemember_register( $args = array() ) {
|
||||
global $wpdb;
|
||||
|
||||
$args = ! empty( $args ) ? $args : array();
|
||||
|
||||
$default_register = $wpdb->get_var(
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
LEFT JOIN {$wpdb->postmeta} pm2 ON( pm.post_id = pm2.post_id AND pm2.meta_key = '_um_is_default' )
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'register' AND
|
||||
pm2.meta_value = '1'"
|
||||
);
|
||||
|
||||
$args['form_id'] = $default_register;
|
||||
$shortcode_attrs = '';
|
||||
foreach ( $args as $key => $value ) {
|
||||
$shortcode_attrs .= " {$key}=\"{$value}\"";
|
||||
}
|
||||
|
||||
return do_shortcode( "[ultimatemember {$shortcode_attrs} /]" );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $args
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function ultimatemember_profile( $args = array() ) {
|
||||
global $wpdb;
|
||||
|
||||
$args = ! empty( $args ) ? $args : array();
|
||||
|
||||
$default_profile = $wpdb->get_var(
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
LEFT JOIN {$wpdb->postmeta} pm2 ON( pm.post_id = pm2.post_id AND pm2.meta_key = '_um_is_default' )
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'profile' AND
|
||||
pm2.meta_value = '1'"
|
||||
);
|
||||
|
||||
$args['form_id'] = $default_profile;
|
||||
|
||||
$shortcode_attrs = '';
|
||||
foreach ( $args as $key => $value ) {
|
||||
$shortcode_attrs .= " {$key}=\"{$value}\"";
|
||||
}
|
||||
|
||||
return do_shortcode( "[ultimatemember {$shortcode_attrs} /]" );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $args
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function ultimatemember_directory( $args = array() ) {
|
||||
global $wpdb;
|
||||
|
||||
$args = ! empty( $args ) ? $args : array();
|
||||
|
||||
$default_directory = $wpdb->get_var(
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
LEFT JOIN {$wpdb->postmeta} pm2 ON( pm.post_id = pm2.post_id AND pm2.meta_key = '_um_is_default' )
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'directory' AND
|
||||
pm2.meta_value = '1'"
|
||||
);
|
||||
|
||||
$args['form_id'] = $default_directory;
|
||||
|
||||
$shortcode_attrs = '';
|
||||
foreach ( $args as $key => $value ) {
|
||||
$shortcode_attrs .= " {$key}=\"{$value}\"";
|
||||
}
|
||||
|
||||
return do_shortcode( "[ultimatemember {$shortcode_attrs} /]" );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Shortcode
|
||||
*
|
||||
@@ -813,7 +943,36 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
* @return string
|
||||
*/
|
||||
function get_shortcode( $post_id ) {
|
||||
$shortcode = '[ultimatemember form_id=' . $post_id . ']';
|
||||
$shortcode = '[ultimatemember form_id="' . $post_id . '"]';
|
||||
return $shortcode;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Shortcode for given form ID
|
||||
*
|
||||
* @param $post_id
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function get_default_shortcode( $post_id ) {
|
||||
$mode = UM()->query()->get_attr( 'mode', $post_id );
|
||||
|
||||
switch ( $mode ) {
|
||||
case 'login':
|
||||
$shortcode = '[ultimatemember_login]';
|
||||
break;
|
||||
case 'profile':
|
||||
$shortcode = '[ultimatemember_profile]';
|
||||
break;
|
||||
case 'register':
|
||||
$shortcode = '[ultimatemember_register]';
|
||||
break;
|
||||
case 'directory':
|
||||
$shortcode = '[ultimatemember_directory]';
|
||||
break;
|
||||
}
|
||||
|
||||
return $shortcode;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
namespace um\core;
|
||||
|
||||
|
||||
// Exit if accessed directly
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
|
||||
if ( ! class_exists( 'Templates' ) ) {
|
||||
|
||||
|
||||
/**
|
||||
* Class Templates
|
||||
* @package um\core
|
||||
*/
|
||||
class Templates {
|
||||
|
||||
function __construct() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get template path
|
||||
*
|
||||
*
|
||||
* @param $slug
|
||||
* @return string
|
||||
*/
|
||||
function get_template( $slug ) {
|
||||
$file_list = um_path . "templates/{$slug}.php";
|
||||
$theme_file = get_stylesheet_directory() . "/ultimate-member/templates/{$slug}.php";
|
||||
|
||||
if ( file_exists( $theme_file ) ) {
|
||||
$file_list = $theme_file;
|
||||
}
|
||||
|
||||
return $file_list;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -95,7 +95,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
$this->core_upload_dir = DIRECTORY_SEPARATOR . "ultimatemember" . DIRECTORY_SEPARATOR;
|
||||
$this->core_upload_url = "/ultimatemember/";
|
||||
$this->upload_image_type = 'stream_photo';
|
||||
$this->wp_upload_dir = wp_upload_dir();
|
||||
$this->wp_upload_dir = wp_upload_dir();
|
||||
$this->temp_upload_dir = "temp";
|
||||
|
||||
add_filter( "upload_dir", array( $this, "set_upload_directory" ), 10, 1 );
|
||||
@@ -120,7 +120,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
/**
|
||||
* Get core temporary directory path
|
||||
*
|
||||
* @since 2.0.22
|
||||
* @since 2.0.22
|
||||
* @return string
|
||||
*/
|
||||
public function get_core_temp_dir() {
|
||||
@@ -131,7 +131,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
/**
|
||||
* Get core temporary directory URL
|
||||
*
|
||||
* @since 2.0.22
|
||||
* @since 2.0.22
|
||||
* @return string
|
||||
*/
|
||||
public function get_core_temp_url() {
|
||||
@@ -142,7 +142,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
/**
|
||||
* Get core upload directory
|
||||
*
|
||||
* @since 2.0.22
|
||||
* @since 2.0.22
|
||||
* @return string
|
||||
*/
|
||||
public function get_core_upload_dir() {
|
||||
@@ -153,7 +153,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
/**
|
||||
* Get core upload base url
|
||||
*
|
||||
* @since 2.0.22
|
||||
* @since 2.0.22
|
||||
* @return string
|
||||
*/
|
||||
public function get_upload_base_url() {
|
||||
@@ -168,7 +168,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
/**
|
||||
* Get core upload base directory
|
||||
*
|
||||
* @since 2.0.22
|
||||
* @since 2.0.22
|
||||
* @return string
|
||||
*/
|
||||
public function get_upload_base_dir() {
|
||||
@@ -198,7 +198,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
$this->upload_user_basedir = $this->get_upload_base_dir() . $this->user_id;
|
||||
|
||||
if ( $create_dir ) {
|
||||
wp_mkdir_p( $this->upload_user_basedir );
|
||||
wp_mkdir_p( $this->upload_user_basedir );
|
||||
}
|
||||
|
||||
return $this->upload_user_basedir;
|
||||
@@ -207,9 +207,9 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
/**
|
||||
* Get user upload base url
|
||||
*
|
||||
*
|
||||
* @param integer $user_id
|
||||
* @since 2.0.22
|
||||
* @since 2.0.22
|
||||
* @return string
|
||||
*/
|
||||
public function get_upload_user_base_url( $user_id = null ) {
|
||||
@@ -222,10 +222,10 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
return $this->upload_user_baseurl;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Validate file size
|
||||
* @param array $file
|
||||
* @param array $file
|
||||
* @return array
|
||||
*/
|
||||
public function validate_upload( $file ) {
|
||||
@@ -312,7 +312,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
if ( in_array( $field_key, array( 'profile_photo','cover_photo' ) ) ) {
|
||||
$this->upload_image_type = $field_key;
|
||||
}
|
||||
}
|
||||
|
||||
$field_data = UM()->fields()->get_field( $field_key );
|
||||
|
||||
@@ -326,7 +326,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
foreach ( $field_allowed_file_types as $a ) {
|
||||
$atype = wp_check_filetype( "test.{$a}" );
|
||||
$allowed_image_mimes[ $atype['ext'] ] = $atype['type'];
|
||||
$allowed_image_mimes[ $atype['ext'] ] = $atype['type'];
|
||||
}
|
||||
|
||||
$image_compression = UM()->options()->get('image_compression');
|
||||
@@ -352,9 +352,9 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
$movefile['url'] = set_url_scheme( $movefile['url'] );
|
||||
|
||||
$movefile['file_info']['basename'] = wp_basename( $movefile['file'] );
|
||||
|
||||
|
||||
$file_type = wp_check_filetype( $movefile['file_info']['basename'] );
|
||||
|
||||
|
||||
$movefile['file_info']['name'] = $movefile['url'];
|
||||
$movefile['file_info']['original_name'] = $uploadedfile['name'];
|
||||
$movefile['file_info']['ext'] = $file_type['ext'];
|
||||
@@ -454,7 +454,10 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
$filename = wp_basename( $movefile['url'] );
|
||||
|
||||
set_transient( "um_{$filename}", $movefile['file_info'], 2 * HOUR_IN_SECONDS );
|
||||
$transient = set_transient( "um_{$filename}", $movefile['file_info'], 2 * HOUR_IN_SECONDS );
|
||||
if ( empty( $transient ) ) {
|
||||
update_user_meta( $this->user_id, "{$field_key}_metadata_temp", $movefile['file_info'] );
|
||||
}
|
||||
}
|
||||
|
||||
$response['handle_upload'] = $movefile;
|
||||
@@ -497,7 +500,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
foreach ( $field_allowed_file_types as $a ) {
|
||||
$atype = wp_check_filetype( "test.{$a}" );
|
||||
$allowed_file_mimes[ $atype['ext'] ] = $atype['type'];
|
||||
$allowed_file_mimes[ $atype['ext'] ] = $atype['type'];
|
||||
}
|
||||
|
||||
$upload_overrides = array(
|
||||
@@ -529,7 +532,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
$movefile['file_info']['type'] = $file_type['type'];
|
||||
$movefile['file_info']['size'] = filesize( $movefile['file'] );
|
||||
$movefile['file_info']['size_format'] = size_format( $movefile['file_info']['size'] );
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
@@ -619,7 +622,10 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
$filename = wp_basename( $movefile['url'] );
|
||||
|
||||
set_transient( "um_{$filename}", $movefile['file_info'], 2 * HOUR_IN_SECONDS );
|
||||
$transient = set_transient( "um_{$filename}", $movefile['file_info'], 2 * HOUR_IN_SECONDS );
|
||||
if ( empty( $transient ) ) {
|
||||
update_user_meta( $this->user_id, "{$field_key}_metadata_temp", $movefile['file_info'] );
|
||||
}
|
||||
}
|
||||
|
||||
$response['handle_upload'] = $movefile;
|
||||
@@ -854,12 +860,12 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
/**
|
||||
* Make unique filename
|
||||
* @param string $filename
|
||||
* @param string $ext
|
||||
* @param string $dir
|
||||
* @param string $filename
|
||||
* @param string $ext
|
||||
* @param string $dir
|
||||
* @return string $filename
|
||||
*
|
||||
* @since 2.0.22
|
||||
* @since 2.0.22
|
||||
*/
|
||||
public function unique_filename( $filename, $ext, $dir ) {
|
||||
$image_type = wp_check_filetype( $ext );
|
||||
@@ -897,10 +903,10 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
/**
|
||||
* Delete file
|
||||
* @param string $filename
|
||||
* @param string $ext
|
||||
* @param string $dir
|
||||
*
|
||||
* @param string $filename
|
||||
* @param string $ext
|
||||
* @param string $dir
|
||||
*
|
||||
* @since 2.0.22
|
||||
*/
|
||||
public function delete_existing_file( $filename, $ext = '', $dir = '' ) {
|
||||
@@ -912,11 +918,11 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
/**
|
||||
* Profile photo image process
|
||||
* @param string $src
|
||||
* @param integer $user_id
|
||||
* @param string $coord
|
||||
* @param array $crop
|
||||
*
|
||||
* @param string $src
|
||||
* @param integer $user_id
|
||||
* @param string $coord
|
||||
* @param array $crop
|
||||
*
|
||||
* @since 2.0.22
|
||||
*/
|
||||
public function profile_photo( $image_path, $src, $key, $user_id, $coord, $crop ) {
|
||||
@@ -934,6 +940,11 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
$image->crop( $src_x, $src_y, $src_w, $src_h );
|
||||
|
||||
$max_w = UM()->options()->get('image_max_width');
|
||||
if ( $src_w > $max_w ) {
|
||||
$image->resize( $max_w, $src_h );
|
||||
}
|
||||
|
||||
$image->save( $image_path );
|
||||
|
||||
$image->set_quality( $quality );
|
||||
@@ -956,11 +967,11 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
/**
|
||||
* Cover photo image process
|
||||
* @param string $src
|
||||
* @param integer $user_id
|
||||
* @param string $coord
|
||||
* @param array $crop
|
||||
*
|
||||
* @param string $src
|
||||
* @param integer $user_id
|
||||
* @param string $coord
|
||||
* @param array $crop
|
||||
*
|
||||
* @since 2.0.22
|
||||
*/
|
||||
public function cover_photo( $image_path, $src, $key, $user_id, $coord, $crop ){
|
||||
@@ -980,8 +991,13 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
$image->crop( $src_x, $src_y, $src_w, $src_h );
|
||||
|
||||
$max_w = UM()->options()->get('image_max_width');
|
||||
if ( $src_w > $max_w ) {
|
||||
$image->resize( $max_w, $src_h );
|
||||
}
|
||||
|
||||
$image->save( $image_path );
|
||||
|
||||
|
||||
$image->set_quality( $quality );
|
||||
|
||||
$sizes_array = array();
|
||||
@@ -1000,15 +1016,15 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
/**
|
||||
* Stream photo image process
|
||||
* @param string $src
|
||||
* @param integer $user_id
|
||||
* @param string $coord
|
||||
* @param array $crop
|
||||
*
|
||||
* @param string $src
|
||||
* @param integer $user_id
|
||||
* @param string $coord
|
||||
* @param array $crop
|
||||
*
|
||||
* @since 2.0.22
|
||||
*/
|
||||
public function stream_photo( $image_path, $src, $key, $user_id, $coord, $crop ){
|
||||
|
||||
|
||||
$image = wp_get_image_editor( $image_path ); // Return an implementation that extends WP_Image_Editor
|
||||
|
||||
$quality = UM()->options()->get( 'image_compression' );
|
||||
@@ -1026,10 +1042,15 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
$src_h = $crop[3];
|
||||
|
||||
$image->crop( $src_x, $src_y, $src_w, $src_h );
|
||||
|
||||
$max_w = UM()->options()->get('image_max_width');
|
||||
if ( $src_w > $max_w ) {
|
||||
$image->resize( $max_w, $src_h );
|
||||
}
|
||||
}
|
||||
|
||||
$image->save( $image_path );
|
||||
|
||||
|
||||
$image->set_quality( $quality );
|
||||
|
||||
} else {
|
||||
@@ -1040,9 +1061,9 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
|
||||
/**
|
||||
* Set stream photo default settings
|
||||
* @param array $args
|
||||
* @return array
|
||||
*
|
||||
* @param array $args
|
||||
* @return array
|
||||
*
|
||||
* @since 2.0.22
|
||||
*/
|
||||
public function stream_photo_data( $args ) {
|
||||
@@ -1145,10 +1166,18 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
$new_files[ $key ] = $new_filename;
|
||||
|
||||
if ( rename( $temp_file_path, $file ) ) {
|
||||
$file_info = get_transient("um_{$filename}");
|
||||
update_user_meta( $user_id, $key, $new_filename );
|
||||
update_user_meta( $user_id, "{$key}_metadata", $file_info );
|
||||
delete_transient("um_{$filename}");
|
||||
|
||||
$file_info = get_transient( "um_{$filename}" );
|
||||
if ( ! $file_info ) {
|
||||
$file_info = get_user_meta( $user_id, "{$key}_metadata_temp", true );
|
||||
delete_user_meta( $user_id, "{$key}_metadata_temp" );
|
||||
}
|
||||
|
||||
if ( $file_info ) {
|
||||
update_user_meta( $user_id, "{$key}_metadata", $file_info );
|
||||
delete_transient( "um_{$filename}" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1171,9 +1200,11 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
|
||||
$user_meta_keys = UM()->user()->profile;
|
||||
|
||||
$_array = array();
|
||||
foreach ( UM()->builtin()->custom_fields as $_field ) {
|
||||
if ( $_field['type'] == 'file' && ! empty( $user_meta_keys[ $_field['metakey'] ] ) ) {
|
||||
$_array[ $_field['metakey'] ] = $user_meta_keys[ $_field['metakey'] ];
|
||||
if ( ! empty( UM()->builtin()->custom_fields ) ) {
|
||||
foreach ( UM()->builtin()->custom_fields as $_field ) {
|
||||
if ( $_field['type'] == 'file' && ! empty( $user_meta_keys[ $_field['metakey'] ] ) ) {
|
||||
$_array[ $_field['metakey'] ] = $user_meta_keys[ $_field['metakey'] ];
|
||||
}
|
||||
}
|
||||
}
|
||||
$_array = array_merge( $_array, $new_files );
|
||||
|
||||
@@ -177,7 +177,7 @@ add_action( 'um_profile_content_main', 'um_profile_content_main' );
|
||||
*/
|
||||
function um_user_edit_profile( $args ) {
|
||||
$to_update = null;
|
||||
$files = null;
|
||||
$files = array();
|
||||
|
||||
if ( isset( $args['user_id'] ) ) {
|
||||
if ( UM()->roles()->um_current_user_can( 'edit', $args['user_id'] ) ) {
|
||||
@@ -218,18 +218,18 @@ function um_user_edit_profile( $args ) {
|
||||
|
||||
// loop through fields
|
||||
if ( ! empty( $fields ) ) {
|
||||
|
||||
foreach ( $fields as $key => $array ) {
|
||||
|
||||
if ( ! um_can_edit_field( $fields[ $key ] ) && isset( $fields[ $key ]['editable'] ) && ! $fields[ $key ]['editable'] )
|
||||
if ( ! um_can_edit_field( $array ) && isset( $array['editable'] ) && ! $array['editable'] ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( $fields[$key]['type'] == 'multiselect' || $fields[$key]['type'] == 'checkbox' && ! isset( $args['submitted'][ $key ] ) ) {
|
||||
if ( $array['type'] == 'multiselect' || $array['type'] == 'checkbox' && ! isset( $args['submitted'][ $key ] ) ) {
|
||||
delete_user_meta( um_user( 'ID' ), $key );
|
||||
}
|
||||
|
||||
if ( isset( $args['submitted'][ $key ] ) ) {
|
||||
if ( isset( $fields[ $key ]['type'] ) && in_array( $fields[ $key ]['type'], array( 'image', 'file' ) ) &&
|
||||
if ( isset( $array['type'] ) && in_array( $array['type'], array( 'image', 'file' ) ) &&
|
||||
( /*um_is_file_owner( UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . '/' . $args['submitted'][ $key ], um_user( 'ID' ) ) ||*/
|
||||
um_is_temp_file( $args['submitted'][ $key ] ) || $args['submitted'][ $key ] == 'empty_file' ) ) {
|
||||
|
||||
@@ -366,7 +366,7 @@ function um_user_edit_profile( $args ) {
|
||||
*/
|
||||
$files = apply_filters( 'um_user_pre_updating_files_array', $files );
|
||||
|
||||
if ( is_array( $files ) ) {
|
||||
if ( ! empty( $files ) && is_array( $files ) ) {
|
||||
UM()->uploader()->move_temporary_files( um_user( 'ID' ), $files );
|
||||
}
|
||||
|
||||
|
||||
@@ -38,8 +38,35 @@ function um_get_avatar( $avatar = '', $id_or_email='', $size = '96', $avatar_cla
|
||||
|
||||
um_fetch_user( $user_id );
|
||||
|
||||
$avatar = um_user('profile_photo', $size);
|
||||
$avatar = um_user( 'profile_photo', $size );
|
||||
|
||||
return $avatar;
|
||||
}
|
||||
add_filter( 'get_avatar', 'um_get_avatar', 99999, 5 );
|
||||
add_filter( 'get_avatar', 'um_get_avatar', 99999, 5 );
|
||||
|
||||
|
||||
if ( ! function_exists( 'um_filter_get_avatar_url' ) ) {
|
||||
|
||||
/**
|
||||
* Replace Gravatar image URL to Ultimate member profile image URL if setting "Use Gravatars?" disabled
|
||||
*
|
||||
* @param string $url
|
||||
* @param int $id_or_email
|
||||
* @param array $args
|
||||
* @return string
|
||||
*/
|
||||
function um_filter_get_avatar_url( $url, $id_or_email, $args ) {
|
||||
|
||||
if ( is_numeric( $id_or_email ) && ! UM()->options()->get( 'use_gravatars' ) && preg_match( '/gravatar/i', $url ) ) {
|
||||
$data = um_get_user_avatar_data( $id_or_email, $args['size'] );
|
||||
if ( ! empty( $data['url'] ) ) {
|
||||
$url = $data['url'];
|
||||
}
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
// hooked in the get_avatar_data function
|
||||
add_filter( 'get_avatar_url', 'um_filter_get_avatar_url', 20, 3 );
|
||||
}
|
||||
@@ -1671,6 +1671,9 @@ function um_get_cover_uri( $image, $attrs ) {
|
||||
$uri_common = false;
|
||||
$ext = '.' . pathinfo( $image, PATHINFO_EXTENSION );
|
||||
|
||||
$ratio = str_replace(':1','',UM()->options()->get( 'profile_cover_ratio' ) );
|
||||
$height = round( $attrs / $ratio );
|
||||
|
||||
if ( is_multisite() ) {
|
||||
//multisite fix for old customers
|
||||
$multisite_fix_dir = UM()->uploader()->get_upload_base_dir();
|
||||
@@ -1682,8 +1685,8 @@ function um_get_cover_uri( $image, $attrs ) {
|
||||
$uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo{$ext}?" . current_time( 'timestamp' );
|
||||
}
|
||||
|
||||
if ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}x{$attrs}{$ext}" ) ) {
|
||||
$uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo-{$attrs}x{$attrs}{$ext}?". current_time( 'timestamp' );
|
||||
if ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}x{$height}{$ext}" ) ) {
|
||||
$uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo-{$attrs}x{$height}{$ext}?". current_time( 'timestamp' );
|
||||
} elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}{$ext}" ) ) {
|
||||
$uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo-{$attrs}{$ext}?" . current_time( 'timestamp' );
|
||||
}
|
||||
@@ -1693,8 +1696,8 @@ function um_get_cover_uri( $image, $attrs ) {
|
||||
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo{$ext}?" . current_time( 'timestamp' );
|
||||
}
|
||||
|
||||
if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}x{$attrs}{$ext}" ) ) {
|
||||
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo-{$attrs}x{$attrs}{$ext}?". current_time( 'timestamp' );
|
||||
if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}x{$height}{$ext}" ) ) {
|
||||
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo-{$attrs}x{$height}{$ext}?". current_time( 'timestamp' );
|
||||
} elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}{$ext}" ) ) {
|
||||
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo-{$attrs}{$ext}?" . current_time( 'timestamp' );
|
||||
}
|
||||
@@ -2179,17 +2182,16 @@ function um_user( $data, $attrs = null ) {
|
||||
}
|
||||
|
||||
|
||||
if ($op == 'field' && UM()->options()->get( 'display_name_field' ) != '') {
|
||||
if ( $op == 'field' && UM()->options()->get( 'display_name_field' ) != '' ) {
|
||||
$fields = array_filter( preg_split( '/[,\s]+/', UM()->options()->get( 'display_name_field' ) ) );
|
||||
$name = '';
|
||||
|
||||
foreach ($fields as $field) {
|
||||
if (um_profile( $field )) {
|
||||
foreach ( $fields as $field ) {
|
||||
if ( um_profile( $field ) ) {
|
||||
$name .= um_profile( $field ) . ' ';
|
||||
} else if (um_user( $field )) {
|
||||
} elseif ( um_user( $field ) && $field != 'display_name' ) {
|
||||
$name .= um_user( $field ) . ' ';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+217
-206
File diff suppressed because it is too large
Load Diff
+11
-1
@@ -6,7 +6,7 @@ Donate link:
|
||||
Tags: community, member, membership, user-profile, user-registration
|
||||
Requires at least: 4.7
|
||||
Tested up to: 4.9
|
||||
Stable tag: 2.0.29
|
||||
Stable tag: 2.0.30
|
||||
License: GNU Version 2 or Any Later Version
|
||||
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
||||
|
||||
@@ -137,6 +137,16 @@ 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.30: October 29, 2018 =
|
||||
|
||||
* Bugfixes:
|
||||
- Fixed crop settings of the big images
|
||||
- Fixed WPML integration with email notifications
|
||||
- Fixed uppercase symbols using at profile page slug
|
||||
- Fixed download files/images with cache
|
||||
- Fixed download files/images with not closed buffers
|
||||
- Added bookmarks compatibility
|
||||
|
||||
= 2.0.29: October 8, 2018 =
|
||||
|
||||
* Bugfixes:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<div class="um-postmessage">
|
||||
|
||||
<?php echo $this->custom_message; ?>
|
||||
<?php printf( __( '%s', 'ultimate-member' ), $this->custom_message ); ?>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -192,6 +192,9 @@
|
||||
|
||||
if ( um_is_on_edit_profile() ) { ?>
|
||||
</form>
|
||||
<?php } ?>
|
||||
<?php }
|
||||
|
||||
|
||||
do_action( 'um_profile_footer', $args ); ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,8 +1,8 @@
|
||||
<form role="search" method="get" class="search-form um-search-form" action="<?php echo esc_url( um_get_core_page( 'members' ) ); ?>">
|
||||
<input type="hidden" name="um_search" value="1">
|
||||
<div class="um-search-area">
|
||||
<span class="screen-reader-text"><?php echo _x( 'Search for:', 'label' ); ?></span>
|
||||
<input type="search" class="um-search-field search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ); ?>" value="<?php echo um_get_search_query(); ?>" name="search" title="<?php echo esc_attr_x( 'Search for:', 'label' ); ?>" />
|
||||
<a href="javascript: void(0);" id="um-search-button" class="um-search-icon um-faicon um-faicon-search"></a>
|
||||
</div>
|
||||
<div class="um-search-area">
|
||||
<span class="screen-reader-text"><?php echo _x( 'Search for:', 'label' ); ?></span>
|
||||
<input type="search" class="um-search-field search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ); ?>" value="<?php echo um_get_search_query(); ?>" name="search" title="<?php echo esc_attr_x( 'Search for:', 'label' ); ?>" />
|
||||
<a href="javascript: void(0);" id="um-search-button" class="um-search-icon um-faicon um-faicon-search"></a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
+1
-1
@@ -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.29
|
||||
Version: 2.0.30
|
||||
Author: Ultimate Member
|
||||
Author URI: http://ultimatemember.com/
|
||||
Text Domain: ultimate-member
|
||||
|
||||
Reference in New Issue
Block a user