Version Description
Download this release
Release Info
Developer | nsinelnikov |
Plugin | Ultimate Member – User Profile & Membership Plugin |
Version | 2.1.21 |
Comparing to | |
See all releases |
Code changes from version 2.1.20 to 2.1.21
- assets/js/dropdown.js +170 -61
- assets/js/dropdown.min.js +1 -1
- assets/js/simplebar.min.js +1 -1
- assets/js/um-conditional.min.js +1 -1
- assets/js/um-crop.min.js +1 -1
- assets/js/um-fileupload.min.js +1 -1
- assets/js/um-functions.min.js +1 -1
- assets/js/um-jquery-form.min.js +1 -1
- assets/js/um-members.js +10 -8
- assets/js/um-members.min.js +1 -1
- assets/js/um-scripts.min.js +1 -1
- includes/admin/templates/role/role-edit.php +147 -1
- includes/core/class-enqueue.php +9 -1
- includes/core/class-member-directory.php +4 -2
- includes/core/class-shortcodes.php +2 -2
- includes/core/class-user.php +2177 -2177
- readme.txt +20 -2
- templates/logout.php +2 -2
- templates/members.php +1 -1
- ultimate-member.php +2 -2
assets/js/dropdown.js
CHANGED
@@ -1,85 +1,194 @@
|
|
1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
|
7 |
-
|
8 |
-
|
9 |
-
return;
|
10 |
-
}
|
11 |
|
12 |
-
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
var obj = jQuery(this);
|
20 |
|
21 |
-
|
22 |
-
|
23 |
-
obj.find( '.um-new-dropdown' ).hide();
|
24 |
-
} else {
|
25 |
-
jQuery('.um-new-dropdown').hide();
|
26 |
-
jQuery('.um-new-dropdown').parent().data( 'um-new-dropdown-show', false );
|
27 |
|
28 |
-
|
29 |
-
|
|
|
30 |
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
// right: 0
|
35 |
-
// });
|
36 |
|
37 |
-
|
|
|
38 |
|
39 |
-
|
40 |
|
41 |
-
|
|
|
42 |
} else {
|
43 |
-
|
44 |
-
top : '20px',
|
45 |
-
width: '150px',
|
46 |
-
right: 0
|
47 |
-
}).*/show();
|
48 |
}
|
|
|
|
|
49 |
|
50 |
-
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
if ( jQuery('.um-new-dropdown').find( '.' + jQuery( event.target ).attr('class').trim().replace( ' ', '.' ) ).length === 0 &&
|
55 |
-
|
56 |
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
jQuery( document.body ).unbind( event );
|
62 |
|
63 |
-
|
64 |
-
});
|
65 |
-
}
|
66 |
-
});
|
67 |
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
}
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
}
|
75 |
|
|
|
76 |
jQuery( document ).ready( function($) {
|
77 |
um_init_new_dropdown();
|
78 |
-
|
79 |
-
jQuery( document.body ).on( 'click', '.um-new-dropdown a', function(e) {
|
80 |
-
jQuery(this).parents('.um-new-dropdown').hide();
|
81 |
-
jQuery(this).parents('.um-new-dropdown').parent().data( 'um-new-dropdown-show', false );
|
82 |
-
jQuery('body').trigger('click');
|
83 |
-
e.stopPropagation();
|
84 |
-
});
|
85 |
});
|
1 |
+
(function ($) {
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The constructor of the dropdown object
|
5 |
+
* @param {object} element The menu element.
|
6 |
+
* @returns {object} The dropdown menu object.
|
7 |
+
*/
|
8 |
+
function um_dropdownMenu(element) {
|
9 |
+
|
10 |
+
var self = {
|
11 |
+
get: function(){
|
12 |
+
return self;
|
13 |
+
},
|
14 |
+
|
15 |
+
show: function () {
|
16 |
+
self.hideAll();
|
17 |
+
|
18 |
+
/* add dropdown into the <body> */
|
19 |
+
self.$menu = self.$element.find('.um-new-dropdown');
|
20 |
+
if ( !self.$menu.length ) {
|
21 |
+
self.$menu = $('div.um-new-dropdown[data-element="' + self.data.element + '"]').first();
|
22 |
+
}
|
23 |
+
self.$dropdown = self.$menu.clone();
|
24 |
+
self.$dropdown.on('click', 'li a', self.itemHandler); /* add the handler for menu items */
|
25 |
+
$(window).on('resize', self.updatePosition); /* update the position on window resize */
|
26 |
+
$(document.body).append(self.$dropdown);
|
27 |
+
|
28 |
+
/* trigger event */
|
29 |
+
self.$element.trigger('um_new_dropdown_render', {
|
30 |
+
dropdown_layout: self.$dropdown,
|
31 |
+
trigger: self.data.trigger,
|
32 |
+
element: self.data.elemen,
|
33 |
+
obj: self.$element
|
34 |
+
});
|
35 |
|
36 |
+
/* set styles and show */
|
37 |
+
self.$dropdown.css(self.calculatePosition()).show();
|
38 |
+
self.$element.addClass('um-new-dropdown-shown').data('um-new-dropdown-show', true);
|
39 |
|
40 |
+
return self;
|
41 |
+
},
|
|
|
|
|
42 |
|
43 |
+
hide: function () {
|
44 |
+
if ( self.$dropdown && self.$dropdown.is(':visible') ) {
|
45 |
+
$(window).off('resize', self.updatePosition);
|
46 |
+
self.$dropdown.remove();
|
47 |
+
self.$element.removeClass('um-new-dropdown-shown').data('um-new-dropdown-show', false);
|
48 |
+
}
|
49 |
+
|
50 |
+
return self;
|
51 |
+
},
|
52 |
+
|
53 |
+
hideAll: function () {
|
54 |
+
self.hide();
|
55 |
+
$('body > div.um-new-dropdown').remove();
|
56 |
+
$('.um-new-dropdown-shown').removeClass('um-new-dropdown-shown').data('um-new-dropdown-show', false);
|
57 |
+
|
58 |
+
return self;
|
59 |
+
},
|
60 |
+
|
61 |
+
calculatePosition: function () {
|
62 |
+
var offset = self.$element.offset(),
|
63 |
+
rect = self.$element.get(0).getBoundingClientRect(),
|
64 |
+
height = self.$dropdown.innerHeight() || 150,
|
65 |
+
width = self.data.width || 150,
|
66 |
+
place = '';
|
67 |
+
|
68 |
+
var css = {
|
69 |
+
position: 'absolute',
|
70 |
+
width: width + 'px'
|
71 |
+
};
|
72 |
+
|
73 |
+
/* vertical position */
|
74 |
+
if ( window.innerHeight - rect.bottom > height ) {
|
75 |
+
css.top = offset.top + rect.height + 'px';
|
76 |
+
place += 'bottom';
|
77 |
+
} else {
|
78 |
+
place += 'top';
|
79 |
+
css.top = offset.top - height + 'px';
|
80 |
+
}
|
81 |
|
82 |
+
/* horisontal position */
|
83 |
+
if ( offset.left > width || offset.left > window.innerWidth / 2 ) {
|
84 |
+
css.left = offset.left + rect.width - width + 'px';
|
85 |
+
place += '-left';
|
86 |
+
} else {
|
87 |
+
css.left = offset.left + 'px';
|
88 |
+
place += '-right';
|
89 |
+
}
|
90 |
+
|
91 |
+
/* border */
|
92 |
+
switch ( place ) {
|
93 |
+
case 'bottom-right':
|
94 |
+
css.borderRadius = '0px 5px 5px 5px';
|
95 |
+
break;
|
96 |
+
case 'bottom-left':
|
97 |
+
css.borderRadius = '5px 0px 5px 5px';
|
98 |
+
break;
|
99 |
+
case 'top-right':
|
100 |
+
css.borderRadius = '5px 5px 5px 0px';
|
101 |
+
break;
|
102 |
+
case 'top-left':
|
103 |
+
css.borderRadius = '5px 5px 0px 5px';
|
104 |
+
break;
|
105 |
+
}
|
106 |
+
|
107 |
+
return css;
|
108 |
+
},
|
109 |
+
|
110 |
+
updatePosition: function () {
|
111 |
+
if ( self.$dropdown && self.$dropdown.is(':visible') ) {
|
112 |
+
self.$dropdown.css(self.calculatePosition());
|
113 |
+
}
|
114 |
|
115 |
+
return self;
|
116 |
+
},
|
|
|
117 |
|
118 |
+
itemHandler: function (e) {
|
119 |
+
e.stopPropagation();
|
|
|
|
|
|
|
|
|
120 |
|
121 |
+
/* trigger 'click' in the original menu */
|
122 |
+
var attrClass = $(e.currentTarget).attr('class');
|
123 |
+
self.$menu.find('li a[class="' + attrClass + '"]').trigger('click');
|
124 |
|
125 |
+
/* hide dropdown */
|
126 |
+
self.hide();
|
127 |
+
},
|
|
|
|
|
128 |
|
129 |
+
triggerHandler: function (e) {
|
130 |
+
e.stopPropagation();
|
131 |
|
132 |
+
self.$element = $(e.currentTarget);
|
133 |
|
134 |
+
if ( self.$element.data('um-new-dropdown-show') ) {
|
135 |
+
self.hide();
|
136 |
} else {
|
137 |
+
self.show();
|
|
|
|
|
|
|
|
|
138 |
}
|
139 |
+
}
|
140 |
+
};
|
141 |
|
142 |
+
self.$menu = $(element);
|
143 |
|
144 |
+
self.data = self.$menu.data();
|
|
|
|
|
|
|
145 |
|
146 |
+
self.$element = self.$menu.closest(self.data.element);
|
147 |
+
if ( !self.$element.length ) {
|
148 |
+
self.$element = $(self.data.element).first();
|
149 |
+
}
|
|
|
150 |
|
151 |
+
self.$dropdown = $(document.body).children('div[data-element="' + self.data.element + '"]');
|
|
|
|
|
|
|
152 |
|
153 |
+
if ( typeof self.data.initted === 'undefined' ) {
|
154 |
+
self.$menu.data('initted', true);
|
155 |
+
$(document.body).on(self.data.trigger, self.data.element, self.triggerHandler);
|
156 |
+
}
|
157 |
+
|
158 |
+
if ( typeof um_dropdownMenu.globalHandlersInitted === 'undefined' ) {
|
159 |
+
um_dropdownMenu.globalHandlersInitted = true;
|
160 |
+
$(document.body).on('click', function (e) {
|
161 |
+
if ( !$(e.target).closest('.um-new-dropdown').length ) {
|
162 |
+
self.hideAll();
|
163 |
+
}
|
164 |
+
});
|
165 |
}
|
166 |
+
|
167 |
+
return self;
|
168 |
+
}
|
169 |
+
|
170 |
+
/* Add the method um_dropdownMenu() to the jQuery */
|
171 |
+
$.fn.um_dropdownMenu = function (action) {
|
172 |
+
if ( typeof action === 'string' && action ) {
|
173 |
+
return this.map( function (i, menu) {
|
174 |
+
var obj = um_dropdownMenu( menu );
|
175 |
+
return typeof obj[action] === 'function' ? obj[action]() : obj[action];
|
176 |
+
} ).toArray();
|
177 |
+
} else {
|
178 |
+
return this.each( function (i, menu) {
|
179 |
+
um_dropdownMenu( menu );
|
180 |
+
} );
|
181 |
+
}
|
182 |
+
};
|
183 |
+
|
184 |
+
})(jQuery);
|
185 |
+
|
186 |
+
|
187 |
+
function um_init_new_dropdown() {
|
188 |
+
jQuery('.um-new-dropdown').um_dropdownMenu();
|
189 |
}
|
190 |
|
191 |
+
/* Init all dropdown menus on page load */
|
192 |
jQuery( document ).ready( function($) {
|
193 |
um_init_new_dropdown();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
});
|
assets/js/dropdown.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
function um_init_new_dropdown(){jQuery(".um-new-dropdown").um_dropdownMenu()}!function(t){function d(e){var i={get:function(){return i},show:function(){return i.hideAll(),i.$menu=i.$element.find(".um-new-dropdown"),i.$menu.length||(i.$menu=t('div.um-new-dropdown[data-element="'+i.data.element+'"]').first()),i.$dropdown=i.$menu.clone(),i.$dropdown.on("click","li a",i.itemHandler),t(window).on("resize",i.updatePosition),t(document.body).append(i.$dropdown),i.$element.trigger("um_new_dropdown_render",{dropdown_layout:i.$dropdown,trigger:i.data.trigger,element:i.data.elemen,obj:i.$element}),i.$dropdown.css(i.calculatePosition()).show(),i.$element.addClass("um-new-dropdown-shown").data("um-new-dropdown-show",!0),i},hide:function(){return i.$dropdown&&i.$dropdown.is(":visible")&&(t(window).off("resize",i.updatePosition),i.$dropdown.remove(),i.$element.removeClass("um-new-dropdown-shown").data("um-new-dropdown-show",!1)),i},hideAll:function(){return i.hide(),t("body > div.um-new-dropdown").remove(),t(".um-new-dropdown-shown").removeClass("um-new-dropdown-shown").data("um-new-dropdown-show",!1),i},calculatePosition:function(){var e=i.$element.offset(),n=i.$element.get(0).getBoundingClientRect(),t=i.$dropdown.innerHeight()||150,o=i.data.width||150,d="",r={position:"absolute",width:o+"px"};switch(window.innerHeight-n.bottom>t?(r.top=e.top+n.height+"px",d+="bottom"):(d+="top",r.top=e.top-t+"px"),e.left>o||e.left>window.innerWidth/2?(r.left=e.left+n.width-o+"px",d+="-left"):(r.left=e.left+"px",d+="-right"),d){case"bottom-right":r.borderRadius="0px 5px 5px 5px";break;case"bottom-left":r.borderRadius="5px 0px 5px 5px";break;case"top-right":r.borderRadius="5px 5px 5px 0px";break;case"top-left":r.borderRadius="5px 5px 0px 5px"}return r},updatePosition:function(){return i.$dropdown&&i.$dropdown.is(":visible")&&i.$dropdown.css(i.calculatePosition()),i},itemHandler:function(e){e.stopPropagation();var n=t(e.currentTarget).attr("class");i.$menu.find('li a[class="'+n+'"]').trigger("click"),i.hide()},triggerHandler:function(e){e.stopPropagation(),i.$element=t(e.currentTarget),i.$element.data("um-new-dropdown-show")?i.hide():i.show()}};return i.$menu=t(e),i.data=i.$menu.data(),i.$element=i.$menu.closest(i.data.element),i.$element.length||(i.$element=t(i.data.element).first()),i.$dropdown=t(document.body).children('div[data-element="'+i.data.element+'"]'),void 0===i.data.initted&&(i.$menu.data("initted",!0),t(document.body).on(i.data.trigger,i.data.element,i.triggerHandler)),void 0===d.globalHandlersInitted&&(d.globalHandlersInitted=!0,t(document.body).on("click",function(e){t(e.target).closest(".um-new-dropdown").length||i.hideAll()})),i}t.fn.um_dropdownMenu=function(o){return"string"==typeof o&&o?this.map(function(e,n){var t=d(n);return"function"==typeof t[o]?t[o]():t[o]}).toArray():this.each(function(e,n){d(n)})}}(jQuery),jQuery(document).ready(function(e){um_init_new_dropdown()});
|
assets/js/simplebar.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).SimpleBar=e()}(this,function(){"use strict";var y=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t},h=function(t){try{return!!t()}catch(t){return!0}},e={}.toString,n=function(t){return e.call(t).slice(8,-1)},i="".split,x=h(function(){return!Object("z").propertyIsEnumerable(0)})?function(t){return"String"==n(t)?i.call(t,""):Object(t)}:Object,f=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},_=function(t){return Object(f(t))},r=Math.ceil,s=Math.floor,S=function(t){return isNaN(t=+t)?0:(0<t?s:r)(t)},o=Math.min,A=function(t){return 0<t?o(S(t),9007199254740991):0},a=function(t){return"object"==typeof t?null!==t:"function"==typeof t},l=Array.isArray||function(t){return"Array"==n(t)},t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function c(t,e){return t(e={exports:{}},e.exports),e.exports}var u,d,p,v,g="object"==typeof window&&window&&window.Math==Math?window:"object"==typeof self&&self&&self.Math==Math?self:Function("return this")(),b=!h(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),m=g.document,E=a(m)&&a(m.createElement),w=!b&&!h(function(){return 7!=Object.defineProperty((t="div",E?m.createElement(t):{}),"a",{get:function(){return 7}}).a;var t}),L=function(t){if(!a(t))throw TypeError(String(t)+" is not an object");return t},O=function(t,e){if(!a(t))return t;var i,r;if(e&&"function"==typeof(i=t.toString)&&!a(r=i.call(t)))return r;if("function"==typeof(i=t.valueOf)&&!a(r=i.call(t)))return r;if(!e&&"function"==typeof(i=t.toString)&&!a(r=i.call(t)))return r;throw TypeError("Can't convert object to primitive value")},M=Object.defineProperty,k={f:b?M:function(t,e,i){if(L(t),e=O(e,!0),L(i),w)try{return M(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported");return"value"in i&&(t[e]=i.value),t}},W=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},T=b?function(t,e,i){return k.f(t,e,W(1,i))}:function(t,e,i){return t[e]=i,t},R=function(e,i){try{T(g,e,i)}catch(t){g[e]=i}return i},j=c(function(t){var e="__core-js_shared__",i=g[e]||R(e,{});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.0.1",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})}),N=0,z=Math.random(),C=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++N+z).toString(36))},V=!h(function(){return!String(Symbol())}),D=j("wks"),B=g.Symbol,I=function(t){return D[t]||(D[t]=V&&B[t]||(V?B:C)("Symbol."+t))},P=I("species"),H=function(t,e){var i;return l(t)&&("function"!=typeof(i=t.constructor)||i!==Array&&!l(i.prototype)?a(i)&&null===(i=i[P])&&(i=void 0):i=void 0),new(void 0===i?Array:i)(0===e?0:e)},F=function(h,t){var f=1==h,d=2==h,p=3==h,v=4==h,g=6==h,b=5==h||g,m=t||H;return function(t,e,i){for(var r,n,s=_(t),o=x(s),a=function(r,n,t){if(y(r),void 0===n)return r;switch(t){case 0:return function(){return r.call(n)};case 1:return function(t){return r.call(n,t)};case 2:return function(t,e){return r.call(n,t,e)};case 3:return function(t,e,i){return r.call(n,t,e,i)}}return function(){return r.apply(n,arguments)}}(e,i,3),l=A(o.length),c=0,u=f?m(t,l):d?m(t,0):void 0;c<l;c++)if((b||c in o)&&(n=a(r=o[c],c,s),h))if(f)u[c]=n;else if(n)switch(h){case 3:return!0;case 5:return r;case 6:return c;case 2:u.push(r)}else if(v)return!1;return g?-1:p||v?v:u}},q=I("species"),$={}.propertyIsEnumerable,X=Object.getOwnPropertyDescriptor,Y={f:X&&!$.call({1:2},1)?function(t){var e=X(this,t);return!!e&&e.enumerable}:$},G=function(t){return x(f(t))},K={}.hasOwnProperty,U=function(t,e){return K.call(t,e)},J=Object.getOwnPropertyDescriptor,Q={f:b?J:function(t,e){if(t=G(t),e=O(e,!0),w)try{return J(t,e)}catch(t){}if(U(t,e))return W(!Y.f.call(t,e),t[e])}},Z=j("native-function-to-string",Function.toString),tt=g.WeakMap,et="function"==typeof tt&&/native code/.test(Z.call(tt)),it=j("keys"),rt={},nt=g.WeakMap;if(et){var st=new nt,ot=st.get,at=st.has,lt=st.set;u=function(t,e){return lt.call(st,t,e),e},d=function(t){return ot.call(st,t)||{}},p=function(t){return at.call(st,t)}}else{var ct=it[v="state"]||(it[v]=C(v));rt[ct]=!0,u=function(t,e){return T(t,ct,e),e},d=function(t){return U(t,ct)?t[ct]:{}},p=function(t){return U(t,ct)}}var ut,ht,ft={set:u,get:d,has:p,enforce:function(t){return p(t)?d(t):u(t,{})},getterFor:function(i){return function(t){var e;if(!a(t)||(e=d(t)).type!==i)throw TypeError("Incompatible receiver, "+i+" required");return e}}},dt=c(function(t){var e=ft.get,a=ft.enforce,l=String(Z).split("toString");j("inspectSource",function(t){return Z.call(t)}),(t.exports=function(t,e,i,r){var n=!!r&&!!r.unsafe,s=!!r&&!!r.enumerable,o=!!r&&!!r.noTargetGet;"function"==typeof i&&("string"!=typeof e||U(i,"name")||T(i,"name",e),a(i).source=l.join("string"==typeof e?e:"")),t!==g?(n?!o&&t[e]&&(s=!0):delete t[e],s?t[e]=i:T(t,e,i)):s?t[e]=i:R(e,i)})(Function.prototype,"toString",function(){return"function"==typeof this&&e(this).source||Z.call(this)})}),pt=Math.max,vt=Math.min,gt=(ut=!1,function(t,e,i){var r,n,s,o=G(t),a=A(o.length),l=(r=a,(n=S(i))<0?pt(n+r,0):vt(n,r));if(ut&&e!=e){for(;l<a;)if((s=o[l++])!=s)return!0}else for(;l<a;l++)if((ut||l in o)&&o[l]===e)return ut||l||0;return!ut&&-1}),bt=function(t,e){var i,r=G(t),n=0,s=[];for(i in r)!U(rt,i)&&U(r,i)&&s.push(i);for(;e.length>n;)U(r,i=e[n++])&&(~gt(s,i)||s.push(i));return s},mt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],yt=mt.concat("length","prototype"),xt={f:Object.getOwnPropertyNames||function(t){return bt(t,yt)}},Et={f:Object.getOwnPropertySymbols},wt=g.Reflect,Ot=wt&&wt.ownKeys||function(t){var e=xt.f(L(t)),i=Et.f;return i?e.concat(i(t)):e},_t=function(t,e){for(var i=Ot(e),r=k.f,n=Q.f,s=0;s<i.length;s++){var o=i[s];U(t,o)||r(t,o,n(e,o))}},St=/#|\.prototype\./,At=function(t,e){var i=Mt[Lt(t)];return i==Wt||i!=kt&&("function"==typeof e?h(e):!!e)},Lt=At.normalize=function(t){return String(t).replace(St,".").toLowerCase()},Mt=At.data={},kt=At.NATIVE="N",Wt=At.POLYFILL="P",Tt=At,Rt=Q.f,jt=function(t,e){var i,r,n,s,o,a=t.target,l=t.global,c=t.stat;if(i=l?g:c?g[a]||R(a,{}):(g[a]||{}).prototype)for(r in e){if(s=e[r],n=t.noTargetGet?(o=Rt(i,r))&&o.value:i[r],!Tt(l?r:a+(c?".":"#")+r,t.forced)&&void 0!==n){if(typeof s==typeof n)continue;_t(s,n)}(t.sham||n&&n.sham)&&T(s,"sham",!0),dt(i,r,s,t)}},Nt=F(2);jt({target:"Array",proto:!0,forced:!(ht="filter",!h(function(){var t=[];return(t.constructor={})[q]=function(){return{foo:1}},1!==t[ht](Boolean).foo}))},{filter:function(t){return Nt(this,t,arguments[1])}});var zt=function(t,e){var i=[][t];return!i||!h(function(){i.call(null,e||function(){throw 1},1)})},Ct=[].forEach,Vt=F(0),Dt=zt("forEach")?function(t){return Vt(this,t,arguments[1])}:Ct;jt({target:"Array",proto:!0,forced:[].forEach!=Dt},{forEach:Dt});jt({target:"Array",proto:!0,forced:zt("reduce")},{reduce:function(t){return function(t,e,i,r,n){y(e);var s=_(t),o=x(s),a=A(s.length),l=n?a-1:0,c=n?-1:1;if(i<2)for(;;){if(l in o){r=o[l],l+=c;break}if(l+=c,n?l<0:a<=l)throw TypeError("Reduce of empty array with no initial value")}for(;n?0<=l:l<a;l+=c)l in o&&(r=e(r,o[l],l,s));return r}(this,t,arguments.length,arguments[1],!1)}});var Bt=k.f,It=Function.prototype,Pt=It.toString,Ht=/^\s*function ([^ (]*)/;!b||"name"in It||Bt(It,"name",{configurable:!0,get:function(){try{return Pt.call(this).match(Ht)[1]}catch(t){return""}}});var Ft=Object.keys||function(t){return bt(t,mt)},qt=Object.assign,$t=!qt||h(function(){var t={},e={},i=Symbol(),r="abcdefghijklmnopqrst";return t[i]=7,r.split("").forEach(function(t){e[t]=t}),7!=qt({},t)[i]||Ft(qt({},e)).join("")!=r})?function(t,e){for(var i=_(t),r=arguments.length,n=1,s=Et.f,o=Y.f;n<r;)for(var a,l=x(arguments[n++]),c=s?Ft(l).concat(s(l)):Ft(l),u=c.length,h=0;h<u;)o.call(l,a=c[h++])&&(i[a]=l[a]);return i}:qt;jt({target:"Object",stat:!0,forced:Object.assign!==$t},{assign:$t});var Xt="\t\n\v\f\r \u2028\u2029\ufeff",Yt="["+Xt+"]",Gt=RegExp("^"+Yt+Yt+"*"),Kt=RegExp(Yt+Yt+"*$"),Ut=g.parseInt,Jt=/^[-+]?0[xX]/,Qt=8!==Ut(Xt+"08")||22!==Ut(Xt+"0x16")?function(t,e){var i,r,n=(i=String(t),r=3,i=String(f(i)),1&r&&(i=i.replace(Gt,"")),2&r&&(i=i.replace(Kt,"")),i);return Ut(n,e>>>0||(Jt.test(n)?16:10))}:Ut;jt({global:!0,forced:parseInt!=Qt},{parseInt:Qt});var Zt,te,ee=RegExp.prototype.exec,ie=String.prototype.replace,re=ee,ne=(Zt=/a/,te=/b*/g,ee.call(Zt,"a"),ee.call(te,"a"),0!==Zt.lastIndex||0!==te.lastIndex),se=void 0!==/()??/.exec("")[1];(ne||se)&&(re=function(t){var e,i,r,n,s=this;return se&&(i=new RegExp("^"+s.source+"$(?!\\s)",function(){var t=L(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}.call(s))),ne&&(e=s.lastIndex),r=ee.call(s,t),ne&&r&&(s.lastIndex=s.global?r.index+r[0].length:e),se&&r&&1<r.length&&ie.call(r[0],i,function(){for(n=1;n<arguments.length-2;n++)void 0===arguments[n]&&(r[n]=void 0)}),r});var oe=re;jt({target:"RegExp",proto:!0,forced:/./.exec!==oe},{exec:oe});var ae=function(t,e,i){return e+(i?(r=t,n=e,s=!0,l=String(f(r)),c=S(n),u=l.length,c<0||u<=c?s?"":void 0:(o=l.charCodeAt(c))<55296||56319<o||c+1===u||(a=l.charCodeAt(c+1))<56320||57343<a?s?l.charAt(c):o:s?l.slice(c,c+2):a-56320+(o-55296<<10)+65536).length:1);var r,n,s,o,a,l,c,u},le=function(t,e){var i=t.exec;if("function"==typeof i){var r=i.call(t,e);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==n(t))throw TypeError("RegExp#exec called on incompatible receiver");return oe.call(t,e)},ce=I("species"),ue=!h(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}),he=!h(function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var i="ab".split(t);return 2!==i.length||"a"!==i[0]||"b"!==i[1]}),fe=function(i,t,e,r){var n=I(i),s=!h(function(){var t={};return t[n]=function(){return 7},7!=""[i](t)}),o=s&&!h(function(){var t=!1,e=/a/;return e.exec=function(){return t=!0,null},"split"===i&&(e.constructor={},e.constructor[ce]=function(){return e}),e[n](""),!t});if(!s||!o||"replace"===i&&!ue||"split"===i&&!he){var a=/./[n],l=e(n,""[i],function(t,e,i,r,n){return e.exec===oe?s&&!n?{done:!0,value:a.call(e,i,r)}:{done:!0,value:t.call(i,e,r)}:{done:!1}}),c=l[0],u=l[1];dt(String.prototype,i,c),dt(RegExp.prototype,n,2==t?function(t,e){return u.call(t,this,e)}:function(t){return u.call(t,this)}),r&&T(RegExp.prototype[n],"sham",!0)}};fe("match",1,function(r,c,u){return[function(t){var e=f(this),i=null==t?void 0:t[r];return void 0!==i?i.call(t,e):new RegExp(t)[r](String(e))},function(t){var e=u(c,t,this);if(e.done)return e.value;var i=L(t),r=String(this);if(!i.global)return le(i,r);for(var n,s=i.unicode,o=[],a=i.lastIndex=0;null!==(n=le(i,r));){var l=String(n[0]);""===(o[a]=l)&&(i.lastIndex=ae(r,A(i.lastIndex),s)),a++}return 0===a?null:o}]});var de=Math.max,pe=Math.min,ve=Math.floor,ge=/\$([$&`']|\d\d?|<[^>]*>)/g,be=/\$([$&`']|\d\d?)/g;fe("replace",2,function(n,E,w){return[function(t,e){var i=f(this),r=null==t?void 0:t[n];return void 0!==r?r.call(t,i,e):E.call(String(i),t,e)},function(t,e){var i=w(E,t,this,e);if(i.done)return i.value;var r=L(t),n=String(this),s="function"==typeof e;s||(e=String(e));var o=r.global;if(o){var a=r.unicode;r.lastIndex=0}for(var l=[];;){var c=le(r,n);if(null===c)break;if(l.push(c),!o)break;""===String(c[0])&&(r.lastIndex=ae(n,A(r.lastIndex),a))}for(var u,h="",f=0,d=0;d<l.length;d++){c=l[d];for(var p=String(c[0]),v=de(pe(S(c.index),n.length),0),g=[],b=1;b<c.length;b++)g.push(void 0===(u=c[b])?u:String(u));var m=c.groups;if(s){var y=[p].concat(g,v,n);void 0!==m&&y.push(m);var x=String(e.apply(void 0,y))}else x=O(p,n,v,g,m,e);f<=v&&(h+=n.slice(f,v)+x,f=v+p.length)}return h+n.slice(f)}];function O(s,o,a,l,c,t){var u=a+s.length,h=l.length,e=be;return void 0!==c&&(c=_(c),e=ge),E.call(t,e,function(t,e){var i;switch(e.charAt(0)){case"$":return"$";case"&":return s;case"`":return o.slice(0,a);case"'":return o.slice(u);case"<":i=c[e.slice(1,-1)];break;default:var r=+e;if(0===r)return t;if(h<r){var n=ve(r/10);return 0===n?t:n<=h?void 0===l[n-1]?e.charAt(1):l[n-1]+e.charAt(1):t}i=l[r-1]}return void 0===i?"":i})}});for(var me in{CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}){var ye=g[me],xe=ye&&ye.prototype;if(xe&&xe.forEach!==Dt)try{T(xe,"forEach",Dt)}catch(t){xe.forEach=Dt}}var Ee=c(function(t,e){t.exports=function(){if("undefined"==typeof document)return 0;var t,e=document.body,i=document.createElement("div"),r=i.style;return r.position="absolute",r.top=r.left="-9999px",r.width=r.height="100px",r.overflow="scroll",e.appendChild(i),t=i.offsetWidth-i.clientWidth,e.removeChild(i),t}}),we="Expected a function",Oe=NaN,_e="[object Symbol]",Se=/^\s+|\s+$/g,Ae=/^[-+]0x[0-9a-f]+$/i,Le=/^0b[01]+$/i,Me=/^0o[0-7]+$/i,ke=parseInt,We="object"==typeof t&&t&&t.Object===Object&&t,Te="object"==typeof self&&self&&self.Object===Object&&self,Re=We||Te||Function("return this")(),je=Object.prototype.toString,Ne=Math.max,ze=Math.min,Ce=function(){return Re.Date.now()};function Ve(r,n,t){var s,o,a,l,c,u,h=0,f=!1,d=!1,e=!0;if("function"!=typeof r)throw new TypeError(we);function p(t){var e=s,i=o;return s=o=void 0,h=t,l=r.apply(i,e)}function v(t){var e=t-u;return void 0===u||n<=e||e<0||d&&a<=t-h}function g(){var t,e,i=Ce();if(v(i))return b(i);c=setTimeout(g,(e=n-((t=i)-u),d?ze(e,a-(t-h)):e))}function b(t){return c=void 0,e&&s?p(t):(s=o=void 0,l)}function i(){var t,e=Ce(),i=v(e);if(s=arguments,o=this,u=e,i){if(void 0===c)return h=t=u,c=setTimeout(g,n),f?p(t):l;if(d)return c=setTimeout(g,n),p(u)}return void 0===c&&(c=setTimeout(g,n)),l}return n=Be(n)||0,De(t)&&(f=!!t.leading,a=(d="maxWait"in t)?Ne(Be(t.maxWait)||0,n):a,e="trailing"in t?!!t.trailing:e),i.cancel=function(){void 0!==c&&clearTimeout(c),s=u=o=c=void(h=0)},i.flush=function(){return void 0===c?l:b(Ce())},i}function De(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function Be(t){if("number"==typeof t)return t;if("symbol"==typeof(e=t)||(i=e)&&"object"==typeof i&&je.call(e)==_e)return Oe;var e,i;if(De(t)){var r="function"==typeof t.valueOf?t.valueOf():t;t=De(r)?r+"":r}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Se,"");var n=Le.test(t);return n||Me.test(t)?ke(t.slice(2),n?2:8):Ae.test(t)?Oe:+t}var Ie=function(t,e,i){var r=!0,n=!0;if("function"!=typeof t)throw new TypeError(we);return De(i)&&(r="leading"in i?!!i.leading:r,n="trailing"in i?!!i.trailing:n),Ve(t,e,{leading:r,maxWait:e,trailing:n})},Pe=NaN,He="[object Symbol]",Fe=/^\s+|\s+$/g,qe=/^[-+]0x[0-9a-f]+$/i,$e=/^0b[01]+$/i,Xe=/^0o[0-7]+$/i,Ye=parseInt,Ge="object"==typeof t&&t&&t.Object===Object&&t,Ke="object"==typeof self&&self&&self.Object===Object&&self,Ue=Ge||Ke||Function("return this")(),Je=Object.prototype.toString,Qe=Math.max,Ze=Math.min,ti=function(){return Ue.Date.now()};function ei(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function ii(t){if("number"==typeof t)return t;if("symbol"==typeof(e=t)||(i=e)&&"object"==typeof i&&Je.call(e)==He)return Pe;var e,i;if(ei(t)){var r="function"==typeof t.valueOf?t.valueOf():t;t=ei(r)?r+"":r}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Fe,"");var n=$e.test(t);return n||Xe.test(t)?Ye(t.slice(2),n?2:8):qe.test(t)?Pe:+t}var ri=function(r,n,t){var s,o,a,l,c,u,h=0,f=!1,d=!1,e=!0;if("function"!=typeof r)throw new TypeError("Expected a function");function p(t){var e=s,i=o;return s=o=void 0,h=t,l=r.apply(i,e)}function v(t){var e=t-u;return void 0===u||n<=e||e<0||d&&a<=t-h}function g(){var t,e,i=ti();if(v(i))return b(i);c=setTimeout(g,(e=n-((t=i)-u),d?Ze(e,a-(t-h)):e))}function b(t){return c=void 0,e&&s?p(t):(s=o=void 0,l)}function i(){var t,e=ti(),i=v(e);if(s=arguments,o=this,u=e,i){if(void 0===c)return h=t=u,c=setTimeout(g,n),f?p(t):l;if(d)return c=setTimeout(g,n),p(u)}return void 0===c&&(c=setTimeout(g,n)),l}return n=ii(n)||0,ei(t)&&(f=!!t.leading,a=(d="maxWait"in t)?Qe(ii(t.maxWait)||0,n):a,e="trailing"in t?!!t.trailing:e),i.cancel=function(){void 0!==c&&clearTimeout(c),s=u=o=c=void(h=0)},i.flush=function(){return void 0===c?l:b(ti())},i},ni="Expected a function",si="__lodash_hash_undefined__",oi="[object Function]",ai="[object GeneratorFunction]",li=/^\[object .+?Constructor\]$/,ci="object"==typeof t&&t&&t.Object===Object&&t,ui="object"==typeof self&&self&&self.Object===Object&&self,hi=ci||ui||Function("return this")();var fi,di=Array.prototype,pi=Function.prototype,vi=Object.prototype,gi=hi["__core-js_shared__"],bi=(fi=/[^.]+$/.exec(gi&&gi.keys&&gi.keys.IE_PROTO||""))?"Symbol(src)_1."+fi:"",mi=pi.toString,yi=vi.hasOwnProperty,xi=vi.toString,Ei=RegExp("^"+mi.call(yi).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),wi=di.splice,Oi=Ti(hi,"Map"),_i=Ti(Object,"create");function Si(t){var e=-1,i=t?t.length:0;for(this.clear();++e<i;){var r=t[e];this.set(r[0],r[1])}}function Ai(t){var e=-1,i=t?t.length:0;for(this.clear();++e<i;){var r=t[e];this.set(r[0],r[1])}}function Li(t){var e=-1,i=t?t.length:0;for(this.clear();++e<i;){var r=t[e];this.set(r[0],r[1])}}function Mi(t,e){for(var i,r,n=t.length;n--;)if((i=t[n][0])===(r=e)||i!=i&&r!=r)return n;return-1}function ki(t){return!(!ji(t)||(e=t,bi&&bi in e))&&((r=ji(i=t)?xi.call(i):"")==oi||r==ai||function(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(t){}return e}(t)?Ei:li).test(function(t){if(null!=t){try{return mi.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t));var e,i,r}function Wi(t,e){var i,r,n=t.__data__;return("string"==(r=typeof(i=e))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==i:null===i)?n["string"==typeof e?"string":"hash"]:n.map}function Ti(t,e){var i,r,n=(r=e,null==(i=t)?void 0:i[r]);return ki(n)?n:void 0}function Ri(n,s){if("function"!=typeof n||s&&"function"!=typeof s)throw new TypeError(ni);var o=function(){var t=arguments,e=s?s.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var r=n.apply(this,t);return o.cache=i.set(e,r),r};return o.cache=new(Ri.Cache||Li),o}function ji(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}Si.prototype.clear=function(){this.__data__=_i?_i(null):{}},Si.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},Si.prototype.get=function(t){var e=this.__data__;if(_i){var i=e[t];return i===si?void 0:i}return yi.call(e,t)?e[t]:void 0},Si.prototype.has=function(t){var e=this.__data__;return _i?void 0!==e[t]:yi.call(e,t)},Si.prototype.set=function(t,e){return this.__data__[t]=_i&&void 0===e?si:e,this},Ai.prototype.clear=function(){this.__data__=[]},Ai.prototype.delete=function(t){var e=this.__data__,i=Mi(e,t);return!(i<0||(i==e.length-1?e.pop():wi.call(e,i,1),0))},Ai.prototype.get=function(t){var e=this.__data__,i=Mi(e,t);return i<0?void 0:e[i][1]},Ai.prototype.has=function(t){return-1<Mi(this.__data__,t)},Ai.prototype.set=function(t,e){var i=this.__data__,r=Mi(i,t);return r<0?i.push([t,e]):i[r][1]=e,this},Li.prototype.clear=function(){this.__data__={hash:new Si,map:new(Oi||Ai),string:new Si}},Li.prototype.delete=function(t){return Wi(this,t).delete(t)},Li.prototype.get=function(t){return Wi(this,t).get(t)},Li.prototype.has=function(t){return Wi(this,t).has(t)},Li.prototype.set=function(t,e){return Wi(this,t).set(t,e),this},Ri.Cache=Li;var Ni=Ri,zi=function(){if("undefined"!=typeof Map)return Map;function r(t,i){var r=-1;return t.some(function(t,e){return t[0]===i&&(r=e,!0)}),r}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var e=r(this.__entries__,t),i=this.__entries__[e];return i&&i[1]},t.prototype.set=function(t,e){var i=r(this.__entries__,t);~i?this.__entries__[i][1]=e:this.__entries__.push([t,e])},t.prototype.delete=function(t){var e=this.__entries__,i=r(e,t);~i&&e.splice(i,1)},t.prototype.has=function(t){return!!~r(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var i=0,r=this.__entries__;i<r.length;i++){var n=r[i];t.call(e,n[1],n[0])}},t}()}(),Ci="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,Vi="undefined"!=typeof global&&global.Math===Math?global:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),Di="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(Vi):function(t){return setTimeout(function(){return t(Date.now())},1e3/60)},Bi=2;var Ii=["top","right","bottom","left","width","height","size","weight"],Pi="undefined"!=typeof MutationObserver,Hi=function(){function t(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(t,e){var i=!1,r=!1,n=0;function s(){i&&(i=!1,t()),r&&a()}function o(){Di(s)}function a(){var t=Date.now();if(i){if(t-n<Bi)return;r=!0}else r=!(i=!0),setTimeout(o,e);n=t}return a}(this.refresh.bind(this),20)}return t.prototype.addObserver=function(t){~this.observers_.indexOf(t)||this.observers_.push(t),this.connected_||this.connect_()},t.prototype.removeObserver=function(t){var e=this.observers_,i=e.indexOf(t);~i&&e.splice(i,1),!e.length&&this.connected_&&this.disconnect_()},t.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},t.prototype.updateObservers_=function(){var t=this.observers_.filter(function(t){return t.gatherActive(),t.hasActive()});return t.forEach(function(t){return t.broadcastActive()}),0<t.length},t.prototype.connect_=function(){Ci&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Pi?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){Ci&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,i=void 0===e?"":e;Ii.some(function(t){return!!~i.indexOf(t)})&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),Fi=function(t,e){for(var i=0,r=Object.keys(e);i<r.length;i++){var n=r[i];Object.defineProperty(t,n,{value:e[n],enumerable:!1,writable:!1,configurable:!0})}return t},qi=function(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView||Vi},$i=Ji(0,0,0,0);function Xi(t){return parseFloat(t)||0}function Yi(i){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return t.reduce(function(t,e){return t+Xi(i["border-"+e+"-width"])},0)}function Gi(t){var e=t.clientWidth,i=t.clientHeight;if(!e&&!i)return $i;var r,n=qi(t).getComputedStyle(t),s=function(t){for(var e={},i=0,r=["top","right","bottom","left"];i<r.length;i++){var n=r[i],s=t["padding-"+n];e[n]=Xi(s)}return e}(n),o=s.left+s.right,a=s.top+s.bottom,l=Xi(n.width),c=Xi(n.height);if("border-box"===n.boxSizing&&(Math.round(l+o)!==e&&(l-=Yi(n,"left","right")+o),Math.round(c+a)!==i&&(c-=Yi(n,"top","bottom")+a)),(r=t)!==qi(r).document.documentElement){var u=Math.round(l+o)-e,h=Math.round(c+a)-i;1!==Math.abs(u)&&(l-=u),1!==Math.abs(h)&&(c-=h)}return Ji(s.left,s.top,l,c)}var Ki="undefined"!=typeof SVGGraphicsElement?function(t){return t instanceof qi(t).SVGGraphicsElement}:function(t){return t instanceof qi(t).SVGElement&&"function"==typeof t.getBBox};function Ui(t){return Ci?Ki(t)?Ji(0,0,(e=t.getBBox()).width,e.height):Gi(t):$i;var e}function Ji(t,e,i,r){return{x:t,y:e,width:i,height:r}}var Qi=function(){function t(t){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=Ji(0,0,0,0),this.target=t}return t.prototype.isActive=function(){var t=Ui(this.target);return(this.contentRect_=t).width!==this.broadcastWidth||t.height!==this.broadcastHeight},t.prototype.broadcastRect=function(){var t=this.contentRect_;return this.broadcastWidth=t.width,this.broadcastHeight=t.height,t},t}(),Zi=function(t,e){var i,r,n,s,o,a,l,c=(r=(i=e).x,n=i.y,s=i.width,o=i.height,a="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(a.prototype),Fi(l,{x:r,y:n,width:s,height:o,top:n,right:r+s,bottom:o+n,left:r}),l);Fi(this,{target:t,contentRect:c})},tr=function(){function t(t,e,i){if(this.activeObservations_=[],this.observations_=new zi,"function"!=typeof t)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=t,this.controller_=e,this.callbackCtx_=i}return t.prototype.observe=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof qi(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)||(e.set(t,new Qi(t)),this.controller_.addObserver(this),this.controller_.refresh())}},t.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof qi(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)&&(e.delete(t),e.size||this.controller_.removeObserver(this))}},t.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},t.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},t.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,e=this.activeObservations_.map(function(t){return new Zi(t.target,t.broadcastRect())});this.callback_.call(t,e,t),this.clearActive()}},t.prototype.clearActive=function(){this.activeObservations_.splice(0)},t.prototype.hasActive=function(){return 0<this.activeObservations_.length},t}(),er="undefined"!=typeof WeakMap?new WeakMap:new zi,ir=function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var i=Hi.getInstance(),r=new tr(e,i,this);er.set(this,r)};["observe","unobserve","disconnect"].forEach(function(e){ir.prototype[e]=function(){var t;return(t=er.get(this))[e].apply(t,arguments)}});var rr=void 0!==Vi.ResizeObserver?Vi.ResizeObserver:ir,nr=!("undefined"==typeof window||!window.document||!window.document.createElement),sr=function(){function l(t,e){var s=this;this.onScroll=function(){s.scrollXTicking||(window.requestAnimationFrame(s.scrollX),s.scrollXTicking=!0),s.scrollYTicking||(window.requestAnimationFrame(s.scrollY),s.scrollYTicking=!0)},this.scrollX=function(){s.axis.x.isOverflowing&&(s.showScrollbar("x"),s.positionScrollbar("x")),s.scrollXTicking=!1},this.scrollY=function(){s.axis.y.isOverflowing&&(s.showScrollbar("y"),s.positionScrollbar("y")),s.scrollYTicking=!1},this.onMouseEnter=function(){s.showScrollbar("x"),s.showScrollbar("y")},this.onMouseMove=function(t){s.mouseX=t.clientX,s.mouseY=t.clientY,(s.axis.x.isOverflowing||s.axis.x.forceVisible)&&s.onMouseMoveForAxis("x"),(s.axis.y.isOverflowing||s.axis.y.forceVisible)&&s.onMouseMoveForAxis("y")},this.onMouseLeave=function(){s.onMouseMove.cancel(),(s.axis.x.isOverflowing||s.axis.x.forceVisible)&&s.onMouseLeaveForAxis("x"),(s.axis.y.isOverflowing||s.axis.y.forceVisible)&&s.onMouseLeaveForAxis("y"),s.mouseX=-1,s.mouseY=-1},this.onWindowResize=function(){s.scrollbarWidth=Ee(),s.hideNativeScrollbar()},this.hideScrollbars=function(){s.axis.x.track.rect=s.axis.x.track.el.getBoundingClientRect(),s.axis.y.track.rect=s.axis.y.track.el.getBoundingClientRect(),s.isWithinBounds(s.axis.y.track.rect)||(s.axis.y.scrollbar.el.classList.remove(s.classNames.visible),s.axis.y.isVisible=!1),s.isWithinBounds(s.axis.x.track.rect)||(s.axis.x.scrollbar.el.classList.remove(s.classNames.visible),s.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,i;s.axis.x.scrollbar.rect=s.axis.x.scrollbar.el.getBoundingClientRect(),s.axis.y.scrollbar.rect=s.axis.y.scrollbar.el.getBoundingClientRect(),(s.axis.x.isOverflowing||s.axis.x.forceVisible)&&(i=s.isWithinBounds(s.axis.x.scrollbar.rect)),(s.axis.y.isOverflowing||s.axis.y.forceVisible)&&(e=s.isWithinBounds(s.axis.y.scrollbar.rect)),(e||i)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&s.onDragStart(t,"y"),i&&s.onDragStart(t,"x")))},this.drag=function(t){var e=s.axis[s.draggedAxis].track,i=e.rect[s.axis[s.draggedAxis].sizeAttr],r=s.axis[s.draggedAxis].scrollbar;t.preventDefault(),t.stopPropagation();var n=(("y"===s.draggedAxis?t.pageY:t.pageX)-e.rect[s.axis[s.draggedAxis].offsetAttr]-s.axis[s.draggedAxis].dragOffset)/e.rect[s.axis[s.draggedAxis].sizeAttr]*s.contentWrapperEl[s.axis[s.draggedAxis].scrollSizeAttr];"x"===s.draggedAxis&&(n=s.isRtl&&l.getRtlHelpers().isRtlScrollbarInverted?n-(i+r.size):n,n=s.isRtl&&l.getRtlHelpers().isRtlScrollingInverted?-n:n),s.contentWrapperEl[s.axis[s.draggedAxis].scrollOffsetAttr]=n},this.onEndDrag=function(t){t.preventDefault(),t.stopPropagation(),s.el.classList.remove(s.classNames.dragging),document.removeEventListener("mousemove",s.drag),document.removeEventListener("mouseup",s.onEndDrag)},this.el=t,this.flashTimeout,this.contentEl,this.contentWrapperEl,this.offsetEl,this.maskEl,this.globalObserver,this.mutationObserver,this.resizeObserver,this.scrollbarWidth,this.minScrollbarWidth=20,this.options=Object.assign({},l.defaultOptions,e),this.classNames=Object.assign({},l.defaultOptions.classNames,this.options.classNames),this.isRtl,this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.el.SimpleBar||(this.recalculate=Ie(this.recalculate.bind(this),64),this.onMouseMove=Ie(this.onMouseMove.bind(this),64),this.hideScrollbars=ri(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=ri(this.onWindowResize.bind(this),64,{leading:!0}),l.getRtlHelpers=Ni(l.getRtlHelpers),this.init())}l.getRtlHelpers=function(){var t=document.createElement("div");t.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var e=t.firstElementChild;document.body.appendChild(e);var i=e.firstElementChild;e.scrollLeft=0;var r=l.getOffset(e),n=l.getOffset(i);e.scrollLeft=999;var s=l.getOffset(i);return{isRtlScrollingInverted:r.left!==n.left&&n.left-s.left!=0,isRtlScrollbarInverted:r.left!==n.left}},l.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),"undefined"!=typeof MutationObserver&&(this.globalObserver=new MutationObserver(function(t){t.forEach(function(t){Array.prototype.forEach.call(t.addedNodes,function(t){1===t.nodeType&&(t.hasAttribute("data-simplebar")?!t.SimpleBar&&new l(t,l.getElOptions(t)):Array.prototype.forEach.call(t.querySelectorAll("[data-simplebar]"),function(t){!t.SimpleBar&&new l(t,l.getElOptions(t))}))}),Array.prototype.forEach.call(t.removedNodes,function(t){1===t.nodeType&&(t.hasAttribute("data-simplebar")?t.SimpleBar&&t.SimpleBar.unMount():Array.prototype.forEach.call(t.querySelectorAll("[data-simplebar]"),function(t){t.SimpleBar&&t.SimpleBar.unMount()}))})})}),this.globalObserver.observe(document,{childList:!0,subtree:!0})),"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))},l.getElOptions=function(t){return Array.prototype.reduce.call(t.attributes,function(t,e){var i=e.name.match(/data-simplebar-(.+)/);if(i){var r=i[1].replace(/\W+(.)/g,function(t,e){return e.toUpperCase()});switch(e.value){case"true":t[r]=!0;break;case"false":t[r]=!1;break;case void 0:t[r]=!0;break;default:t[r]=e.value}}return t},{})},l.removeObserver=function(){this.globalObserver.disconnect()},l.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),function(t){t.SimpleBar||new l(t,l.getElOptions(t))})},l.getOffset=function(t){var e=t.getBoundingClientRect();return{top:e.top+(window.pageYOffset||document.documentElement.scrollTop),left:e.left+(window.pageXOffset||document.documentElement.scrollLeft)}};var t=l.prototype;return t.init=function(){this.el.SimpleBar=this,nr&&(this.initDOM(),this.scrollbarWidth=Ee(),this.recalculate(),this.initListeners())},t.initDOM=function(){var e=this;if(Array.prototype.filter.call(this.el.children,function(t){return t.classList.contains(e.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.el.querySelector("."+this.classNames.contentWrapper),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.contentEl=this.el.querySelector("."+this.classNames.contentEl),this.placeholderEl=this.el.querySelector("."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.el.querySelector("."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.el.querySelector("."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var t=document.createElement("div"),i=document.createElement("div");t.classList.add(this.classNames.track),i.classList.add(this.classNames.scrollbar),t.appendChild(i),this.axis.x.track.el=t.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=t.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},t.initListeners=function(){var e=this;this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick","touchstart","touchend","touchmove"].forEach(function(t){e.el.addEventListener(t,e.onPointerEvent,!0)}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),window.addEventListener("resize",this.onWindowResize),this.resizeObserver=new rr(this.recalculate),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl)},t.recalculate=function(){var t=this.heightAutoObserverEl.offsetHeight<=1,e=this.heightAutoObserverEl.offsetWidth<=1;this.elStyles=window.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction,this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft,this.contentWrapperEl.style.height=t?"auto":"100%",this.placeholderEl.style.width=e?this.contentEl.offsetWidth+"px":"auto",this.placeholderEl.style.height=this.contentEl.scrollHeight+"px",this.axis.x.isOverflowing=this.contentWrapperEl.scrollWidth>this.contentWrapperEl.offsetWidth,this.axis.y.isOverflowing=this.contentWrapperEl.scrollHeight>this.contentWrapperEl.offsetHeight,this.axis.x.isOverflowing="hidden"!==this.elStyles.overflowX&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==this.elStyles.overflowY&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar(),this.axis.x.track.rect=this.axis.x.track.el.getBoundingClientRect(),this.axis.y.track.rect=this.axis.y.track.el.getBoundingClientRect(),this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},t.getScrollbarSize=function(t){void 0===t&&(t="y");var e,i=this.scrollbarWidth?this.contentWrapperEl[this.axis[t].scrollSizeAttr]:this.contentWrapperEl[this.axis[t].scrollSizeAttr]-this.minScrollbarWidth,r=this.axis[t].track.rect[this.axis[t].sizeAttr];if(this.axis[t].isOverflowing){var n=r/i;return e=Math.max(~~(n*r),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e}},t.positionScrollbar=function(t){void 0===t&&(t="y");var e=this.contentWrapperEl[this.axis[t].scrollSizeAttr],i=this.axis[t].track.rect[this.axis[t].sizeAttr],r=parseInt(this.elStyles[this.axis[t].sizeAttr],10),n=this.axis[t].scrollbar,s=this.contentWrapperEl[this.axis[t].scrollOffsetAttr],o=(s="x"===t&&this.isRtl&&l.getRtlHelpers().isRtlScrollingInverted?-s:s)/(e-r),a=~~((i-n.size)*o);a="x"===t&&this.isRtl&&l.getRtlHelpers().isRtlScrollbarInverted?a+(i-n.size):a,n.el.style.transform="x"===t?"translate3d("+a+"px, 0, 0)":"translate3d(0, "+a+"px, 0)"},t.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,i=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),this.axis[t].isOverflowing?i.style.display="block":i.style.display="none"},t.hideNativeScrollbar=function(){if(this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+(this.scrollbarWidth||this.minScrollbarWidth)+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+(this.scrollbarWidth||this.minScrollbarWidth)+"px":0,!this.scrollbarWidth){var t=[this.isRtl?"paddingLeft":"paddingRight"];this.contentWrapperEl.style[t]=this.axis.y.isOverflowing||this.axis.y.forceVisible?this.minScrollbarWidth+"px":0,this.contentWrapperEl.style.paddingBottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?this.minScrollbarWidth+"px":0}},t.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},t.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},t.showScrollbar=function(t){void 0===t&&(t="y");var e=this.axis[t].scrollbar.el;this.axis[t].isVisible||(e.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},t.onDragStart=function(t,e){void 0===e&&(e="y");var i=this.axis[e].scrollbar.el,r="y"===e?t.pageY:t.pageX;this.axis[e].dragOffset=r-i.getBoundingClientRect()[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),document.addEventListener("mousemove",this.drag),document.addEventListener("mouseup",this.onEndDrag)},t.getContentElement=function(){return this.contentEl},t.getScrollElement=function(){return this.contentWrapperEl},t.removeListeners=function(){var e=this;this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick","touchstart","touchend","touchmove"].forEach(function(t){e.el.removeEventListener(t,e.onPointerEvent)}),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.onWindowResize),this.mutationObserver&&this.mutationObserver.disconnect(),this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},t.unMount=function(){this.removeListeners(),this.el.SimpleBar=null},t.isChildNode=function(t){return null!==t&&(t===this.el||this.isChildNode(t.parentNode))},t.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},l}();return sr.defaultOptions={autoHide:!0,forceVisible:!1,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},nr&&sr.initHtmlApi(),sr});
|
1 |
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).SimpleBar=e()}(this,function(){"use strict";var y=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t},h=function(t){try{return!!t()}catch(t){return!0}},e={}.toString,n=function(t){return e.call(t).slice(8,-1)},i="".split,x=h(function(){return!Object("z").propertyIsEnumerable(0)})?function(t){return"String"==n(t)?i.call(t,""):Object(t)}:Object,l=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},_=function(t){return Object(l(t))},r=Math.ceil,s=Math.floor,S=function(t){return isNaN(t=+t)?0:(0<t?s:r)(t)},o=Math.min,A=function(t){return 0<t?o(S(t),9007199254740991):0},a=function(t){return"object"==typeof t?null!==t:"function"==typeof t},c=Array.isArray||function(t){return"Array"==n(t)},t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function u(t,e){return t(e={exports:{}},e.exports),e.exports}var f,d,p,v,g="object"==typeof window&&window&&window.Math==Math?window:"object"==typeof self&&self&&self.Math==Math?self:Function("return this")(),b=!h(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),m=g.document,E=a(m)&&a(m.createElement),w=!b&&!h(function(){return 7!=Object.defineProperty(function(t){return E?m.createElement(t):{}}("div"),"a",{get:function(){return 7}}).a}),L=function(t){if(!a(t))throw TypeError(String(t)+" is not an object");return t},O=function(t,e){if(!a(t))return t;var i,r;if(e&&"function"==typeof(i=t.toString)&&!a(r=i.call(t)))return r;if("function"==typeof(i=t.valueOf)&&!a(r=i.call(t)))return r;if(!e&&"function"==typeof(i=t.toString)&&!a(r=i.call(t)))return r;throw TypeError("Can't convert object to primitive value")},M=Object.defineProperty,k={f:b?M:function(t,e,i){if(L(t),e=O(e,!0),L(i),w)try{return M(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported");return"value"in i&&(t[e]=i.value),t}},W=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},T=b?function(t,e,i){return k.f(t,e,W(1,i))}:function(t,e,i){return t[e]=i,t},R=function(e,i){try{T(g,e,i)}catch(t){g[e]=i}return i},j=u(function(t){var e="__core-js_shared__",i=g[e]||R(e,{});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.0.1",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})}),N=0,z=Math.random(),C=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++N+z).toString(36))},V=!h(function(){return!String(Symbol())}),D=j("wks"),B=g.Symbol,I=function(t){return D[t]||(D[t]=V&&B[t]||(V?B:C)("Symbol."+t))},P=I("species"),H=function(t,e){var i;return c(t)&&("function"!=typeof(i=t.constructor)||i!==Array&&!c(i.prototype)?a(i)&&null===(i=i[P])&&(i=void 0):i=void 0),new(void 0===i?Array:i)(0===e?0:e)},F=function(h,t){var f=1==h,d=2==h,p=3==h,v=4==h,g=6==h,b=5==h||g,m=t||H;return function(t,e,i){for(var r,n,s=_(t),o=x(s),a=function(r,n,t){if(y(r),void 0===n)return r;switch(t){case 0:return function(){return r.call(n)};case 1:return function(t){return r.call(n,t)};case 2:return function(t,e){return r.call(n,t,e)};case 3:return function(t,e,i){return r.call(n,t,e,i)}}return function(){return r.apply(n,arguments)}}(e,i,3),l=A(o.length),c=0,u=f?m(t,l):d?m(t,0):void 0;c<l;c++)if((b||c in o)&&(n=a(r=o[c],c,s),h))if(f)u[c]=n;else if(n)switch(h){case 3:return!0;case 5:return r;case 6:return c;case 2:u.push(r)}else if(v)return!1;return g?-1:p||v?v:u}},q=I("species"),$={}.propertyIsEnumerable,X=Object.getOwnPropertyDescriptor,Y={f:X&&!$.call({1:2},1)?function(t){var e=X(this,t);return!!e&&e.enumerable}:$},G=function(t){return x(l(t))},K={}.hasOwnProperty,U=function(t,e){return K.call(t,e)},J=Object.getOwnPropertyDescriptor,Q={f:b?J:function(t,e){if(t=G(t),e=O(e,!0),w)try{return J(t,e)}catch(t){}if(U(t,e))return W(!Y.f.call(t,e),t[e])}},Z=j("native-function-to-string",Function.toString),tt=g.WeakMap,et="function"==typeof tt&&/native code/.test(Z.call(tt)),it=j("keys"),rt={},nt=g.WeakMap;if(et){var st=new nt,ot=st.get,at=st.has,lt=st.set;f=function(t,e){return lt.call(st,t,e),e},d=function(t){return ot.call(st,t)||{}},p=function(t){return at.call(st,t)}}else{var ct=it[v="state"]||(it[v]=C(v));rt[ct]=!0,f=function(t,e){return T(t,ct,e),e},d=function(t){return U(t,ct)?t[ct]:{}},p=function(t){return U(t,ct)}}var ut,ht,ft={set:f,get:d,has:p,enforce:function(t){return p(t)?d(t):f(t,{})},getterFor:function(i){return function(t){var e;if(!a(t)||(e=d(t)).type!==i)throw TypeError("Incompatible receiver, "+i+" required");return e}}},dt=u(function(t){var e=ft.get,a=ft.enforce,l=String(Z).split("toString");j("inspectSource",function(t){return Z.call(t)}),(t.exports=function(t,e,i,r){var n=!!r&&!!r.unsafe,s=!!r&&!!r.enumerable,o=!!r&&!!r.noTargetGet;"function"==typeof i&&("string"!=typeof e||U(i,"name")||T(i,"name",e),a(i).source=l.join("string"==typeof e?e:"")),t!==g?(n?!o&&t[e]&&(s=!0):delete t[e],s?t[e]=i:T(t,e,i)):s?t[e]=i:R(e,i)})(Function.prototype,"toString",function(){return"function"==typeof this&&e(this).source||Z.call(this)})}),pt=Math.max,vt=Math.min,gt=(ut=!1,function(t,e,i){var r,n=G(t),s=A(n.length),o=function(t,e){var i=S(t);return i<0?pt(i+e,0):vt(i,e)}(i,s);if(ut&&e!=e){for(;o<s;)if((r=n[o++])!=r)return!0}else for(;o<s;o++)if((ut||o in n)&&n[o]===e)return ut||o||0;return!ut&&-1}),bt=function(t,e){var i,r=G(t),n=0,s=[];for(i in r)!U(rt,i)&&U(r,i)&&s.push(i);for(;e.length>n;)U(r,i=e[n++])&&(~gt(s,i)||s.push(i));return s},mt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],yt=mt.concat("length","prototype"),xt={f:Object.getOwnPropertyNames||function(t){return bt(t,yt)}},Et={f:Object.getOwnPropertySymbols},wt=g.Reflect,Ot=wt&&wt.ownKeys||function(t){var e=xt.f(L(t)),i=Et.f;return i?e.concat(i(t)):e},_t=function(t,e){for(var i=Ot(e),r=k.f,n=Q.f,s=0;s<i.length;s++){var o=i[s];U(t,o)||r(t,o,n(e,o))}},St=/#|\.prototype\./,At=function(t,e){var i=Mt[Lt(t)];return i==Wt||i!=kt&&("function"==typeof e?h(e):!!e)},Lt=At.normalize=function(t){return String(t).replace(St,".").toLowerCase()},Mt=At.data={},kt=At.NATIVE="N",Wt=At.POLYFILL="P",Tt=At,Rt=Q.f,jt=function(t,e){var i,r,n,s,o,a=t.target,l=t.global,c=t.stat;if(i=l?g:c?g[a]||R(a,{}):(g[a]||{}).prototype)for(r in e){if(s=e[r],n=t.noTargetGet?(o=Rt(i,r))&&o.value:i[r],!Tt(l?r:a+(c?".":"#")+r,t.forced)&&void 0!==n){if(typeof s==typeof n)continue;_t(s,n)}(t.sham||n&&n.sham)&&T(s,"sham",!0),dt(i,r,s,t)}},Nt=F(2);jt({target:"Array",proto:!0,forced:!(ht="filter",!h(function(){var t=[];return(t.constructor={})[q]=function(){return{foo:1}},1!==t[ht](Boolean).foo}))},{filter:function(t){return Nt(this,t,arguments[1])}});var zt=function(t,e){var i=[][t];return!i||!h(function(){i.call(null,e||function(){throw 1},1)})},Ct=[].forEach,Vt=F(0),Dt=zt("forEach")?function(t){return Vt(this,t,arguments[1])}:Ct;jt({target:"Array",proto:!0,forced:[].forEach!=Dt},{forEach:Dt});jt({target:"Array",proto:!0,forced:zt("reduce")},{reduce:function(t){return function(t,e,i,r,n){y(e);var s=_(t),o=x(s),a=A(s.length),l=n?a-1:0,c=n?-1:1;if(i<2)for(;;){if(l in o){r=o[l],l+=c;break}if(l+=c,n?l<0:a<=l)throw TypeError("Reduce of empty array with no initial value")}for(;n?0<=l:l<a;l+=c)l in o&&(r=e(r,o[l],l,s));return r}(this,t,arguments.length,arguments[1],!1)}});var Bt=k.f,It=Function.prototype,Pt=It.toString,Ht=/^\s*function ([^ (]*)/;!b||"name"in It||Bt(It,"name",{configurable:!0,get:function(){try{return Pt.call(this).match(Ht)[1]}catch(t){return""}}});var Ft=Object.keys||function(t){return bt(t,mt)},qt=Object.assign,$t=!qt||h(function(){var t={},e={},i=Symbol(),r="abcdefghijklmnopqrst";return t[i]=7,r.split("").forEach(function(t){e[t]=t}),7!=qt({},t)[i]||Ft(qt({},e)).join("")!=r})?function(t,e){for(var i=_(t),r=arguments.length,n=1,s=Et.f,o=Y.f;n<r;)for(var a,l=x(arguments[n++]),c=s?Ft(l).concat(s(l)):Ft(l),u=c.length,h=0;h<u;)o.call(l,a=c[h++])&&(i[a]=l[a]);return i}:qt;jt({target:"Object",stat:!0,forced:Object.assign!==$t},{assign:$t});var Xt="\t\n\v\f\r \u2028\u2029\ufeff",Yt="["+Xt+"]",Gt=RegExp("^"+Yt+Yt+"*"),Kt=RegExp(Yt+Yt+"*$"),Ut=g.parseInt,Jt=/^[-+]?0[xX]/,Qt=8!==Ut(Xt+"08")||22!==Ut(Xt+"0x16")?function(t,e){var i=function(t,e){return t=String(l(t)),1&e&&(t=t.replace(Gt,"")),2&e&&(t=t.replace(Kt,"")),t}(String(t),3);return Ut(i,e>>>0||(Jt.test(i)?16:10))}:Ut;jt({global:!0,forced:parseInt!=Qt},{parseInt:Qt});var Zt,te,ee=RegExp.prototype.exec,ie=String.prototype.replace,re=ee,ne=(Zt=/a/,te=/b*/g,ee.call(Zt,"a"),ee.call(te,"a"),0!==Zt.lastIndex||0!==te.lastIndex),se=void 0!==/()??/.exec("")[1];(ne||se)&&(re=function(t){var e,i,r,n,s=this;return se&&(i=new RegExp("^"+s.source+"$(?!\\s)",function(){var t=L(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}.call(s))),ne&&(e=s.lastIndex),r=ee.call(s,t),ne&&r&&(s.lastIndex=s.global?r.index+r[0].length:e),se&&r&&1<r.length&&ie.call(r[0],i,function(){for(n=1;n<arguments.length-2;n++)void 0===arguments[n]&&(r[n]=void 0)}),r});var oe=re;jt({target:"RegExp",proto:!0,forced:/./.exec!==oe},{exec:oe});var ae=function(t,e,i){return e+(i?function(t,e,i){var r,n,s=String(l(t)),o=S(e),a=s.length;return o<0||a<=o?i?"":void 0:(r=s.charCodeAt(o))<55296||56319<r||o+1===a||(n=s.charCodeAt(o+1))<56320||57343<n?i?s.charAt(o):r:i?s.slice(o,o+2):n-56320+(r-55296<<10)+65536}(t,e,!0).length:1)},le=function(t,e){var i=t.exec;if("function"==typeof i){var r=i.call(t,e);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==n(t))throw TypeError("RegExp#exec called on incompatible receiver");return oe.call(t,e)},ce=I("species"),ue=!h(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}),he=!h(function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var i="ab".split(t);return 2!==i.length||"a"!==i[0]||"b"!==i[1]}),fe=function(i,t,e,r){var n=I(i),s=!h(function(){var t={};return t[n]=function(){return 7},7!=""[i](t)}),o=s&&!h(function(){var t=!1,e=/a/;return e.exec=function(){return t=!0,null},"split"===i&&(e.constructor={},e.constructor[ce]=function(){return e}),e[n](""),!t});if(!s||!o||"replace"===i&&!ue||"split"===i&&!he){var a=/./[n],l=e(n,""[i],function(t,e,i,r,n){return e.exec===oe?s&&!n?{done:!0,value:a.call(e,i,r)}:{done:!0,value:t.call(i,e,r)}:{done:!1}}),c=l[0],u=l[1];dt(String.prototype,i,c),dt(RegExp.prototype,n,2==t?function(t,e){return u.call(t,this,e)}:function(t){return u.call(t,this)}),r&&T(RegExp.prototype[n],"sham",!0)}};fe("match",1,function(r,c,u){return[function(t){var e=l(this),i=null==t?void 0:t[r];return void 0!==i?i.call(t,e):new RegExp(t)[r](String(e))},function(t){var e=u(c,t,this);if(e.done)return e.value;var i=L(t),r=String(this);if(!i.global)return le(i,r);for(var n,s=i.unicode,o=[],a=i.lastIndex=0;null!==(n=le(i,r));){var l=String(n[0]);""===(o[a]=l)&&(i.lastIndex=ae(r,A(i.lastIndex),s)),a++}return 0===a?null:o}]});var de=Math.max,pe=Math.min,ve=Math.floor,ge=/\$([$&`']|\d\d?|<[^>]*>)/g,be=/\$([$&`']|\d\d?)/g;fe("replace",2,function(n,E,w){return[function(t,e){var i=l(this),r=null==t?void 0:t[n];return void 0!==r?r.call(t,i,e):E.call(String(i),t,e)},function(t,e){var i=w(E,t,this,e);if(i.done)return i.value;var r=L(t),n=String(this),s="function"==typeof e;s||(e=String(e));var o=r.global;if(o){var a=r.unicode;r.lastIndex=0}for(var l=[];;){var c=le(r,n);if(null===c)break;if(l.push(c),!o)break;""===String(c[0])&&(r.lastIndex=ae(n,A(r.lastIndex),a))}for(var u,h="",f=0,d=0;d<l.length;d++){c=l[d];for(var p=String(c[0]),v=de(pe(S(c.index),n.length),0),g=[],b=1;b<c.length;b++)g.push(void 0===(u=c[b])?u:String(u));var m=c.groups;if(s){var y=[p].concat(g,v,n);void 0!==m&&y.push(m);var x=String(e.apply(void 0,y))}else x=O(p,n,v,g,m,e);f<=v&&(h+=n.slice(f,v)+x,f=v+p.length)}return h+n.slice(f)}];function O(s,o,a,l,c,t){var u=a+s.length,h=l.length,e=be;return void 0!==c&&(c=_(c),e=ge),E.call(t,e,function(t,e){var i;switch(e.charAt(0)){case"$":return"$";case"&":return s;case"`":return o.slice(0,a);case"'":return o.slice(u);case"<":i=c[e.slice(1,-1)];break;default:var r=+e;if(0==r)return t;if(h<r){var n=ve(r/10);return 0===n?t:n<=h?void 0===l[n-1]?e.charAt(1):l[n-1]+e.charAt(1):t}i=l[r-1]}return void 0===i?"":i})}});for(var me in{CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}){var ye=g[me],xe=ye&&ye.prototype;if(xe&&xe.forEach!==Dt)try{T(xe,"forEach",Dt)}catch(t){xe.forEach=Dt}}var Ee=u(function(t,e){t.exports=function(){if("undefined"==typeof document)return 0;var t,e=document.body,i=document.createElement("div"),r=i.style;return r.position="absolute",r.top=r.left="-9999px",r.width=r.height="100px",r.overflow="scroll",e.appendChild(i),t=i.offsetWidth-i.clientWidth,e.removeChild(i),t}}),we="Expected a function",Oe=NaN,_e="[object Symbol]",Se=/^\s+|\s+$/g,Ae=/^[-+]0x[0-9a-f]+$/i,Le=/^0b[01]+$/i,Me=/^0o[0-7]+$/i,ke=parseInt,We="object"==typeof t&&t&&t.Object===Object&&t,Te="object"==typeof self&&self&&self.Object===Object&&self,Re=We||Te||Function("return this")(),je=Object.prototype.toString,Ne=Math.max,ze=Math.min,Ce=function(){return Re.Date.now()};function Ve(r,i,t){var n,s,o,a,l,c,u=0,h=!1,f=!1,e=!0;if("function"!=typeof r)throw new TypeError(we);function d(t){var e=n,i=s;return n=s=void 0,u=t,a=r.apply(i,e)}function p(t){var e=t-c;return void 0===c||i<=e||e<0||f&&o<=t-u}function v(){var t=Ce();if(p(t))return g(t);l=setTimeout(v,function(t){var e=i-(t-c);return f?ze(e,o-(t-u)):e}(t))}function g(t){return l=void 0,e&&n?d(t):(n=s=void 0,a)}function b(){var t=Ce(),e=p(t);if(n=arguments,s=this,c=t,e){if(void 0===l)return function(t){return u=t,l=setTimeout(v,i),h?d(t):a}(c);if(f)return l=setTimeout(v,i),d(c)}return void 0===l&&(l=setTimeout(v,i)),a}return i=Be(i)||0,De(t)&&(h=!!t.leading,o=(f="maxWait"in t)?Ne(Be(t.maxWait)||0,i):o,e="trailing"in t?!!t.trailing:e),b.cancel=function(){void 0!==l&&clearTimeout(l),n=c=s=l=void(u=0)},b.flush=function(){return void 0===l?a:g(Ce())},b}function De(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function Be(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&je.call(t)==_e}(t))return Oe;if(De(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=De(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Se,"");var i=Le.test(t);return i||Me.test(t)?ke(t.slice(2),i?2:8):Ae.test(t)?Oe:+t}var Ie=function(t,e,i){var r=!0,n=!0;if("function"!=typeof t)throw new TypeError(we);return De(i)&&(r="leading"in i?!!i.leading:r,n="trailing"in i?!!i.trailing:n),Ve(t,e,{leading:r,maxWait:e,trailing:n})},Pe=NaN,He="[object Symbol]",Fe=/^\s+|\s+$/g,qe=/^[-+]0x[0-9a-f]+$/i,$e=/^0b[01]+$/i,Xe=/^0o[0-7]+$/i,Ye=parseInt,Ge="object"==typeof t&&t&&t.Object===Object&&t,Ke="object"==typeof self&&self&&self.Object===Object&&self,Ue=Ge||Ke||Function("return this")(),Je=Object.prototype.toString,Qe=Math.max,Ze=Math.min,ti=function(){return Ue.Date.now()};function ei(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function ii(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&Je.call(t)==He}(t))return Pe;if(ei(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=ei(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Fe,"");var i=$e.test(t);return i||Xe.test(t)?Ye(t.slice(2),i?2:8):qe.test(t)?Pe:+t}var ri=function(r,i,t){var n,s,o,a,l,c,u=0,h=!1,f=!1,e=!0;if("function"!=typeof r)throw new TypeError("Expected a function");function d(t){var e=n,i=s;return n=s=void 0,u=t,a=r.apply(i,e)}function p(t){var e=t-c;return void 0===c||i<=e||e<0||f&&o<=t-u}function v(){var t=ti();if(p(t))return g(t);l=setTimeout(v,function(t){var e=i-(t-c);return f?Ze(e,o-(t-u)):e}(t))}function g(t){return l=void 0,e&&n?d(t):(n=s=void 0,a)}function b(){var t=ti(),e=p(t);if(n=arguments,s=this,c=t,e){if(void 0===l)return function(t){return u=t,l=setTimeout(v,i),h?d(t):a}(c);if(f)return l=setTimeout(v,i),d(c)}return void 0===l&&(l=setTimeout(v,i)),a}return i=ii(i)||0,ei(t)&&(h=!!t.leading,o=(f="maxWait"in t)?Qe(ii(t.maxWait)||0,i):o,e="trailing"in t?!!t.trailing:e),b.cancel=function(){void 0!==l&&clearTimeout(l),n=c=s=l=void(u=0)},b.flush=function(){return void 0===l?a:g(ti())},b},ni="Expected a function",si="__lodash_hash_undefined__",oi="[object Function]",ai="[object GeneratorFunction]",li=/^\[object .+?Constructor\]$/,ci="object"==typeof t&&t&&t.Object===Object&&t,ui="object"==typeof self&&self&&self.Object===Object&&self,hi=ci||ui||Function("return this")();var fi,di=Array.prototype,pi=Function.prototype,vi=Object.prototype,gi=hi["__core-js_shared__"],bi=(fi=/[^.]+$/.exec(gi&&gi.keys&&gi.keys.IE_PROTO||""))?"Symbol(src)_1."+fi:"",mi=pi.toString,yi=vi.hasOwnProperty,xi=vi.toString,Ei=RegExp("^"+mi.call(yi).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),wi=di.splice,Oi=Ti(hi,"Map"),_i=Ti(Object,"create");function Si(t){var e=-1,i=t?t.length:0;for(this.clear();++e<i;){var r=t[e];this.set(r[0],r[1])}}function Ai(t){var e=-1,i=t?t.length:0;for(this.clear();++e<i;){var r=t[e];this.set(r[0],r[1])}}function Li(t){var e=-1,i=t?t.length:0;for(this.clear();++e<i;){var r=t[e];this.set(r[0],r[1])}}function Mi(t,e){for(var i,r,n=t.length;n--;)if((i=t[n][0])===(r=e)||i!=i&&r!=r)return n;return-1}function ki(t){return!(!ji(t)||function(t){return!!bi&&bi in t}(t))&&(function(t){var e=ji(t)?xi.call(t):"";return e==oi||e==ai}(t)||function(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(t){}return e}(t)?Ei:li).test(function(t){if(null!=t){try{return mi.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function Wi(t,e){var i=t.__data__;return function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}(e)?i["string"==typeof e?"string":"hash"]:i.map}function Ti(t,e){var i=function(t,e){return null==t?void 0:t[e]}(t,e);return ki(i)?i:void 0}function Ri(n,s){if("function"!=typeof n||s&&"function"!=typeof s)throw new TypeError(ni);var o=function(){var t=arguments,e=s?s.apply(this,t):t[0],i=o.cache;if(i.has(e))return i.get(e);var r=n.apply(this,t);return o.cache=i.set(e,r),r};return o.cache=new(Ri.Cache||Li),o}function ji(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}Si.prototype.clear=function(){this.__data__=_i?_i(null):{}},Si.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},Si.prototype.get=function(t){var e=this.__data__;if(_i){var i=e[t];return i===si?void 0:i}return yi.call(e,t)?e[t]:void 0},Si.prototype.has=function(t){var e=this.__data__;return _i?void 0!==e[t]:yi.call(e,t)},Si.prototype.set=function(t,e){return this.__data__[t]=_i&&void 0===e?si:e,this},Ai.prototype.clear=function(){this.__data__=[]},Ai.prototype.delete=function(t){var e=this.__data__,i=Mi(e,t);return!(i<0||(i==e.length-1?e.pop():wi.call(e,i,1),0))},Ai.prototype.get=function(t){var e=this.__data__,i=Mi(e,t);return i<0?void 0:e[i][1]},Ai.prototype.has=function(t){return-1<Mi(this.__data__,t)},Ai.prototype.set=function(t,e){var i=this.__data__,r=Mi(i,t);return r<0?i.push([t,e]):i[r][1]=e,this},Li.prototype.clear=function(){this.__data__={hash:new Si,map:new(Oi||Ai),string:new Si}},Li.prototype.delete=function(t){return Wi(this,t).delete(t)},Li.prototype.get=function(t){return Wi(this,t).get(t)},Li.prototype.has=function(t){return Wi(this,t).has(t)},Li.prototype.set=function(t,e){return Wi(this,t).set(t,e),this},Ri.Cache=Li;var Ni=Ri,zi=function(){if("undefined"!=typeof Map)return Map;function r(t,i){var r=-1;return t.some(function(t,e){return t[0]===i&&(r=e,!0)}),r}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var e=r(this.__entries__,t),i=this.__entries__[e];return i&&i[1]},t.prototype.set=function(t,e){var i=r(this.__entries__,t);~i?this.__entries__[i][1]=e:this.__entries__.push([t,e])},t.prototype.delete=function(t){var e=this.__entries__,i=r(e,t);~i&&e.splice(i,1)},t.prototype.has=function(t){return!!~r(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var i=0,r=this.__entries__;i<r.length;i++){var n=r[i];t.call(e,n[1],n[0])}},t}()}(),Ci="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,Vi="undefined"!=typeof global&&global.Math===Math?global:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),Di="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(Vi):function(t){return setTimeout(function(){return t(Date.now())},1e3/60)},Bi=2;var Ii=["top","right","bottom","left","width","height","size","weight"],Pi="undefined"!=typeof MutationObserver,Hi=function(){function t(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(t,e){var i=!1,r=!1,n=0;function s(){i&&(i=!1,t()),r&&a()}function o(){Di(s)}function a(){var t=Date.now();if(i){if(t-n<Bi)return;r=!0}else r=!(i=!0),setTimeout(o,e);n=t}return a}(this.refresh.bind(this),20)}return t.prototype.addObserver=function(t){~this.observers_.indexOf(t)||this.observers_.push(t),this.connected_||this.connect_()},t.prototype.removeObserver=function(t){var e=this.observers_,i=e.indexOf(t);~i&&e.splice(i,1),!e.length&&this.connected_&&this.disconnect_()},t.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},t.prototype.updateObservers_=function(){var t=this.observers_.filter(function(t){return t.gatherActive(),t.hasActive()});return t.forEach(function(t){return t.broadcastActive()}),0<t.length},t.prototype.connect_=function(){Ci&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Pi?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){Ci&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,i=void 0===e?"":e;Ii.some(function(t){return!!~i.indexOf(t)})&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),Fi=function(t,e){for(var i=0,r=Object.keys(e);i<r.length;i++){var n=r[i];Object.defineProperty(t,n,{value:e[n],enumerable:!1,writable:!1,configurable:!0})}return t},qi=function(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView||Vi},$i=Ji(0,0,0,0);function Xi(t){return parseFloat(t)||0}function Yi(i){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return t.reduce(function(t,e){return t+Xi(i["border-"+e+"-width"])},0)}function Gi(t){var e=t.clientWidth,i=t.clientHeight;if(!e&&!i)return $i;var r=qi(t).getComputedStyle(t),n=function(t){for(var e={},i=0,r=["top","right","bottom","left"];i<r.length;i++){var n=r[i],s=t["padding-"+n];e[n]=Xi(s)}return e}(r),s=n.left+n.right,o=n.top+n.bottom,a=Xi(r.width),l=Xi(r.height);if("border-box"===r.boxSizing&&(Math.round(a+s)!==e&&(a-=Yi(r,"left","right")+s),Math.round(l+o)!==i&&(l-=Yi(r,"top","bottom")+o)),!function(t){return t===qi(t).document.documentElement}(t)){var c=Math.round(a+s)-e,u=Math.round(l+o)-i;1!==Math.abs(c)&&(a-=c),1!==Math.abs(u)&&(l-=u)}return Ji(n.left,n.top,a,l)}var Ki="undefined"!=typeof SVGGraphicsElement?function(t){return t instanceof qi(t).SVGGraphicsElement}:function(t){return t instanceof qi(t).SVGElement&&"function"==typeof t.getBBox};function Ui(t){return Ci?Ki(t)?function(t){var e=t.getBBox();return Ji(0,0,e.width,e.height)}(t):Gi(t):$i}function Ji(t,e,i,r){return{x:t,y:e,width:i,height:r}}var Qi=function(){function t(t){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=Ji(0,0,0,0),this.target=t}return t.prototype.isActive=function(){var t=Ui(this.target);return(this.contentRect_=t).width!==this.broadcastWidth||t.height!==this.broadcastHeight},t.prototype.broadcastRect=function(){var t=this.contentRect_;return this.broadcastWidth=t.width,this.broadcastHeight=t.height,t},t}(),Zi=function(t,e){var i=function(t){var e=t.x,i=t.y,r=t.width,n=t.height,s="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,o=Object.create(s.prototype);return Fi(o,{x:e,y:i,width:r,height:n,top:i,right:e+r,bottom:n+i,left:e}),o}(e);Fi(this,{target:t,contentRect:i})},tr=function(){function t(t,e,i){if(this.activeObservations_=[],this.observations_=new zi,"function"!=typeof t)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=t,this.controller_=e,this.callbackCtx_=i}return t.prototype.observe=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof qi(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)||(e.set(t,new Qi(t)),this.controller_.addObserver(this),this.controller_.refresh())}},t.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof qi(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)&&(e.delete(t),e.size||this.controller_.removeObserver(this))}},t.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},t.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},t.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,e=this.activeObservations_.map(function(t){return new Zi(t.target,t.broadcastRect())});this.callback_.call(t,e,t),this.clearActive()}},t.prototype.clearActive=function(){this.activeObservations_.splice(0)},t.prototype.hasActive=function(){return 0<this.activeObservations_.length},t}(),er="undefined"!=typeof WeakMap?new WeakMap:new zi,ir=function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var i=Hi.getInstance(),r=new tr(e,i,this);er.set(this,r)};["observe","unobserve","disconnect"].forEach(function(e){ir.prototype[e]=function(){var t;return(t=er.get(this))[e].apply(t,arguments)}});var rr=void 0!==Vi.ResizeObserver?Vi.ResizeObserver:ir,nr=!("undefined"==typeof window||!window.document||!window.document.createElement),sr=function(){function l(t,e){var s=this;this.onScroll=function(){s.scrollXTicking||(window.requestAnimationFrame(s.scrollX),s.scrollXTicking=!0),s.scrollYTicking||(window.requestAnimationFrame(s.scrollY),s.scrollYTicking=!0)},this.scrollX=function(){s.axis.x.isOverflowing&&(s.showScrollbar("x"),s.positionScrollbar("x")),s.scrollXTicking=!1},this.scrollY=function(){s.axis.y.isOverflowing&&(s.showScrollbar("y"),s.positionScrollbar("y")),s.scrollYTicking=!1},this.onMouseEnter=function(){s.showScrollbar("x"),s.showScrollbar("y")},this.onMouseMove=function(t){s.mouseX=t.clientX,s.mouseY=t.clientY,(s.axis.x.isOverflowing||s.axis.x.forceVisible)&&s.onMouseMoveForAxis("x"),(s.axis.y.isOverflowing||s.axis.y.forceVisible)&&s.onMouseMoveForAxis("y")},this.onMouseLeave=function(){s.onMouseMove.cancel(),(s.axis.x.isOverflowing||s.axis.x.forceVisible)&&s.onMouseLeaveForAxis("x"),(s.axis.y.isOverflowing||s.axis.y.forceVisible)&&s.onMouseLeaveForAxis("y"),s.mouseX=-1,s.mouseY=-1},this.onWindowResize=function(){s.scrollbarWidth=Ee(),s.hideNativeScrollbar()},this.hideScrollbars=function(){s.axis.x.track.rect=s.axis.x.track.el.getBoundingClientRect(),s.axis.y.track.rect=s.axis.y.track.el.getBoundingClientRect(),s.isWithinBounds(s.axis.y.track.rect)||(s.axis.y.scrollbar.el.classList.remove(s.classNames.visible),s.axis.y.isVisible=!1),s.isWithinBounds(s.axis.x.track.rect)||(s.axis.x.scrollbar.el.classList.remove(s.classNames.visible),s.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,i;s.axis.x.scrollbar.rect=s.axis.x.scrollbar.el.getBoundingClientRect(),s.axis.y.scrollbar.rect=s.axis.y.scrollbar.el.getBoundingClientRect(),(s.axis.x.isOverflowing||s.axis.x.forceVisible)&&(i=s.isWithinBounds(s.axis.x.scrollbar.rect)),(s.axis.y.isOverflowing||s.axis.y.forceVisible)&&(e=s.isWithinBounds(s.axis.y.scrollbar.rect)),(e||i)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&s.onDragStart(t,"y"),i&&s.onDragStart(t,"x")))},this.drag=function(t){var e=s.axis[s.draggedAxis].track,i=e.rect[s.axis[s.draggedAxis].sizeAttr],r=s.axis[s.draggedAxis].scrollbar;t.preventDefault(),t.stopPropagation();var n=(("y"===s.draggedAxis?t.pageY:t.pageX)-e.rect[s.axis[s.draggedAxis].offsetAttr]-s.axis[s.draggedAxis].dragOffset)/e.rect[s.axis[s.draggedAxis].sizeAttr]*s.contentWrapperEl[s.axis[s.draggedAxis].scrollSizeAttr];"x"===s.draggedAxis&&(n=s.isRtl&&l.getRtlHelpers().isRtlScrollbarInverted?n-(i+r.size):n,n=s.isRtl&&l.getRtlHelpers().isRtlScrollingInverted?-n:n),s.contentWrapperEl[s.axis[s.draggedAxis].scrollOffsetAttr]=n},this.onEndDrag=function(t){t.preventDefault(),t.stopPropagation(),s.el.classList.remove(s.classNames.dragging),document.removeEventListener("mousemove",s.drag),document.removeEventListener("mouseup",s.onEndDrag)},this.el=t,this.flashTimeout,this.contentEl,this.contentWrapperEl,this.offsetEl,this.maskEl,this.globalObserver,this.mutationObserver,this.resizeObserver,this.scrollbarWidth,this.minScrollbarWidth=20,this.options=Object.assign({},l.defaultOptions,e),this.classNames=Object.assign({},l.defaultOptions.classNames,this.options.classNames),this.isRtl,this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.el.SimpleBar||(this.recalculate=Ie(this.recalculate.bind(this),64),this.onMouseMove=Ie(this.onMouseMove.bind(this),64),this.hideScrollbars=ri(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=ri(this.onWindowResize.bind(this),64,{leading:!0}),l.getRtlHelpers=Ni(l.getRtlHelpers),this.init())}l.getRtlHelpers=function(){var t=document.createElement("div");t.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var e=t.firstElementChild;document.body.appendChild(e);var i=e.firstElementChild;e.scrollLeft=0;var r=l.getOffset(e),n=l.getOffset(i);e.scrollLeft=999;var s=l.getOffset(i);return{isRtlScrollingInverted:r.left!==n.left&&n.left-s.left!=0,isRtlScrollbarInverted:r.left!==n.left}},l.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),"undefined"!=typeof MutationObserver&&(this.globalObserver=new MutationObserver(function(t){t.forEach(function(t){Array.prototype.forEach.call(t.addedNodes,function(t){1===t.nodeType&&(t.hasAttribute("data-simplebar")?!t.SimpleBar&&new l(t,l.getElOptions(t)):Array.prototype.forEach.call(t.querySelectorAll("[data-simplebar]"),function(t){!t.SimpleBar&&new l(t,l.getElOptions(t))}))}),Array.prototype.forEach.call(t.removedNodes,function(t){1===t.nodeType&&(t.hasAttribute("data-simplebar")?t.SimpleBar&&t.SimpleBar.unMount():Array.prototype.forEach.call(t.querySelectorAll("[data-simplebar]"),function(t){t.SimpleBar&&t.SimpleBar.unMount()}))})})}),this.globalObserver.observe(document,{childList:!0,subtree:!0})),"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))},l.getElOptions=function(t){return Array.prototype.reduce.call(t.attributes,function(t,e){var i=e.name.match(/data-simplebar-(.+)/);if(i){var r=i[1].replace(/\W+(.)/g,function(t,e){return e.toUpperCase()});switch(e.value){case"true":t[r]=!0;break;case"false":t[r]=!1;break;case void 0:t[r]=!0;break;default:t[r]=e.value}}return t},{})},l.removeObserver=function(){this.globalObserver.disconnect()},l.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),function(t){t.SimpleBar||new l(t,l.getElOptions(t))})},l.getOffset=function(t){var e=t.getBoundingClientRect();return{top:e.top+(window.pageYOffset||document.documentElement.scrollTop),left:e.left+(window.pageXOffset||document.documentElement.scrollLeft)}};var t=l.prototype;return t.init=function(){this.el.SimpleBar=this,nr&&(this.initDOM(),this.scrollbarWidth=Ee(),this.recalculate(),this.initListeners())},t.initDOM=function(){var e=this;if(Array.prototype.filter.call(this.el.children,function(t){return t.classList.contains(e.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.el.querySelector("."+this.classNames.contentWrapper),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.contentEl=this.el.querySelector("."+this.classNames.contentEl),this.placeholderEl=this.el.querySelector("."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.el.querySelector("."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.el.querySelector("."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var t=document.createElement("div"),i=document.createElement("div");t.classList.add(this.classNames.track),i.classList.add(this.classNames.scrollbar),t.appendChild(i),this.axis.x.track.el=t.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=t.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},t.initListeners=function(){var e=this;this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick","touchstart","touchend","touchmove"].forEach(function(t){e.el.addEventListener(t,e.onPointerEvent,!0)}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),window.addEventListener("resize",this.onWindowResize),this.resizeObserver=new rr(this.recalculate),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl)},t.recalculate=function(){var t=this.heightAutoObserverEl.offsetHeight<=1,e=this.heightAutoObserverEl.offsetWidth<=1;this.elStyles=window.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction,this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft,this.contentWrapperEl.style.height=t?"auto":"100%",this.placeholderEl.style.width=e?this.contentEl.offsetWidth+"px":"auto",this.placeholderEl.style.height=this.contentEl.scrollHeight+"px",this.axis.x.isOverflowing=this.contentWrapperEl.scrollWidth>this.contentWrapperEl.offsetWidth,this.axis.y.isOverflowing=this.contentWrapperEl.scrollHeight>this.contentWrapperEl.offsetHeight,this.axis.x.isOverflowing="hidden"!==this.elStyles.overflowX&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==this.elStyles.overflowY&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar(),this.axis.x.track.rect=this.axis.x.track.el.getBoundingClientRect(),this.axis.y.track.rect=this.axis.y.track.el.getBoundingClientRect(),this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},t.getScrollbarSize=function(t){void 0===t&&(t="y");var e,i=this.scrollbarWidth?this.contentWrapperEl[this.axis[t].scrollSizeAttr]:this.contentWrapperEl[this.axis[t].scrollSizeAttr]-this.minScrollbarWidth,r=this.axis[t].track.rect[this.axis[t].sizeAttr];if(this.axis[t].isOverflowing){var n=r/i;return e=Math.max(~~(n*r),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e}},t.positionScrollbar=function(t){void 0===t&&(t="y");var e=this.contentWrapperEl[this.axis[t].scrollSizeAttr],i=this.axis[t].track.rect[this.axis[t].sizeAttr],r=parseInt(this.elStyles[this.axis[t].sizeAttr],10),n=this.axis[t].scrollbar,s=this.contentWrapperEl[this.axis[t].scrollOffsetAttr],o=(s="x"===t&&this.isRtl&&l.getRtlHelpers().isRtlScrollingInverted?-s:s)/(e-r),a=~~((i-n.size)*o);a="x"===t&&this.isRtl&&l.getRtlHelpers().isRtlScrollbarInverted?a+(i-n.size):a,n.el.style.transform="x"===t?"translate3d("+a+"px, 0, 0)":"translate3d(0, "+a+"px, 0)"},t.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,i=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),this.axis[t].isOverflowing?i.style.display="block":i.style.display="none"},t.hideNativeScrollbar=function(){if(this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+(this.scrollbarWidth||this.minScrollbarWidth)+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+(this.scrollbarWidth||this.minScrollbarWidth)+"px":0,!this.scrollbarWidth){var t=[this.isRtl?"paddingLeft":"paddingRight"];this.contentWrapperEl.style[t]=this.axis.y.isOverflowing||this.axis.y.forceVisible?this.minScrollbarWidth+"px":0,this.contentWrapperEl.style.paddingBottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?this.minScrollbarWidth+"px":0}},t.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},t.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},t.showScrollbar=function(t){void 0===t&&(t="y");var e=this.axis[t].scrollbar.el;this.axis[t].isVisible||(e.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},t.onDragStart=function(t,e){void 0===e&&(e="y");var i=this.axis[e].scrollbar.el,r="y"===e?t.pageY:t.pageX;this.axis[e].dragOffset=r-i.getBoundingClientRect()[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),document.addEventListener("mousemove",this.drag),document.addEventListener("mouseup",this.onEndDrag)},t.getContentElement=function(){return this.contentEl},t.getScrollElement=function(){return this.contentWrapperEl},t.removeListeners=function(){var e=this;this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick","touchstart","touchend","touchmove"].forEach(function(t){e.el.removeEventListener(t,e.onPointerEvent)}),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.onWindowResize),this.mutationObserver&&this.mutationObserver.disconnect(),this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},t.unMount=function(){this.removeListeners(),this.el.SimpleBar=null},t.isChildNode=function(t){return null!==t&&(t===this.el||this.isChildNode(t.parentNode))},t.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},l}();return sr.defaultOptions={autoHide:!0,forceVisible:!1,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},nr&&sr.initHtmlApi(),sr});
|
assets/js/um-conditional.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var arr_all_conditions=[],um_field_conditions={},um_field_default_values={};function um_get_field_default_value(e){var i="",n=um_get_field_type(e);switch(n){case"text":case"number":case"date":case"textarea":case"select":i=e.find('input:text,input[type="number"],textarea,select').val();break;case"multiselect":i=e.find("select").val();break;case"radio":1<=e.find('input[type="radio"]:checked').length&&(i=e.find('input[type="radio"]:checked').val());break;case"checkbox":if(1<=e.find('input[type="checkbox"]:checked').length)if(1<e.find('input[type="checkbox"]:checked').length){var t=[];t.push(i),e.find('input[type="checkbox"]:checked').each(function(){t.push(jQuery(this).val())}),i=t}else i=e.find('input[type="checkbox"]:checked').val();break;default:i=wp.hooks.applyFilters("um_conditional_logic_default_value",i,n,e)}return{type:n,value:i}}function um_get_field_element(e){var i=e.find("input,textarea,select"),n=um_get_field_type(e);return i=wp.hooks.applyFilters("um_conditional_logic_field_element",i,n,e)}function um_get_field_type(e){var n="",i=e.attr("class").split(" ");return jQuery.each(i,function(e,i){/um-field-type_/.test(i)&&(n=i.replace("um-field-type_","").trim())}),n}function um_get_field_children(n){var t=[];return jQuery.each(arr_all_conditions,function(e,i){i.field.parent===n&&t.push(i.field.condition)}),t}function um_splitup_array(e,i){for(var n=e.length%i,t=n,a=Math.floor(e.length/i),u=[],o=0;o<e.length;o+=a){var r=a+o,d=!1;0
|
1 |
+
var arr_all_conditions=[],um_field_conditions={},um_field_default_values={};function um_get_field_default_value(e){var i="",n=um_get_field_type(e);switch(n){case"text":case"number":case"date":case"textarea":case"select":i=e.find('input:text,input[type="number"],textarea,select').val();break;case"multiselect":i=e.find("select").val();break;case"radio":1<=e.find('input[type="radio"]:checked').length&&(i=e.find('input[type="radio"]:checked').val());break;case"checkbox":if(1<=e.find('input[type="checkbox"]:checked').length)if(1<e.find('input[type="checkbox"]:checked').length){var t=[];t.push(i),e.find('input[type="checkbox"]:checked').each(function(){t.push(jQuery(this).val())}),i=t}else i=e.find('input[type="checkbox"]:checked').val();break;default:i=wp.hooks.applyFilters("um_conditional_logic_default_value",i,n,e)}return{type:n,value:i}}function um_get_field_element(e){var i=e.find("input,textarea,select"),n=um_get_field_type(e);return i=wp.hooks.applyFilters("um_conditional_logic_field_element",i,n,e)}function um_get_field_type(e){var n="",i=e.attr("class").split(" ");return jQuery.each(i,function(e,i){/um-field-type_/.test(i)&&(n=i.replace("um-field-type_","").trim())}),n}function um_get_field_children(n){var t=[];return jQuery.each(arr_all_conditions,function(e,i){i.field.parent===n&&t.push(i.field.condition)}),t}function um_splitup_array(e,i){for(var n=e.length%i,t=n,a=Math.floor(e.length/i),u=[],o=0;o<e.length;o+=a){var r=a+o,d=!1;0!=n&&t&&(r++,t--,d=!0),u.push(e.slice(o,r)),d&&o++}var c=[];return jQuery.each(u,function(e,i){c.push({action:i[0],if_field:i[1],operator:i[2],value:i[3]})}),c}function um_get_field_data(e){return um_live_field=e.parents(".um-field").data("key"),um_live_value=e.val(),e.is(":checkbox")&&(um_live_value="",1<e.parents(".um-field").find("input:checked").length?e.parents(".um-field").find("input:checked").each(function(){um_live_value=um_live_value+jQuery(this).val()+" "}):1<=e.parents(".um-field").find("input:checked").length&&(um_live_value=e.parents(".um-field").find("input:checked").val())),e.is(":radio")&&(um_live_value=e.parents(".um-field").find("input[type=radio]:checked").val()),um_live_value}function um_in_array(e,i,n){var t,a=!1;for(t in n=!!n,i)if(n&&i[t]===e||!n&&i[t]==e){a=!0;break}return a}function um_apply_conditions(n,e){if(n.parents(".um-field[data-key]").length){var i=n.parents(".um-field[data-key]").data("key"),t=um_field_conditions[i];if(void 0!==t){var a=um_get_field_type(n.parents(".um-field[data-key]")),u=um_get_field_data(n);"empty_file"===u&&(u="");var o={},r={},d={};jQuery.each(t,function(e,i){void 0===r[i.owner]&&(r[i.owner]=[],d[i.owner]={}),r[i.owner].push(i.value),d[i.owner]=i}),jQuery.each(t,function(e,i){if(void 0===o[i.owner]&&(o[i.owner]={}),"empty"===i.operator){var n=Array.isArray(u)?u.join(""):u;o[i.owner][e]=!n||""===n}if("not empty"===i.operator){n=Array.isArray(u)?u.join(""):u;o[i.owner][e]=!(!n||""===n)}if("equals to"===i.operator){n=Array.isArray(u)&&1===u.length?u[0]:u;i.value===n&&um_in_array(n,r[i.owner])?o[i.owner][e]=!0:o[i.owner][e]=!1}if("not equals"===i.operator){n=Array.isArray(u)&&1===u.length?u[0]:u;jQuery.isNumeric(i.value)&&parseInt(n)!==parseInt(i.value)&&n&&!um_in_array(n,r[i.owner])?o[i.owner][e]=!0:i.value==n||um_in_array(n,r[i.owner])?o[i.owner][e]=!1:o[i.owner][e]=!0}if("greater than"===i.operator){n=Array.isArray(u)&&1===u.length?u[0]:u;jQuery.isNumeric(i.value)&&parseInt(n)>parseInt(i.value)?o[i.owner][e]=!0:o[i.owner][e]=!1}if("less than"===i.operator){n=Array.isArray(u)&&1===u.length?u[0]:u;jQuery.isNumeric(i.value)&&parseInt(n)<parseInt(i.value)?o[i.owner][e]=!0:o[i.owner][e]=!1}if("contains"===i.operator)switch(a){case"multiselect":u&&0<=u.indexOf(i.value)&&um_in_array(i.value,u)?o[i.owner][e]=!0:o[i.owner][e]=!1;break;case"checkbox":u&&0<=u.indexOf(i.value)?o[i.owner][e]=!0:o[i.owner][e]=!1;break;default:void 0===(o=wp.hooks.applyFilters("um_conditional_logic_contains_operator_owners",o,a,u,i,e))[i.owner][e]&&(u&&0<=u.indexOf(i.value)&&um_in_array(u,r[i.owner])?o[i.owner][e]=!0:o[i.owner][e]=!1)}}),jQuery.each(o,function(e,i){um_in_array(!0,i)?um_field_apply_action(n,d[e],!0):um_field_apply_action(n,d[e],!1)}),n.trigger("um_fields_change")}}}function um_field_apply_action(e,i,n){var t=jQuery('div.um-field[data-key="'+i.owner+'"]');return"show"===i.action&&n&&(t.is(":hidden")&&um_field_restore_default_value(t),t.show(),_show_in_ie(t)),"show"!==i.action||n||(t.hide(),_hide_in_ie(t)),"hide"===i.action&&n&&(t.hide(),_hide_in_ie(t)),"hide"!==i.action||n||(t.is(":hidden")&&um_field_restore_default_value(t),t.show(),_show_in_ie(t)),e.removeClass("um-field-has-changed")}function um_field_restore_default_value(t){var e=um_get_field_type(t),i=t.data("key"),n=um_field_default_values[i];switch(e){case"text":case"number":case"date":case"textarea":t.find('input:text,input[type="number"],textareas').val(n.value);break;case"select":t.find("select").find("option").prop("selected",!1),t.find("select").val(n.value),t.find("select").trigger("change");break;case"multiselect":t.find("select").find("option").prop("selected",!1),jQuery.each(n.value,function(e,i){t.find("select").find('option[value="'+i+'"]').attr("selected",!0)}),t.find("select").trigger("change");break;case"checkbox":if(1<=t.find('input[type="checkbox"]:checked').length)if(t.find('input[type="checkbox"]:checked').prop("checked",!1),t.find("span.um-field-checkbox-state i").removeClass("um-icon-android-checkbox-outline"),t.find("span.um-field-checkbox-state i").addClass("um-icon-android-checkbox-outline-blank"),t.find(".um-field-checkbox.active").removeClass("active"),Array.isArray(n.value))jQuery.each(n.value,function(e,i){var n=t.find('input[type="checkbox"][value="'+i+'"]');n.attr("checked",!0),n.closest(".um-field-checkbox").find("i").removeClass("um-icon-android-checkbox-outline-blank"),n.closest(".um-field-checkbox").find("i").addClass("um-icon-android-checkbox-outline"),n.closest(".um-field-checkbox").addClass("active")});else{var a=t.find('input[type="checkbox"][value="'+n.value+'"]');a.attr("checked",!0),a.closest(".um-field-checkbox").find("i").removeClass("um-icon-android-checkbox-outline-blank"),a.closest(".um-field-checkbox").find("i").addClass("um-icon-android-checkbox-outline"),a.closest(".um-field-checkbox").addClass("active")}break;case"radio":1<=t.find('input[type="radio"]:checked').length&&setTimeout(function(){t.find('input[type="radio"]:checked').prop("checked",!1),t.find("span.um-field-radio-state i").removeClass("um-icon-android-radio-button-on"),t.find("span.um-field-radio-state i").addClass("um-icon-android-radio-button-off"),t.find(".um-field-radio.active").removeClass("active");var e=t.find('input[type="radio"][value="'+n.value+'"]');e.attr("checked",!0),e.closest(".um-field-radio").find("i").removeClass("um-icon-android-radio-button-off"),e.closest(".um-field-radio").find("i").addClass("um-icon-android-radio-button-on"),e.closest(".um-field-radio").addClass("active")},100);break;default:wp.hooks.doAction("um_conditional_logic_restore_default_value",e,t,n)}if(!t.hasClass("um-field-has-changed")){var u=um_get_field_element(t);"radio"!==e&&"checkbox"!==e||(u=u.find(":checked")),u&&(u.trigger("change"),t.addClass("um-field-has-changed"))}}function um_field_hide_siblings(){jQuery.each(um_field_conditions,function(e,i){(1<=jQuery('.um-field[data-key="'+e+'"]:hidden').length||"none"===jQuery('.um-field[data-key="'+e+'"]').css("display"))&&jQuery.each(i,function(e,i){jQuery('.um-field[data-key="'+i.owner+'"]').hide()})})}function _hide_in_ie(e){void 0!==jQuery.browser&&jQuery.browser.msie&&e.css({visibility:"hidden"})}function _show_in_ie(e){void 0!==jQuery.browser&&jQuery.browser.msie&&e.css({visibility:"visible"})}function um_init_field_conditions(){var e=[];jQuery(".um-field[data-key]").each(function(){var t=jQuery(this).data("key");e.push(t);var u={};jQuery.each(jQuery(this)[0].attributes,function(e,i){if(-1!==i.name.indexOf("data-cond")){var n=i.name.slice(10),t=n.substring(1,0),a=n.slice(2);void 0===u[t]&&(u[t]={}),u[t][a]=i.value}}),jQuery.each(u,function(e,i){var n={field:{owner:t,action:i.action,parent:i.field,operator:i.operator,value:i.value,condition:{owner:t,action:i.action,operator:i.operator,value:i.value}}};arr_all_conditions.push(n)}),um_field_default_values[jQuery(this).data("key")]=um_get_field_default_value(jQuery(this))}),jQuery.each(e,function(e,i){um_field_conditions[i]=um_get_field_children(i)}),jQuery(".um-field[data-key]:visible").each(function(){var e=um_get_field_element(jQuery(this));void 0!==e.trigger&&e.trigger("change")})}jQuery(document).ready(function(){jQuery(document).on("change",'.um-field select, .um-field input[type="radio"], .um-field input[type="checkbox"]',function(){um_apply_conditions(jQuery(this),!1)}),jQuery(document).on("input change",'.um-field input[type="text"]',function(){um_apply_conditions(jQuery(this),!1)}),jQuery(document).on("input change",'.um-field input[type="number"]',function(){um_apply_conditions(jQuery(this),!1)}),jQuery(document).on("input change",'.um-field input[type="password"]',function(){um_apply_conditions(jQuery(this),!1)}),jQuery(document).on("change",'.um-field-image input[type="hidden"],.um-field-file input[type="hidden"]',function(){um_apply_conditions(jQuery(this),!1)}),jQuery(document).on("click",".um-finish-upload",function(){var e=jQuery(this).attr("data-key"),i=jQuery(".um-field-"+e+" input");setTimeout(function(){um_apply_conditions(i,!1)},100)}),jQuery(document).on("click",".um-field .cancel",function(){var e=jQuery(this).parent().attr("data-key"),i=jQuery(".um-field-"+e+" input");setTimeout(function(){um_apply_conditions(i,!1)},1e3)}),jQuery(document).on("um_fields_change",function(){um_field_hide_siblings(),um_field_hide_siblings()}),um_init_field_conditions()});
|
assets/js/um-crop.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports?t(require("jquery")):t(jQuery)}(function(l){"use strict";var i,e=l(window),h=l(document),a=window.location,D=!0,W=!1,r=null,n="undefined",o="directive",t=".cropper",d=/^(e|n|w|s|ne|nw|sw|se|all|crop|move|zoom)$/,g=/^(x|y|width|height)$/,s=/^(naturalWidth|naturalHeight|width|height|aspectRatio|ratio|rotate)$/,p="cropper-modal",H="cropper-hidden",c="cropper-invisible",f="cropper-crop",m="cropper-disabled",u="mousedown touchstart",w="mousemove touchmove",v="mouseup mouseleave touchend touchleave touchcancel",x="wheel mousewheel DOMMouseScroll",b="resize"+t,y="dblclick",$="build"+t,C="built"+t,k="dragstart"+t,R="dragmove"+t,z="dragend"+t,L=function(t){return"number"==typeof t},Y=function(t,i){var e=[];return"number"==typeof i&&e.push(i),e.slice.apply(t,e)},X=function(t,i){var e=Y(arguments,2);return function(){return t.apply(i,e.concat(Y(arguments)))}},M=function(t,i){this.element=t,this.$element=l(t),this.defaults=l.extend({},M.DEFAULTS,l.isPlainObject(i)?i:{}),this.$original=r,this.ready=W,this.built=W,this.cropped=W,this.rotated=W,this.disabled=W,this.replaced=W,this.init()},T=Math.sqrt,I=Math.min,E=Math.max,_=Math.abs,P=Math.sin,O=Math.cos,U=parseFloat;M.prototype={constructor:M,support:{canvas:l.isFunction(l("<canvas>")[0].getContext)},init:function(){var e=this.defaults;l.each(e,function(t,i){switch(t){case"aspectRatio":e[t]=_(U(i))||NaN;break;case"autoCropArea":e[t]=_(U(i))||.8;break;case"minWidth":case"minHeight":e[t]=_(U(i))||0;break;case"maxWidth":case"maxHeight":e[t]=_(U(i))||1/0}}),this.image={rotate:0},this.load()},load:function(){var t,i,e=this,h=this.$element,a=this.element,s=this.image,r="";h.is("img")?i=h.prop("src"):h.is("canvas")&&this.support.canvas&&(i=a.toDataURL()),i&&(this.replaced&&(s.rotate=0),this.defaults.checkImageOrigin&&(h.prop("crossOrigin")||this.isCrossOriginURL(i))&&(r=" crossOrigin"),this.$clone=t=l("<img"+r+' src="'+i+'">'),t.one("load",function(){s.naturalWidth=this.naturalWidth||t.width(),s.naturalHeight=this.naturalHeight||t.height(),s.aspectRatio=s.naturalWidth/s.naturalHeight,e.url=i,e.ready=D,e.build()}),t.addClass(c).prependTo("body"))},isCrossOriginURL:function(t){var i=t.match(/^(https?:)\/\/([^\:\/\?#]+):?(\d*)/i);return!i||i[1]===a.protocol&&i[2]===a.hostname&&i[3]===a.port?W:D},build:function(){var t,i,e=this.$element,h=this.defaults;this.ready&&(this.built&&this.unbuild(),e.one($,h.build),t=l.Event($),e.trigger(t),t.isDefaultPrevented()||(this.$cropper=i=l(M.TEMPLATE),e.addClass(H),this.$clone.removeClass(c).prependTo(i),this.rotated||(this.$original=this.$clone.clone(),this.$original.addClass(H).prependTo(this.$cropper),this.originalImage=l.extend({},this.image)),this.$container=e.parent(),this.$container.append(i),this.$canvas=i.find(".cropper-canvas"),this.$dragger=i.find(".cropper-dragger"),this.$viewer=i.find(".cropper-viewer"),h.autoCrop?this.cropped=D:this.$dragger.addClass(H),h.dragCrop&&this.setDragMode("crop"),h.modal&&this.$canvas.addClass(p),!h.dashed&&this.$dragger.find(".cropper-dashed").addClass(H),!h.movable&&this.$dragger.find(".cropper-face").data(o,"move"),!h.resizable&&this.$dragger.find(".cropper-line, .cropper-point").addClass(H),this.addListeners(),this.initPreview(),this.built=D,this.update(),this.replaced=W,e.one(C,h.built),e.trigger(C)))},unbuild:function(){this.built&&(this.built=W,this.removeListeners(),this.$preview.empty(),this.$preview=r,this.$dragger=r,this.$canvas=r,this.$container=r,this.$cropper.remove(),this.$cropper=r)},update:function(t){this.initContainer(),this.initCropper(),this.initImage(),this.initDragger(),t?(this.setData(t,D),this.setDragMode("crop")):this.setData(this.defaults.data)},resize:function(){clearTimeout(this.resizing),this.resizing=setTimeout(l.proxy(this.update,this,this.getData()),200)},preview:function(){var t=this.image,e=this.dragger,h=t.width,a=t.height,s=e.left-t.left,r=e.top-t.top;this.$viewer.find("img").css({width:h,height:a,marginLeft:-s,marginTop:-r}),this.$preview.each(function(){var t=l(this),i=t.width()/e.width;t.find("img").css({width:h*i,height:a*i,marginLeft:-s*i,marginTop:-r*i})})},addListeners:function(){var t=this.defaults;this.$element.on(k,t.dragstart).on(R,t.dragmove).on(z,t.dragend),this.$cropper.on(u,l.proxy(this.dragstart,this)).on(y,l.proxy(this.dblclick,this)),t.zoomable&&this.$cropper.on(x,l.proxy(this.wheel,this)),t.multiple?this.$cropper.on(w,l.proxy(this.dragmove,this)).on(v,l.proxy(this.dragend,this)):h.on(w,this._dragmove=X(this.dragmove,this)).on(v,this._dragend=X(this.dragend,this)),e.on(b,this._resize=X(this.resize,this))},removeListeners:function(){var t=this.defaults;this.$element.off(k,t.dragstart).off(R,t.dragmove).off(z,t.dragend),this.$cropper.off(u,this.dragstart).off(y,this.dblclick),t.zoomable&&this.$cropper.off(x,this.wheel),t.multiple?this.$cropper.off(w,this.dragmove).off(v,this.dragend):h.off(w,this._dragmove).off(v,this._dragend),e.off(b,this._resize)},initPreview:function(){var t='<img src="'+this.url+'">';this.$preview=l(this.defaults.preview),this.$viewer.html(t),this.$preview.html(t).find("img").css("cssText","min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;")},initContainer:function(){var t=this.$container;t!==r&&(this.container={width:E(t.width(),300),height:E(t.height(),150)})},initCropper:function(){var t,i=this.container,e=this.image;0<=e.naturalWidth*i.height/e.naturalHeight-i.width?(t={width:i.width,height:i.width/e.aspectRatio,left:0}).top=(i.height-t.height)/2:(t={width:i.height*e.aspectRatio,height:i.height,top:0}).left=(i.width-t.width)/2,this.$cropper&&this.$cropper.css({width:t.width,height:t.height,left:t.left,top:t.top}),this.cropper=t},initImage:function(){var t=this.image,i=this.cropper,e={_width:i.width,_height:i.height,width:i.width,height:i.height,left:0,top:0,ratio:i.width/t.naturalWidth};this.defaultImage=l.extend({},t,e),t._width!==i.width||t._height!==i.height?l.extend(t,e):(t=l.extend({},e,t),this.replaced&&(t.ratio=e.ratio)),this.image=t,this.renderImage()},renderImage:function(t){var i=this.image;"zoom"===t&&(i.left-=(i.width-i.oldWidth)/2,i.top-=(i.height-i.oldHeight)/2),i.left=I(E(i.left,i._width-i.width),0),i.top=I(E(i.top,i._height-i.height),0),this.$clone.css({width:i.width,height:i.height,marginLeft:i.left,marginTop:i.top}),t&&(this.defaults.done(this.getData()),this.preview())},initDragger:function(){var t,i=this.defaults,e=this.cropper,h=i.aspectRatio||this.image.aspectRatio,a=this.image.ratio;(t=0<=e.height*h-e.width?{height:e.width/h,width:e.width,left:0,top:(e.height-e.width/h)/2,maxWidth:e.width,maxHeight:e.width/h}:{height:e.height,width:e.height*h,left:(e.width-e.height*h)/2,top:0,maxWidth:e.height*h,maxHeight:e.height}).minWidth=0,t.minHeight=0,i.aspectRatio?(isFinite(i.maxWidth)?(t.maxWidth=I(t.maxWidth,i.maxWidth*a),t.maxHeight=t.maxWidth/h):isFinite(i.maxHeight)&&(t.maxHeight=I(t.maxHeight,i.maxHeight*a),t.maxWidth=t.maxHeight*h),0<i.minWidth?(t.minWidth=E(0,i.minWidth*a),t.minHeight=t.minWidth/h):0<i.minHeight&&(t.minHeight=E(0,i.minHeight*a),t.minWidth=t.minHeight*h)):(t.maxWidth=I(t.maxWidth,i.maxWidth*a),t.maxHeight=I(t.maxHeight,i.maxHeight*a),t.minWidth=E(0,i.minWidth*a),t.minHeight=E(0,i.minHeight*a)),t.minWidth=I(t.maxWidth,t.minWidth),t.minHeight=I(t.maxHeight,t.minHeight),t.height*=i.autoCropArea,t.width*=i.autoCropArea,t.left=(e.width-t.width)/2,t.top=(e.height-t.height)/2,t.oldLeft=t.left,t.oldTop=t.top,this.defaultDragger=t,this.dragger=l.extend({},t)},renderDragger:function(){var t=this.dragger,i=this.cropper;t.width>t.maxWidth?(t.width=t.maxWidth,t.left=t.oldLeft):t.width<t.minWidth&&(t.width=t.minWidth,t.left=t.oldLeft),t.height>t.maxHeight?(t.height=t.maxHeight,t.top=t.oldTop):t.height<t.minHeight&&(t.height=t.minHeight,t.top=t.oldTop),t.left=I(E(t.left,0),i.width-t.width),t.top=I(E(t.top,0),i.height-t.height),t.oldLeft=t.left,t.oldTop=t.top,this.dragger=t,this.disabled||this.defaults.done(this.getData()),this.$dragger.css({width:t.width,height:t.height,left:t.left,top:t.top}),this.preview()},reset:function(t){this.cropped&&(t&&(this.defaults.data={}),this.image=l.extend({},this.defaultImage),this.renderImage(),this.dragger=l.extend({},this.defaultDragger),this.setData(this.defaults.data))},clear:function(){this.cropped&&(this.cropped=W,this.setData({x:0,y:0,width:0,height:0}),this.$canvas.removeClass(p),this.$dragger.addClass(H))},destroy:function(){var t=this.$element;this.ready&&(this.unbuild(),t.removeClass(H).removeData("cropper"),this.rotated&&t.attr("src",this.$original.attr("src")))},replace:function(t,i){var e,h=this,a=this.$element,s=this.element;t&&t!==this.url&&t!==a.attr("src")&&(i||(this.rotated=W,this.replaced=D),a.is("img")?(a.attr("src",t),this.load()):a.is("canvas")&&this.support.canvas&&(e=s.getContext("2d"),l('<img src="'+t+'">').one("load",function(){s.width=this.width,s.height=this.height,e.clearRect(0,0,s.width,s.height),e.drawImage(this,0,0),h.load()})))},setData:function(t,i){var e=this.cropper,h=this.dragger,a=this.image,s=this.defaults.aspectRatio;this.built&&typeof t!==n&&((t===r||l.isEmptyObject(t))&&(h=l.extend({},this.defaultDragger)),l.isPlainObject(t)&&!l.isEmptyObject(t)&&(i||(this.defaults.data=t),t=this.transformData(t),L(t.x)&&t.x<=e.width-a.left&&(h.left=t.x+a.left),L(t.y)&&t.y<=e.height-a.top&&(h.top=t.y+a.top),s?L(t.width)&&t.width<=h.maxWidth&&t.width>=h.minWidth?(h.width=t.width,h.height=h.width/s):L(t.height)&&t.height<=h.maxHeight&&t.height>=h.minHeight&&(h.height=t.height,h.width=h.height*s):(L(t.width)&&t.width<=h.maxWidth&&t.width>=h.minWidth&&(h.width=t.width),L(t.height)&&t.height<=h.maxHeight&&t.height>=h.minHeight&&(h.height=t.height))),this.dragger=h,this.renderDragger())},getData:function(t){var i=this.dragger,e=this.image,h={};return this.built&&(h={x:i.left-e.left,y:i.top-e.top,width:i.width,height:i.height},h=this.transformData(h,D,t)),h},transformData:function(t,e,h){var a=this.image.ratio,s={};return l.each(t,function(t,i){i=U(i),g.test(t)&&!isNaN(i)&&(s[t]=e?h?Math.round(i/a):i/a:i*a)}),s},setAspectRatio:function(t){var i="auto"===t;t=U(t),(i||!isNaN(t)&&0<t)&&(this.defaults.aspectRatio=i?NaN:t,this.built&&(this.initDragger(),this.renderDragger()))},getImageData:function(){var e={};return this.ready&&l.each(this.image,function(t,i){s.test(t)&&(e[t]=i)}),e},getDataURL:function(t,i,e){var h,a=l("<canvas>")[0],s=this.getData(),r="";return l.isPlainObject(t)||(e=i,i=t,t={}),t=l.extend({width:s.width,height:s.height},t),this.cropped&&this.support.canvas&&(a.width=t.width,a.height=t.height,h=a.getContext("2d"),"image/jpeg"===i&&(h.fillStyle="#fff",h.fillRect(0,0,t.width,t.height)),h.drawImage(this.$clone[0],s.x,s.y,s.width,s.height,0,0,t.width,t.height),r=a.toDataURL(i,e)),r},setDragMode:function(t){var i=this.$canvas,e=this.defaults,h=W,a=W;if(this.built&&!this.disabled){switch(t){case"crop":e.dragCrop&&(h=D,i.data(o,t));break;case"move":a=D,i.data(o,t);break;default:i.removeData(o)}i.toggleClass(f,h).toggleClass("cropper-move",a)}},enable:function(){this.built&&(this.disabled=W,this.$cropper.removeClass(m))},disable:function(){this.built&&(this.disabled=D,this.$cropper.addClass(m))},rotate:function(t){var i=this.image;t=U(t)||0,this.built&&0!==t&&!this.disabled&&this.defaults.rotatable&&this.support.canvas&&(this.rotated=D,t=i.rotate=(i.rotate+t)%360,this.replace(this.getRotatedDataURL(t),!0))},getRotatedDataURL:function(t){var i=l("<canvas>")[0],e=i.getContext("2d"),h=t*Math.PI/180,a=_(t)%180,s=(90<a?180-a:a)*Math.PI/180,r=this.originalImage,n=r.naturalWidth,o=r.naturalHeight,d=_(n*O(s)+o*P(s)),g=_(n*P(s)+o*O(s));return i.width=d,i.height=g,e.save(),e.translate(d/2,g/2),e.rotate(h),e.drawImage(this.$original[0],-n/2,-o/2,n,o),e.restore(),i.toDataURL()},zoom:function(t){var i,e,h,a=this.image;t=U(t),this.built&&t&&!this.disabled&&this.defaults.zoomable&&(i=a.width*(1+t),e=a.height*(1+t),10<(h=i/a._width)||(h<1&&(i=a._width,e=a._height),h<=1?this.setDragMode("crop"):this.setDragMode("move"),a.oldWidth=a.width,a.oldHeight=a.height,a.width=i,a.height=e,a.ratio=a.width/a.naturalWidth,this.renderImage("zoom")))},dblclick:function(){this.disabled||(this.$canvas.hasClass(f)?this.setDragMode("move"):this.setDragMode("crop"))},wheel:function(t){var i,e=t.originalEvent;this.disabled||(t.preventDefault(),i=e.deltaY?(i=e.deltaY)%5==0?i/5:i%117.25==0?i/117.25:i/166.66665649414062:e.wheelDelta?-e.wheelDelta/120:e.detail?e.detail/3:0,this.zoom(.1*i))},dragstart:function(t){var i,e,h,a=t.originalEvent.touches,s=t;if(!this.disabled){if(a){if(1<(h=a.length)){if(!this.defaults.zoomable||2!==h)return;s=a[1],this.startX2=s.pageX,this.startY2=s.pageY,i="zoom"}s=a[0]}if(i=i||l(s.target).data(o),d.test(i)){if(t.preventDefault(),e=l.Event(k),this.$element.trigger(e),e.isDefaultPrevented())return;this.directive=i,this.cropping=W,this.startX=s.pageX,this.startY=s.pageY,"crop"===i&&(this.cropping=D,this.$canvas.addClass(p))}}},dragmove:function(t){var i,e,h=t.originalEvent.touches,a=t;if(!this.disabled){if(h){if(1<(e=h.length)){if(!this.defaults.zoomable||2!==e)return;a=h[1],this.endX2=a.pageX,this.endY2=a.pageY}a=h[0]}if(this.directive){if(t.preventDefault(),i=l.Event(R),this.$element.trigger(i),i.isDefaultPrevented())return;this.endX=a.pageX,this.endY=a.pageY,this.dragging()}}},dragend:function(t){var i;if(!this.disabled&&this.directive){if(t.preventDefault(),i=l.Event(z),this.$element.trigger(i),i.isDefaultPrevented())return;this.cropping&&(this.cropping=W,this.$canvas.toggleClass(p,this.cropped&&this.defaults.modal)),this.directive=""}},dragging:function(){var t,i,e,h,a,s,r,n=this.directive,o=this.image,d=this.cropper,g=d.width,l=d.height,p=this.dragger,c=p.width,f=p.height,m=p.left,u=p.top,w=m+c,v=u+f,x=D,b=this.defaults,y=b.aspectRatio,$={x:this.endX-this.startX,y:this.endY-this.startY};switch(y&&($.X=$.y*y,$.Y=$.x/y),n){case"all":m+=$.x,u+=$.y;break;case"e":if(0<=$.x&&(g<=w||y&&(u<=0||l<=v))){x=W;break}c+=$.x,y&&(f=c/y,u-=$.Y/2),c<0&&(n="w",c=0);break;case"n":if($.y<=0&&(u<=0||y&&(m<=0||g<=w))){x=W;break}f-=$.y,u+=$.y,y&&(c=f*y,m+=$.X/2),f<0&&(n="s",f=0);break;case"w":if($.x<=0&&(m<=0||y&&(u<=0||l<=v))){x=W;break}c-=$.x,m+=$.x,y&&(f=c/y,u+=$.Y/2),c<0&&(n="e",c=0);break;case"s":if(0<=$.y&&(l<=v||y&&(m<=0||g<=w))){x=W;break}f+=$.y,y&&(c=f*y,m-=$.X/2),f<0&&(n="n",f=0);break;case"ne":if(y){if($.y<=0&&(u<=0||g<=w)){x=W;break}f-=$.y,u+=$.y,c=f*y}else 0<=$.x?w<g?c+=$.x:$.y<=0&&u<=0&&(x=W):c+=$.x,$.y<=0?0<u&&(f-=$.y,u+=$.y):(f-=$.y,u+=$.y);f<0&&(n="sw",c=f=0);break;case"nw":if(y){if($.y<=0&&(u<=0||m<=0)){x=W;break}f-=$.y,u+=$.y,c=f*y,m+=$.X}else $.x<=0?0<m?(c-=$.x,m+=$.x):$.y<=0&&u<=0&&(x=W):(c-=$.x,m+=$.x),$.y<=0?0<u&&(f-=$.y,u+=$.y):(f-=$.y,u+=$.y);f<0&&(n="se",c=f=0);break;case"sw":if(y){if($.x<=0&&(m<=0||l<=v)){x=W;break}c-=$.x,m+=$.x,f=c/y}else $.x<=0?0<m?(c-=$.x,m+=$.x):0<=$.y&&l<=v&&(x=W):(c-=$.x,m+=$.x),0<=$.y?v<l&&(f+=$.y):f+=$.y;c<0&&(n="ne",c=f=0);break;case"se":if(y){if(0<=$.x&&(g<=w||l<=v)){x=W;break}f=(c+=$.x)/y}else 0<=$.x?w<g?c+=$.x:0<=$.y&&l<=v&&(x=W):c+=$.x,0<=$.y?v<l&&(f+=$.y):f+=$.y;c<0&&(n="nw",c=f=0);break;case"move":o.left+=$.x,o.top+=$.y,this.renderImage("move"),x=W;break;case"zoom":b.zoomable&&(this.zoom((i=o.width,e=o.height,h=_(this.startX-this.startX2),a=_(this.startY-this.startY2),s=_(this.endX-this.endX2),r=_(this.endY-this.endY2),(T(s*s+r*r)-T(h*h+a*a))/T(i*i+e*e))),this.endX2=this.startX2,this.endY2=this.startY2);break;case"crop":$.x&&$.y&&(t=this.$cropper.offset(),m=this.startX-t.left,u=this.startY-t.top,c=p.minWidth,f=p.minHeight,0<$.x?0<$.y?n="se":(n="ne",u-=f):0<$.y?(n="sw",m-=c):(n="nw",m-=c,u-=f),this.cropped||(this.cropped=D,this.$dragger.removeClass(H)))}x&&(p.width=c,p.height=f,p.left=m,p.top=u,this.directive=n,this.renderDragger()),this.startX=this.endX,this.startY=this.endY}},M.TEMPLATE=(i=(i="div,span,directive,data,point,cropper,class,line,dashed").split(","),'<0 6="5-container"><0 6="5-canvas"></0><0 6="5-dragger"><1 6="5-viewer"></1><1 6="5-8 8-h"></1><1 6="5-8 8-v"></1><1 6="5-face" 3-2="all"></1><1 6="5-7 7-e" 3-2="e"></1><1 6="5-7 7-n" 3-2="n"></1><1 6="5-7 7-w" 3-2="w"></1><1 6="5-7 7-s" 3-2="s"></1><1 6="5-4 4-e" 3-2="e"></1><1 6="5-4 4-n" 3-2="n"></1><1 6="5-4 4-w" 3-2="w"></1><1 6="5-4 4-s" 3-2="s"></1><1 6="5-4 4-ne" 3-2="ne"></1><1 6="5-4 4-nw" 3-2="nw"></1><1 6="5-4 4-sw" 3-2="sw"></1><1 6="5-4 4-se" 3-2="se"></1></0></0>'.replace(/\d+/g,function(t){return i[t]})),M.DEFAULTS={aspectRatio:"auto",autoCropArea:.8,data:{},done:l.noop,preview:"",multiple:W,autoCrop:D,dragCrop:D,dashed:D,modal:D,movable:D,resizable:D,zoomable:D,rotatable:D,checkImageOrigin:D,minWidth:0,minHeight:0,maxWidth:1/0,maxHeight:1/0,build:r,built:r,dragstart:r,dragmove:r,dragend:r},M.setDefaults=function(t){l.extend(M.DEFAULTS,t)},M.other=l.fn.cropper,l.fn.cropper=function(h){var a,s=Y(arguments,1);return this.each(function(){var t,i=l(this),e=i.data("cropper");e||i.data("cropper",e=new M(this,h)),"string"==typeof h&&l.isFunction(t=e[h])&&(a=t.apply(e,s))}),typeof a!==n?a:this},l.fn.cropper.Constructor=M,l.fn.cropper.setDefaults=M.setDefaults,l.fn.cropper.noConflict=function(){return l.fn.cropper=M.other,this}});
|
1 |
+
!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports?t(require("jquery")):t(jQuery)}(function(l){"use strict";var i,e=l(window),h=l(document),a=window.location,D=!0,W=!1,r=null,n="undefined",o="directive",t=".cropper",d=/^(e|n|w|s|ne|nw|sw|se|all|crop|move|zoom)$/,g=/^(x|y|width|height)$/,s=/^(naturalWidth|naturalHeight|width|height|aspectRatio|ratio|rotate)$/,p="cropper-modal",H="cropper-hidden",c="cropper-invisible",f="cropper-crop",m="cropper-disabled",u="mousedown touchstart",w="mousemove touchmove",v="mouseup mouseleave touchend touchleave touchcancel",x="wheel mousewheel DOMMouseScroll",b="resize"+t,y="dblclick",$="build"+t,C="built"+t,k="dragstart"+t,R="dragmove"+t,z="dragend"+t,L=function(t){return"number"==typeof t},Y=function(t,i){var e=[];return"number"==typeof i&&e.push(i),e.slice.apply(t,e)},X=function(t,i){var e=Y(arguments,2);return function(){return t.apply(i,e.concat(Y(arguments)))}},M=function(t,i){this.element=t,this.$element=l(t),this.defaults=l.extend({},M.DEFAULTS,l.isPlainObject(i)?i:{}),this.$original=r,this.ready=W,this.built=W,this.cropped=W,this.rotated=W,this.disabled=W,this.replaced=W,this.init()},T=Math.sqrt,I=Math.min,E=Math.max,_=Math.abs,P=Math.sin,O=Math.cos,U=parseFloat;M.prototype={constructor:M,support:{canvas:l.isFunction(l("<canvas>")[0].getContext)},init:function(){var e=this.defaults;l.each(e,function(t,i){switch(t){case"aspectRatio":e[t]=_(U(i))||NaN;break;case"autoCropArea":e[t]=_(U(i))||.8;break;case"minWidth":case"minHeight":e[t]=_(U(i))||0;break;case"maxWidth":case"maxHeight":e[t]=_(U(i))||1/0}}),this.image={rotate:0},this.load()},load:function(){var t,i,e=this,h=this.$element,a=this.element,s=this.image,r="";h.is("img")?i=h.prop("src"):h.is("canvas")&&this.support.canvas&&(i=a.toDataURL()),i&&(this.replaced&&(s.rotate=0),this.defaults.checkImageOrigin&&(h.prop("crossOrigin")||this.isCrossOriginURL(i))&&(r=" crossOrigin"),this.$clone=t=l("<img"+r+' src="'+i+'">'),t.one("load",function(){s.naturalWidth=this.naturalWidth||t.width(),s.naturalHeight=this.naturalHeight||t.height(),s.aspectRatio=s.naturalWidth/s.naturalHeight,e.url=i,e.ready=D,e.build()}),t.addClass(c).prependTo("body"))},isCrossOriginURL:function(t){var i=t.match(/^(https?:)\/\/([^\:\/\?#]+):?(\d*)/i);return!i||i[1]===a.protocol&&i[2]===a.hostname&&i[3]===a.port?W:D},build:function(){var t,i,e=this.$element,h=this.defaults;this.ready&&(this.built&&this.unbuild(),e.one($,h.build),t=l.Event($),e.trigger(t),t.isDefaultPrevented()||(this.$cropper=i=l(M.TEMPLATE),e.addClass(H),this.$clone.removeClass(c).prependTo(i),this.rotated||(this.$original=this.$clone.clone(),this.$original.addClass(H).prependTo(this.$cropper),this.originalImage=l.extend({},this.image)),this.$container=e.parent(),this.$container.append(i),this.$canvas=i.find(".cropper-canvas"),this.$dragger=i.find(".cropper-dragger"),this.$viewer=i.find(".cropper-viewer"),h.autoCrop?this.cropped=D:this.$dragger.addClass(H),h.dragCrop&&this.setDragMode("crop"),h.modal&&this.$canvas.addClass(p),!h.dashed&&this.$dragger.find(".cropper-dashed").addClass(H),!h.movable&&this.$dragger.find(".cropper-face").data(o,"move"),!h.resizable&&this.$dragger.find(".cropper-line, .cropper-point").addClass(H),this.addListeners(),this.initPreview(),this.built=D,this.update(),this.replaced=W,e.one(C,h.built),e.trigger(C)))},unbuild:function(){this.built&&(this.built=W,this.removeListeners(),this.$preview.empty(),this.$preview=r,this.$dragger=r,this.$canvas=r,this.$container=r,this.$cropper.remove(),this.$cropper=r)},update:function(t){this.initContainer(),this.initCropper(),this.initImage(),this.initDragger(),t?(this.setData(t,D),this.setDragMode("crop")):this.setData(this.defaults.data)},resize:function(){clearTimeout(this.resizing),this.resizing=setTimeout(l.proxy(this.update,this,this.getData()),200)},preview:function(){var t=this.image,e=this.dragger,h=t.width,a=t.height,s=e.left-t.left,r=e.top-t.top;this.$viewer.find("img").css({width:h,height:a,marginLeft:-s,marginTop:-r}),this.$preview.each(function(){var t=l(this),i=t.width()/e.width;t.find("img").css({width:h*i,height:a*i,marginLeft:-s*i,marginTop:-r*i})})},addListeners:function(){var t=this.defaults;this.$element.on(k,t.dragstart).on(R,t.dragmove).on(z,t.dragend),this.$cropper.on(u,l.proxy(this.dragstart,this)).on(y,l.proxy(this.dblclick,this)),t.zoomable&&this.$cropper.on(x,l.proxy(this.wheel,this)),t.multiple?this.$cropper.on(w,l.proxy(this.dragmove,this)).on(v,l.proxy(this.dragend,this)):h.on(w,this._dragmove=X(this.dragmove,this)).on(v,this._dragend=X(this.dragend,this)),e.on(b,this._resize=X(this.resize,this))},removeListeners:function(){var t=this.defaults;this.$element.off(k,t.dragstart).off(R,t.dragmove).off(z,t.dragend),this.$cropper.off(u,this.dragstart).off(y,this.dblclick),t.zoomable&&this.$cropper.off(x,this.wheel),t.multiple?this.$cropper.off(w,this.dragmove).off(v,this.dragend):h.off(w,this._dragmove).off(v,this._dragend),e.off(b,this._resize)},initPreview:function(){var t='<img src="'+this.url+'">';this.$preview=l(this.defaults.preview),this.$viewer.html(t),this.$preview.html(t).find("img").css("cssText","min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;")},initContainer:function(){var t=this.$container;t!==r&&(this.container={width:E(t.width(),300),height:E(t.height(),150)})},initCropper:function(){var t,i=this.container,e=this.image;0<=e.naturalWidth*i.height/e.naturalHeight-i.width?(t={width:i.width,height:i.width/e.aspectRatio,left:0}).top=(i.height-t.height)/2:(t={width:i.height*e.aspectRatio,height:i.height,top:0}).left=(i.width-t.width)/2,this.$cropper&&this.$cropper.css({width:t.width,height:t.height,left:t.left,top:t.top}),this.cropper=t},initImage:function(){var t=this.image,i=this.cropper,e={_width:i.width,_height:i.height,width:i.width,height:i.height,left:0,top:0,ratio:i.width/t.naturalWidth};this.defaultImage=l.extend({},t,e),t._width!==i.width||t._height!==i.height?l.extend(t,e):(t=l.extend({},e,t),this.replaced&&(t.ratio=e.ratio)),this.image=t,this.renderImage()},renderImage:function(t){var i=this.image;"zoom"===t&&(i.left-=(i.width-i.oldWidth)/2,i.top-=(i.height-i.oldHeight)/2),i.left=I(E(i.left,i._width-i.width),0),i.top=I(E(i.top,i._height-i.height),0),this.$clone.css({width:i.width,height:i.height,marginLeft:i.left,marginTop:i.top}),t&&(this.defaults.done(this.getData()),this.preview())},initDragger:function(){var t,i=this.defaults,e=this.cropper,h=i.aspectRatio||this.image.aspectRatio,a=this.image.ratio;(t=0<=e.height*h-e.width?{height:e.width/h,width:e.width,left:0,top:(e.height-e.width/h)/2,maxWidth:e.width,maxHeight:e.width/h}:{height:e.height,width:e.height*h,left:(e.width-e.height*h)/2,top:0,maxWidth:e.height*h,maxHeight:e.height}).minWidth=0,t.minHeight=0,i.aspectRatio?(isFinite(i.maxWidth)?(t.maxWidth=I(t.maxWidth,i.maxWidth*a),t.maxHeight=t.maxWidth/h):isFinite(i.maxHeight)&&(t.maxHeight=I(t.maxHeight,i.maxHeight*a),t.maxWidth=t.maxHeight*h),0<i.minWidth?(t.minWidth=E(0,i.minWidth*a),t.minHeight=t.minWidth/h):0<i.minHeight&&(t.minHeight=E(0,i.minHeight*a),t.minWidth=t.minHeight*h)):(t.maxWidth=I(t.maxWidth,i.maxWidth*a),t.maxHeight=I(t.maxHeight,i.maxHeight*a),t.minWidth=E(0,i.minWidth*a),t.minHeight=E(0,i.minHeight*a)),t.minWidth=I(t.maxWidth,t.minWidth),t.minHeight=I(t.maxHeight,t.minHeight),t.height*=i.autoCropArea,t.width*=i.autoCropArea,t.left=(e.width-t.width)/2,t.top=(e.height-t.height)/2,t.oldLeft=t.left,t.oldTop=t.top,this.defaultDragger=t,this.dragger=l.extend({},t)},renderDragger:function(){var t=this.dragger,i=this.cropper;t.width>t.maxWidth?(t.width=t.maxWidth,t.left=t.oldLeft):t.width<t.minWidth&&(t.width=t.minWidth,t.left=t.oldLeft),t.height>t.maxHeight?(t.height=t.maxHeight,t.top=t.oldTop):t.height<t.minHeight&&(t.height=t.minHeight,t.top=t.oldTop),t.left=I(E(t.left,0),i.width-t.width),t.top=I(E(t.top,0),i.height-t.height),t.oldLeft=t.left,t.oldTop=t.top,this.dragger=t,this.disabled||this.defaults.done(this.getData()),this.$dragger.css({width:t.width,height:t.height,left:t.left,top:t.top}),this.preview()},reset:function(t){this.cropped&&(t&&(this.defaults.data={}),this.image=l.extend({},this.defaultImage),this.renderImage(),this.dragger=l.extend({},this.defaultDragger),this.setData(this.defaults.data))},clear:function(){this.cropped&&(this.cropped=W,this.setData({x:0,y:0,width:0,height:0}),this.$canvas.removeClass(p),this.$dragger.addClass(H))},destroy:function(){var t=this.$element;this.ready&&(this.unbuild(),t.removeClass(H).removeData("cropper"),this.rotated&&t.attr("src",this.$original.attr("src")))},replace:function(t,i){var e,h=this,a=this.$element,s=this.element;t&&t!==this.url&&t!==a.attr("src")&&(i||(this.rotated=W,this.replaced=D),a.is("img")?(a.attr("src",t),this.load()):a.is("canvas")&&this.support.canvas&&(e=s.getContext("2d"),l('<img src="'+t+'">').one("load",function(){s.width=this.width,s.height=this.height,e.clearRect(0,0,s.width,s.height),e.drawImage(this,0,0),h.load()})))},setData:function(t,i){var e=this.cropper,h=this.dragger,a=this.image,s=this.defaults.aspectRatio;this.built&&typeof t!=n&&((t===r||l.isEmptyObject(t))&&(h=l.extend({},this.defaultDragger)),l.isPlainObject(t)&&!l.isEmptyObject(t)&&(i||(this.defaults.data=t),t=this.transformData(t),L(t.x)&&t.x<=e.width-a.left&&(h.left=t.x+a.left),L(t.y)&&t.y<=e.height-a.top&&(h.top=t.y+a.top),s?L(t.width)&&t.width<=h.maxWidth&&t.width>=h.minWidth?(h.width=t.width,h.height=h.width/s):L(t.height)&&t.height<=h.maxHeight&&t.height>=h.minHeight&&(h.height=t.height,h.width=h.height*s):(L(t.width)&&t.width<=h.maxWidth&&t.width>=h.minWidth&&(h.width=t.width),L(t.height)&&t.height<=h.maxHeight&&t.height>=h.minHeight&&(h.height=t.height))),this.dragger=h,this.renderDragger())},getData:function(t){var i=this.dragger,e=this.image,h={};return this.built&&(h={x:i.left-e.left,y:i.top-e.top,width:i.width,height:i.height},h=this.transformData(h,D,t)),h},transformData:function(t,e,h){var a=this.image.ratio,s={};return l.each(t,function(t,i){i=U(i),g.test(t)&&!isNaN(i)&&(s[t]=e?h?Math.round(i/a):i/a:i*a)}),s},setAspectRatio:function(t){var i="auto"===t;t=U(t),(i||!isNaN(t)&&0<t)&&(this.defaults.aspectRatio=i?NaN:t,this.built&&(this.initDragger(),this.renderDragger()))},getImageData:function(){var e={};return this.ready&&l.each(this.image,function(t,i){s.test(t)&&(e[t]=i)}),e},getDataURL:function(t,i,e){var h,a=l("<canvas>")[0],s=this.getData(),r="";return l.isPlainObject(t)||(e=i,i=t,t={}),t=l.extend({width:s.width,height:s.height},t),this.cropped&&this.support.canvas&&(a.width=t.width,a.height=t.height,h=a.getContext("2d"),"image/jpeg"===i&&(h.fillStyle="#fff",h.fillRect(0,0,t.width,t.height)),h.drawImage(this.$clone[0],s.x,s.y,s.width,s.height,0,0,t.width,t.height),r=a.toDataURL(i,e)),r},setDragMode:function(t){var i=this.$canvas,e=this.defaults,h=W,a=W;if(this.built&&!this.disabled){switch(t){case"crop":e.dragCrop&&(h=D,i.data(o,t));break;case"move":a=D,i.data(o,t);break;default:i.removeData(o)}i.toggleClass(f,h).toggleClass("cropper-move",a)}},enable:function(){this.built&&(this.disabled=W,this.$cropper.removeClass(m))},disable:function(){this.built&&(this.disabled=D,this.$cropper.addClass(m))},rotate:function(t){var i=this.image;t=U(t)||0,this.built&&0!==t&&!this.disabled&&this.defaults.rotatable&&this.support.canvas&&(this.rotated=D,t=i.rotate=(i.rotate+t)%360,this.replace(this.getRotatedDataURL(t),!0))},getRotatedDataURL:function(t){var i=l("<canvas>")[0],e=i.getContext("2d"),h=t*Math.PI/180,a=_(t)%180,s=(90<a?180-a:a)*Math.PI/180,r=this.originalImage,n=r.naturalWidth,o=r.naturalHeight,d=_(n*O(s)+o*P(s)),g=_(n*P(s)+o*O(s));return i.width=d,i.height=g,e.save(),e.translate(d/2,g/2),e.rotate(h),e.drawImage(this.$original[0],-n/2,-o/2,n,o),e.restore(),i.toDataURL()},zoom:function(t){var i,e,h,a=this.image;t=U(t),this.built&&t&&!this.disabled&&this.defaults.zoomable&&(i=a.width*(1+t),e=a.height*(1+t),10<(h=i/a._width)||(h<1&&(i=a._width,e=a._height),h<=1?this.setDragMode("crop"):this.setDragMode("move"),a.oldWidth=a.width,a.oldHeight=a.height,a.width=i,a.height=e,a.ratio=a.width/a.naturalWidth,this.renderImage("zoom")))},dblclick:function(){this.disabled||(this.$canvas.hasClass(f)?this.setDragMode("move"):this.setDragMode("crop"))},wheel:function(t){var i,e=t.originalEvent;this.disabled||(t.preventDefault(),i=e.deltaY?(i=e.deltaY)%5==0?i/5:i%117.25==0?i/117.25:i/166.66665649414062:e.wheelDelta?-e.wheelDelta/120:e.detail?e.detail/3:0,this.zoom(.1*i))},dragstart:function(t){var i,e,h,a=t.originalEvent.touches,s=t;if(!this.disabled){if(a){if(1<(h=a.length)){if(!this.defaults.zoomable||2!==h)return;s=a[1],this.startX2=s.pageX,this.startY2=s.pageY,i="zoom"}s=a[0]}if(i=i||l(s.target).data(o),d.test(i)){if(t.preventDefault(),e=l.Event(k),this.$element.trigger(e),e.isDefaultPrevented())return;this.directive=i,this.cropping=W,this.startX=s.pageX,this.startY=s.pageY,"crop"===i&&(this.cropping=D,this.$canvas.addClass(p))}}},dragmove:function(t){var i,e,h=t.originalEvent.touches,a=t;if(!this.disabled){if(h){if(1<(e=h.length)){if(!this.defaults.zoomable||2!==e)return;a=h[1],this.endX2=a.pageX,this.endY2=a.pageY}a=h[0]}if(this.directive){if(t.preventDefault(),i=l.Event(R),this.$element.trigger(i),i.isDefaultPrevented())return;this.endX=a.pageX,this.endY=a.pageY,this.dragging()}}},dragend:function(t){var i;if(!this.disabled&&this.directive){if(t.preventDefault(),i=l.Event(z),this.$element.trigger(i),i.isDefaultPrevented())return;this.cropping&&(this.cropping=W,this.$canvas.toggleClass(p,this.cropped&&this.defaults.modal)),this.directive=""}},dragging:function(){var t,i,e,h,a,s,r,n=this.directive,o=this.image,d=this.cropper,g=d.width,l=d.height,p=this.dragger,c=p.width,f=p.height,m=p.left,u=p.top,w=m+c,v=u+f,x=D,b=this.defaults,y=b.aspectRatio,$={x:this.endX-this.startX,y:this.endY-this.startY};switch(y&&($.X=$.y*y,$.Y=$.x/y),n){case"all":m+=$.x,u+=$.y;break;case"e":if(0<=$.x&&(g<=w||y&&(u<=0||l<=v))){x=W;break}c+=$.x,y&&(f=c/y,u-=$.Y/2),c<0&&(n="w",c=0);break;case"n":if($.y<=0&&(u<=0||y&&(m<=0||g<=w))){x=W;break}f-=$.y,u+=$.y,y&&(c=f*y,m+=$.X/2),f<0&&(n="s",f=0);break;case"w":if($.x<=0&&(m<=0||y&&(u<=0||l<=v))){x=W;break}c-=$.x,m+=$.x,y&&(f=c/y,u+=$.Y/2),c<0&&(n="e",c=0);break;case"s":if(0<=$.y&&(l<=v||y&&(m<=0||g<=w))){x=W;break}f+=$.y,y&&(c=f*y,m-=$.X/2),f<0&&(n="n",f=0);break;case"ne":if(y){if($.y<=0&&(u<=0||g<=w)){x=W;break}f-=$.y,u+=$.y,c=f*y}else 0<=$.x?w<g?c+=$.x:$.y<=0&&u<=0&&(x=W):c+=$.x,$.y<=0?0<u&&(f-=$.y,u+=$.y):(f-=$.y,u+=$.y);f<0&&(n="sw",c=f=0);break;case"nw":if(y){if($.y<=0&&(u<=0||m<=0)){x=W;break}f-=$.y,u+=$.y,c=f*y,m+=$.X}else $.x<=0?0<m?(c-=$.x,m+=$.x):$.y<=0&&u<=0&&(x=W):(c-=$.x,m+=$.x),$.y<=0?0<u&&(f-=$.y,u+=$.y):(f-=$.y,u+=$.y);f<0&&(n="se",c=f=0);break;case"sw":if(y){if($.x<=0&&(m<=0||l<=v)){x=W;break}c-=$.x,m+=$.x,f=c/y}else $.x<=0?0<m?(c-=$.x,m+=$.x):0<=$.y&&l<=v&&(x=W):(c-=$.x,m+=$.x),0<=$.y?v<l&&(f+=$.y):f+=$.y;c<0&&(n="ne",c=f=0);break;case"se":if(y){if(0<=$.x&&(g<=w||l<=v)){x=W;break}f=(c+=$.x)/y}else 0<=$.x?w<g?c+=$.x:0<=$.y&&l<=v&&(x=W):c+=$.x,0<=$.y?v<l&&(f+=$.y):f+=$.y;c<0&&(n="nw",c=f=0);break;case"move":o.left+=$.x,o.top+=$.y,this.renderImage("move"),x=W;break;case"zoom":b.zoomable&&(this.zoom((i=o.width,e=o.height,h=_(this.startX-this.startX2),a=_(this.startY-this.startY2),s=_(this.endX-this.endX2),r=_(this.endY-this.endY2),(T(s*s+r*r)-T(h*h+a*a))/T(i*i+e*e))),this.endX2=this.startX2,this.endY2=this.startY2);break;case"crop":$.x&&$.y&&(t=this.$cropper.offset(),m=this.startX-t.left,u=this.startY-t.top,c=p.minWidth,f=p.minHeight,0<$.x?0<$.y?n="se":(n="ne",u-=f):0<$.y?(n="sw",m-=c):(n="nw",m-=c,u-=f),this.cropped||(this.cropped=D,this.$dragger.removeClass(H)))}x&&(p.width=c,p.height=f,p.left=m,p.top=u,this.directive=n,this.renderDragger()),this.startX=this.endX,this.startY=this.endY}},M.TEMPLATE=(i=(i="div,span,directive,data,point,cropper,class,line,dashed").split(","),'<0 6="5-container"><0 6="5-canvas"></0><0 6="5-dragger"><1 6="5-viewer"></1><1 6="5-8 8-h"></1><1 6="5-8 8-v"></1><1 6="5-face" 3-2="all"></1><1 6="5-7 7-e" 3-2="e"></1><1 6="5-7 7-n" 3-2="n"></1><1 6="5-7 7-w" 3-2="w"></1><1 6="5-7 7-s" 3-2="s"></1><1 6="5-4 4-e" 3-2="e"></1><1 6="5-4 4-n" 3-2="n"></1><1 6="5-4 4-w" 3-2="w"></1><1 6="5-4 4-s" 3-2="s"></1><1 6="5-4 4-ne" 3-2="ne"></1><1 6="5-4 4-nw" 3-2="nw"></1><1 6="5-4 4-sw" 3-2="sw"></1><1 6="5-4 4-se" 3-2="se"></1></0></0>'.replace(/\d+/g,function(t){return i[t]})),M.DEFAULTS={aspectRatio:"auto",autoCropArea:.8,data:{},done:l.noop,preview:"",multiple:W,autoCrop:D,dragCrop:D,dashed:D,modal:D,movable:D,resizable:D,zoomable:D,rotatable:D,checkImageOrigin:D,minWidth:0,minHeight:0,maxWidth:1/0,maxHeight:1/0,build:r,built:r,dragstart:r,dragmove:r,dragend:r},M.setDefaults=function(t){l.extend(M.DEFAULTS,t)},M.other=l.fn.cropper,l.fn.cropper=function(h){var a,s=Y(arguments,1);return this.each(function(){var t,i=l(this),e=i.data("cropper");e||i.data("cropper",e=new M(this,h)),"string"==typeof h&&l.isFunction(t=e[h])&&(a=t.apply(e,s))}),typeof a!=n?a:this},l.fn.cropper.Constructor=M,l.fn.cropper.setDefaults=M.setDefaults,l.fn.cropper.noConflict=function(){return l.fn.cropper=M.other,this}});
|
assets/js/um-fileupload.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(S){S.fn.ajaxForm;var C={};C.fileapi=void 0!==S("<input type='file'/>").get(0).files,C.formdata=void 0!==window.FormData,S.fn.uploadFile=function(e){var p=S.extend({url:"",method:"POST",enctype:"multipart/form-data",formData:null,returnType:null,allowedTypes:"*",fileName:"file",formData:{},dynamicFormData:function(){return{}},maxFileSize:-1,maxFileCount:-1,multiple:!0,dragDrop:!0,autoSubmit:!0,showCancel:!0,showAbort:!0,showDone:!0,showDelete:!1,showError:!0,showStatusAfterSuccess:!0,showStatusAfterError:!0,showFileCounter:!0,fileCounterStyle:"). ",showProgress:!1,onSelect:function(e){return!0},onSubmit:function(e,r){},onSuccess:function(e,r,t){},onError:function(e,r,t){},deleteCallback:!1,afterUploadAll:!1,uploadButtonClass:"upload",dragDropStr:"",abortStr:"Abort",cancelStr:"Cancel",deletelStr:"Delete",doneStr:"Done",multiDragErrorStr:"Multiple File Drag & Drop is not allowed.",extErrorStr:"",sizeErrorStr:"",uploadErrorStr:"Upload is not allowed",maxFileCountErrorStr:""},e);this.fileCounter=1,this.selectedFiles=0,this.fCounter=0,this.sCounter=0,this.tCounter=0;var
|
1 |
+
!function(S){S.fn.ajaxForm;var C={};C.fileapi=void 0!==S("<input type='file'/>").get(0).files,C.formdata=void 0!==window.FormData,S.fn.uploadFile=function(e){var p=S.extend({url:"",method:"POST",enctype:"multipart/form-data",formData:null,returnType:null,allowedTypes:"*",fileName:"file",formData:{},dynamicFormData:function(){return{}},maxFileSize:-1,maxFileCount:-1,multiple:!0,dragDrop:!0,autoSubmit:!0,showCancel:!0,showAbort:!0,showDone:!0,showDelete:!1,showError:!0,showStatusAfterSuccess:!0,showStatusAfterError:!0,showFileCounter:!0,fileCounterStyle:"). ",showProgress:!1,onSelect:function(e){return!0},onSubmit:function(e,r){},onSuccess:function(e,r,t){},onError:function(e,r,t){},deleteCallback:!1,afterUploadAll:!1,uploadButtonClass:"upload",dragDropStr:"",abortStr:"Abort",cancelStr:"Cancel",deletelStr:"Delete",doneStr:"Done",multiDragErrorStr:"Multiple File Drag & Drop is not allowed.",extErrorStr:"",sizeErrorStr:"",uploadErrorStr:"Upload is not allowed",maxFileCountErrorStr:""},e);this.fileCounter=1,this.selectedFiles=0,this.fCounter=0,this.sCounter=0,this.tCounter=0;var t="upload-"+(new Date).getTime();this.formGroup=t,this.hide(),this.errorLog=S("<div></div>"),this.after(this.errorLog),this.responses=[],C.formdata||(p.dragDrop=!1),C.formdata||(p.multiple=!1);var c=this,o=S("<div>"+S(this).html()+"</div>");S(o).addClass(p.uploadButtonClass),function e(){if(S.fn.ajaxForm){if(p.dragDrop){var r=S('<div class="ajax-upload-dragdrop" style="vertical-align:top;"></div>');S(c).before(r),S(r).append(o),S(r).prepend(S(p.dragDropStr)),function(t,o,r){r.on("dragenter",function(e){e.stopPropagation(),e.preventDefault(),S(this).css("border","2px dashed #ddd")}),r.on("dragover",function(e){e.stopPropagation(),e.preventDefault()}),r.on("drop",function(e){S(this).css("border","2px dashed #ddd"),e.preventDefault(),t.errorLog.html("");var r=e.originalEvent.dataTransfer.files;!o.multiple&&1<r.length?o.showError&&S("<div class='um-error-block'>"+o.multiDragErrorStr+"</div>").appendTo(t.errorLog):0!=o.onSelect(r)&&m(o,t,r)}),S(document).on("dragenter",function(e){e.stopPropagation(),e.preventDefault()}),S(document).on("dragover",function(e){e.stopPropagation(),e.preventDefault(),r.css("border","2px dashed #ddd")}),S(document).on("drop",function(e){e.stopPropagation(),e.preventDefault(),r.css("border","2px dashed #ddd")})}(c,p,r)}else S(c).before(o);!function l(n,d,u,p){var e="ajax-upload-id-"+(new Date).getTime();var c=S("<form method='"+u.method+"' action='"+u.url+"' enctype='"+u.enctype+"'></form>");var r="<input type='file' id='"+e+"' name='"+u.fileName+"'/>";u.multiple&&(u.fileName.indexOf("[]")!=u.fileName.length-2&&(u.fileName+="[]"),r="<input type='file' id='"+e+"' name='"+u.fileName+"' multiple/>");var t=S(r).appendTo(c);t.change(function(){n.errorLog.html("");u.allowedTypes.toLowerCase().split(",");var e=[];if(this.files){for(s=0;s<this.files.length;s++)e.push(this.files[s].name);if(0==u.onSelect(this.files))return}else{var r=S(this).val(),t=[];if(e.push(r),!v(n,u,r))return void(u.showError&&S("<div class='um-error-block'>"+u.extErrorStr+"</div>").appendTo(n.errorLog));if(t.push({name:r,size:"NA"}),0==u.onSelect(t))return}if(g(u,n),p.unbind("click"),c.hide(),l(n,d,u,p),c.addClass(d),C.fileapi&&C.formdata){c.removeClass(d);var o=this.files;m(u,n,o)}else{for(var a="",s=0;s<e.length;s++)u.showFileCounter?a+=n.fileCounter+u.fileCounterStyle+e[s]+"<br>":a+=e[s]+"<br>",n.fileCounter++;if(-1!=u.maxFileCount&&n.selectedFiles+e.length>u.maxFileCount)return void(u.showError&&S("<div class='um-error-block'>"+u.maxFileCountErrorStr+"</div>").appendTo(n.errorLog));n.selectedFiles+=e.length;var i=new b(n,u);i.filename.html(a),w(c,u,i,e,n)}});c.css({margin:0,padding:0});var o=S(p).width()+10;10==o&&(o=120);var a=p.height()+10;10==a&&(a=35);p.css({position:"relative",overflow:"hidden",cursor:"default"});t.css({position:"absolute",cursor:"pointer",top:"0px",width:"100%",height:"34px",left:"0px","z-index":"100",opacity:"0.0",filter:"alpha(opacity=0)","-ms-filter":"alpha(opacity=0)","-khtml-opacity":"0.0","-moz-opacity":"0.0"});c.appendTo(p)}(c,t,p,o)}else window.setTimeout(e,10)}(),this.startUpload=function(){S("."+this.formGroup).each(function(e,r){S(this).is("form")&&S(this).submit()})},this.stopUpload=function(){S(".upload-red").each(function(e,r){S(this).hasClass(c.formGroup)&&S(this).click()})};var h=!(this.getResponses=function(){return this.responses});function f(e){var r,t,o=[],a=(o="string"==jQuery.type(e)?e.split("&"):S.param(e).split("&")).length,s=[];for(r=0;r<a;r++)o[r]=o[r].replace(/\+/g," "),t=o[r].split("="),s.push([decodeURIComponent(t[0]),decodeURIComponent(t[1])]);return s}function m(e,r,t){for(var o=0;o<t.length;o++)if(v(r,e,t[o].name))if(-1!=e.maxFileSize&&t[o].size>e.maxFileSize)e.showError&&S("<div class='um-error-block'>"+e.sizeErrorStr+"</div>").appendTo(r.errorLog);else if(-1!=e.maxFileCount&&r.selectedFiles>=e.maxFileCount)e.showError&&S("<div class='um-error-block'>"+e.maxFileCountErrorStr+"</div>").appendTo(r.errorLog);else{r.selectedFiles++;var a=e,s=new FormData,i=e.fileName.replace("[]","");s.append(i,t[o]);var l=e.formData;if(l)for(var n=f(l),d=0;d<n.length;d++)n[d]&&s.append(n[d][0],n[d][1]);a.fileData=s;var u=new b(r,e),p="";p=e.showFileCounter?r.fileCounter+e.fileCounterStyle+t[o].name:t[o].name,u.filename.html(p);var c=S("<form style='display:block; position:absolute;left: 150px;' class='"+r.formGroup+"' method='"+e.method+"' action='"+e.url+"' enctype='"+e.enctype+"'></form>");c.appendTo("body");var h=[];h.push(t[o].name),w(c,a,u,h,r),r.fileCounter++}else e.showError&&S("<div class='um-error-block'>"+e.extErrorStr+"</div>").appendTo(r.errorLog)}function v(e,r,t){var o=r.allowedTypes.toLowerCase().split(","),a=t.split(".").pop().toLowerCase();return!("*"!=r.allowedTypes&&jQuery.inArray(a,o)<0)}function g(a,e){if(a.showFileCounter){var s=S(".upload-filename").length;e.fileCounter=s+1,S(".upload-filename").each(function(e,r){var t=S(this).html().split(a.fileCounterStyle),o=(parseInt(t[0]),s+a.fileCounterStyle+t[1]);S(this).html(o),s--})}}function b(e,r){return this.statusbar=S("<div class='upload-statusbar'></div>"),this.filename=S("<div class='upload-filename'></div>").appendTo(this.statusbar),this.progressDiv=S("<div class='upload-progress'>").appendTo(this.statusbar).hide(),this.progressbar=S("<div class='upload-bar "+e.formGroup+"'></div>").appendTo(this.progressDiv),this.abort=S("<div class='upload-red "+e.formGroup+"'>"+r.abortStr+"</div>").appendTo(this.statusbar).hide(),this.cancel=S("<div class='upload-red'>"+r.cancelStr+"</div>").appendTo(this.statusbar).hide(),this.done=S("<div class='upload-green'>"+r.doneStr+"</div>").appendTo(this.statusbar).hide(),this.del=S("<div class='upload-red'>"+r.deletelStr+"</div>").appendTo(this.statusbar).hide(),e.errorLog.after(this.statusbar),this}function w(i,l,n,d,u){var e={cache:!1,contentType:!1,processData:!1,forceSync:!1,data:l.formData,formData:l.fileData,dataType:l.returnType,beforeSubmit:function(e,r,t){if(0==l.onSubmit.call(this,d))return n.statusbar.append("<div class='um-error-block'>"+l.uploadErrorStr+"</div>"),n.cancel.show(),i.remove(),n.cancel.click(function(){n.statusbar.remove()}),!1;var o=l.dynamicFormData();if(o){var a=f(o);if(a)for(var s=0;s<a.length;s++)a[s]&&(null!=l.fileData?t.formData.append(a[s][0],a[s][1]):t.data[a[s][0]]=a[s][1])}return u.tCounter+=d.length,p.afterUploadAll&&!h&&(h=!0,function e(){0!=c.sCounter&&c.sCounter+c.fCounter==c.tCounter?(p.afterUploadAll(c),h=!1):window.setTimeout(e,100)}()),!0},beforeSend:function(e,r){n.progressDiv.show(),n.cancel.hide(),n.done.hide(),l.showAbort&&(n.abort.show(),n.abort.click(function(){e.abort(),u.selectedFiles-=d.length})),C.formdata?n.progressbar.width("1%"):n.progressbar.width("5%")},uploadProgress:function(e,r,t,o){98<o&&(o=98);var a=o+"%";1<o&&n.progressbar.width(a),l.showProgress&&(n.progressbar.html(a),n.progressbar.css("text-align","center"))},success:function(e,r,t){u.responses.push(e),n.progressbar.width("100%"),l.showProgress&&(n.progressbar.html("100%"),n.progressbar.css("text-align","center")),n.abort.hide(),l.onSuccess.call(this,d,e,t),l.showStatusAfterSuccess?(l.showDone?(n.done.show(),n.done.click(function(){n.statusbar.hide("slow"),n.statusbar.remove()})):n.done.hide(),l.showDelete?(n.del.show(),n.del.click(function(){n.statusbar.hide().remove(),l.deleteCallback&&l.deleteCallback.call(this,e,n),u.selectedFiles-=d.length,g(l,u)})):n.del.hide()):(n.statusbar.hide("slow"),n.statusbar.remove()),i.remove(),u.sCounter+=d.length},error:function(e,r,t){n.abort.hide(),"abort"==e.statusText?(n.statusbar.hide("slow").remove(),g(l,u)):(l.onError.call(this,d,r,t),l.showStatusAfterError?(n.progressDiv.hide(),n.statusbar.append("<span class='um-error-block'>ERROR: "+t+"</span>")):(n.statusbar.hide(),n.statusbar.remove()),u.selectedFiles-=d.length),i.remove(),u.fCounter+=d.length}};l.autoSubmit?i.ajaxSubmit(e):(l.showCancel&&(n.cancel.show(),n.cancel.click(function(){i.remove(),n.statusbar.remove(),u.selectedFiles-=d.length,g(l,u)})),i.ajaxForm(e))}return this}}(jQuery);
|
assets/js/um-functions.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
function UM_hide_menus(){UM.dropdown.hideAll()}function UM_domenus(){jQuery(".um-dropdown").each(function(e,t){UM.dropdown.setPosition(t)})}function UM_check_password_matched(){jQuery(document).on("keyup","input[data-key=user_password],input[data-key=confirm_user_password]",function(e){var t=jQuery("input[data-key=user_password]").val(),a=jQuery("input[data-key=confirm_user_password]").val(),o=jQuery("input[data-key=user_password],input[data-key=confirm_user_password]");t||a?t!==a?o.removeClass("um-validate-matched").addClass("um-validate-not-matched"):o.removeClass("um-validate-not-matched").addClass("um-validate-matched"):o.removeClass("um-validate-matched").removeClass("um-validate-not-matched")})}function um_responsive(){jQuery(".um").each(function(){element_width=jQuery(this).width(),element_width<=340?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob340")):element_width<=500?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob500")):element_width<=800?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob800")):element_width<=960?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob960")):960<element_width&&(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960")),0<jQuery(".um-account-nav").length&&jQuery(".um-account-side").is(":visible")&&0==jQuery(".um-account-tab:visible").length&&jQuery(".um-account-side li a.current").trigger("click"),jQuery(this).css("opacity",1)}),jQuery(".um-cover, .um-member-cover, .um-cover-e").each(function(){var e=jQuery(this),t=e.data("ratio"),a=e.width(),o=t.split(":");calcHeight=Math.round(a/o[0])+"px",e.height(calcHeight),e.find(".um-cover-add").height(calcHeight)}),UM_domenus()}function initImageUpload_UM(r){r.data("upload_help_text")?upload_help_text='<span class="help">'+r.data("upload_help_text")+"</span>":upload_help_text="",r.data("icon")?icon='<span class="icon"><i class="'+r.data("icon")+'"></i></span>':icon="",r.data("upload_text")?upload_text='<span class="str">'+r.data("upload_text")+"</span>":upload_text="";var e=0;jQuery("#um_upload_single:visible").data("user_id")&&(e=jQuery("#um_upload_single:visible").data("user_id")),r.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_imageupload",key:r.data("key"),set_id:r.data("set_id"),set_mode:r.data("set_mode"),_wpnonce:r.data("nonce"),timestamp:r.data("timestamp"),user_id:e},fileName:r.data("key"),allowedTypes:r.data("allowed_types"),maxFileSize:r.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:r.data("max_size_error"),extErrorStr:r.data("extension_error"),maxFileCountErrorStr:r.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,returnType:"json",onSubmit:function(e){r.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,t,a){r.selectedFiles=0,t.success&&0==t.success||void 0!==t.data.error?(r.parents(".um-modal-body").append('<div class="um-error-block">'+t.data.error+"</div>"),r.parents(".um-modal-body").find(".upload-statusbar").hide(0),um_modal_responsive()):jQuery.each(t.data,function(e,t){var a=r.parents(".um-modal-body").find(".um-single-image-preview img"),o=r.parents(".um-modal-body").find(".um-single-image-preview"),i=new Date;a.attr("src",t.url+"?"+i.getTime()),a.data("file",t.file),a.on("load",function(){r.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),r.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),o.show(0),um_modal_responsive()})})},onError:function(e){console.log(e)}})}function initFileUpload_UM(o){o.data("upload_help_text")?upload_help_text='<span class="help">'+o.data("upload_help_text")+"</span>":upload_help_text="",o.data("icon")?icon='<span class="icon"><i class="'+o.data("icon")+'"></i></span>':icon="",o.data("upload_text")?upload_text='<span class="str">'+o.data("upload_text")+"</span>":upload_text="",jQuery("#um_upload_single:visible").data("user_id")&&(user_id=jQuery("#um_upload_single:visible").data("user_id")),o.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_fileupload",key:o.data("key"),set_id:o.data("set_id"),user_id:o.data("user_id"),set_mode:o.data("set_mode"),_wpnonce:o.data("nonce"),timestamp:o.data("timestamp")},fileName:o.data("key"),allowedTypes:o.data("allowed_types"),maxFileSize:o.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:o.data("max_size_error"),extErrorStr:o.data("extension_error"),maxFileCountErrorStr:o.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,onSubmit:function(e){o.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,t,a){o.selectedFiles=0,t.success&&0==t.success||void 0!==t.data.error?(o.parents(".um-modal-body").append('<div class="um-error-block">'+t.data.error+"</div>"),o.parents(".um-modal-body").find(".upload-statusbar").hide(0)):jQuery.each(t.data,function(e,t){o.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),o.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),o.parents(".um-modal-body").find(".um-single-file-preview").show(0),"icon"==e?o.parents(".um-modal-body").find(".um-single-fileinfo i").removeClass().addClass(t):"icon_bg"==e?o.parents(".um-modal-body").find(".um-single-fileinfo span.icon").css({"background-color":t}):"filename"==e?o.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-file",t):"original_name"==e?(o.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-orignal-name",t),o.parents(".um-modal-body").find(".um-single-fileinfo span.filename").html(t)):"url"==e&&o.parents(".um-modal-body").find(".um-single-fileinfo a").attr("href",t)}),setTimeout(function(){um_modal_responsive()},1e3)},onError:function(e){console.log(e)}})}function initCrop_UM(){var t=jQuery(".um-modal .um-single-image-preview img").first(),e=jQuery(".um-modal .um-single-image-preview"),a=t.parent().attr("data-crop"),o=t.parent().attr("data-min_width"),i=t.parent().attr("data-min_height"),r=t.parent().attr("data-ratio");if(jQuery(".um-modal").find("#um_upload_single").attr("data-ratio"))r=(r=jQuery(".um-modal").find("#um_upload_single").attr("data-ratio")).split(":")[0];if(t.length&&""!=t.attr("src")){var d=jQuery(window).height()-(jQuery(".um-modal-footer a").height()+20)-50-jQuery(".um-modal-header:visible").height();if(t.css({height:"auto"}),e.css({height:"auto"}),jQuery(window).height()<=400?(e.css({height:d+"px","max-height":d+"px"}),t.css({height:"auto"})):(t.css({height:"auto","max-height":d+"px"}),e.css({height:t.height(),"max-height":d+"px"})),"square"==a)var u={minWidth:o,minHeight:i,dragCrop:!1,aspectRatio:1,zoomable:!1,rotatable:!1,dashed:!1,done:function(e){t.parent().attr("data-coord",Math.round(e.x)+","+Math.round(e.y)+","+Math.round(e.width)+","+Math.round(e.height))}};else if("cover"==a){0<Math.round(o/r)&&(i=Math.round(o/r));u={minWidth:o,minHeight:i,dragCrop:!1,aspectRatio:r,zoomable:!1,rotatable:!1,dashed:!1,done:function(e){t.parent().attr("data-coord",Math.round(e.x)+","+Math.round(e.y)+","+Math.round(e.width)+","+Math.round(e.height))}}}else if("user"==a)u={minWidth:o,minHeight:i,dragCrop:!0,aspectRatio:"auto",zoomable:!1,rotatable:!1,dashed:!1,done:function(e){t.parent().attr("data-coord",Math.round(e.x)+","+Math.round(e.y)+","+Math.round(e.width)+","+Math.round(e.height))}};0!=a&&(t.cropper(u),jQuery(".um-single-image-preview img.cropper-hidden").cropper("destroy"),jQuery(".um-single-image-preview img.lazyloaded").addClass("cropper-hidden"),jQuery(".um-single-image-preview img.lazyloaded").removeClass("lazyloaded"),jQuery(".um-single-image-preview .cropper-container").append('<div class="um-clear"></div>'))}}function um_new_modal(e,t,a,o){var i=jQuery(".um-modal-overlay");0!==i.length&&(i.hide(),i.next(".um-modal").hide()),jQuery(".tipsy").hide(),UM.dropdown.hideAll(),jQuery("body,html,textarea").css("overflow","hidden"),jQuery(document).bind("touchmove",function(e){e.preventDefault()}),jQuery(".um-modal").on("touchmove",function(e){e.stopPropagation()});var r=jQuery('<div class="um-modal-overlay"></div><div class="um-modal"></div>'),d=r.filter(".um-modal");if(d.append(jQuery("#"+e)),jQuery("body").append(r),a){var u=jQuery('<img src="'+o+'" />'),s=jQuery(window).width()-60,n=jQuery(window).height()-.25*jQuery(window).height();u.on("load",function(){d.find(".um-modal-photo").html(u),d.addClass("is-photo").css({width:u.width(),"margin-left":"-"+u.width()/2+"px"}).show().children().show(),u.css({opacity:0,"max-width":s,"max-height":n}).animate({opacity:1},1e3),um_modal_responsive()})}else d.addClass("no-photo").show().children().show(),um_modal_size(t),initImageUpload_UM(jQuery(".um-modal:visible .um-single-image-upload")),initFileUpload_UM(jQuery(".um-modal:visible .um-single-file-upload")),um_modal_responsive()}function um_modal_responsive(){var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,t=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,a=jQuery(".um-modal:visible").not(".um-modal-hidden");if(a.find(".um-modal-body.photo:visible").length){a.removeClass("uimob340"),a.removeClass("uimob500");var o=jQuery(".um-modal-photo img"),i=e-60,r=t-.25*t;o.css({opacity:0}),o.css({"max-width":i}),o.css({"max-height":r}),a.css({width:o.width(),"margin-left":"-"+o.width()/2+"px"}),o.animate({opacity:1},1e3);var d=(t-a.innerHeight())/2+"px";a.animate({bottom:d},300)}else if(a.length)if(a.removeClass("uimob340"),a.removeClass("uimob500"),e<=340)a.addClass("uimob340"),initCrop_UM(),a.animate({bottom:0},300);else if(e<=500)a.addClass("uimob500"),initCrop_UM(),a.animate({bottom:0},300);else if(e<=800){initCrop_UM();d=(t-a.innerHeight())/2+"px";a.animate({bottom:d},300)}else if(e<=960){initCrop_UM();d=(t-a.innerHeight())/2+"px";a.animate({bottom:d},300)}else if(960<e){initCrop_UM();d=(t-a.innerHeight())/2+"px";a.animate({bottom:d},300)}}function um_remove_modal(){jQuery("img.cropper-hidden").cropper("destroy"),jQuery("body,html,textarea").css("overflow","auto"),jQuery(document).unbind("touchmove"),jQuery('body > .um-modal div[id^="um_"]').hide().appendTo("body"),jQuery("body > .um-modal, body > .um-modal-overlay").remove()}function um_modal_size(e){jQuery(".um-modal:visible").not(".um-modal-hidden").addClass(e)}function um_modal_add_attr(e,t){jQuery(".um-modal:visible").not(".um-modal-hidden").data(e,t)}function prepare_Modal(){0==jQuery(".um-popup-overlay").length&&(jQuery("body").append('<div class="um-popup-overlay"></div>'),jQuery("body").append('<div class="um-popup"></div>'),jQuery(".um-popup").addClass("loading"),jQuery("body,html").css({overflow:"hidden"}))}function remove_Modal(){jQuery(".um-popup-overlay").length&&(wp.hooks.doAction("um_before_modal_removed",jQuery(".um-popup")),jQuery(".tipsy").remove(),jQuery(".um-popup").empty().remove(),jQuery(".um-popup-overlay").empty().remove(),jQuery("body,html").css({overflow:"auto"}))}function show_Modal(e){jQuery(".um-popup-overlay").length&&(jQuery(".um-popup").removeClass("loading").html(e),jQuery(".um-tip-n").tipsy({gravity:"n",opacity:1,offset:3}),jQuery(".um-tip-w").tipsy({gravity:"w",opacity:1,offset:3}),jQuery(".um-tip-e").tipsy({gravity:"e",opacity:1,offset:3}),jQuery(".um-tip-s").tipsy({gravity:"s",opacity:1,offset:3}))}function responsive_Modal(){jQuery(".um-popup-overlay").length&&(ag_height=jQuery(window).height()-jQuery(".um-popup .um-popup-header").outerHeight()-jQuery(".um-popup .um-popup-footer").outerHeight()-80,350<ag_height&&(ag_height=350),jQuery(".um-popup-autogrow:visible").length?jQuery(".um-popup-autogrow:visible").css({height:ag_height+"px"}):jQuery(".um-popup-autogrow2:visible").length&&jQuery(".um-popup-autogrow2:visible").css({"max-height":ag_height+"px"}))}function um_reset_field(e){jQuery(e).find("div.um-field-area").find("input,textarea,select").not(":button, :submit, :reset, :hidden").val("").prop("checked",!1).prop("selected",!1)}function um_selected(e,t){if(e==t)return"selected='selected'"}"object"!=typeof window.UM&&(window.UM={}),UM.dropdown={hide:function(e){var t=jQuery(e);t.parents("div").find("a").removeClass("active"),t.hide()},hideAll:function(){var e=jQuery(".um-dropdown");e.parents("div").find("a").removeClass("active"),e.hide()},setPosition:function(e){var t=jQuery(e),a=200,o=jQuery("html").attr("dir"),i=t.attr("data-element"),r=t.attr("data-position"),d=t.attr("data-trigger"),u=i&&jQuery(i).length?jQuery(i):t.siblings("a").length?t.siblings("a").first():t.parent();u.addClass("um-trigger-menu-on-"+d);var s=0,n=(u.outerWidth()-a)/2,l=u.outerHeight(),m=u.offset();if(u.is(".um-profile-photo")){var p=u.find(".um-profile-photo-img");u.closest("div.uimob500").length?l=u.outerHeight()-p.outerHeight()/4:(n=(p.outerWidth()-a)/2,l=p.outerHeight()/4)}if(u.is(".um-cover")){p=u.find(".um-cover-e");u.closest("div.uimob500").length?(n=(p.outerWidth()-a)/2,l=p.outerHeight()/2+24):(n=(p.outerWidth()-a)/2,l=p.outerHeight()/2+46)}switch("lc"===r&&"rtl"===o&&(r="rc"),u.outerWidth()<a&&("rtl"===o&&m.left<100?r="rc":"rtl"!==o&&window.innerWidth-m.left-u.outerWidth()<100&&(r="lc")),r){case"lc":s=u.width()+17,t.css({top:0,width:a,left:"auto",right:s+"px","text-align":"center"}),t.find(".um-dropdown-arr").css({top:"4px",left:"auto",right:"-17px"}).find("i").removeClass().addClass("um-icon-arrow-right-b");break;case"rc":s=u.width()+25,t.css({top:0,width:a,left:s+"px",right:"auto","text-align":"center"}),t.find(".um-dropdown-arr").css({top:"4px",left:"-17px",right:"auto"}).find("i").removeClass().addClass("um-icon-arrow-left-b");break;case"bc":default:var h=t.data("top-offset");void 0!==h&&(l+=h),t.css({top:l+6,width:a,left:n,right:"auto","text-align":"center"}),t.find(".um-dropdown-arr").css({top:"-17px",left:t.width()/2-12,right:"auto"}).find("i").removeClass().addClass("um-icon-arrow-up-b")}},show:function(e){var t=jQuery(e);UM.dropdown.hideAll(),UM.dropdown.setPosition(t),t.show()}},jQuery(function(){jQuery(".um-search form *").on("keypress",function(e){if(13==e.which)return jQuery(".um-search form").trigger("submit"),!1}),2==jQuery("input[data-key=user_password],input[data-key=confirm_user_password]").length&&UM_check_password_matched()});
|
1 |
+
function UM_hide_menus(){UM.dropdown.hideAll()}function UM_domenus(){jQuery(".um-dropdown").each(function(e,t){UM.dropdown.setPosition(t)})}function UM_check_password_matched(){jQuery(document).on("keyup","input[data-key=user_password],input[data-key=confirm_user_password]",function(e){var t=jQuery("input[data-key=user_password]").val(),a=jQuery("input[data-key=confirm_user_password]").val(),o=jQuery("input[data-key=user_password],input[data-key=confirm_user_password]");t||a?t!==a?o.removeClass("um-validate-matched").addClass("um-validate-not-matched"):o.removeClass("um-validate-not-matched").addClass("um-validate-matched"):o.removeClass("um-validate-matched").removeClass("um-validate-not-matched")})}function um_responsive(){jQuery(".um").each(function(){element_width=jQuery(this).width(),element_width<=340?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob340")):element_width<=500?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob500")):element_width<=800?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob800")):element_width<=960?(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960"),jQuery(this).addClass("uimob960")):960<element_width&&(jQuery(this).removeClass("uimob340"),jQuery(this).removeClass("uimob500"),jQuery(this).removeClass("uimob800"),jQuery(this).removeClass("uimob960")),0<jQuery(".um-account-nav").length&&jQuery(".um-account-side").is(":visible")&&0==jQuery(".um-account-tab:visible").length&&jQuery(".um-account-side li a.current").trigger("click"),jQuery(this).css("opacity",1)}),jQuery(".um-cover, .um-member-cover, .um-cover-e").each(function(){var e=jQuery(this),t=e.data("ratio"),a=e.width(),o=t.split(":");calcHeight=Math.round(a/o[0])+"px",e.height(calcHeight),e.find(".um-cover-add").height(calcHeight)}),UM_domenus()}function initImageUpload_UM(r){r.data("upload_help_text")?upload_help_text='<span class="help">'+r.data("upload_help_text")+"</span>":upload_help_text="",r.data("icon")?icon='<span class="icon"><i class="'+r.data("icon")+'"></i></span>':icon="",r.data("upload_text")?upload_text='<span class="str">'+r.data("upload_text")+"</span>":upload_text="";var e=0;jQuery("#um_upload_single:visible").data("user_id")&&(e=jQuery("#um_upload_single:visible").data("user_id")),r.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_imageupload",key:r.data("key"),set_id:r.data("set_id"),set_mode:r.data("set_mode"),_wpnonce:r.data("nonce"),timestamp:r.data("timestamp"),user_id:e},fileName:r.data("key"),allowedTypes:r.data("allowed_types"),maxFileSize:r.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:r.data("max_size_error"),extErrorStr:r.data("extension_error"),maxFileCountErrorStr:r.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,returnType:"json",onSubmit:function(e){r.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,t,a){r.selectedFiles=0,t.success&&0==t.success||void 0!==t.data.error?(r.parents(".um-modal-body").append('<div class="um-error-block">'+t.data.error+"</div>"),r.parents(".um-modal-body").find(".upload-statusbar").hide(0),um_modal_responsive()):jQuery.each(t.data,function(e,t){var a=r.parents(".um-modal-body").find(".um-single-image-preview img"),o=r.parents(".um-modal-body").find(".um-single-image-preview"),i=new Date;a.attr("src",t.url+"?"+i.getTime()),a.data("file",t.file),a.on("load",function(){r.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),r.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),o.show(0),um_modal_responsive()})})},onError:function(e){console.log(e)}})}function initFileUpload_UM(o){o.data("upload_help_text")?upload_help_text='<span class="help">'+o.data("upload_help_text")+"</span>":upload_help_text="",o.data("icon")?icon='<span class="icon"><i class="'+o.data("icon")+'"></i></span>':icon="",o.data("upload_text")?upload_text='<span class="str">'+o.data("upload_text")+"</span>":upload_text="",jQuery("#um_upload_single:visible").data("user_id")&&(user_id=jQuery("#um_upload_single:visible").data("user_id")),o.uploadFile({url:wp.ajax.settings.url,method:"POST",multiple:!1,formData:{action:"um_fileupload",key:o.data("key"),set_id:o.data("set_id"),user_id:o.data("user_id"),set_mode:o.data("set_mode"),_wpnonce:o.data("nonce"),timestamp:o.data("timestamp")},fileName:o.data("key"),allowedTypes:o.data("allowed_types"),maxFileSize:o.data("max_size"),dragDropStr:icon+upload_text+upload_help_text,sizeErrorStr:o.data("max_size_error"),extErrorStr:o.data("extension_error"),maxFileCountErrorStr:o.data("max_files_error"),maxFileCount:1,showDelete:!1,showAbort:!1,showDone:!1,showFileCounter:!1,showStatusAfterSuccess:!0,onSubmit:function(e){o.parents(".um-modal-body").find(".um-error-block").remove()},onSuccess:function(e,t,a){o.selectedFiles=0,t.success&&0==t.success||void 0!==t.data.error?(o.parents(".um-modal-body").append('<div class="um-error-block">'+t.data.error+"</div>"),o.parents(".um-modal-body").find(".upload-statusbar").hide(0)):jQuery.each(t.data,function(e,t){o.parents(".um-modal-body").find(".um-modal-btn.um-finish-upload.disabled").removeClass("disabled"),o.parents(".um-modal-body").find(".ajax-upload-dragdrop,.upload-statusbar").hide(0),o.parents(".um-modal-body").find(".um-single-file-preview").show(0),"icon"==e?o.parents(".um-modal-body").find(".um-single-fileinfo i").removeClass().addClass(t):"icon_bg"==e?o.parents(".um-modal-body").find(".um-single-fileinfo span.icon").css({"background-color":t}):"filename"==e?o.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-file",t):"original_name"==e?(o.parents(".um-modal-body").find(".um-single-fileinfo a").attr("data-orignal-name",t),o.parents(".um-modal-body").find(".um-single-fileinfo span.filename").html(t)):"url"==e&&o.parents(".um-modal-body").find(".um-single-fileinfo a").attr("href",t)}),setTimeout(function(){um_modal_responsive()},1e3)},onError:function(e){console.log(e)}})}function initCrop_UM(){var t=jQuery(".um-modal .um-single-image-preview img").first(),e=jQuery(".um-modal .um-single-image-preview"),a=t.parent().attr("data-crop"),o=t.parent().attr("data-min_width"),i=t.parent().attr("data-min_height"),r=t.parent().attr("data-ratio");if(jQuery(".um-modal").find("#um_upload_single").attr("data-ratio"))r=(r=jQuery(".um-modal").find("#um_upload_single").attr("data-ratio")).split(":")[0];if(t.length&&""!=t.attr("src")){var d=jQuery(window).height()-(jQuery(".um-modal-footer a").height()+20)-50-jQuery(".um-modal-header:visible").height();if(t.css({height:"auto"}),e.css({height:"auto"}),jQuery(window).height()<=400?(e.css({height:d+"px","max-height":d+"px"}),t.css({height:"auto"})):(t.css({height:"auto","max-height":d+"px"}),e.css({height:t.height(),"max-height":d+"px"})),"square"==a)var u={minWidth:o,minHeight:i,dragCrop:!1,aspectRatio:1,zoomable:!1,rotatable:!1,dashed:!1,done:function(e){t.parent().attr("data-coord",Math.round(e.x)+","+Math.round(e.y)+","+Math.round(e.width)+","+Math.round(e.height))}};else if("cover"==a){0<Math.round(o/r)&&(i=Math.round(o/r));u={minWidth:o,minHeight:i,dragCrop:!1,aspectRatio:r,zoomable:!1,rotatable:!1,dashed:!1,done:function(e){t.parent().attr("data-coord",Math.round(e.x)+","+Math.round(e.y)+","+Math.round(e.width)+","+Math.round(e.height))}}}else if("user"==a)u={minWidth:o,minHeight:i,dragCrop:!0,aspectRatio:"auto",zoomable:!1,rotatable:!1,dashed:!1,done:function(e){t.parent().attr("data-coord",Math.round(e.x)+","+Math.round(e.y)+","+Math.round(e.width)+","+Math.round(e.height))}};0!=a&&(t.cropper(u),jQuery(".um-single-image-preview img.cropper-hidden").cropper("destroy"),jQuery(".um-single-image-preview img.lazyloaded").addClass("cropper-hidden"),jQuery(".um-single-image-preview img.lazyloaded").removeClass("lazyloaded"),jQuery(".um-single-image-preview .cropper-container").append('<div class="um-clear"></div>'))}}function um_new_modal(e,t,a,o){var i=jQuery(".um-modal-overlay");0!==i.length&&(i.hide(),i.next(".um-modal").hide()),jQuery(".tipsy").hide(),UM.dropdown.hideAll(),jQuery("body,html,textarea").css("overflow","hidden"),jQuery(document).bind("touchmove",function(e){e.preventDefault()}),jQuery(".um-modal").on("touchmove",function(e){e.stopPropagation()});var r=jQuery('<div class="um-modal-overlay"></div><div class="um-modal"></div>'),d=r.filter(".um-modal");if(d.append(jQuery("#"+e)),jQuery("body").append(r),a){var u=jQuery('<img src="'+o+'" />'),s=jQuery(window).width()-60,n=jQuery(window).height()-.25*jQuery(window).height();u.on("load",function(){d.find(".um-modal-photo").html(u),d.addClass("is-photo").css({width:u.width(),"margin-left":"-"+u.width()/2+"px"}).show().children().show(),u.css({opacity:0,"max-width":s,"max-height":n}).animate({opacity:1},1e3),um_modal_responsive()})}else d.addClass("no-photo").show().children().show(),um_modal_size(t),initImageUpload_UM(jQuery(".um-modal:visible .um-single-image-upload")),initFileUpload_UM(jQuery(".um-modal:visible .um-single-file-upload")),um_modal_responsive()}function um_modal_responsive(){var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,t=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,a=jQuery(".um-modal:visible").not(".um-modal-hidden");if(a.find(".um-modal-body.photo:visible").length){a.removeClass("uimob340"),a.removeClass("uimob500");var o=jQuery(".um-modal-photo img"),i=e-60,r=t-.25*t;o.css({opacity:0}),o.css({"max-width":i}),o.css({"max-height":r}),a.css({width:o.width(),"margin-left":"-"+o.width()/2+"px"}),o.animate({opacity:1},1e3);var d=(t-a.innerHeight())/2+"px";a.animate({bottom:d},300)}else if(a.length)if(a.removeClass("uimob340"),a.removeClass("uimob500"),e<=340)a.addClass("uimob340"),initCrop_UM(),a.animate({bottom:0},300);else if(e<=500)a.addClass("uimob500"),initCrop_UM(),a.animate({bottom:0},300);else if(e<=800){initCrop_UM();d=(t-a.innerHeight())/2+"px";a.animate({bottom:d},300)}else if(e<=960){initCrop_UM();d=(t-a.innerHeight())/2+"px";a.animate({bottom:d},300)}else if(960<e){initCrop_UM();d=(t-a.innerHeight())/2+"px";a.animate({bottom:d},300)}}function um_remove_modal(){jQuery("img.cropper-hidden").cropper("destroy"),jQuery("body,html,textarea").css("overflow","auto"),jQuery(document).unbind("touchmove"),jQuery('body > .um-modal div[id^="um_"]').hide().appendTo("body"),jQuery("body > .um-modal, body > .um-modal-overlay").remove()}function um_modal_size(e){jQuery(".um-modal:visible").not(".um-modal-hidden").addClass(e)}function um_modal_add_attr(e,t){jQuery(".um-modal:visible").not(".um-modal-hidden").data(e,t)}function prepare_Modal(){0==jQuery(".um-popup-overlay").length&&(jQuery("body").append('<div class="um-popup-overlay"></div>'),jQuery("body").append('<div class="um-popup"></div>'),jQuery(".um-popup").addClass("loading"),jQuery("body,html").css({overflow:"hidden"}))}function remove_Modal(){jQuery(".um-popup-overlay").length&&(wp.hooks.doAction("um_before_modal_removed",jQuery(".um-popup")),jQuery(".tipsy").remove(),jQuery(".um-popup").empty().remove(),jQuery(".um-popup-overlay").empty().remove(),jQuery("body,html").css({overflow:"auto"}))}function show_Modal(e){jQuery(".um-popup-overlay").length&&(jQuery(".um-popup").removeClass("loading").html(e),jQuery(".um-tip-n").tipsy({gravity:"n",opacity:1,offset:3}),jQuery(".um-tip-w").tipsy({gravity:"w",opacity:1,offset:3}),jQuery(".um-tip-e").tipsy({gravity:"e",opacity:1,offset:3}),jQuery(".um-tip-s").tipsy({gravity:"s",opacity:1,offset:3}))}function responsive_Modal(){jQuery(".um-popup-overlay").length&&(ag_height=jQuery(window).height()-jQuery(".um-popup .um-popup-header").outerHeight()-jQuery(".um-popup .um-popup-footer").outerHeight()-80,350<ag_height&&(ag_height=350),jQuery(".um-popup-autogrow:visible").length?jQuery(".um-popup-autogrow:visible").css({height:ag_height+"px"}):jQuery(".um-popup-autogrow2:visible").length&&jQuery(".um-popup-autogrow2:visible").css({"max-height":ag_height+"px"}))}function um_reset_field(e){jQuery(e).find("div.um-field-area").find("input,textarea,select").not(":button, :submit, :reset, :hidden").val("").prop("checked",!1).prop("selected",!1)}function um_selected(e,t){if(e==t)return"selected='selected'"}"object"!=typeof window.UM&&(window.UM={}),UM.dropdown={hide:function(e){var t=jQuery(e);t.parents("div").find("a").removeClass("active"),t.hide()},hideAll:function(){var e=jQuery(".um-dropdown");e.parents("div").find("a").removeClass("active"),e.hide()},setPosition:function(e){var t=jQuery(e),a=200,o=jQuery("html").attr("dir"),i=t.attr("data-element"),r=t.attr("data-position"),d=t.attr("data-trigger"),u=i&&jQuery(i).length?jQuery(i):t.siblings("a").length?t.siblings("a").first():t.parent();u.addClass("um-trigger-menu-on-"+d);var s=0,n=(u.outerWidth()-a)/2,l=u.outerHeight(),m=u.offset();if(u.is(".um-profile-photo")){var p=u.find(".um-profile-photo-img");l=u.closest("div.uimob500").length?u.outerHeight()-p.outerHeight()/4:(n=(p.outerWidth()-a)/2,p.outerHeight()/4)}if(u.is(".um-cover")){p=u.find(".um-cover-e");l=u.closest("div.uimob500").length?(n=(p.outerWidth()-a)/2,p.outerHeight()/2+24):(n=(p.outerWidth()-a)/2,p.outerHeight()/2+46)}switch("lc"===r&&"rtl"===o&&(r="rc"),u.outerWidth()<a&&("rtl"===o&&m.left<100?r="rc":"rtl"!==o&&window.innerWidth-m.left-u.outerWidth()<100&&(r="lc")),r){case"lc":s=u.width()+17,t.css({top:0,width:a,left:"auto",right:s+"px","text-align":"center"}),t.find(".um-dropdown-arr").css({top:"4px",left:"auto",right:"-17px"}).find("i").removeClass().addClass("um-icon-arrow-right-b");break;case"rc":s=u.width()+25,t.css({top:0,width:a,left:s+"px",right:"auto","text-align":"center"}),t.find(".um-dropdown-arr").css({top:"4px",left:"-17px",right:"auto"}).find("i").removeClass().addClass("um-icon-arrow-left-b");break;case"bc":default:var h=t.data("top-offset");void 0!==h&&(l+=h),t.css({top:l+6,width:a,left:n,right:"auto","text-align":"center"}),t.find(".um-dropdown-arr").css({top:"-17px",left:t.width()/2-12,right:"auto"}).find("i").removeClass().addClass("um-icon-arrow-up-b")}},show:function(e){var t=jQuery(e);UM.dropdown.hideAll(),UM.dropdown.setPosition(t),t.show()}},jQuery(function(){jQuery(".um-search form *").on("keypress",function(e){if(13==e.which)return jQuery(".um-search form").trigger("submit"),!1}),2==jQuery("input[data-key=user_password],input[data-key=confirm_user_password]").length&&UM_check_password_matched()});
|
assets/js/um-jquery-form.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("undefined"!=typeof jQuery?jQuery:window.Zepto)}(function(O){"use strict";var b={};b.fileapi=void 0!==O("<input type='file'/>").get(0).files,b.formdata=void 0!==window.FormData;var t=!!O.fn.prop;function r(e){var t=e.data;e.isDefaultPrevented()||(e.preventDefault(),O(e.target).ajaxSubmit(t))}function a(e){var t=e.target,r=O(t);if(!r.is("[type=submit],[type=image]")){var a=r.closest("[type=submit]");if(0===a.length)return;t=a[0]}var n=this;if("image"==(n.clk=t).type)if(void 0!==e.offsetX)n.clk_x=e.offsetX,n.clk_y=e.offsetY;else if("function"==typeof O.fn.offset){var i=r.offset();n.clk_x=e.pageX-i.left,n.clk_y=e.pageY-i.top}else n.clk_x=e.pageX-t.offsetLeft,n.clk_y=e.pageY-t.offsetTop;setTimeout(function(){n.clk=n.clk_x=n.clk_y=null},100)}function X(){if(O.fn.ajaxSubmit.debug){var e="[jquery.form] "+Array.prototype.join.call(arguments,"");window.console&&window.console.log?window.console.log(e):window.opera&&window.opera.postError&&window.opera.postError(e)}}O.fn.attr2=function(){if(!t)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||"string"==typeof e?e:this.attr.apply(this,arguments)},O.fn.ajaxSubmit=function(L){if(!this.length)return X("ajaxSubmit: skipping submit process - no element selected"),this;var E,e,t,M=this;"function"==typeof L?L={success:L}:void 0===L&&(L={}),E=L.type||this.attr2("method"),(t=(t="string"==typeof(e=L.url||this.attr2("action"))?O.trim(e):"")||window.location.href||"")&&(t=(t.match(/^([^#]+)/)||[])[1]),L=O.extend(!0,{url:t,success:O.ajaxSettings.success,type:E||O.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},L);var r={};if(this.trigger("form-pre-serialize",[this,L,r]),r.veto)return X("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(L.beforeSerialize&&!1===L.beforeSerialize(this,L))return X("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var a=L.traditional;void 0===a&&(a=O.ajaxSettings.traditional);var n,F=[],i=this.formToArray(L.semantic,F);if(L.data&&(L.extraData=L.data,n=O.param(L.data,a)),L.beforeSubmit&&!1===L.beforeSubmit(i,this,L))return X("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[i,this,L,r]),r.veto)return X("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var o=O.param(i,a);n&&(o=o?o+"&"+n:n),"GET"==L.type.toUpperCase()?(L.url+=(0<=L.url.indexOf("?")?"&":"?")+o,L.data=null):L.data=o;var s=[];if(L.resetForm&&s.push(function(){M.resetForm()}),L.clearForm&&s.push(function(){M.clearForm(L.includeHidden)}),!L.dataType&&L.target){var u=L.success||function(){};s.push(function(e){var t=L.replaceTarget?"replaceWith":"html";O(L.target)[t](e).each(u,arguments)})}else L.success&&s.push(L.success);if(L.success=function(e,t,r){for(var a=L.context||this,n=0,i=s.length;n<i;n++)s[n].apply(a,[e,t,r||M,M])},L.error){var c=L.error;L.error=function(e,t,r){var a=L.context||this;c.apply(a,[e,t,r,M])}}if(L.complete){var l=L.complete;L.complete=function(e,t){var r=L.context||this;l.apply(r,[e,t,M])}}var f=0<O("input[type=file]:enabled",this).filter(function(){return""!==O(this).val()}).length,m="multipart/form-data",p=M.attr("enctype")==m||M.attr("encoding")==m,d=b.fileapi&&b.formdata;X("fileAPI :"+d);var h,v=(f||p)&&!d;!1!==L.iframe&&(L.iframe||v)?L.closeKeepAlive?O.get(L.closeKeepAlive,function(){h=x(i)}):h=x(i):h=(f||p)&&d?function(e){for(var r=new FormData,t=0;t<e.length;t++)r.append(e[t].name,e[t].value);if(L.extraData){var a=function(e){var t,r,a=O.param(e,L.traditional).split("&"),n=a.length,i=[];for(t=0;t<n;t++)a[t]=a[t].replace(/\+/g," "),r=a[t].split("="),i.push([decodeURIComponent(r[0]),decodeURIComponent(r[1])]);return i}(L.extraData);for(t=0;t<a.length;t++)a[t]&&r.append(a[t][0],a[t][1])}L.data=null;var n=O.extend(!0,{},O.ajaxSettings,L,{contentType:!1,processData:!1,cache:!1,type:E||"POST"});L.uploadProgress&&(n.xhr=function(){var e=O.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",function(e){var t=0,r=e.loaded||e.position,a=e.total;e.lengthComputable&&(t=Math.ceil(r/a*100)),L.uploadProgress(e,r,a,t)},!1),e});n.data=null;var i=n.beforeSend;return n.beforeSend=function(e,t){L.formData?t.data=L.formData:t.data=r,i&&i.call(this,e,t)},O.ajax(n)}(i):O.ajax(L),M.removeData("jqxhr").data("jqxhr",h);for(var g=0;g<F.length;g++)F[g]=null;return this.trigger("form-submit-notify",[this,L]),this;function x(e){var t,l,f,i,m,p,d,r,a,h,v,o=M[0],g=O.Deferred();if(g.abort=function(e){d.abort(e)},e)for(t=0;t<F.length;t++)O(F[t]).prop("disabled",!1);if((l=O.extend(!0,{},O.ajaxSettings,L)).context=l.context||l,i="jqFormIO"+(new Date).getTime(),l.iframeTarget?(a=(m=O(l.iframeTarget)).attr2("name"))?i=a:m.attr2("name",i):(m=O('<iframe name="'+i+'" src="'+l.iframeSrc+'" />')).css({position:"absolute",top:"-1000px",left:"-1000px"}),p=m[0],d={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(e){var t="timeout"===e?"timeout":"aborted";X("aborting upload... "+t),this.aborted=1;try{p.contentWindow.document.execCommand&&p.contentWindow.document.execCommand("Stop")}catch(e){}m.attr("src",l.iframeSrc),d.error=t,l.error&&l.error.call(l.context,d,t,e),f&&O.event.trigger("ajaxError",[d,l,t]),l.complete&&l.complete.call(l.context,d,t)}},(f=l.global)&&0==O.active++&&O.event.trigger("ajaxStart"),f&&O.event.trigger("ajaxSend",[d,l]),l.beforeSend&&!1===l.beforeSend.call(l.context,d,l))return l.global&&O.active--,g.reject(),g;if(d.aborted)return g.reject(),g;(r=o.clk)&&(a=r.name)&&!r.disabled&&(l.extraData=l.extraData||{},l.extraData[a]=r.value,"image"==r.type&&(l.extraData[a+".x"]=o.clk_x,l.extraData[a+".y"]=o.clk_y));var x=1,b=2;function y(t){var r=null;try{t.contentWindow&&(r=t.contentWindow.document)}catch(e){X("cannot get iframe.contentWindow document: "+e)}if(r)return r;try{r=t.contentDocument?t.contentDocument:t.document}catch(e){X("cannot get iframe.contentDocument: "+e),r=t.document}return r}var n=O("meta[name=csrf-token]").attr("content"),s=O("meta[name=csrf-param]").attr("content");function u(){var e=M.attr2("target"),t=M.attr2("action"),r=M.attr("enctype")||M.attr("encoding")||"multipart/form-data";o.setAttribute("target",i),E&&!/post/i.test(E)||o.setAttribute("method","POST"),t!=l.url&&o.setAttribute("action",l.url),l.skipEncodingOverride||E&&!/post/i.test(E)||M.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"}),l.timeout&&(v=setTimeout(function(){h=!0,D(x)},l.timeout));var a=[];try{if(l.extraData)for(var n in l.extraData)l.extraData.hasOwnProperty(n)&&(O.isPlainObject(l.extraData[n])&&l.extraData[n].hasOwnProperty("name")&&l.extraData[n].hasOwnProperty("value")?a.push(O('<input type="hidden" name="'+l.extraData[n].name+'">').val(l.extraData[n].value).appendTo(o)[0]):a.push(O('<input type="hidden" name="'+n+'">').val(l.extraData[n]).appendTo(o)[0]));l.iframeTarget||m.appendTo("body"),p.attachEvent?p.attachEvent("onload",D):p.addEventListener("load",D,!1),setTimeout(function e(){try{var t=y(p).readyState;X("state = "+t),t&&"uninitialized"==t.toLowerCase()&&setTimeout(e,50)}catch(e){X("Server abort: ",e," (",e.name,")"),D(b),v&&clearTimeout(v),v=void 0}},15);try{o.submit()}catch(e){document.createElement("form").submit.apply(o)}}finally{o.setAttribute("action",t),o.setAttribute("enctype",r),e?o.setAttribute("target",e):M.removeAttr("target"),O(a).remove()}}s&&n&&(l.extraData=l.extraData||{},l.extraData[s]=n),l.forceSync?u():setTimeout(u,10);var T,j,w,S=50;function D(e){if(!d.aborted&&!w){if((j=y(p))||(X("cannot access response document"),e=b),e===x&&d)return d.abort("timeout"),void g.reject(d,"timeout");if(e==b&&d)return d.abort("server abort"),void g.reject(d,"error","server abort");if(j&&j.location.href!=l.iframeSrc||h){p.detachEvent?p.detachEvent("onload",D):p.removeEventListener("load",D,!1);var t,r="success";try{if(h)throw"timeout";var a="xml"==l.dataType||j.XMLDocument||O.isXMLDoc(j);if(X("isXml="+a),!a&&window.opera&&(null===j.body||!j.body.innerHTML)&&--S)return X("requeing onLoad callback, DOM not available"),void setTimeout(D,250);var n=j.body?j.body:j.documentElement;d.responseText=n?n.innerHTML:null,d.responseXML=j.XMLDocument?j.XMLDocument:j,a&&(l.dataType="xml"),d.getResponseHeader=function(e){return{"content-type":l.dataType}[e.toLowerCase()]},n&&(d.status=Number(n.getAttribute("status"))||d.status,d.statusText=n.getAttribute("statusText")||d.statusText);var i=(l.dataType||"").toLowerCase(),o=/(json|script|text)/.test(i);if(o||l.textarea){var s=j.getElementsByTagName("textarea")[0];if(s)d.responseText=s.value,d.status=Number(s.getAttribute("status"))||d.status,d.statusText=s.getAttribute("statusText")||d.statusText;else if(o){var u=j.getElementsByTagName("pre")[0],c=j.getElementsByTagName("body")[0];u?d.responseText=u.textContent?u.textContent:u.innerText:c&&(d.responseText=c.textContent?c.textContent:c.innerText)}}else"xml"==i&&!d.responseXML&&d.responseText&&(d.responseXML=k(d.responseText));try{T=A(d,i,l)}catch(e){r="parsererror",d.error=t=e||r}}catch(e){X("error caught: ",e),r="error",d.error=t=e||r}d.aborted&&(X("upload aborted"),r=null),d.status&&(r=200<=d.status&&d.status<300||304===d.status?"success":"error"),"success"===r?(l.success&&l.success.call(l.context,T,"success",d),g.resolve(d.responseText,"success",d),f&&O.event.trigger("ajaxSuccess",[d,l])):r&&(void 0===t&&(t=d.statusText),l.error&&l.error.call(l.context,d,r,t),g.reject(d,"error",t),f&&O.event.trigger("ajaxError",[d,l,t])),f&&O.event.trigger("ajaxComplete",[d,l]),f&&!--O.active&&O.event.trigger("ajaxStop"),l.complete&&l.complete.call(l.context,d,r),w=!0,l.timeout&&clearTimeout(v),setTimeout(function(){l.iframeTarget?m.attr("src",l.iframeSrc):m.remove(),d.responseXML=null},100)}}}var k=O.parseXML||function(e,t){return window.ActiveXObject?((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!=t.documentElement.nodeName?t:null},c=O.parseJSON||function(e){return window.eval("("+e+")")},A=function(e,t,r){var a=e.getResponseHeader("content-type")||"",n="xml"===t||!t&&0<=a.indexOf("xml"),i=n?e.responseXML:e.responseText;return n&&"parsererror"===i.documentElement.nodeName&&O.error&&O.error("parsererror"),r&&r.dataFilter&&(i=r.dataFilter(i,t)),"string"==typeof i&&("json"===t||!t&&0<=a.indexOf("json")?i=c(i):("script"===t||!t&&0<=a.indexOf("javascript"))&&O.globalEval(i)),i};return g}},O.fn.ajaxForm=function(e){if((e=e||{}).delegation=e.delegation&&O.isFunction(O.fn.on),!e.delegation&&0===this.length){var t={s:this.selector,c:this.context};return!O.isReady&&t.s?(X("DOM not ready, queuing ajaxForm"),O(function(){O(t.s,t.c).ajaxForm(e)})):X("terminating; zero elements found by selector"+(O.isReady?"":" (DOM not ready)")),this}return e.delegation?(O(document).off("submit.form-plugin",this.selector,r).off("click.form-plugin",this.selector,a).on("submit.form-plugin",this.selector,e,r).on("click.form-plugin",this.selector,e,a),this):this.ajaxFormUnbind().bind("submit.form-plugin",e,r).bind("click.form-plugin",e,a)},O.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")},O.fn.formToArray=function(e,t){var r=[];if(0===this.length)return r;var a,n,i,o,s,u,c,l,f=this[0],m=this.attr("id"),p=e?f.getElementsByTagName("*"):f.elements;if(p&&!/MSIE [678]/.test(navigator.userAgent)&&(p=O(p).get()),m&&(a=O(':input[form="'+m+'"]').get()).length&&(p=(p||[]).concat(a)),!p||!p.length)return r;for(n=0,c=p.length;n<c;n++)if((o=(u=p[n]).name)&&!u.disabled)if(e&&f.clk&&"image"==u.type)f.clk==u&&(r.push({name:o,value:O(u).val(),type:u.type}),r.push({name:o+".x",value:f.clk_x},{name:o+".y",value:f.clk_y}));else if((s=O.fieldValue(u,!0))&&s.constructor==Array)for(t&&t.push(u),i=0,l=s.length;i<l;i++)r.push({name:o,value:s[i]});else if(b.fileapi&&"file"==u.type){t&&t.push(u);var d=u.files;if(d.length)for(i=0;i<d.length;i++)r.push({name:o,value:d[i],type:u.type});else r.push({name:o,value:"",type:u.type})}else null!=s&&(t&&t.push(u),r.push({name:o,value:s,type:u.type,required:u.required}));if(!e&&f.clk){var h=O(f.clk),v=h[0];(o=v.name)&&!v.disabled&&"image"==v.type&&(r.push({name:o,value:h.val()}),r.push({name:o+".x",value:f.clk_x},{name:o+".y",value:f.clk_y}))}return r},O.fn.formSerialize=function(e){return O.param(this.formToArray(e))},O.fn.fieldSerialize=function(n){var i=[];return this.each(function(){var e=this.name;if(e){var t=O.fieldValue(this,n);if(t&&t.constructor==Array)for(var r=0,a=t.length;r<a;r++)i.push({name:e,value:t[r]});else null!=t&&i.push({name:this.name,value:t})}}),O.param(i)},O.fn.fieldValue=function(e){for(var t=[],r=0,a=this.length;r<a;r++){var n=this[r],i=O.fieldValue(n,e);null==i||i.constructor==Array&&!i.length||(i.constructor==Array?O.merge(t,i):t.push(i))}return t},O.fieldValue=function(e,t){var r=e.name,a=e.type,n=e.tagName.toLowerCase();if(void 0===t&&(t=!0),t&&(!r||e.disabled||"reset"==a||"button"==a||("checkbox"==a||"radio"==a)&&!e.checked||("submit"==a||"image"==a)&&e.form&&e.form.clk!=e||"select"==n&&-1==e.selectedIndex))return null;if("select"==n){var i=e.selectedIndex;if(i<0)return null;for(var o=[],s=e.options,u="select-one"==a,c=u?i+1:s.length,l=u?i:0;l<c;l++){var f=s[l];if(f.selected){var m=f.value;if(m||(m=f.attributes&&f.attributes.value&&!f.attributes.value.specified?f.text:f.value),u)return m;o.push(m)}}return o}return O(e).val()},O.fn.clearForm=function(e){return this.each(function(){O("input,select,textarea",this).clearFields(e)})},O.fn.clearFields=O.fn.clearInputs=function(r){var a=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var e=this.type,t=this.tagName.toLowerCase();a.test(e)||"textarea"==t?this.value="":"checkbox"==e||"radio"==e?this.checked=!1:"select"==t?this.selectedIndex=-1:"file"==e?/MSIE/.test(navigator.userAgent)?O(this).replaceWith(O(this).clone(!0)):O(this).val(""):r&&(!0===r&&/hidden/.test(e)||"string"==typeof r&&O(this).is(r))&&(this.value="")})},O.fn.resetForm=function(){return this.each(function(){("function"==typeof this.reset||"object"==typeof this.reset&&!this.reset.nodeType)&&this.reset()})},O.fn.enable=function(e){return void 0===e&&(e=!0),this.each(function(){this.disabled=!e})},O.fn.selected=function(r){return void 0===r&&(r=!0),this.each(function(){var e=this.type;if("checkbox"==e||"radio"==e)this.checked=r;else if("option"==this.tagName.toLowerCase()){var t=O(this).parent("select");r&&t[0]&&"select-one"==t[0].type&&t.find("option").selected(!1),this.selected=r}})},O.fn.ajaxSubmit.debug=!1});
|
1 |
+
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("undefined"!=typeof jQuery?jQuery:window.Zepto)}(function(O){"use strict";var b={};b.fileapi=void 0!==O("<input type='file'/>").get(0).files,b.formdata=void 0!==window.FormData;var t=!!O.fn.prop;function r(e){var t=e.data;e.isDefaultPrevented()||(e.preventDefault(),O(e.target).ajaxSubmit(t))}function a(e){var t=e.target,r=O(t);if(!r.is("[type=submit],[type=image]")){var a=r.closest("[type=submit]");if(0===a.length)return;t=a[0]}var n=this;if("image"==(n.clk=t).type)if(void 0!==e.offsetX)n.clk_x=e.offsetX,n.clk_y=e.offsetY;else if("function"==typeof O.fn.offset){var i=r.offset();n.clk_x=e.pageX-i.left,n.clk_y=e.pageY-i.top}else n.clk_x=e.pageX-t.offsetLeft,n.clk_y=e.pageY-t.offsetTop;setTimeout(function(){n.clk=n.clk_x=n.clk_y=null},100)}function X(){if(O.fn.ajaxSubmit.debug){var e="[jquery.form] "+Array.prototype.join.call(arguments,"");window.console&&window.console.log?window.console.log(e):window.opera&&window.opera.postError&&window.opera.postError(e)}}O.fn.attr2=function(){if(!t)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||"string"==typeof e?e:this.attr.apply(this,arguments)},O.fn.ajaxSubmit=function(L){if(!this.length)return X("ajaxSubmit: skipping submit process - no element selected"),this;var E,e,t,M=this;"function"==typeof L?L={success:L}:void 0===L&&(L={}),E=L.type||this.attr2("method"),(t=(t="string"==typeof(e=L.url||this.attr2("action"))?O.trim(e):"")||window.location.href||"")&&(t=(t.match(/^([^#]+)/)||[])[1]),L=O.extend(!0,{url:t,success:O.ajaxSettings.success,type:E||O.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},L);var r={};if(this.trigger("form-pre-serialize",[this,L,r]),r.veto)return X("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(L.beforeSerialize&&!1===L.beforeSerialize(this,L))return X("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var a=L.traditional;void 0===a&&(a=O.ajaxSettings.traditional);var n,F=[],i=this.formToArray(L.semantic,F);if(L.data&&(L.extraData=L.data,n=O.param(L.data,a)),L.beforeSubmit&&!1===L.beforeSubmit(i,this,L))return X("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[i,this,L,r]),r.veto)return X("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var o=O.param(i,a);n&&(o=o?o+"&"+n:n),"GET"==L.type.toUpperCase()?(L.url+=(0<=L.url.indexOf("?")?"&":"?")+o,L.data=null):L.data=o;var s=[];if(L.resetForm&&s.push(function(){M.resetForm()}),L.clearForm&&s.push(function(){M.clearForm(L.includeHidden)}),!L.dataType&&L.target){var u=L.success||function(){};s.push(function(e){var t=L.replaceTarget?"replaceWith":"html";O(L.target)[t](e).each(u,arguments)})}else L.success&&s.push(L.success);if(L.success=function(e,t,r){for(var a=L.context||this,n=0,i=s.length;n<i;n++)s[n].apply(a,[e,t,r||M,M])},L.error){var c=L.error;L.error=function(e,t,r){var a=L.context||this;c.apply(a,[e,t,r,M])}}if(L.complete){var l=L.complete;L.complete=function(e,t){var r=L.context||this;l.apply(r,[e,t,M])}}var f=0<O("input[type=file]:enabled",this).filter(function(){return""!==O(this).val()}).length,m="multipart/form-data",p=M.attr("enctype")==m||M.attr("encoding")==m,d=b.fileapi&&b.formdata;X("fileAPI :"+d);var h,v=(f||p)&&!d;!1!==L.iframe&&(L.iframe||v)?L.closeKeepAlive?O.get(L.closeKeepAlive,function(){h=x(i)}):h=x(i):h=(f||p)&&d?function(e){for(var r=new FormData,t=0;t<e.length;t++)r.append(e[t].name,e[t].value);if(L.extraData){var a=function(e){var t,r,a=O.param(e,L.traditional).split("&"),n=a.length,i=[];for(t=0;t<n;t++)a[t]=a[t].replace(/\+/g," "),r=a[t].split("="),i.push([decodeURIComponent(r[0]),decodeURIComponent(r[1])]);return i}(L.extraData);for(t=0;t<a.length;t++)a[t]&&r.append(a[t][0],a[t][1])}L.data=null;var n=O.extend(!0,{},O.ajaxSettings,L,{contentType:!1,processData:!1,cache:!1,type:E||"POST"});L.uploadProgress&&(n.xhr=function(){var e=O.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",function(e){var t=0,r=e.loaded||e.position,a=e.total;e.lengthComputable&&(t=Math.ceil(r/a*100)),L.uploadProgress(e,r,a,t)},!1),e});n.data=null;var i=n.beforeSend;return n.beforeSend=function(e,t){L.formData?t.data=L.formData:t.data=r,i&&i.call(this,e,t)},O.ajax(n)}(i):O.ajax(L),M.removeData("jqxhr").data("jqxhr",h);for(var g=0;g<F.length;g++)F[g]=null;return this.trigger("form-submit-notify",[this,L]),this;function x(e){var t,l,f,i,m,p,d,r,a,h,v,o=M[0],g=O.Deferred();if(g.abort=function(e){d.abort(e)},e)for(t=0;t<F.length;t++)O(F[t]).prop("disabled",!1);if((l=O.extend(!0,{},O.ajaxSettings,L)).context=l.context||l,i="jqFormIO"+(new Date).getTime(),l.iframeTarget?(a=(m=O(l.iframeTarget)).attr2("name"))?i=a:m.attr2("name",i):(m=O('<iframe name="'+i+'" src="'+l.iframeSrc+'" />')).css({position:"absolute",top:"-1000px",left:"-1000px"}),p=m[0],d={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(e){var t="timeout"===e?"timeout":"aborted";X("aborting upload... "+t),this.aborted=1;try{p.contentWindow.document.execCommand&&p.contentWindow.document.execCommand("Stop")}catch(e){}m.attr("src",l.iframeSrc),d.error=t,l.error&&l.error.call(l.context,d,t,e),f&&O.event.trigger("ajaxError",[d,l,t]),l.complete&&l.complete.call(l.context,d,t)}},(f=l.global)&&0==O.active++&&O.event.trigger("ajaxStart"),f&&O.event.trigger("ajaxSend",[d,l]),l.beforeSend&&!1===l.beforeSend.call(l.context,d,l))return l.global&&O.active--,g.reject(),g;if(d.aborted)return g.reject(),g;(r=o.clk)&&(a=r.name)&&!r.disabled&&(l.extraData=l.extraData||{},l.extraData[a]=r.value,"image"==r.type&&(l.extraData[a+".x"]=o.clk_x,l.extraData[a+".y"]=o.clk_y));var x=1,b=2;function y(t){var r=null;try{t.contentWindow&&(r=t.contentWindow.document)}catch(e){X("cannot get iframe.contentWindow document: "+e)}if(r)return r;try{r=t.contentDocument?t.contentDocument:t.document}catch(e){X("cannot get iframe.contentDocument: "+e),r=t.document}return r}var n=O("meta[name=csrf-token]").attr("content"),s=O("meta[name=csrf-param]").attr("content");function u(){var e=M.attr2("target"),t=M.attr2("action"),r=M.attr("enctype")||M.attr("encoding")||"multipart/form-data";o.setAttribute("target",i),E&&!/post/i.test(E)||o.setAttribute("method","POST"),t!=l.url&&o.setAttribute("action",l.url),l.skipEncodingOverride||E&&!/post/i.test(E)||M.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"}),l.timeout&&(v=setTimeout(function(){h=!0,D(x)},l.timeout));var a=[];try{if(l.extraData)for(var n in l.extraData)l.extraData.hasOwnProperty(n)&&(O.isPlainObject(l.extraData[n])&&l.extraData[n].hasOwnProperty("name")&&l.extraData[n].hasOwnProperty("value")?a.push(O('<input type="hidden" name="'+l.extraData[n].name+'">').val(l.extraData[n].value).appendTo(o)[0]):a.push(O('<input type="hidden" name="'+n+'">').val(l.extraData[n]).appendTo(o)[0]));l.iframeTarget||m.appendTo("body"),p.attachEvent?p.attachEvent("onload",D):p.addEventListener("load",D,!1),setTimeout(function e(){try{var t=y(p).readyState;X("state = "+t),t&&"uninitialized"==t.toLowerCase()&&setTimeout(e,50)}catch(e){X("Server abort: ",e," (",e.name,")"),D(b),v&&clearTimeout(v),v=void 0}},15);try{o.submit()}catch(e){document.createElement("form").submit.apply(o)}}finally{o.setAttribute("action",t),o.setAttribute("enctype",r),e?o.setAttribute("target",e):M.removeAttr("target"),O(a).remove()}}s&&n&&(l.extraData=l.extraData||{},l.extraData[s]=n),l.forceSync?u():setTimeout(u,10);var T,j,w,S=50;function D(e){if(!d.aborted&&!w){if((j=y(p))||(X("cannot access response document"),e=b),e===x&&d)return d.abort("timeout"),void g.reject(d,"timeout");if(e==b&&d)return d.abort("server abort"),void g.reject(d,"error","server abort");if(j&&j.location.href!=l.iframeSrc||h){p.detachEvent?p.detachEvent("onload",D):p.removeEventListener("load",D,!1);var t,r="success";try{if(h)throw"timeout";var a="xml"==l.dataType||j.XMLDocument||O.isXMLDoc(j);if(X("isXml="+a),!a&&window.opera&&(null===j.body||!j.body.innerHTML)&&--S)return X("requeing onLoad callback, DOM not available"),void setTimeout(D,250);var n=j.body?j.body:j.documentElement;d.responseText=n?n.innerHTML:null,d.responseXML=j.XMLDocument?j.XMLDocument:j,a&&(l.dataType="xml"),d.getResponseHeader=function(e){return{"content-type":l.dataType}[e.toLowerCase()]},n&&(d.status=Number(n.getAttribute("status"))||d.status,d.statusText=n.getAttribute("statusText")||d.statusText);var i=(l.dataType||"").toLowerCase(),o=/(json|script|text)/.test(i);if(o||l.textarea){var s=j.getElementsByTagName("textarea")[0];if(s)d.responseText=s.value,d.status=Number(s.getAttribute("status"))||d.status,d.statusText=s.getAttribute("statusText")||d.statusText;else if(o){var u=j.getElementsByTagName("pre")[0],c=j.getElementsByTagName("body")[0];u?d.responseText=u.textContent?u.textContent:u.innerText:c&&(d.responseText=c.textContent?c.textContent:c.innerText)}}else"xml"==i&&!d.responseXML&&d.responseText&&(d.responseXML=k(d.responseText));try{T=A(d,i,l)}catch(e){r="parsererror",d.error=t=e||r}}catch(e){X("error caught: ",e),r="error",d.error=t=e||r}d.aborted&&(X("upload aborted"),r=null),d.status&&(r=200<=d.status&&d.status<300||304===d.status?"success":"error"),"success"===r?(l.success&&l.success.call(l.context,T,"success",d),g.resolve(d.responseText,"success",d),f&&O.event.trigger("ajaxSuccess",[d,l])):r&&(void 0===t&&(t=d.statusText),l.error&&l.error.call(l.context,d,r,t),g.reject(d,"error",t),f&&O.event.trigger("ajaxError",[d,l,t])),f&&O.event.trigger("ajaxComplete",[d,l]),f&&!--O.active&&O.event.trigger("ajaxStop"),l.complete&&l.complete.call(l.context,d,r),w=!0,l.timeout&&clearTimeout(v),setTimeout(function(){l.iframeTarget?m.attr("src",l.iframeSrc):m.remove(),d.responseXML=null},100)}}}var k=O.parseXML||function(e,t){return window.ActiveXObject?((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!=t.documentElement.nodeName?t:null},c=O.parseJSON||function(e){return window.eval("("+e+")")},A=function(e,t,r){var a=e.getResponseHeader("content-type")||"",n="xml"===t||!t&&0<=a.indexOf("xml"),i=n?e.responseXML:e.responseText;return n&&"parsererror"===i.documentElement.nodeName&&O.error&&O.error("parsererror"),r&&r.dataFilter&&(i=r.dataFilter(i,t)),"string"==typeof i&&("json"===t||!t&&0<=a.indexOf("json")?i=c(i):("script"===t||!t&&0<=a.indexOf("javascript"))&&O.globalEval(i)),i};return g}},O.fn.ajaxForm=function(e){if((e=e||{}).delegation=e.delegation&&O.isFunction(O.fn.on),e.delegation||0!==this.length)return e.delegation?(O(document).off("submit.form-plugin",this.selector,r).off("click.form-plugin",this.selector,a).on("submit.form-plugin",this.selector,e,r).on("click.form-plugin",this.selector,e,a),this):this.ajaxFormUnbind().bind("submit.form-plugin",e,r).bind("click.form-plugin",e,a);var t={s:this.selector,c:this.context};return!O.isReady&&t.s?(X("DOM not ready, queuing ajaxForm"),O(function(){O(t.s,t.c).ajaxForm(e)})):X("terminating; zero elements found by selector"+(O.isReady?"":" (DOM not ready)")),this},O.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")},O.fn.formToArray=function(e,t){var r=[];if(0===this.length)return r;var a,n,i,o,s,u,c,l,f=this[0],m=this.attr("id"),p=e?f.getElementsByTagName("*"):f.elements;if(p&&!/MSIE [678]/.test(navigator.userAgent)&&(p=O(p).get()),m&&(a=O(':input[form="'+m+'"]').get()).length&&(p=(p||[]).concat(a)),!p||!p.length)return r;for(n=0,c=p.length;n<c;n++)if((o=(u=p[n]).name)&&!u.disabled)if(e&&f.clk&&"image"==u.type)f.clk==u&&(r.push({name:o,value:O(u).val(),type:u.type}),r.push({name:o+".x",value:f.clk_x},{name:o+".y",value:f.clk_y}));else if((s=O.fieldValue(u,!0))&&s.constructor==Array)for(t&&t.push(u),i=0,l=s.length;i<l;i++)r.push({name:o,value:s[i]});else if(b.fileapi&&"file"==u.type){t&&t.push(u);var d=u.files;if(d.length)for(i=0;i<d.length;i++)r.push({name:o,value:d[i],type:u.type});else r.push({name:o,value:"",type:u.type})}else null!=s&&(t&&t.push(u),r.push({name:o,value:s,type:u.type,required:u.required}));if(!e&&f.clk){var h=O(f.clk),v=h[0];(o=v.name)&&!v.disabled&&"image"==v.type&&(r.push({name:o,value:h.val()}),r.push({name:o+".x",value:f.clk_x},{name:o+".y",value:f.clk_y}))}return r},O.fn.formSerialize=function(e){return O.param(this.formToArray(e))},O.fn.fieldSerialize=function(n){var i=[];return this.each(function(){var e=this.name;if(e){var t=O.fieldValue(this,n);if(t&&t.constructor==Array)for(var r=0,a=t.length;r<a;r++)i.push({name:e,value:t[r]});else null!=t&&i.push({name:this.name,value:t})}}),O.param(i)},O.fn.fieldValue=function(e){for(var t=[],r=0,a=this.length;r<a;r++){var n=this[r],i=O.fieldValue(n,e);null==i||i.constructor==Array&&!i.length||(i.constructor==Array?O.merge(t,i):t.push(i))}return t},O.fieldValue=function(e,t){var r=e.name,a=e.type,n=e.tagName.toLowerCase();if(void 0===t&&(t=!0),t&&(!r||e.disabled||"reset"==a||"button"==a||("checkbox"==a||"radio"==a)&&!e.checked||("submit"==a||"image"==a)&&e.form&&e.form.clk!=e||"select"==n&&-1==e.selectedIndex))return null;if("select"!=n)return O(e).val();var i=e.selectedIndex;if(i<0)return null;for(var o=[],s=e.options,u="select-one"==a,c=u?i+1:s.length,l=u?i:0;l<c;l++){var f=s[l];if(f.selected){var m=f.value;if(m||(m=f.attributes&&f.attributes.value&&!f.attributes.value.specified?f.text:f.value),u)return m;o.push(m)}}return o},O.fn.clearForm=function(e){return this.each(function(){O("input,select,textarea",this).clearFields(e)})},O.fn.clearFields=O.fn.clearInputs=function(r){var a=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var e=this.type,t=this.tagName.toLowerCase();a.test(e)||"textarea"==t?this.value="":"checkbox"==e||"radio"==e?this.checked=!1:"select"==t?this.selectedIndex=-1:"file"==e?/MSIE/.test(navigator.userAgent)?O(this).replaceWith(O(this).clone(!0)):O(this).val(""):r&&(!0===r&&/hidden/.test(e)||"string"==typeof r&&O(this).is(r))&&(this.value="")})},O.fn.resetForm=function(){return this.each(function(){("function"==typeof this.reset||"object"==typeof this.reset&&!this.reset.nodeType)&&this.reset()})},O.fn.enable=function(e){return void 0===e&&(e=!0),this.each(function(){this.disabled=!e})},O.fn.selected=function(r){return void 0===r&&(r=!0),this.each(function(){var e=this.type;if("checkbox"==e||"radio"==e)this.checked=r;else if("option"==this.tagName.toLowerCase()){var t=O(this).parent("select");r&&t[0]&&"select-one"==t[0].type&&t.find("option").selected(!1),this.selected=r}})},O.fn.ajaxSubmit.debug=!1});
|
assets/js/um-members.js
CHANGED
@@ -748,19 +748,21 @@ jQuery(document.body).ready( function() {
|
|
748 |
* Sorting
|
749 |
*/
|
750 |
|
751 |
-
jQuery( document.body ).on( 'click', '.um-
|
752 |
-
|
753 |
-
|
754 |
-
if ( um_is_directory_busy( directory ) ) {
|
755 |
return;
|
756 |
}
|
757 |
|
758 |
-
|
|
|
|
|
|
|
759 |
return;
|
760 |
}
|
761 |
|
762 |
um_members_show_preloader( directory );
|
763 |
|
|
|
764 |
var sort = jQuery(this).data('value');
|
765 |
|
766 |
directory.data( 'sorting', sort );
|
@@ -768,9 +770,9 @@ jQuery(document.body).ready( function() {
|
|
768 |
|
769 |
um_ajax_get_members( directory );
|
770 |
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
});
|
775 |
|
776 |
/**
|
748 |
* Sorting
|
749 |
*/
|
750 |
|
751 |
+
jQuery( document.body ).on( 'click', '.um-new-dropdown[data-element=".um-member-directory-sorting-a"] li a', function() {
|
752 |
+
if ( jQuery( this ).data('selected') === 1 ) {
|
|
|
|
|
753 |
return;
|
754 |
}
|
755 |
|
756 |
+
var directory_hash = jQuery(this).data('directory-hash');
|
757 |
+
var directory = jQuery('.um-directory[data-hash="' + directory_hash + '"]');
|
758 |
+
|
759 |
+
if ( um_is_directory_busy( directory ) ) {
|
760 |
return;
|
761 |
}
|
762 |
|
763 |
um_members_show_preloader( directory );
|
764 |
|
765 |
+
var sorting_label = jQuery( this ).html();
|
766 |
var sort = jQuery(this).data('value');
|
767 |
|
768 |
directory.data( 'sorting', sort );
|
770 |
|
771 |
um_ajax_get_members( directory );
|
772 |
|
773 |
+
directory.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find('a').data('selected', 0).prop('data-selected', 0).attr('data-selected', 0);
|
774 |
+
directory.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"] a[data-value="' + sort + '"]').data('selected', 1).prop('data-selected', 1).attr('data-selected', 1);
|
775 |
+
directory.find('.um-member-directory-sorting-a').find('> a').html( sorting_label );
|
776 |
});
|
777 |
|
778 |
/**
|
assets/js/um-members.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var um_members_directory_busy=[],um_member_directories=[],um_member_directory_last_data=[];function um_parse_current_url(){var t={},a=window.location.search.substring(1).split("&");return jQuery.each(a,function(e){var r=a[e].split("=");t[r[0]]=r[1]}),t}function um_get_data_for_directory(e,r){var t=um_members_get_hash(e),a={},i=um_parse_current_url();if(jQuery.each(i,function(e){-1!==e.indexOf("_"+t)&&""!==i[e]&&(a[e.replace("_"+t,"")]=i[e])}),r){if(void 0!==a[r])try{a[r]=decodeURIComponent(a[r])}catch(e){console.error(e)}return a[r]}return a}function um_set_url_from_data(e,r,t){var a=um_members_get_hash(e),i=um_get_data_for_directory(e),m={};Array.isArray(t)?(jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")):jQuery.isNumeric(t)||(t=t.split("||"),jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")),""!==t&&(m[r+"_"+a]=t),jQuery.each(i,function(e){r===e?""!==t&&(m[e+"_"+a]=t):m[e+"_"+a]=i[e]}),jQuery.each(um_member_directories,function(e){var r=um_member_directories[e];if(r!==a){var t=um_get_data_for_directory(jQuery('.um-directory[data-hash="'+r+'"]'));jQuery.each(t,function(e){m[e+"_"+r]=t[e]})}});var d=[];jQuery.each(m,function(e){d.push(e+"="+m[e])});var s="?"+(d=wp.hooks.applyFilters("um_member_directory_url_attrs",d)).join("&");"?"===s&&(s=""),window.history.pushState("string","UM Member Directory",window.location.origin+window.location.pathname+s)}function um_members_get_hash(e){return e.data("hash")}function um_is_directory_busy(e){var r=um_members_get_hash(e);return void 0!==um_members_directory_busy[r]&&um_members_directory_busy[r]}function um_members_show_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!0,e.find(".um-members-overlay").show()}function um_members_hide_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!1,e.find(".um-members-overlay").hide()}function um_set_range_label(e,r){var t="",a=e.siblings(".um-slider-range").data("placeholder-s"),i=e.siblings(".um-slider-range").data("placeholder-p");t=r?r.values[0]===r.values[1]?a.replace("{value}",r.values[0]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):i.replace("{min_range}",r.values[0]).replace("{max_range}",r.values[1]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):e.slider("values",0)===e.slider("values",1)?a.replace("{value}",e.slider("values",0)).replace("{field_label}",e.siblings(".um-slider-range").data("label")):i.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1)).replace("{field_label}",e.siblings(".um-slider-range").data("label")),e.siblings(".um-slider-range").html(t),e.siblings(".um_range_min").val(e.slider("values",0)),e.siblings(".um_range_max").val(e.slider("values",1))}function um_get_search(e){return e.find(".um-search-line").length?e.find(".um-search-line").val():""}function um_get_sort(e){return e.data("sorting")}function um_get_current_page(e){var r=e.data("page");return r&&void 0!==r||(r=1),r}function um_time_convert(e,r){var t=Math.floor(e/60),a=e%60;return 60<=a&&(a=0,24<=(t+=1)&&(t=0)),a<10&&(a="0"+a),t+":"+a}function um_ajax_get_members(u,e){var t=um_members_get_hash(u);if(wp.hooks.applyFilters("um_member_directory_get_members_allow",!0,t,u)){var r=um_get_current_page(u),a=um_get_search(u),i=um_get_sort(u),m=-(new Date).getTimezoneOffset()/60,_={directory_id:t,page:r,search:a,sorting:i,gmt_offset:m,post_refferer:u.data("base-post"),nonce:um_scripts.nonce};u.find(".um-search-filter").length&&u.find(".um-search-filter").each(function(){var e=jQuery(this);if(e.find(".um-slider").length){var r=e.find(".um-slider").data("field_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-datepicker-filter").length){r=e.find(".um-datepicker-filter").data("filter_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-timepicker-filter").length){r=e.find(".um-timepicker-filter").data("filter_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");if(void 0!==t)(i=1*(t=t.split(":"))[0])<10&&(i="0"+i),(d=1*t[1])<10&&(d="0"+d),t=i+":"+d+":00";if(void 0!==a){var i,m=a.split(":"),d=1*m[1];(i=1*m[0])<10&&(i="0"+i),d<10&&(d="0"+d),a=i+":"+d+":59"}void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find("select").length){r=e.find("select").attr("name");void 0!==(s=um_get_data_for_directory(u,"filter_"+r))&&(_[r]=s.split("||"))}else if(e.hasClass("um-text-filter-type")&&e.find('input[type="text"]').length){var s;r=e.find('input[type="text"]').attr("name");void 0!==(s=um_get_data_for_directory(u,"filter_"+r))&&(_[r]=s)}else _=wp.hooks.applyFilters("um_member_directory_custom_filter_handler",_,e,u)}),_=wp.hooks.applyFilters("um_member_directory_filter_request",_),wp.ajax.send("um_get_members",{data:_,success:function(e){um_member_directory_last_data[t]=e,um_build_template(u,e);var r=wp.template("um-members-pagination");u.find(".um-members-pagination-box").html(r(e)),u.data("total_pages",e.pagination.total_pages),e.pagination.total_pages?(u.find(".um-member-directory-sorting-options").prop("disabled",!1),u.find(".um-member-directory-view-type").removeClass("um-disabled")):(u.find(".um-member-directory-sorting-options").prop("disabled",!0),u.find(".um-member-directory-view-type").addClass("um-disabled")),wp.hooks.doAction("um_member_directory_loaded",u,e),um_init_new_dropdown(),um_members_hide_preloader(u)},error:function(e){console.log(e),um_members_hide_preloader(u)}})}else setTimeout(um_ajax_get_members,600,u,e)}function um_build_template(e,r){var t=e.data("view_type"),a=wp.template("um-member-"+t+"-"+um_members_get_hash(e));e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-members-wrapper").prepend(a(r.users));var i=wp.template("um-members-header");e.find(".um-members-intro").remove();var m=wp.hooks.applyFilters("um_member_directory_generate_header",!1,e);(void 0!==r.is_search&&r.is_search||m)&&e.find(".um-members-wrapper").prepend(i(r)),e.addClass("um-loaded"),e.find(".um-members.um-members-grid").length&&UM_Member_Grid(e.find(".um-members.um-members-grid")),jQuery(document).trigger("um_build_template",[e,r]),jQuery(window).trigger("resize"),init_tipsy()}function UM_Member_Grid(r){r.find(".um-member").length&&r.imagesLoaded(function(){var e=wp.hooks.applyFilters("um_member_directory_grid_masonry_attrs",{itemSelector:".um-member",columnWidth:".um-member",gutter:".um-gutter-sizer"},r);r.masonry(e).on("layoutComplete",function(e,r){jQuery(document).trigger("um_grid_initialized",[e,r])})})}function um_get_filters_data(u){var _=[];return u.find(".um-search-filter").each(function(){var t,a,d,i=jQuery(this);if(i.find("input.um-datepicker-filter").length)d="datepicker",i.find("input.um-datepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(u,"filter_"+e+"_from"),t=um_get_data_for_directory(u,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=u.find('input.um-datepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("input.um-timepicker-filter").length)d="timepicker",i.find("input.um-timepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(u,"filter_"+e+"_from"),t=um_get_data_for_directory(u,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=u.find('input.um-timepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("select").length){d="select",t=i.find("select").attr("name"),a=i.find("select").data("placeholder"),m=void 0===(m=um_get_data_for_directory(u,"filter_"+t))?[]:m.split("||"),jQuery.each(m,function(e){var r=i.find('select option[value="'+m[e]+'"]').data("value_label");_.push({name:t,label:a,value_label:r,value:m[e],type:d})})}else if(i.hasClass("um-text-filter-type")&&i.find('input[type="text"]').length){var m;d="text",t=i.find('input[type="text"]').attr("name"),a=i.find('input[type="text"]').attr("placeholder"),void 0===(m=um_get_data_for_directory(u,"filter_"+t))&&(m=""),""!=m&&_.push({name:t,label:a,value_label:m,value:m,type:d})}else if(i.find("div.ui-slider").length){d="slider",t=i.find("div.ui-slider").data("field_name");var e,r=um_get_data_for_directory(u,"filter_"+t+"_from"),s=um_get_data_for_directory(u,"filter_"+t+"_to");if(void 0===r&&void 0===s)return;e=r===s?i.find("div.um-slider-range").data("placeholder-s").replace("{value}",r).replace("{field_label}",i.find("div.um-slider-range").data("label")):i.find("div.um-slider-range").data("placeholder-p").replace("{min_range}",r).replace("{max_range}",s).replace("{field_label}",i.find("div.um-slider-range").data("label")),a=i.find("div.um-slider-range").data("label"),_.push({name:t,label:a,value_label:e,value:[r,s],type:d})}else _=wp.hooks.applyFilters("um_member_directory_get_filter_data",_,u,i)}),_}function um_change_tag(e){var r=um_get_filters_data(e);e.find(".um-members-filter-tag").remove();var t=e.find(".um-filtered-line");if(t.length){var a=wp.template("um-members-filtered-line");t.prepend(a({filters:r})),0===e.find(".um-members-filter-remove").length?(e.find(".um-clear-filters").hide(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(e.find(".um-clear-filters").show(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"))}}function um_run_search(e){if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=um_get_data_for_directory(e,"search"),t=e.find(".um-search-line").val();if(t===r||""===t&&void 0===r)um_members_hide_preloader(e);else{e.data("general_search",t),um_set_url_from_data(e,"search",t),e.data("page",1),um_set_url_from_data(e,"page","");var a=!1;if(!(a=wp.hooks.applyFilters("um_member_directory_ignore_after_search",a,e)))if(1===e.data("must-search")&&(t=um_get_search(e),0===e.find(".um-members-filter-remove").length&&!t))return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e);e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}}jQuery(document.body).ready(function(){jQuery(".um-directory .um-search-filter select").each(function(){1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0);var e=jQuery(this);e.select2("destroy").select2({dropdownParent:e.parent()})}),jQuery(document.body).on("mouseover",".um-directory .um-member-directory-view-type",function(){if(!jQuery(this).hasClass("um-disabled")){var e=jQuery(this).find(".um-member-directory-view-type-a:visible");e.hide(),e.next().length?e.next().show().tipsy("show"):jQuery(this).find(".um-member-directory-view-type-a:first").show().tipsy("show")}}).on("mouseout",".um-directory .um-member-directory-view-type",function(){jQuery(this).hasClass("um-disabled")||(jQuery(this).find(".um-member-directory-view-type-a").hide().tipsy("hide"),jQuery(this).find('.um-member-directory-view-type-a[data-type="'+jQuery(this).parents(".um-directory").data("view_type")+'"]').show())}),jQuery(document.body).on("click",".um-directory .um-member-directory-view-type-a",function(){var e=jQuery(this).parents(".um-directory");if(um_is_directory_busy(e))return!1;var r=jQuery(this),t=r.parents(".um-member-directory-view-type");if(!t.hasClass("um-disabled")){um_members_show_preloader(e);var a=t.find(".um-member-directory-view-type-a:visible");a.hide(),a.next().length?a.next().show().tipsy("show"):t.find(".um-member-directory-view-type-a:first").show().tipsy("show");var i=um_member_directory_last_data[um_members_get_hash(e)];if(null!==i){var m=r.data("type");um_set_url_from_data(e,"view_type",m),e.data("view_type",m),um_build_template(e,i),um_init_new_dropdown()}um_members_hide_preloader(e)}}),jQuery(document.body).on("click",".um-directory .um-do-search",function(){um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("keypress",".um-directory .um-search-line",function(e){13===e.which&&um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("click",".um-directory .um-member-directory-sorting-a .um-new-dropdown li a",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&1!==jQuery(this).data("selected")){um_members_show_preloader(e);var r=jQuery(this).data("value");e.data("sorting",r),um_set_url_from_data(e,"sort",r),um_ajax_get_members(e),jQuery(this).parents(".um-new-dropdown").find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),jQuery(this).data("selected",1).prop("data-selected",1).attr("data-selected",1),jQuery(this).parents(".um-member-directory-sorting-a").find("> a").html(jQuery(this).html())}}),jQuery(document.body).on("click",".um-directory .pagi:not(.current)",function(){if(!jQuery(this).hasClass("disabled")){var e,r=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(r))um_members_show_preloader(r),1===(e="first"===jQuery(this).data("page")?1:"prev"===jQuery(this).data("page")?1*r.data("page")-1:"next"===jQuery(this).data("page")?1*r.data("page")+1:"last"===jQuery(this).data("page")?parseInt(r.data("total_pages")):parseInt(jQuery(this).data("page")))?(r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').addClass("disabled"),r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled")):(e===parseInt(r.data("total_pages"))?r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').addClass("disabled"):r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled"),r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').removeClass("disabled")),r.find(".pagi").removeClass("current"),r.find('.pagi[data-page="'+e+'"]').addClass("current"),r.data("page",e),um_set_url_from_data(r,"page",1===e?"":e),um_ajax_get_members(r)}}),jQuery(document.body).on("change",".um-directory .um-members-pagi-dropdown",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).val();e.find(".pagi").removeClass("current"),e.find('.pagi[data-page="'+r+'"]').addClass("current"),e.data("page",r),um_set_url_from_data(e,"page",1===r?"":r),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-more").hide(),r.find(".um-member-meta-main").slideDown(),r.find(".um-member-less").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-less").hide(),r.find(".um-member-meta-main").slideUp(),r.find(".um-member-more").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-more").hide(),r.find(".um-member-meta").slideDown(function(){UM_Member_Grid(t)}),r.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(t)},100),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-less").hide(),r.find(".um-member-meta").slideUp(function(){r.find(".um-member-more").fadeIn(),UM_Member_Grid(t)}),!1}),jQuery(".um-member-directory-filters-a").on("click",function(){var e=jQuery(this),r=e.parents(".um-directory").find(".um-search");r.is(":visible")?r.slideUp(250,function(){e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}):r.slideDown({duration:250,start:function(){jQuery(this).css({display:"grid"}),e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}})}),jQuery(document.body).on("change",".um-directory .um-search-filter select",function(){if(""!==jQuery(this).val()){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).prop("name"),t=um_get_data_for_directory(e,"filter_"+r);t=void 0===t?[]:t.split("||"),-1===jQuery.inArray(jQuery(this).val(),t)&&(t.push(jQuery(this).val()),um_set_url_from_data(e,"filter_"+r,t=t.join("||")),e.data("page",1),um_set_url_from_data(e,"page","")),jQuery(this).find('option[value="'+jQuery(this).val()+'"]').prop("disabled",!0).hide(),1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0);var a=jQuery(this);a.select2("destroy").select2({dropdownParent:a.parent()}),a.val("").trigger("change"),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled")}}}),jQuery(document.body).on("blur",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){var r=jQuery(this).val(),t=jQuery(this).prop("name"),a=um_get_data_for_directory(e,"filter_"+t);void 0===a&&(a=""),r!==a&&(um_members_show_preloader(e),um_set_url_from_data(e,"filter_"+t,r),e.data("page",1),um_set_url_from_data(e,"page",""),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),jQuery(document.body).on("keypress",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(e){if(13===e.which){var r=jQuery(this).parents(".um-directory");if(um_is_directory_busy(r))return;var t=jQuery(this).val(),a=jQuery(this).prop("name"),i=um_get_data_for_directory(r,"filter_"+a);if(void 0===i&&(i=""),t===i)return;um_members_show_preloader(r),um_set_url_from_data(r,"filter_"+a,t),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}),jQuery(document.body).on("click",".um-directory .um-members-filter-remove",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&e){um_members_show_preloader(e);var r=jQuery(this).data("value"),t=jQuery(this).data("name"),a=jQuery(this).data("type");if("text"===a)um_set_url_from_data(e,"filter_"+t,""),jQuery('.um-search-filter input[name="'+t+'"]').val("");else if("select"===a){var i=um_get_data_for_directory(e,"filter_"+t);i=void 0===i?[]:i.split("||"),-1!==jQuery.inArray(r.toString(),i)&&(i=jQuery.grep(i,function(e){return e!==r.toString()})),i.length||(i=""),um_set_url_from_data(e,"filter_"+t,i);var m=jQuery('.um-search-filter select[name="'+t+'"]');m.find('option[value="'+r+'"]').prop("disabled",!1).show(),1<m.find("option:not(:disabled)").length&&m.prop("disabled",!1),m.select2("destroy").select2({dropdownParent:m.parent()}),0<e.find('.um-search-filter select[data-um-parent="'+t+'"]').length&&m.trigger("change")}else if("slider"===a){um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to","");var d=jQuery(".um-search-filter #"+t+"_min").siblings(".um-slider"),s=d.slider("option");d.slider("values",[s.min,s.max]),jQuery(".um-search-filter #"+t+"_min").val(""),jQuery(".um-search-filter #"+t+"_max").val(""),um_set_range_label(d)}else"datepicker"===a?(um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to",""),jQuery(".um-search-filter #"+t+"_from").val(""),jQuery(".um-search-filter #"+t+"_to").val("")):"timepicker"===a?(um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to",""),jQuery(".um-search-filter #"+t+"_from").val(""),jQuery(".um-search-filter #"+t+"_to").val("")):wp.hooks.doAction("um_member_directory_filter_remove",a,e,t,r);e.data("page",1),um_set_url_from_data(e,"page",""),jQuery(this).tipsy("hide"),jQuery(this).parents(".um-members-filter-tag").remove(),0===e.find(".um-members-filter-remove").length?e.find(".um-clear-filters").hide():e.find(".um-clear-filters").show();var u=!1;if(!(u=wp.hooks.applyFilters("um_member_directory_ignore_after_search",u,e)))if(1===e.data("must-search")){var _=um_get_search(e);if(0===e.find(".um-members-filter-remove").length&&!_)return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e)}e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-clear-filters-a",function(){var s=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(s)){um_members_show_preloader(s),s.find(".um-members-filter-remove").each(function(){var r=jQuery(this).data("value"),e=jQuery(this).data("name"),t=jQuery(this).data("type");if("text"===t)um_set_url_from_data(s,"filter_"+e,""),jQuery('.um-search-filter input[name="'+e+'"]').val("");else if("select"===t){var a=um_get_data_for_directory(s,"filter_"+e);a=void 0===a?[]:a.split("||"),-1!==jQuery.inArray(r.toString(),a)&&(a=jQuery.grep(a,function(e){return e!==r.toString()})),a.length||(a=""),um_set_url_from_data(s,"filter_"+e,a);var i=jQuery('.um-search-filter select[name="'+e+'"]');i.find('option[value="'+r+'"]').prop("disabled",!1).show(),1<i.find("option:not(:disabled)").length&&i.prop("disabled",!1),i.select2("destroy").select2({dropdownParent:i.parent()}),0<s.find('.um-search-filter select[data-um-parent="'+e+'"]').length&&i.trigger("change")}else if("slider"===t){um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to","");var m=jQuery(".um-search-filter #"+e+"_min").siblings(".um-slider"),d=m.slider("option");m.slider("values",[d.min,d.max]),jQuery(".um-search-filter #"+e+"_min").val(""),jQuery(".um-search-filter #"+e+"_max").val(""),um_set_range_label(m)}else"datepicker"===t?(um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to",""),jQuery(".um-search-filter #"+e+"_from").val(""),jQuery(".um-search-filter #"+e+"_to").val("")):"timepicker"===t?(um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to",""),jQuery(".um-search-filter #"+e+"_from").val(""),jQuery(".um-search-filter #"+e+"_to").val("")):wp.hooks.doAction("um_member_directory_clear_filters",t,s,e,r)}),s.data("page",1),um_set_url_from_data(s,"page",""),s.find(".um-members-filter-tag").remove(),0===s.find(".um-members-filter-remove").length?(s.find(".um-clear-filters").hide(),s.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(s.find(".um-clear-filters").show(),s.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"));var e=!1;if(!(e=wp.hooks.applyFilters("um_member_directory_ignore_after_search",e,s)))if(1===s.data("must-search"))if(!um_get_search(s))return s.data("searched",0),s.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),s.find(".um-member-directory-sorting-options").prop("disabled",!0),s.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",s),void um_members_hide_preloader(s);s.find(".um-member-directory-sorting-options").prop("disabled",!1),s.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(s)}}),wp.hooks.doAction("um_member_directory_on_first_pages_loading"),jQuery(".um-directory").each(function(){var e=jQuery(this),r=um_members_get_hash(e);um_member_directories.push(r),e.find(".um-search").length&&(e.find(".um-search").is(":visible")||e.find(".um-search").css({display:"grid"}).slideUp(1)),e.find(".um-slider").each(function(){var e=jQuery(this),t=e.parents(".um-directory"),a=e.data("field_name"),r=um_get_data_for_directory(t,"filter_"+a+"_from"),i=um_get_data_for_directory(t,"filter_"+a+"_to");void 0===r&&(r=parseInt(e.data("min"))),void 0===i&&(i=parseInt(e.data("max")));var m=[r,i];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:m,create:function(e,r){},step:1,slide:function(e,r){um_set_range_label(jQuery(this),r)},stop:function(e,r){um_is_directory_busy(t)||(um_members_show_preloader(t),um_set_url_from_data(t,"filter_"+a+"_from",r.values[0]),um_set_url_from_data(t,"filter_"+a+"_to",r.values[1]),t.data("page",1),um_set_url_from_data(t,"page",""),um_ajax_get_members(t),um_change_tag(t),t.data("searched",1),t.find(".um-member-directory-sorting-options").prop("disabled",!1),t.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),um_set_range_label(e)}),e.find(".um-datepicker-filter").each(function(){var s=jQuery(this),u=new Date(1e3*s.data("date_min")),_=new Date(1e3*s.data("date_max")),e=s.pickadate({selectYears:!0,min:u,max:_,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){s.blur()},onClose:function(){s.blur()},onSet:function(e){if(e.select){var r=s.parents(".um-directory");if(!um_is_directory_busy(r)){um_members_show_preloader(r);var t=s.data("filter_name"),a=s.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to");void 0===i&&(i=u/1e3),void 0===m&&(m=_/1e3);var d=e.select/1e3;s.val();"from"===a?i=d:"to"===a&&(m=d),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}}}).pickadate("picker"),r=s.data("filter_name"),t=s.data("range"),a=um_get_data_for_directory(s.parents(".um-directory"),"filter_"+r+"_"+t);void 0!==a&&e.set("select",1e3*a)}),e.find(".um-timepicker-filter").each(function(){var u=jQuery(this),_=u.attr("id"),o=u.data("filter_name"),n=u.attr("data-min"),l=u.attr("data-max"),e=n.split(":"),r=l.split(":"),t=u.pickatime({format:u.data("format"),interval:parseInt(u.data("intervals")),min:[e[0],e[1]],max:[r[0],r[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){u.blur()},onClose:function(){u.blur()},onSet:function(e){if(e.select){var r=u.parents(".um-directory");if(!um_is_directory_busy(r)){um_members_show_preloader(r);var t=u.data("filter_name"),a=u.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to");if(void 0===i&&(i=n),void 0===m&&(m=l),void 0!==e.select){var d=um_time_convert(e.select,a);"from"===a?i=d:"to"===a&&(m=d)}else"from"===a?i=n:"to"===a&&(m=l);var s=jQuery("#"+_).val();"from"===u.data("range")?jQuery("#"+o+"_to").pickatime("picker").set("min",s):jQuery("#"+o+"_from").pickatime("picker").set("max",s),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}}}).pickatime("picker"),a=u.data("filter_name"),i=u.data("range"),m=um_get_data_for_directory(u.parents(".um-directory"),"filter_"+a+"_"+i);if(void 0!==m){var d=m.split(":");t.set("select",60*d[0]+1*d[1])}}),wp.hooks.doAction("um_member_directory_on_init",e,r);var t=!1;if(!(t=wp.hooks.applyFilters("um_member_directory_ignore_after_search",t,e))&&1===e.data("must-search")){var a=um_get_search(e);if(!um_get_filters_data(e).length&&!a)return}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,e,r)||(um_members_show_preloader(e),um_ajax_get_members(e,{first_load:!0}),um_change_tag(e))}),window.addEventListener("popstate",function(e){jQuery(".um-directory").each(function(){var d=jQuery(this),e=um_members_get_hash(d);(um_member_directories.push(e),um_members_show_preloader(d),d.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),d.find(".um-member-directory-search-line").length)&&(void 0===(s=um_get_data_for_directory(d,"search"))&&(s=""),d.data("general_search",s),d.find(".um-search-line").val(s));var r=um_get_data_for_directory(d,"page");if(void 0===r?r=1:r>d.data("total_pages")&&(r=d.data("total_pages")),d.data("page",r).attr("data-page",r),d.find(".um-member-directory-sorting").length){var t=um_get_data_for_directory(d,"sort");void 0===t&&(t=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find('a[data-default="1"]').data("value")),d.data("sorting",t);var a=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]');a.find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),a.find('a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),d.find(".um-member-directory-sorting-a").find("> a").html(a.find('a[data-value="'+t+'"]').html())}if(d.find(".um-member-directory-view-type").length){var i=um_get_data_for_directory(d,"view_type");void 0===i&&(i=d.find('.um-member-directory-view-type-a[data-default="1"]').data("type")),d.data("view_type",i),d.find(".um-member-directory-view-type .um-member-directory-view-type-a").hide(),d.find('.um-member-directory-view-type .um-member-directory-view-type-a[data-type="'+i+'"]').show()}d.find(".um-datepicker-filter").each(function(){var e=jQuery(this),r=e.pickadate("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);void 0!==i?r.set("select",1e3*i):r.clear()}),d.find(".um-slider").each(function(){var e=jQuery(this),r=e.data("field_name"),t=um_get_data_for_directory(d,"filter_"+r+"_from"),a=um_get_data_for_directory(d,"filter_"+r+"_to");void 0===t&&(t=e.data("min")),t=parseInt(t),void 0===a&&(a=e.data("max")),a=parseInt(a),e.slider("values",[t,a]),um_set_range_label(e)}),d.find(".um-timepicker-filter").each(function(){var e=jQuery(this),r=e.pickatime("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);if(void 0!==i){var m=i.split(":");r.set("select",60*m[0])}else r.clear()});var m=!1;if(!(m=wp.hooks.applyFilters("um_member_directory_ignore_after_search",m,d))&&1===d.data("must-search")){var s=um_get_search(d);if(!um_get_filters_data(d).length&&!s)return d.data("searched",0),void um_members_hide_preloader(d);d.data("searched",1)}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,d,e)||(um_ajax_get_members(d),um_change_tag(d))})})});
|
1 |
+
var um_members_directory_busy=[],um_member_directories=[],um_member_directory_last_data=[];function um_parse_current_url(){var t={},a=window.location.search.substring(1).split("&");return jQuery.each(a,function(e){var r=a[e].split("=");t[r[0]]=r[1]}),t}function um_get_data_for_directory(e,r){var t=um_members_get_hash(e),a={},i=um_parse_current_url();if(jQuery.each(i,function(e){-1!==e.indexOf("_"+t)&&""!==i[e]&&(a[e.replace("_"+t,"")]=i[e])}),r){if(void 0!==a[r])try{a[r]=decodeURIComponent(a[r])}catch(e){console.error(e)}return a[r]}return a}function um_set_url_from_data(e,r,t){var a=um_members_get_hash(e),i=um_get_data_for_directory(e),m={};Array.isArray(t)?(jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")):jQuery.isNumeric(t)||(t=t.split("||"),jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")),""!==t&&(m[r+"_"+a]=t),jQuery.each(i,function(e){r===e?""!==t&&(m[e+"_"+a]=t):m[e+"_"+a]=i[e]}),jQuery.each(um_member_directories,function(e){var r=um_member_directories[e];if(r!==a){var t=um_get_data_for_directory(jQuery('.um-directory[data-hash="'+r+'"]'));jQuery.each(t,function(e){m[e+"_"+r]=t[e]})}});var d=[];jQuery.each(m,function(e){d.push(e+"="+m[e])});var s="?"+(d=wp.hooks.applyFilters("um_member_directory_url_attrs",d)).join("&");"?"===s&&(s=""),window.history.pushState("string","UM Member Directory",window.location.origin+window.location.pathname+s)}function um_members_get_hash(e){return e.data("hash")}function um_is_directory_busy(e){var r=um_members_get_hash(e);return void 0!==um_members_directory_busy[r]&&um_members_directory_busy[r]}function um_members_show_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!0,e.find(".um-members-overlay").show()}function um_members_hide_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!1,e.find(".um-members-overlay").hide()}function um_set_range_label(e,r){var t="",a=e.siblings(".um-slider-range").data("placeholder-s"),i=e.siblings(".um-slider-range").data("placeholder-p");t=r?r.values[0]===r.values[1]?a.replace("{value}",r.values[0]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):i.replace("{min_range}",r.values[0]).replace("{max_range}",r.values[1]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):e.slider("values",0)===e.slider("values",1)?a.replace("{value}",e.slider("values",0)).replace("{field_label}",e.siblings(".um-slider-range").data("label")):i.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1)).replace("{field_label}",e.siblings(".um-slider-range").data("label")),e.siblings(".um-slider-range").html(t),e.siblings(".um_range_min").val(e.slider("values",0)),e.siblings(".um_range_max").val(e.slider("values",1))}function um_get_search(e){return e.find(".um-search-line").length?e.find(".um-search-line").val():""}function um_get_sort(e){return e.data("sorting")}function um_get_current_page(e){var r=e.data("page");return r&&void 0!==r||(r=1),r}function um_time_convert(e,r){var t=Math.floor(e/60),a=e%60;return 60<=a&&(a=0,24<=(t+=1)&&(t=0)),a<10&&(a="0"+a),t+":"+a}function um_ajax_get_members(u,e){var t=um_members_get_hash(u);if(wp.hooks.applyFilters("um_member_directory_get_members_allow",!0,t,u)){var r=um_get_current_page(u),a=um_get_search(u),i=um_get_sort(u),m=-(new Date).getTimezoneOffset()/60,_={directory_id:t,page:r,search:a,sorting:i,gmt_offset:m,post_refferer:u.data("base-post"),nonce:um_scripts.nonce};u.find(".um-search-filter").length&&u.find(".um-search-filter").each(function(){var e=jQuery(this);if(e.find(".um-slider").length){var r=e.find(".um-slider").data("field_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-datepicker-filter").length){r=e.find(".um-datepicker-filter").data("filter_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-timepicker-filter").length){r=e.find(".um-timepicker-filter").data("filter_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");if(void 0!==t)(i=1*(t=t.split(":"))[0])<10&&(i="0"+i),(d=1*t[1])<10&&(d="0"+d),t=i+":"+d+":00";if(void 0!==a){var i,m=a.split(":"),d=1*m[1];(i=1*m[0])<10&&(i="0"+i),d<10&&(d="0"+d),a=i+":"+d+":59"}void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find("select").length){r=e.find("select").attr("name");void 0!==(s=um_get_data_for_directory(u,"filter_"+r))&&(_[r]=s.split("||"))}else if(e.hasClass("um-text-filter-type")&&e.find('input[type="text"]').length){var s;r=e.find('input[type="text"]').attr("name");void 0!==(s=um_get_data_for_directory(u,"filter_"+r))&&(_[r]=s)}else _=wp.hooks.applyFilters("um_member_directory_custom_filter_handler",_,e,u)}),_=wp.hooks.applyFilters("um_member_directory_filter_request",_),wp.ajax.send("um_get_members",{data:_,success:function(e){um_member_directory_last_data[t]=e,um_build_template(u,e);var r=wp.template("um-members-pagination");u.find(".um-members-pagination-box").html(r(e)),u.data("total_pages",e.pagination.total_pages),e.pagination.total_pages?(u.find(".um-member-directory-sorting-options").prop("disabled",!1),u.find(".um-member-directory-view-type").removeClass("um-disabled")):(u.find(".um-member-directory-sorting-options").prop("disabled",!0),u.find(".um-member-directory-view-type").addClass("um-disabled")),wp.hooks.doAction("um_member_directory_loaded",u,e),um_init_new_dropdown(),um_members_hide_preloader(u)},error:function(e){console.log(e),um_members_hide_preloader(u)}})}else setTimeout(um_ajax_get_members,600,u,e)}function um_build_template(e,r){var t=e.data("view_type"),a=wp.template("um-member-"+t+"-"+um_members_get_hash(e));e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-members-wrapper").prepend(a(r.users));var i=wp.template("um-members-header");e.find(".um-members-intro").remove();var m=wp.hooks.applyFilters("um_member_directory_generate_header",!1,e);(void 0!==r.is_search&&r.is_search||m)&&e.find(".um-members-wrapper").prepend(i(r)),e.addClass("um-loaded"),e.find(".um-members.um-members-grid").length&&UM_Member_Grid(e.find(".um-members.um-members-grid")),jQuery(document).trigger("um_build_template",[e,r]),jQuery(window).trigger("resize"),init_tipsy()}function UM_Member_Grid(r){r.find(".um-member").length&&r.imagesLoaded(function(){var e=wp.hooks.applyFilters("um_member_directory_grid_masonry_attrs",{itemSelector:".um-member",columnWidth:".um-member",gutter:".um-gutter-sizer"},r);r.masonry(e).on("layoutComplete",function(e,r){jQuery(document).trigger("um_grid_initialized",[e,r])})})}function um_get_filters_data(u){var _=[];return u.find(".um-search-filter").each(function(){var t,a,d,i=jQuery(this);if(i.find("input.um-datepicker-filter").length)d="datepicker",i.find("input.um-datepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(u,"filter_"+e+"_from"),t=um_get_data_for_directory(u,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=u.find('input.um-datepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("input.um-timepicker-filter").length)d="timepicker",i.find("input.um-timepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(u,"filter_"+e+"_from"),t=um_get_data_for_directory(u,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=u.find('input.um-timepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("select").length){d="select",t=i.find("select").attr("name"),a=i.find("select").data("placeholder"),m=void 0===(m=um_get_data_for_directory(u,"filter_"+t))?[]:m.split("||"),jQuery.each(m,function(e){var r=i.find('select option[value="'+m[e]+'"]').data("value_label");_.push({name:t,label:a,value_label:r,value:m[e],type:d})})}else if(i.hasClass("um-text-filter-type")&&i.find('input[type="text"]').length){var m;d="text",t=i.find('input[type="text"]').attr("name"),a=i.find('input[type="text"]').attr("placeholder"),void 0===(m=um_get_data_for_directory(u,"filter_"+t))&&(m=""),""!=m&&_.push({name:t,label:a,value_label:m,value:m,type:d})}else if(i.find("div.ui-slider").length){d="slider",t=i.find("div.ui-slider").data("field_name");var e,r=um_get_data_for_directory(u,"filter_"+t+"_from"),s=um_get_data_for_directory(u,"filter_"+t+"_to");if(void 0===r&&void 0===s)return;e=r===s?i.find("div.um-slider-range").data("placeholder-s").replace("{value}",r).replace("{field_label}",i.find("div.um-slider-range").data("label")):i.find("div.um-slider-range").data("placeholder-p").replace("{min_range}",r).replace("{max_range}",s).replace("{field_label}",i.find("div.um-slider-range").data("label")),a=i.find("div.um-slider-range").data("label"),_.push({name:t,label:a,value_label:e,value:[r,s],type:d})}else _=wp.hooks.applyFilters("um_member_directory_get_filter_data",_,u,i)}),_}function um_change_tag(e){var r=um_get_filters_data(e);e.find(".um-members-filter-tag").remove();var t=e.find(".um-filtered-line");if(t.length){var a=wp.template("um-members-filtered-line");t.prepend(a({filters:r})),0===e.find(".um-members-filter-remove").length?(e.find(".um-clear-filters").hide(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(e.find(".um-clear-filters").show(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"))}}function um_run_search(e){if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=um_get_data_for_directory(e,"search"),t=e.find(".um-search-line").val();if(t===r||""===t&&void 0===r)um_members_hide_preloader(e);else{e.data("general_search",t),um_set_url_from_data(e,"search",t),e.data("page",1),um_set_url_from_data(e,"page","");var a=!1;if(!(a=wp.hooks.applyFilters("um_member_directory_ignore_after_search",a,e)))if(1===e.data("must-search")&&(t=um_get_search(e),0===e.find(".um-members-filter-remove").length&&!t))return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e);e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}}jQuery(document.body).ready(function(){jQuery(".um-directory .um-search-filter select").each(function(){1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0);var e=jQuery(this);e.select2("destroy").select2({dropdownParent:e.parent()})}),jQuery(document.body).on("mouseover",".um-directory .um-member-directory-view-type",function(){if(!jQuery(this).hasClass("um-disabled")){var e=jQuery(this).find(".um-member-directory-view-type-a:visible");e.hide(),e.next().length?e.next().show().tipsy("show"):jQuery(this).find(".um-member-directory-view-type-a:first").show().tipsy("show")}}).on("mouseout",".um-directory .um-member-directory-view-type",function(){jQuery(this).hasClass("um-disabled")||(jQuery(this).find(".um-member-directory-view-type-a").hide().tipsy("hide"),jQuery(this).find('.um-member-directory-view-type-a[data-type="'+jQuery(this).parents(".um-directory").data("view_type")+'"]').show())}),jQuery(document.body).on("click",".um-directory .um-member-directory-view-type-a",function(){var e=jQuery(this).parents(".um-directory");if(um_is_directory_busy(e))return!1;var r=jQuery(this),t=r.parents(".um-member-directory-view-type");if(!t.hasClass("um-disabled")){um_members_show_preloader(e);var a=t.find(".um-member-directory-view-type-a:visible");a.hide(),a.next().length?a.next().show().tipsy("show"):t.find(".um-member-directory-view-type-a:first").show().tipsy("show");var i=um_member_directory_last_data[um_members_get_hash(e)];if(null!==i){var m=r.data("type");um_set_url_from_data(e,"view_type",m),e.data("view_type",m),um_build_template(e,i),um_init_new_dropdown()}um_members_hide_preloader(e)}}),jQuery(document.body).on("click",".um-directory .um-do-search",function(){um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("keypress",".um-directory .um-search-line",function(e){13===e.which&&um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("click",'.um-new-dropdown[data-element=".um-member-directory-sorting-a"] li a',function(){if(1!==jQuery(this).data("selected")){var e=jQuery(this).data("directory-hash"),r=jQuery('.um-directory[data-hash="'+e+'"]');if(!um_is_directory_busy(r)){um_members_show_preloader(r);var t=jQuery(this).html(),a=jQuery(this).data("value");r.data("sorting",a),um_set_url_from_data(r,"sort",a),um_ajax_get_members(r),r.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),r.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"] a[data-value="'+a+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),r.find(".um-member-directory-sorting-a").find("> a").html(t)}}}),jQuery(document.body).on("click",".um-directory .pagi:not(.current)",function(){if(!jQuery(this).hasClass("disabled")){var e,r=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(r))um_members_show_preloader(r),1===(e="first"===jQuery(this).data("page")?1:"prev"===jQuery(this).data("page")?1*r.data("page")-1:"next"===jQuery(this).data("page")?1*r.data("page")+1:"last"===jQuery(this).data("page")?parseInt(r.data("total_pages")):parseInt(jQuery(this).data("page")))?(r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').addClass("disabled"),r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled")):(e===parseInt(r.data("total_pages"))?r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').addClass("disabled"):r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled"),r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').removeClass("disabled")),r.find(".pagi").removeClass("current"),r.find('.pagi[data-page="'+e+'"]').addClass("current"),r.data("page",e),um_set_url_from_data(r,"page",1===e?"":e),um_ajax_get_members(r)}}),jQuery(document.body).on("change",".um-directory .um-members-pagi-dropdown",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).val();e.find(".pagi").removeClass("current"),e.find('.pagi[data-page="'+r+'"]').addClass("current"),e.data("page",r),um_set_url_from_data(e,"page",1===r?"":r),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-more").hide(),r.find(".um-member-meta-main").slideDown(),r.find(".um-member-less").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-less").hide(),r.find(".um-member-meta-main").slideUp(),r.find(".um-member-more").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-more").hide(),r.find(".um-member-meta").slideDown(function(){UM_Member_Grid(t)}),r.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(t)},100),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-less").hide(),r.find(".um-member-meta").slideUp(function(){r.find(".um-member-more").fadeIn(),UM_Member_Grid(t)}),!1}),jQuery(".um-member-directory-filters-a").on("click",function(){var e=jQuery(this),r=e.parents(".um-directory").find(".um-search");r.is(":visible")?r.slideUp(250,function(){e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}):r.slideDown({duration:250,start:function(){jQuery(this).css({display:"grid"}),e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}})}),jQuery(document.body).on("change",".um-directory .um-search-filter select",function(){if(""!==jQuery(this).val()){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).prop("name"),t=um_get_data_for_directory(e,"filter_"+r);t=void 0===t?[]:t.split("||"),-1===jQuery.inArray(jQuery(this).val(),t)&&(t.push(jQuery(this).val()),um_set_url_from_data(e,"filter_"+r,t=t.join("||")),e.data("page",1),um_set_url_from_data(e,"page","")),jQuery(this).find('option[value="'+jQuery(this).val()+'"]').prop("disabled",!0).hide(),1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0);var a=jQuery(this);a.select2("destroy").select2({dropdownParent:a.parent()}),a.val("").trigger("change"),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled")}}}),jQuery(document.body).on("blur",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){var r=jQuery(this).val(),t=jQuery(this).prop("name"),a=um_get_data_for_directory(e,"filter_"+t);void 0===a&&(a=""),r!==a&&(um_members_show_preloader(e),um_set_url_from_data(e,"filter_"+t,r),e.data("page",1),um_set_url_from_data(e,"page",""),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),jQuery(document.body).on("keypress",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(e){if(13===e.which){var r=jQuery(this).parents(".um-directory");if(um_is_directory_busy(r))return;var t=jQuery(this).val(),a=jQuery(this).prop("name"),i=um_get_data_for_directory(r,"filter_"+a);if(void 0===i&&(i=""),t===i)return;um_members_show_preloader(r),um_set_url_from_data(r,"filter_"+a,t),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}),jQuery(document.body).on("click",".um-directory .um-members-filter-remove",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&e){um_members_show_preloader(e);var r=jQuery(this).data("value"),t=jQuery(this).data("name"),a=jQuery(this).data("type");if("text"===a)um_set_url_from_data(e,"filter_"+t,""),jQuery('.um-search-filter input[name="'+t+'"]').val("");else if("select"===a){var i=um_get_data_for_directory(e,"filter_"+t);i=void 0===i?[]:i.split("||"),-1!==jQuery.inArray(r.toString(),i)&&(i=jQuery.grep(i,function(e){return e!==r.toString()})),i.length||(i=""),um_set_url_from_data(e,"filter_"+t,i);var m=jQuery('.um-search-filter select[name="'+t+'"]');m.find('option[value="'+r+'"]').prop("disabled",!1).show(),1<m.find("option:not(:disabled)").length&&m.prop("disabled",!1),m.select2("destroy").select2({dropdownParent:m.parent()}),0<e.find('.um-search-filter select[data-um-parent="'+t+'"]').length&&m.trigger("change")}else if("slider"===a){um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to","");var d=jQuery(".um-search-filter #"+t+"_min").siblings(".um-slider"),s=d.slider("option");d.slider("values",[s.min,s.max]),jQuery(".um-search-filter #"+t+"_min").val(""),jQuery(".um-search-filter #"+t+"_max").val(""),um_set_range_label(d)}else"datepicker"===a?(um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to",""),jQuery(".um-search-filter #"+t+"_from").val(""),jQuery(".um-search-filter #"+t+"_to").val("")):"timepicker"===a?(um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to",""),jQuery(".um-search-filter #"+t+"_from").val(""),jQuery(".um-search-filter #"+t+"_to").val("")):wp.hooks.doAction("um_member_directory_filter_remove",a,e,t,r);e.data("page",1),um_set_url_from_data(e,"page",""),jQuery(this).tipsy("hide"),jQuery(this).parents(".um-members-filter-tag").remove(),0===e.find(".um-members-filter-remove").length?e.find(".um-clear-filters").hide():e.find(".um-clear-filters").show();var u=!1;if(!(u=wp.hooks.applyFilters("um_member_directory_ignore_after_search",u,e)))if(1===e.data("must-search")){var _=um_get_search(e);if(0===e.find(".um-members-filter-remove").length&&!_)return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e)}e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-clear-filters-a",function(){var s=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(s)){um_members_show_preloader(s),s.find(".um-members-filter-remove").each(function(){var r=jQuery(this).data("value"),e=jQuery(this).data("name"),t=jQuery(this).data("type");if("text"===t)um_set_url_from_data(s,"filter_"+e,""),jQuery('.um-search-filter input[name="'+e+'"]').val("");else if("select"===t){var a=um_get_data_for_directory(s,"filter_"+e);a=void 0===a?[]:a.split("||"),-1!==jQuery.inArray(r.toString(),a)&&(a=jQuery.grep(a,function(e){return e!==r.toString()})),a.length||(a=""),um_set_url_from_data(s,"filter_"+e,a);var i=jQuery('.um-search-filter select[name="'+e+'"]');i.find('option[value="'+r+'"]').prop("disabled",!1).show(),1<i.find("option:not(:disabled)").length&&i.prop("disabled",!1),i.select2("destroy").select2({dropdownParent:i.parent()}),0<s.find('.um-search-filter select[data-um-parent="'+e+'"]').length&&i.trigger("change")}else if("slider"===t){um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to","");var m=jQuery(".um-search-filter #"+e+"_min").siblings(".um-slider"),d=m.slider("option");m.slider("values",[d.min,d.max]),jQuery(".um-search-filter #"+e+"_min").val(""),jQuery(".um-search-filter #"+e+"_max").val(""),um_set_range_label(m)}else"datepicker"===t?(um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to",""),jQuery(".um-search-filter #"+e+"_from").val(""),jQuery(".um-search-filter #"+e+"_to").val("")):"timepicker"===t?(um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to",""),jQuery(".um-search-filter #"+e+"_from").val(""),jQuery(".um-search-filter #"+e+"_to").val("")):wp.hooks.doAction("um_member_directory_clear_filters",t,s,e,r)}),s.data("page",1),um_set_url_from_data(s,"page",""),s.find(".um-members-filter-tag").remove(),0===s.find(".um-members-filter-remove").length?(s.find(".um-clear-filters").hide(),s.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(s.find(".um-clear-filters").show(),s.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"));var e=!1;if(!(e=wp.hooks.applyFilters("um_member_directory_ignore_after_search",e,s)))if(1===s.data("must-search"))if(!um_get_search(s))return s.data("searched",0),s.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),s.find(".um-member-directory-sorting-options").prop("disabled",!0),s.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",s),void um_members_hide_preloader(s);s.find(".um-member-directory-sorting-options").prop("disabled",!1),s.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(s)}}),wp.hooks.doAction("um_member_directory_on_first_pages_loading"),jQuery(".um-directory").each(function(){var e=jQuery(this),r=um_members_get_hash(e);um_member_directories.push(r),e.find(".um-search").length&&(e.find(".um-search").is(":visible")||e.find(".um-search").css({display:"grid"}).slideUp(1)),e.find(".um-slider").each(function(){var e=jQuery(this),t=e.parents(".um-directory"),a=e.data("field_name"),r=um_get_data_for_directory(t,"filter_"+a+"_from"),i=um_get_data_for_directory(t,"filter_"+a+"_to");void 0===r&&(r=parseInt(e.data("min"))),void 0===i&&(i=parseInt(e.data("max")));var m=[r,i];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:m,create:function(e,r){},step:1,slide:function(e,r){um_set_range_label(jQuery(this),r)},stop:function(e,r){um_is_directory_busy(t)||(um_members_show_preloader(t),um_set_url_from_data(t,"filter_"+a+"_from",r.values[0]),um_set_url_from_data(t,"filter_"+a+"_to",r.values[1]),t.data("page",1),um_set_url_from_data(t,"page",""),um_ajax_get_members(t),um_change_tag(t),t.data("searched",1),t.find(".um-member-directory-sorting-options").prop("disabled",!1),t.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),um_set_range_label(e)}),e.find(".um-datepicker-filter").each(function(){var s=jQuery(this),u=new Date(1e3*s.data("date_min")),_=new Date(1e3*s.data("date_max")),e=s.pickadate({selectYears:!0,min:u,max:_,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){s.blur()},onClose:function(){s.blur()},onSet:function(e){if(e.select){var r=s.parents(".um-directory");if(!um_is_directory_busy(r)){um_members_show_preloader(r);var t=s.data("filter_name"),a=s.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to");void 0===i&&(i=u/1e3),void 0===m&&(m=_/1e3);var d=e.select/1e3;s.val();"from"===a?i=d:"to"===a&&(m=d),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}}}).pickadate("picker"),r=s.data("filter_name"),t=s.data("range"),a=um_get_data_for_directory(s.parents(".um-directory"),"filter_"+r+"_"+t);void 0!==a&&e.set("select",1e3*a)}),e.find(".um-timepicker-filter").each(function(){var u=jQuery(this),_=u.attr("id"),o=u.data("filter_name"),n=u.attr("data-min"),l=u.attr("data-max"),e=n.split(":"),r=l.split(":"),t=u.pickatime({format:u.data("format"),interval:parseInt(u.data("intervals")),min:[e[0],e[1]],max:[r[0],r[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){u.blur()},onClose:function(){u.blur()},onSet:function(e){if(e.select){var r=u.parents(".um-directory");if(!um_is_directory_busy(r)){um_members_show_preloader(r);var t=u.data("filter_name"),a=u.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to");if(void 0===i&&(i=n),void 0===m&&(m=l),void 0!==e.select){var d=um_time_convert(e.select,a);"from"===a?i=d:"to"===a&&(m=d)}else"from"===a?i=n:"to"===a&&(m=l);var s=jQuery("#"+_).val();"from"===u.data("range")?jQuery("#"+o+"_to").pickatime("picker").set("min",s):jQuery("#"+o+"_from").pickatime("picker").set("max",s),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}}}).pickatime("picker"),a=u.data("filter_name"),i=u.data("range"),m=um_get_data_for_directory(u.parents(".um-directory"),"filter_"+a+"_"+i);if(void 0!==m){var d=m.split(":");t.set("select",60*d[0]+1*d[1])}}),wp.hooks.doAction("um_member_directory_on_init",e,r);var t=!1;if(!(t=wp.hooks.applyFilters("um_member_directory_ignore_after_search",t,e))&&1===e.data("must-search")){var a=um_get_search(e);if(!um_get_filters_data(e).length&&!a)return}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,e,r)||(um_members_show_preloader(e),um_ajax_get_members(e,{first_load:!0}),um_change_tag(e))}),window.addEventListener("popstate",function(e){jQuery(".um-directory").each(function(){var d=jQuery(this),e=um_members_get_hash(d);(um_member_directories.push(e),um_members_show_preloader(d),d.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),d.find(".um-member-directory-search-line").length)&&(void 0===(s=um_get_data_for_directory(d,"search"))&&(s=""),d.data("general_search",s),d.find(".um-search-line").val(s));var r=um_get_data_for_directory(d,"page");if(void 0===r?r=1:r>d.data("total_pages")&&(r=d.data("total_pages")),d.data("page",r).attr("data-page",r),d.find(".um-member-directory-sorting").length){var t=um_get_data_for_directory(d,"sort");void 0===t&&(t=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find('a[data-default="1"]').data("value")),d.data("sorting",t);var a=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]');a.find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),a.find('a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),d.find(".um-member-directory-sorting-a").find("> a").html(a.find('a[data-value="'+t+'"]').html())}if(d.find(".um-member-directory-view-type").length){var i=um_get_data_for_directory(d,"view_type");void 0===i&&(i=d.find('.um-member-directory-view-type-a[data-default="1"]').data("type")),d.data("view_type",i),d.find(".um-member-directory-view-type .um-member-directory-view-type-a").hide(),d.find('.um-member-directory-view-type .um-member-directory-view-type-a[data-type="'+i+'"]').show()}d.find(".um-datepicker-filter").each(function(){var e=jQuery(this),r=e.pickadate("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);void 0!==i?r.set("select",1e3*i):r.clear()}),d.find(".um-slider").each(function(){var e=jQuery(this),r=e.data("field_name"),t=um_get_data_for_directory(d,"filter_"+r+"_from"),a=um_get_data_for_directory(d,"filter_"+r+"_to");void 0===t&&(t=e.data("min")),t=parseInt(t),void 0===a&&(a=e.data("max")),a=parseInt(a),e.slider("values",[t,a]),um_set_range_label(e)}),d.find(".um-timepicker-filter").each(function(){var e=jQuery(this),r=e.pickatime("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);if(void 0!==i){var m=i.split(":");r.set("select",60*m[0])}else r.clear()});var m=!1;if(!(m=wp.hooks.applyFilters("um_member_directory_ignore_after_search",m,d))&&1===d.data("must-search")){var s=um_get_search(d);if(!um_get_filters_data(d).length&&!s)return d.data("searched",0),void um_members_hide_preloader(d);d.data("searched",1)}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,d,e)||(um_ajax_get_members(d),um_change_tag(d))})})});
|
assets/js/um-scripts.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
function um_init_datetimepicker(){jQuery(".um-datepicker:not(.picker__input)").each(function(){var e=jQuery(this),t=!1;void 0!==e.attr("data-disabled_weekdays")&&""!==e.attr("data-disabled_weekdays")&&(t=JSON.parse(e.attr("data-disabled_weekdays")));var a=null;void 0!==e.attr("data-years")&&(a=e.attr("data-years"));var i=e.attr("data-date_min"),r=e.attr("data-date_max"),n=[],u=[];void 0!==i&&(n=i.split(",")),void 0!==r&&(u=r.split(","));var o=n.length?new Date(n):null,d=n.length?new Date(u):null;if(o&&"Invalid Date"==o.toString()&&3==n.length){var s=n[1]+"/"+n[2]+"/"+n[0];o=new Date(Date.parse(s))}if(d&&"Invalid Date"==d.toString()&&3==u.length){var l=u[1]+"/"+u[2]+"/"+u[0];d=new Date(Date.parse(l))}var c={disable:t,format:e.attr("data-format"),formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()}};null!==a&&(c.selectYears=a),null!==o&&(c.min=o),null!==d&&(c.max=d),e.pickadate(c)}),jQuery(".um-timepicker:not(.picker__input)").each(function(){var e=jQuery(this);e.pickatime({format:e.attr("data-format"),interval:parseInt(e.attr("data-intervals")),formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()}})})}function init_tipsy(){"function"==typeof jQuery.fn.tipsy&&(jQuery(".um-tip-n").tipsy({gravity:"n",opacity:1,live:"a.live",offset:3}),jQuery(".um-tip-w").tipsy({gravity:"w",opacity:1,live:"a.live",offset:3}),jQuery(".um-tip-e").tipsy({gravity:"e",opacity:1,live:"a.live",offset:3}),jQuery(".um-tip-s").tipsy({gravity:"s",opacity:1,live:"a.live",offset:3}))}jQuery(document).ready(function(){function a(e){var a=jQuery(e.currentTarget),t=a.find(":selected");1<t.length&&t.each(function(e,t){""===t.value&&(t.selected=!1,a.trigger("change"))})}jQuery(document.body).on("click",".um-dropdown a.real_url",function(){window.location=jQuery(this).attr("href")}),jQuery(document.body).on("click",".um-trigger-menu-on-click",function(){var e=jQuery(this).find(".um-dropdown");return UM.dropdown.show(e),!1}),jQuery(document.body).on("click",".um-dropdown-hide",function(){return UM.dropdown.hideAll(),!1}),jQuery(document.body).on("click","a.um-manual-trigger",function(){var e=jQuery(this).attr("data-child"),t=jQuery(this).attr("data-parent");return jQuery(this).parents(t).find(e).trigger("click"),UM.dropdown.hideAll(),!1}),jQuery(".um-s1,.um-s2").css({display:"block"}),"function"==typeof jQuery.fn.select2&&(jQuery(".um-s1").each(function(e){var t=jQuery(this);t.select2({allowClear:!0,dropdownParent:t.parent()}).on("change",a)}),jQuery(".um-s2").each(function(e){var t=jQuery(this);t.select2({allowClear:!1,minimumResultsForSearch:10,dropdownParent:t.parent()}).on("change",a)}),jQuery(".um-s3").each(function(e){var t=jQuery(this);t.select2({allowClear:!1,minimumResultsForSearch:-1,dropdownParent:t.parent()}).on("change",a)})),init_tipsy(),"function"==typeof jQuery.fn.um_raty&&(jQuery(".um-rating").um_raty({half:!1,starType:"i",number:function(){return jQuery(this).attr("data-number")},score:function(){return jQuery(this).attr("data-score")},scoreName:function(){return jQuery(this).attr("data-key")},hints:!1,click:function(e,t){um_live_field=this.id,um_live_value=e,um_apply_conditions(jQuery(this),!1)}}),jQuery(".um-rating-readonly").um_raty({half:!1,starType:"i",number:function(){return jQuery(this).attr("data-number")},score:function(){return jQuery(this).attr("data-score")},scoreName:function(){return jQuery(this).attr("data-key")},hints:!1,readOnly:!0})),jQuery(document).on("change",'.um-field-area input[type="radio"]',function(){var e=jQuery(this).parents(".um-field-area"),t=jQuery(this).parents("label");e.find(".um-field-radio").removeClass("active"),e.find(".um-field-radio").find("i").removeAttr("class").addClass("um-icon-android-radio-button-off"),t.addClass("active"),t.find("i").removeAttr("class").addClass("um-icon-android-radio-button-on")}),jQuery(document).on("change",'.um-field-area input[type="checkbox"]',function(){var e=jQuery(this).parents("label");e.hasClass("active")?(e.removeClass("active"),e.find("i").removeAttr("class").addClass("um-icon-android-checkbox-outline-blank")):(e.addClass("active"),e.find("i").removeAttr("class").addClass("um-icon-android-checkbox-outline"))}),um_init_datetimepicker(),jQuery(document).on("click",".um .um-single-image-preview a.cancel",function(e){e.preventDefault();var t=jQuery(this).parents(".um-field"),a=t.find('input[type="hidden"]#'+t.data("key")+"-"+jQuery(this).parents("form").find('input[type="hidden"][name="form_id"]').val()).val(),i=jQuery(this).parents(".um-field").find(".um-single-image-preview img").attr("src"),r=t.data("mode"),n={data:{mode:r,filename:a,src:i,nonce:um_scripts.nonce},success:function(){t.find(".um-single-image-preview img").attr("src",""),t.find(".um-single-image-preview").hide(),t.find(".um-btn-auto-width").html(t.data("upload-label")),t.find("input[type=hidden]").val("empty_file")}};return"register"!==r&&(n.data.user_id=jQuery(this).parents("form").find("#user_id").val()),wp.ajax.send("um_remove_file",n),!1}),jQuery(document).on("click",".um .um-single-file-preview a.cancel",function(e){e.preventDefault();var t=jQuery(this).parents(".um-field"),a=t.find('input[type="hidden"]#'+t.data("key")+"-"+jQuery(this).parents("form").find('input[type="hidden"][name="form_id"]').val()).val(),i=jQuery(this).parents(".um-field").find(".um-single-fileinfo a").attr("href"),r=t.data("mode"),n={data:{mode:r,filename:a,src:i,nonce:um_scripts.nonce},success:function(){t.find(".um-single-file-preview").hide(),t.find(".um-btn-auto-width").html(t.data("upload-label")),t.find("input[type=hidden]").val("empty_file")}};return"register"!==r&&(n.data.user_id=jQuery(this).parents("form").find("#user_id").val()),wp.ajax.send("um_remove_file",n),!1}),jQuery(document).on("click",".um-field-group-head:not(.disabled)",function(){var e=jQuery(this).parents(".um-field-group"),t=e.data("max_entries");e.find(".um-field-group-body").is(":hidden")?e.find(".um-field-group-body").show():e.find(".um-field-group-body:first").clone().appendTo(e);var a=0;e.find(".um-field-group-body").each(function(){a++,jQuery(this).find("input").each(function(){var e=jQuery(this);e.attr("id",e.data("key")+"-"+a),e.attr("name",e.data("key")+"-"+a),e.parent().parent().find("label").attr("for",e.data("key")+"-"+a)})}),0<t&&e.find(".um-field-group-body").length==t&&jQuery(this).addClass("disabled")}),jQuery(document).on("click",".um-field-group-cancel",function(e){e.preventDefault();var t=jQuery(this).parents(".um-field-group"),a=t.data("max_entries");return 1<t.find(".um-field-group-body").length?jQuery(this).parents(".um-field-group-body").remove():jQuery(this).parents(".um-field-group-body").hide(),0<a&&t.find(".um-field-group-body").length<a&&t.find(".um-field-group-head").removeClass("disabled"),!1}),jQuery(document.body).on("click",".um-ajax-paginate",function(e){e.preventDefault();var t=jQuery(this),a=t.parent();a.addClass("loading");var i=1*t.data("pages"),r=1*t.data("page")+1,n=t.data("hook");if("um_load_posts"===n)jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_ajax_paginate_posts",author:jQuery(this).data("author"),page:r,nonce:um_scripts.nonce},complete:function(){a.removeClass("loading")},success:function(e){a.before(e),r===i?a.remove():t.data("page",r)}});else if("um_load_comments"===n)jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_ajax_paginate_comments",user_id:jQuery(this).data("user_id"),page:r,nonce:um_scripts.nonce},complete:function(){a.removeClass("loading")},success:function(e){a.before(e),r===i?a.remove():t.data("page",r)}});else{var u=jQuery(this).data("args"),o=jQuery(this).parents(".um").find(".um-ajax-items");jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_ajax_paginate",hook:n,args:u,nonce:um_scripts.nonce},complete:function(){a.removeClass("loading")},success:function(e){a.remove(),o.append(e)}})}}),jQuery(document).on("click",".um-ajax-action",function(e){e.preventDefault();var t=jQuery(this).data("hook"),a=jQuery(this).data("user_id"),arguments=jQuery(this).data("arguments");return jQuery(this).data("js-remove")&&jQuery(this).parents("."+jQuery(this).data("js-remove")).fadeOut("fast"),jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_muted_action",hook:t,user_id:a,arguments:arguments,nonce:um_scripts.nonce},success:function(e){}}),!1}),jQuery(document.body).on("click","#um-search-button",function(){var e=jQuery(this).parents(".um-search-form").data("members_page"),t=[];jQuery(this).parents(".um-search-form").find('input[name="um-search-keys[]"]').each(function(){t.push(jQuery(this).val())});var a,i=jQuery(this).parents(".um-search-form").find(".um-search-field").val();if(""===i)a=e;else{for(var r="?",n=0;n<t.length;n++)r+=t[n]+"="+i,n!==t.length-1&&(r+="&");a=e+r}window.location=a}),jQuery(document.body).on("keypress",".um-search-field",function(e){if(13===e.which){var t=jQuery(this).parents(".um-search-form").data("members_page"),a=[];jQuery(this).parents(".um-search-form").find('input[name="um-search-keys[]"]').each(function(){a.push(jQuery(this).val())});var i,r=jQuery(this).val();if(""===r)i=t;else{for(var n="?",u=0;u<a.length;u++)n+=a[u]+"="+r,u!==a.length-1&&(n+="&");i=t+n}window.location=i}}),jQuery('.um-form input[class="um-button"][type="submit"]').prop("disabled",!1),jQuery(document).one("click",'.um:not(.um-account) .um-form input[class="um-button"][type="submit"]:not(.um-has-recaptcha)',function(){jQuery(this).attr("disabled","disabled"),jQuery(this).parents("form").trigger("submit")});var o={};function d(t,e,a){var i=t.parents(".um-directory"),r=t.attr("name");t.find('option[value!=""]').remove(),t.hasClass("um-child-option-disabled")||t.prop("disabled",!1);var n=[];if("yes"===e.post.members_directory&&n.push({id:"",text:"",selected:1}),jQuery.each(e.items,function(e,t){n.push({id:e,text:t,selected:""===t})}),t.select2("destroy"),t.select2({data:n,allowClear:!0,minimumResultsForSearch:10}),"yes"===e.post.members_directory){t.find("option").each(function(){""!==jQuery(this).html()&&jQuery(this).data("value_label",jQuery(this).html()).attr("data-value_label",jQuery(this).html())});var u=um_get_data_for_directory(i,"filter_"+r);if(void 0!==u){u=u.split("||");var o=[];jQuery.each(u,function(e){t.find('option[value="'+u[e]+'"]').length&&o.push(u[e]),t.find('option[value="'+u[e]+'"]').prop("disabled",!0).hide(),1===t.find("option:not(:disabled)").length&&t.prop("disabled",!0),t.select2("destroy").select2(),t.val("").trigger("change")}),o=o.join("||"),u!==o&&(um_set_url_from_data(i,"filter_"+r,o),um_ajax_get_members(i))}um_change_tag(i)}"yes"!==e.post.members_directory&&(void 0===e.field.default||t.data("um-original-value")?""!==t.data("um-original-value")&&t.val(t.data("um-original-value")).trigger("change"):t.val(e.field.default).trigger("change"),0==e.field.editable&&(t.addClass("um-child-option-disabled"),t.attr("disabled","disabled")))}jQuery("select[data-um-parent]").each(function(){var r=jQuery(this),n=r.data("um-parent"),u=r.data("um-ajax-source");r.attr("data-um-init-field",!0),jQuery(document).on("change",'select[name="'+n+'"]',function(){var t,e=jQuery(this),a=e.closest("form").find('input[type="hidden"][name="form_id"]').val();if("yes"===r.attr("data-member-directory")){var i=e.parents(".um-directory");t=void 0!==(t=um_get_data_for_directory(i,"filter_"+n))?t.split("||"):""}else t=e.val();if(void 0!==t&&""!==t&&"object"!=typeof o[t]){if(void 0!==r.um_wait&&!1!==r.um_wait)return;r.um_wait=!0,jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_select_options",parent_option_name:n,parent_option:t,child_callback:u,child_name:r.attr("name"),members_directory:r.attr("data-member-directory"),form_id:a,nonce:um_scripts.nonce},success:function(e){"success"===e.status&&""!==t&&(o[t]=e,d(r,e,t)),void 0!==e.debug&&console.log(e),r.um_wait=!1},error:function(e){console.log(e),r.um_wait=!1}})}void 0!==t&&""!==t&&"object"==typeof o[t]&&setTimeout(d,10,r,o[t],t),void 0===t&&""!==t||(r.find('option[value!=""]').remove(),r.val("").trigger("change"))}),jQuery('select[name="'+n+'"]').trigger("change")})});
|
1 |
+
function um_init_datetimepicker(){jQuery(".um-datepicker:not(.picker__input)").each(function(){var e=jQuery(this),t=!1;void 0!==e.attr("data-disabled_weekdays")&&""!==e.attr("data-disabled_weekdays")&&(t=JSON.parse(e.attr("data-disabled_weekdays")));var a=null;void 0!==e.attr("data-years")&&(a=e.attr("data-years"));var i=e.attr("data-date_min"),r=e.attr("data-date_max"),n=[],u=[];void 0!==i&&(n=i.split(",")),void 0!==r&&(u=r.split(","));var o=n.length?new Date(n):null,d=n.length?new Date(u):null;if(o&&"Invalid Date"==o.toString()&&3==n.length){var s=n[1]+"/"+n[2]+"/"+n[0];o=new Date(Date.parse(s))}if(d&&"Invalid Date"==d.toString()&&3==u.length){var l=u[1]+"/"+u[2]+"/"+u[0];d=new Date(Date.parse(l))}var c={disable:t,format:e.attr("data-format"),formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()}};null!==a&&(c.selectYears=a),null!==o&&(c.min=o),null!==d&&(c.max=d),e.pickadate(c)}),jQuery(".um-timepicker:not(.picker__input)").each(function(){var e=jQuery(this);e.pickatime({format:e.attr("data-format"),interval:parseInt(e.attr("data-intervals")),formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()}})})}function init_tipsy(){"function"==typeof jQuery.fn.tipsy&&(jQuery(".um-tip-n").tipsy({gravity:"n",opacity:1,live:"a.live",offset:3}),jQuery(".um-tip-w").tipsy({gravity:"w",opacity:1,live:"a.live",offset:3}),jQuery(".um-tip-e").tipsy({gravity:"e",opacity:1,live:"a.live",offset:3}),jQuery(".um-tip-s").tipsy({gravity:"s",opacity:1,live:"a.live",offset:3}))}jQuery(document).ready(function(){function a(e){var a=jQuery(e.currentTarget),t=a.find(":selected");1<t.length&&t.each(function(e,t){""===t.value&&(t.selected=!1,a.trigger("change"))})}jQuery(document.body).on("click",".um-dropdown a.real_url",function(){window.location=jQuery(this).attr("href")}),jQuery(document.body).on("click",".um-trigger-menu-on-click",function(){var e=jQuery(this).find(".um-dropdown");return UM.dropdown.show(e),!1}),jQuery(document.body).on("click",".um-dropdown-hide",function(){return UM.dropdown.hideAll(),!1}),jQuery(document.body).on("click","a.um-manual-trigger",function(){var e=jQuery(this).attr("data-child"),t=jQuery(this).attr("data-parent");return jQuery(this).parents(t).find(e).trigger("click"),UM.dropdown.hideAll(),!1}),jQuery(".um-s1,.um-s2").css({display:"block"}),"function"==typeof jQuery.fn.select2&&(jQuery(".um-s1").each(function(e){var t=jQuery(this);t.select2({allowClear:!0,dropdownParent:t.parent()}).on("change",a)}),jQuery(".um-s2").each(function(e){var t=jQuery(this);t.select2({allowClear:!1,minimumResultsForSearch:10,dropdownParent:t.parent()}).on("change",a)}),jQuery(".um-s3").each(function(e){var t=jQuery(this);t.select2({allowClear:!1,minimumResultsForSearch:-1,dropdownParent:t.parent()}).on("change",a)})),init_tipsy(),"function"==typeof jQuery.fn.um_raty&&(jQuery(".um-rating").um_raty({half:!1,starType:"i",number:function(){return jQuery(this).attr("data-number")},score:function(){return jQuery(this).attr("data-score")},scoreName:function(){return jQuery(this).attr("data-key")},hints:!1,click:function(e,t){um_live_field=this.id,um_live_value=e,um_apply_conditions(jQuery(this),!1)}}),jQuery(".um-rating-readonly").um_raty({half:!1,starType:"i",number:function(){return jQuery(this).attr("data-number")},score:function(){return jQuery(this).attr("data-score")},scoreName:function(){return jQuery(this).attr("data-key")},hints:!1,readOnly:!0})),jQuery(document).on("change",'.um-field-area input[type="radio"]',function(){var e=jQuery(this).parents(".um-field-area"),t=jQuery(this).parents("label");e.find(".um-field-radio").removeClass("active"),e.find(".um-field-radio").find("i").removeAttr("class").addClass("um-icon-android-radio-button-off"),t.addClass("active"),t.find("i").removeAttr("class").addClass("um-icon-android-radio-button-on")}),jQuery(document).on("change",'.um-field-area input[type="checkbox"]',function(){var e=jQuery(this).parents("label");e.hasClass("active")?(e.removeClass("active"),e.find("i").removeAttr("class").addClass("um-icon-android-checkbox-outline-blank")):(e.addClass("active"),e.find("i").removeAttr("class").addClass("um-icon-android-checkbox-outline"))}),um_init_datetimepicker(),jQuery(document).on("click",".um .um-single-image-preview a.cancel",function(e){e.preventDefault();var t=jQuery(this).parents(".um-field"),a=t.find('input[type="hidden"]#'+t.data("key")+"-"+jQuery(this).parents("form").find('input[type="hidden"][name="form_id"]').val()).val(),i=jQuery(this).parents(".um-field").find(".um-single-image-preview img").attr("src"),r=t.data("mode"),n={data:{mode:r,filename:a,src:i,nonce:um_scripts.nonce},success:function(){t.find(".um-single-image-preview img").attr("src",""),t.find(".um-single-image-preview").hide(),t.find(".um-btn-auto-width").html(t.data("upload-label")),t.find("input[type=hidden]").val("empty_file")}};return"register"!==r&&(n.data.user_id=jQuery(this).parents("form").find("#user_id").val()),wp.ajax.send("um_remove_file",n),!1}),jQuery(document).on("click",".um .um-single-file-preview a.cancel",function(e){e.preventDefault();var t=jQuery(this).parents(".um-field"),a=t.find('input[type="hidden"]#'+t.data("key")+"-"+jQuery(this).parents("form").find('input[type="hidden"][name="form_id"]').val()).val(),i=jQuery(this).parents(".um-field").find(".um-single-fileinfo a").attr("href"),r=t.data("mode"),n={data:{mode:r,filename:a,src:i,nonce:um_scripts.nonce},success:function(){t.find(".um-single-file-preview").hide(),t.find(".um-btn-auto-width").html(t.data("upload-label")),t.find("input[type=hidden]").val("empty_file")}};return"register"!==r&&(n.data.user_id=jQuery(this).parents("form").find("#user_id").val()),wp.ajax.send("um_remove_file",n),!1}),jQuery(document).on("click",".um-field-group-head:not(.disabled)",function(){var e=jQuery(this).parents(".um-field-group"),t=e.data("max_entries");e.find(".um-field-group-body").is(":hidden")?e.find(".um-field-group-body").show():e.find(".um-field-group-body:first").clone().appendTo(e);var a=0;e.find(".um-field-group-body").each(function(){a++,jQuery(this).find("input").each(function(){var e=jQuery(this);e.attr("id",e.data("key")+"-"+a),e.attr("name",e.data("key")+"-"+a),e.parent().parent().find("label").attr("for",e.data("key")+"-"+a)})}),0<t&&e.find(".um-field-group-body").length==t&&jQuery(this).addClass("disabled")}),jQuery(document).on("click",".um-field-group-cancel",function(e){e.preventDefault();var t=jQuery(this).parents(".um-field-group"),a=t.data("max_entries");return 1<t.find(".um-field-group-body").length?jQuery(this).parents(".um-field-group-body").remove():jQuery(this).parents(".um-field-group-body").hide(),0<a&&t.find(".um-field-group-body").length<a&&t.find(".um-field-group-head").removeClass("disabled"),!1}),jQuery(document.body).on("click",".um-ajax-paginate",function(e){e.preventDefault();var t=jQuery(this),a=t.parent();a.addClass("loading");var i=1*t.data("pages"),r=1*t.data("page")+1,n=t.data("hook");if("um_load_posts"===n)jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_ajax_paginate_posts",author:jQuery(this).data("author"),page:r,nonce:um_scripts.nonce},complete:function(){a.removeClass("loading")},success:function(e){a.before(e),r==i?a.remove():t.data("page",r)}});else if("um_load_comments"===n)jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_ajax_paginate_comments",user_id:jQuery(this).data("user_id"),page:r,nonce:um_scripts.nonce},complete:function(){a.removeClass("loading")},success:function(e){a.before(e),r==i?a.remove():t.data("page",r)}});else{var u=jQuery(this).data("args"),o=jQuery(this).parents(".um").find(".um-ajax-items");jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_ajax_paginate",hook:n,args:u,nonce:um_scripts.nonce},complete:function(){a.removeClass("loading")},success:function(e){a.remove(),o.append(e)}})}}),jQuery(document).on("click",".um-ajax-action",function(e){e.preventDefault();var t=jQuery(this).data("hook"),a=jQuery(this).data("user_id"),arguments=jQuery(this).data("arguments");return jQuery(this).data("js-remove")&&jQuery(this).parents("."+jQuery(this).data("js-remove")).fadeOut("fast"),jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_muted_action",hook:t,user_id:a,arguments:arguments,nonce:um_scripts.nonce},success:function(e){}}),!1}),jQuery(document.body).on("click","#um-search-button",function(){var e=jQuery(this).parents(".um-search-form").data("members_page"),t=[];jQuery(this).parents(".um-search-form").find('input[name="um-search-keys[]"]').each(function(){t.push(jQuery(this).val())});var a,i=jQuery(this).parents(".um-search-form").find(".um-search-field").val();if(""===i)a=e;else{for(var r="?",n=0;n<t.length;n++)r+=t[n]+"="+i,n!==t.length-1&&(r+="&");a=e+r}window.location=a}),jQuery(document.body).on("keypress",".um-search-field",function(e){if(13===e.which){var t=jQuery(this).parents(".um-search-form").data("members_page"),a=[];jQuery(this).parents(".um-search-form").find('input[name="um-search-keys[]"]').each(function(){a.push(jQuery(this).val())});var i,r=jQuery(this).val();if(""===r)i=t;else{for(var n="?",u=0;u<a.length;u++)n+=a[u]+"="+r,u!==a.length-1&&(n+="&");i=t+n}window.location=i}}),jQuery('.um-form input[class="um-button"][type="submit"]').prop("disabled",!1),jQuery(document).one("click",'.um:not(.um-account) .um-form input[class="um-button"][type="submit"]:not(.um-has-recaptcha)',function(){jQuery(this).attr("disabled","disabled"),jQuery(this).parents("form").trigger("submit")});var o={};function d(t,e,a){var i=t.parents(".um-directory"),r=t.attr("name");t.find('option[value!=""]').remove(),t.hasClass("um-child-option-disabled")||t.prop("disabled",!1);var n=[];if("yes"===e.post.members_directory&&n.push({id:"",text:"",selected:1}),jQuery.each(e.items,function(e,t){n.push({id:e,text:t,selected:""===t})}),t.select2("destroy"),t.select2({data:n,allowClear:!0,minimumResultsForSearch:10}),"yes"===e.post.members_directory){t.find("option").each(function(){""!==jQuery(this).html()&&jQuery(this).data("value_label",jQuery(this).html()).attr("data-value_label",jQuery(this).html())});var u=um_get_data_for_directory(i,"filter_"+r);if(void 0!==u){u=u.split("||");var o=[];jQuery.each(u,function(e){t.find('option[value="'+u[e]+'"]').length&&o.push(u[e]),t.find('option[value="'+u[e]+'"]').prop("disabled",!0).hide(),1===t.find("option:not(:disabled)").length&&t.prop("disabled",!0),t.select2("destroy").select2(),t.val("").trigger("change")}),o=o.join("||"),u!==o&&(um_set_url_from_data(i,"filter_"+r,o),um_ajax_get_members(i))}um_change_tag(i)}"yes"!==e.post.members_directory&&(void 0===e.field.default||t.data("um-original-value")?""!==t.data("um-original-value")&&t.val(t.data("um-original-value")).trigger("change"):t.val(e.field.default).trigger("change"),0==e.field.editable&&(t.addClass("um-child-option-disabled"),t.attr("disabled","disabled")))}jQuery("select[data-um-parent]").each(function(){var r=jQuery(this),n=r.data("um-parent"),u=r.data("um-ajax-source");r.attr("data-um-init-field",!0),jQuery(document).on("change",'select[name="'+n+'"]',function(){var t,e=jQuery(this),a=e.closest("form").find('input[type="hidden"][name="form_id"]').val();if("yes"===r.attr("data-member-directory")){var i=e.parents(".um-directory");t=void 0!==(t=um_get_data_for_directory(i,"filter_"+n))?t.split("||"):""}else t=e.val();if(void 0!==t&&""!==t&&"object"!=typeof o[t]){if(void 0!==r.um_wait&&!1!==r.um_wait)return;r.um_wait=!0,jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_select_options",parent_option_name:n,parent_option:t,child_callback:u,child_name:r.attr("name"),members_directory:r.attr("data-member-directory"),form_id:a,nonce:um_scripts.nonce},success:function(e){"success"===e.status&&""!==t&&(o[t]=e,d(r,e,t)),void 0!==e.debug&&console.log(e),r.um_wait=!1},error:function(e){console.log(e),r.um_wait=!1}})}void 0!==t&&""!==t&&"object"==typeof o[t]&&setTimeout(d,10,r,o[t],t),void 0===t&&""!==t||(r.find('option[value!=""]').remove(),r.val("").trigger("change"))}),jQuery('select[name="'+n+'"]').trigger("change")})});
|
includes/admin/templates/role/role-edit.php
CHANGED
@@ -78,6 +78,152 @@ if ( ! empty( $_POST['role'] ) ) {
|
|
78 |
|
79 |
$data = $_POST['role'];
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
if ( 'add' == sanitize_key( $_GET['tab'] ) ) {
|
82 |
|
83 |
$data['name'] = trim( esc_html( strip_tags( $data['name'] ) ) );
|
@@ -208,4 +354,4 @@ $screen_id = $current_screen->id; ?>
|
|
208 |
</div>
|
209 |
</div>
|
210 |
</form>
|
211 |
-
</div>
|
78 |
|
79 |
$data = $_POST['role'];
|
80 |
|
81 |
+
$all_roles = array_keys( UM()->roles()->get_roles() );
|
82 |
+
|
83 |
+
if ( array_key_exists( '_um_priority', $data ) ) {
|
84 |
+
$data['_um_priority'] = (int) $data['_um_priority'];
|
85 |
+
}
|
86 |
+
|
87 |
+
if ( array_key_exists( '_um_can_access_wpadmin', $data ) ) {
|
88 |
+
$data['_um_can_access_wpadmin'] = (bool) $data['_um_can_access_wpadmin'];
|
89 |
+
}
|
90 |
+
|
91 |
+
if ( array_key_exists( '_um_can_not_see_adminbar', $data ) ) {
|
92 |
+
$data['_um_can_not_see_adminbar'] = (bool) $data['_um_can_not_see_adminbar'];
|
93 |
+
}
|
94 |
+
|
95 |
+
if ( array_key_exists( '_um_can_edit_everyone', $data ) ) {
|
96 |
+
$data['_um_can_edit_everyone'] = (bool) $data['_um_can_edit_everyone'];
|
97 |
+
}
|
98 |
+
|
99 |
+
if ( array_key_exists( '_um_can_edit_roles', $data ) && ! empty( $data['_um_can_edit_roles'] ) ) {
|
100 |
+
$data['_um_can_edit_roles'] = array_filter( $data['_um_can_edit_roles'], function( $v, $k ) use ( $all_roles ) {
|
101 |
+
return in_array( $v, $all_roles );
|
102 |
+
}, ARRAY_FILTER_USE_BOTH );
|
103 |
+
}
|
104 |
+
|
105 |
+
if ( array_key_exists( '_um_can_delete_everyone', $data ) ) {
|
106 |
+
$data['_um_can_delete_everyone'] = (bool) $data['_um_can_delete_everyone'];
|
107 |
+
}
|
108 |
+
|
109 |
+
if ( array_key_exists( '_um_can_delete_roles', $data ) && ! empty( $data['_um_can_delete_roles'] ) ) {
|
110 |
+
$data['_um_can_delete_roles'] = array_filter( $data['_um_can_delete_roles'], function( $v, $k ) use ( $all_roles ) {
|
111 |
+
return in_array( $v, $all_roles );
|
112 |
+
}, ARRAY_FILTER_USE_BOTH );
|
113 |
+
}
|
114 |
+
|
115 |
+
if ( array_key_exists( '_um_can_edit_profile', $data ) ) {
|
116 |
+
$data['_um_can_edit_profile'] = (bool) $data['_um_can_edit_profile'];
|
117 |
+
}
|
118 |
+
|
119 |
+
if ( array_key_exists( '_um_can_delete_profile', $data ) ) {
|
120 |
+
$data['_um_can_delete_profile'] = (bool) $data['_um_can_delete_profile'];
|
121 |
+
}
|
122 |
+
|
123 |
+
if ( array_key_exists( '_um_can_view_all', $data ) ) {
|
124 |
+
$data['_um_can_view_all'] = (bool) $data['_um_can_view_all'];
|
125 |
+
}
|
126 |
+
|
127 |
+
if ( array_key_exists( '_um_can_view_roles', $data ) && ! empty( $data['_um_can_view_roles'] ) ) {
|
128 |
+
$data['_um_can_view_roles'] = array_filter( $data['_um_can_view_roles'], function( $v, $k ) use ( $all_roles ) {
|
129 |
+
return in_array( $v, $all_roles );
|
130 |
+
}, ARRAY_FILTER_USE_BOTH );
|
131 |
+
}
|
132 |
+
|
133 |
+
if ( array_key_exists( '_um_can_make_private_profile', $data ) ) {
|
134 |
+
$data['_um_can_make_private_profile'] = (bool) $data['_um_can_make_private_profile'];
|
135 |
+
}
|
136 |
+
|
137 |
+
if ( array_key_exists( '_um_can_access_private_profile', $data ) ) {
|
138 |
+
$data['_um_can_access_private_profile'] = (bool) $data['_um_can_access_private_profile'];
|
139 |
+
}
|
140 |
+
|
141 |
+
if ( array_key_exists( '_um_profile_noindex', $data ) ) {
|
142 |
+
$data['_um_profile_noindex'] = $data['_um_profile_noindex'] !== '' ? (bool) $data['_um_profile_noindex'] : $data['_um_profile_noindex'];
|
143 |
+
}
|
144 |
+
|
145 |
+
if ( array_key_exists( '_um_default_homepage', $data ) ) {
|
146 |
+
$data['_um_default_homepage'] = (bool) $data['_um_default_homepage'];
|
147 |
+
}
|
148 |
+
|
149 |
+
if ( array_key_exists( '_um_redirect_homepage', $data ) ) {
|
150 |
+
$data['_um_redirect_homepage'] = esc_url_raw( $data['_um_redirect_homepage'] );
|
151 |
+
}
|
152 |
+
|
153 |
+
if ( array_key_exists( '_um_status', $data ) ) {
|
154 |
+
$data['_um_status'] = ! in_array( sanitize_key( $data['_um_status'] ), [ 'approved', 'checkmail', 'pending' ] ) ? 'approved' : sanitize_key( $data['_um_status'] );
|
155 |
+
}
|
156 |
+
|
157 |
+
if ( array_key_exists( '_um_auto_approve_act', $data ) ) {
|
158 |
+
$data['_um_auto_approve_act'] = ! in_array( sanitize_key( $data['_um_auto_approve_act'] ), [ 'redirect_profile', 'redirect_url' ] ) ? 'redirect_profile' : sanitize_key( $data['_um_auto_approve_act'] );
|
159 |
+
}
|
160 |
+
|
161 |
+
if ( array_key_exists( '_um_auto_approve_url', $data ) ) {
|
162 |
+
$data['_um_auto_approve_url'] = esc_url_raw( $data['_um_auto_approve_url'] );
|
163 |
+
}
|
164 |
+
|
165 |
+
if ( array_key_exists( '_um_login_email_activate', $data ) ) {
|
166 |
+
$data['_um_login_email_activate'] = (bool) $data['_um_login_email_activate'];
|
167 |
+
}
|
168 |
+
|
169 |
+
if ( array_key_exists( '_um_checkmail_action', $data ) ) {
|
170 |
+
$data['_um_checkmail_action'] = ! in_array( sanitize_key( $data['_um_checkmail_action'] ), [ 'show_message', 'redirect_url' ] ) ? 'show_message' : sanitize_key( $data['_um_checkmail_action'] );
|
171 |
+
}
|
172 |
+
|
173 |
+
if ( array_key_exists( '_um_checkmail_message', $data ) ) {
|
174 |
+
$data['_um_checkmail_message'] = sanitize_textarea_field( $data['_um_checkmail_message'] );
|
175 |
+
}
|
176 |
+
|
177 |
+
if ( array_key_exists( '_um_checkmail_url', $data ) ) {
|
178 |
+
$data['_um_checkmail_url'] = esc_url_raw( $data['_um_checkmail_url'] );
|
179 |
+
}
|
180 |
+
|
181 |
+
if ( array_key_exists( '_um_url_email_activate', $data ) ) {
|
182 |
+
$data['_um_url_email_activate'] = esc_url_raw( $data['_um_url_email_activate'] );
|
183 |
+
}
|
184 |
+
|
185 |
+
if ( array_key_exists( '_um_pending_action', $data ) ) {
|
186 |
+
$data['_um_pending_action'] = ! in_array( sanitize_key( $data['_um_pending_action'] ), [ 'show_message', 'redirect_url' ] ) ? 'show_message' : sanitize_key( $data['_um_pending_action'] );
|
187 |
+
}
|
188 |
+
|
189 |
+
if ( array_key_exists( '_um_pending_message', $data ) ) {
|
190 |
+
$data['_um_pending_message'] = sanitize_textarea_field( $data['_um_pending_message'] );
|
191 |
+
}
|
192 |
+
|
193 |
+
if ( array_key_exists( '_um_pending_url', $data ) ) {
|
194 |
+
$data['_um_pending_url'] = esc_url_raw( $data['_um_pending_url'] );
|
195 |
+
}
|
196 |
+
|
197 |
+
if ( array_key_exists( '_um_after_login', $data ) ) {
|
198 |
+
$data['_um_after_login'] = ! in_array( sanitize_key( $data['_um_after_login'] ), [ 'redirect_profile', 'redirect_url', 'refresh', 'redirect_admin' ] ) ? 'redirect_profile' : sanitize_key( $data['_um_after_login'] );
|
199 |
+
}
|
200 |
+
|
201 |
+
if ( array_key_exists( '_um_login_redirect_url', $data ) ) {
|
202 |
+
$data['_um_login_redirect_url'] = esc_url_raw( $data['_um_login_redirect_url'] );
|
203 |
+
}
|
204 |
+
|
205 |
+
if ( array_key_exists( '_um_after_logout', $data ) ) {
|
206 |
+
$data['_um_after_logout'] = ! in_array( sanitize_key( $data['_um_after_logout'] ), [ 'redirect_home', 'redirect_url' ] ) ? 'redirect_home' : sanitize_key( $data['_um_after_logout'] );
|
207 |
+
}
|
208 |
+
|
209 |
+
if ( array_key_exists( '_um_logout_redirect_url', $data ) ) {
|
210 |
+
$data['_um_logout_redirect_url'] = esc_url_raw( $data['_um_logout_redirect_url'] );
|
211 |
+
}
|
212 |
+
|
213 |
+
if ( array_key_exists( '_um_after_delete', $data ) ) {
|
214 |
+
$data['_um_after_delete'] = ! in_array( sanitize_key( $data['_um_after_delete'] ), [ 'redirect_home', 'redirect_url' ] ) ? 'redirect_home' : sanitize_key( $data['_um_after_delete'] );
|
215 |
+
}
|
216 |
+
|
217 |
+
if ( array_key_exists( '_um_delete_redirect_url', $data ) ) {
|
218 |
+
$data['_um_delete_redirect_url'] = esc_url_raw( $data['_um_delete_redirect_url'] );
|
219 |
+
}
|
220 |
+
|
221 |
+
if ( array_key_exists( 'wp_capabilities', $data ) && ! empty( $data['wp_capabilities'] ) ) {
|
222 |
+
$data['wp_capabilities'] = array_map( 'boolval', array_filter( $data['wp_capabilities'] ) );
|
223 |
+
}
|
224 |
+
|
225 |
+
$data = apply_filters( 'um_save_role_meta_sanitize', $data );
|
226 |
+
|
227 |
if ( 'add' == sanitize_key( $_GET['tab'] ) ) {
|
228 |
|
229 |
$data['name'] = trim( esc_html( strip_tags( $data['name'] ) ) );
|
354 |
</div>
|
355 |
</div>
|
356 |
</form>
|
357 |
+
</div>
|
includes/core/class-enqueue.php
CHANGED
@@ -149,8 +149,16 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
|
|
149 |
* }
|
150 |
* ?>
|
151 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
$localize_data = apply_filters( 'um_enqueue_localize_data', array(
|
153 |
-
'
|
|
|
154 |
) );
|
155 |
wp_localize_script( 'um_scripts', 'um_scripts', $localize_data );
|
156 |
|
149 |
* }
|
150 |
* ?>
|
151 |
*/
|
152 |
+
|
153 |
+
|
154 |
+
$max_upload_size = wp_max_upload_size();
|
155 |
+
if ( ! $max_upload_size ) {
|
156 |
+
$max_upload_size = 0;
|
157 |
+
}
|
158 |
+
|
159 |
$localize_data = apply_filters( 'um_enqueue_localize_data', array(
|
160 |
+
'max_upload_size' => $max_upload_size,
|
161 |
+
'nonce' => wp_create_nonce( "um-frontend-nonce" ),
|
162 |
) );
|
163 |
wp_localize_script( 'um_scripts', 'um_scripts', $localize_data );
|
164 |
|
includes/core/class-member-directory.php
CHANGED
@@ -2565,6 +2565,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
|
2565 |
* @param array $items
|
2566 |
*/
|
2567 |
function dropdown_menu( $element, $trigger, $items = array() ) {
|
|
|
2568 |
?>
|
2569 |
|
2570 |
<div class="um-new-dropdown" data-element="<?php echo $element; ?>" data-trigger="<?php echo $trigger; ?>">
|
@@ -2585,14 +2586,15 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
|
2585 |
* @param string $element
|
2586 |
* @param string $trigger
|
2587 |
* @param string $item
|
|
|
2588 |
*/
|
2589 |
-
function dropdown_menu_js( $element, $trigger, $item ) {
|
2590 |
?>
|
2591 |
|
2592 |
<div class="um-new-dropdown" data-element="<?php echo $element; ?>" data-trigger="<?php echo $trigger; ?>">
|
2593 |
<ul>
|
2594 |
<# _.each( <?php echo $item; ?>.dropdown_actions, function( action, key, list ) { #>
|
2595 |
-
<li><a href="<# if ( typeof action.url != 'undefined' ) { #>{{{action.url}}}<# } else { #>javascript:void(0);<# }#>" class="{{{key}}}"
|
2596 |
<# }); #>
|
2597 |
</ul>
|
2598 |
</div>
|
2565 |
* @param array $items
|
2566 |
*/
|
2567 |
function dropdown_menu( $element, $trigger, $items = array() ) {
|
2568 |
+
// !!!!Important: all links in the dropdown items must have "class" attribute
|
2569 |
?>
|
2570 |
|
2571 |
<div class="um-new-dropdown" data-element="<?php echo $element; ?>" data-trigger="<?php echo $trigger; ?>">
|
2586 |
* @param string $element
|
2587 |
* @param string $trigger
|
2588 |
* @param string $item
|
2589 |
+
* @param string $additional_attributes
|
2590 |
*/
|
2591 |
+
function dropdown_menu_js( $element, $trigger, $item, $additional_attributes = '' ) {
|
2592 |
?>
|
2593 |
|
2594 |
<div class="um-new-dropdown" data-element="<?php echo $element; ?>" data-trigger="<?php echo $trigger; ?>">
|
2595 |
<ul>
|
2596 |
<# _.each( <?php echo $item; ?>.dropdown_actions, function( action, key, list ) { #>
|
2597 |
+
<li><a href="<# if ( typeof action.url != 'undefined' ) { #>{{{action.url}}}<# } else { #>javascript:void(0);<# }#>" class="{{{key}}}"<?php echo $additional_attributes ? " $additional_attributes" : '' ?>>{{{action.title}}}</a></li>
|
2598 |
<# }); #>
|
2599 |
</ul>
|
2600 |
</div>
|
includes/core/class-shortcodes.php
CHANGED
@@ -717,7 +717,7 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
|
717 |
}
|
718 |
|
719 |
$this->profile_role = $args['role'];
|
720 |
-
}
|
721 |
ob_get_clean();
|
722 |
return '';
|
723 |
}
|
@@ -1307,4 +1307,4 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
|
1307 |
}
|
1308 |
|
1309 |
}
|
1310 |
-
}
|
717 |
}
|
718 |
|
719 |
$this->profile_role = $args['role'];
|
720 |
+
} elseif ( $this->profile_role != $args['role'] ) {
|
721 |
ob_get_clean();
|
722 |
return '';
|
723 |
}
|
1307 |
}
|
1308 |
|
1309 |
}
|
1310 |
+
}
|
includes/core/class-user.php
CHANGED
@@ -1,2177 +1,2177 @@
|
|
1 |
-
<?php
|
2 |
-
namespace um\core;
|
3 |
-
|
4 |
-
// Exit if accessed directly
|
5 |
-
if ( ! defined( 'ABSPATH' ) ) exit;
|
6 |
-
|
7 |
-
|
8 |
-
if ( ! class_exists( 'um\core\User' ) ) {
|
9 |
-
|
10 |
-
|
11 |
-
/**
|
12 |
-
* Class User
|
13 |
-
* @package um\core
|
14 |
-
*/
|
15 |
-
class User {
|
16 |
-
|
17 |
-
|
18 |
-
/**
|
19 |
-
* User constructor.
|
20 |
-
*/
|
21 |
-
function __construct() {
|
22 |
-
|
23 |
-
$this->id = 0;
|
24 |
-
$this->usermeta = null;
|
25 |
-
$this->data = null;
|
26 |
-
$this->profile = null;
|
27 |
-
$this->cannot_edit = null;
|
28 |
-
$this->password_reset_key = null;
|
29 |
-
|
30 |
-
global $wpdb;
|
31 |
-
|
32 |
-
$this->banned_keys = array(
|
33 |
-
'metabox','postbox','meta-box',
|
34 |
-
'dismissed_wp_pointers', 'session_tokens',
|
35 |
-
'screen_layout', 'wp_user-', 'dismissed',
|
36 |
-
'cap_key', $wpdb->get_blog_prefix(). 'capabilities',
|
37 |
-
'managenav', 'nav_menu', 'user_activation_key',
|
38 |
-
'level_', $wpdb->get_blog_prefix() . 'user_level'
|
39 |
-
);
|
40 |
-
|
41 |
-
add_action( 'init', array( &$this, 'set' ), 1 );
|
42 |
-
|
43 |
-
$this->preview = false;
|
44 |
-
$this->send_mail_on_delete = true;
|
45 |
-
|
46 |
-
// a list of keys that should never be in wp_usermeta
|
47 |
-
$this->update_user_keys = array(
|
48 |
-
'user_email',
|
49 |
-
'user_pass',
|
50 |
-
'user_password',
|
51 |
-
'display_name',
|
52 |
-
'user_url',
|
53 |
-
'role',
|
54 |
-
);
|
55 |
-
|
56 |
-
$this->target_id = null;
|
57 |
-
|
58 |
-
// When the cache should be cleared
|
59 |
-
add_action( 'um_delete_user_hook', array( &$this, 'remove_cached_queue' ) );
|
60 |
-
add_action( 'um_delete_user', array( &$this, 'remove_cache' ), 10, 1 );
|
61 |
-
|
62 |
-
add_action( 'um_after_user_status_is_changed_hook', array( &$this, 'remove_cached_queue' ) );
|
63 |
-
|
64 |
-
// When user cache should be cleared
|
65 |
-
add_action( 'um_after_user_updated', array( &$this, 'remove_cache' ) );
|
66 |
-
add_action( 'um_after_user_account_updated', array( &$this, 'remove_cache' ) );
|
67 |
-
add_action( 'personal_options_update', array( &$this, 'remove_cache' ) );
|
68 |
-
//add_action('edit_user_profile_update', array(&$this, 'remove_cache') );
|
69 |
-
add_action( 'um_when_role_is_set', array( &$this, 'remove_cache' ) );
|
70 |
-
add_action( 'um_when_status_is_set', array( &$this, 'remove_cache' ) );
|
71 |
-
|
72 |
-
add_action( 'show_user_profile', array( $this, 'profile_form_additional_section' ), 10 );
|
73 |
-
add_action( 'user_new_form', array( $this, 'profile_form_additional_section' ), 10 );
|
74 |
-
add_action( 'edit_user_profile', array( $this, 'profile_form_additional_section' ), 10 );
|
75 |
-
add_filter( 'um_user_profile_additional_fields', array( $this, 'secondary_role_field' ), 1, 2 );
|
76 |
-
|
77 |
-
//on every update of user profile (hook from wp_update_user)
|
78 |
-
add_action( 'profile_update', array( &$this, 'profile_update' ), 10, 2 ); // user_id and old_user_data
|
79 |
-
|
80 |
-
//on user update profile page
|
81 |
-
//add_action( 'edit_user_profile_update', array( &$this, 'profile_update' ), 10, 1 );
|
82 |
-
|
83 |
-
add_action( 'user_register', array( &$this, 'user_register_via_admin' ), 10, 1 );
|
84 |
-
add_action( 'user_register', array( &$this, 'set_gravatar' ), 11, 1 );
|
85 |
-
|
86 |
-
|
87 |
-
if ( is_multisite() ) {
|
88 |
-
add_action( 'added_existing_user', array( &$this, 'add_um_role_existing_user' ), 10, 2 );
|
89 |
-
add_action( 'wpmu_activate_user', array( &$this, 'add_um_role_wpmu_new_user' ), 10, 1 );
|
90 |
-
}
|
91 |
-
|
92 |
-
add_action( 'init', array( &$this, 'check_membership' ), 10 );
|
93 |
-
|
94 |
-
if ( is_multisite() ) {
|
95 |
-
add_action( 'wpmu_delete_user', array( &$this, 'delete_user_handler' ), 10, 1 );
|
96 |
-
} else {
|
97 |
-
add_action( 'delete_user', array( &$this, 'delete_user_handler' ), 10, 1 );
|
98 |
-
}
|
99 |
-
|
100 |
-
|
101 |
-
add_action( 'updated_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
102 |
-
add_action( 'added_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
103 |
-
|
104 |
-
add_action( 'deleted_user_meta', array( &$this, 'on_delete_usermeta' ), 10, 4 );
|
105 |
-
}
|
106 |
-
|
107 |
-
|
108 |
-
/**
|
109 |
-
* When you delete usermeta connected with member directory - reset it to default value
|
110 |
-
*
|
111 |
-
* @param int|array $meta_ids
|
112 |
-
* @param int $object_id
|
113 |
-
* @param string $meta_key
|
114 |
-
* @param mixed $_meta_value
|
115 |
-
*/
|
116 |
-
function on_delete_usermeta( $meta_ids, $object_id, $meta_key, $_meta_value ) {
|
117 |
-
$metakeys = array( 'account_status', 'hide_in_members', 'synced_gravatar_hashed_id', 'synced_profile_photo', 'profile_photo', 'cover_photo', '_um_verified' );
|
118 |
-
if ( ! in_array( $meta_key, $metakeys ) ) {
|
119 |
-
return;
|
120 |
-
}
|
121 |
-
|
122 |
-
$md_data = get_user_meta( $object_id, 'um_member_directory_data', true );
|
123 |
-
if ( empty( $md_data ) ) {
|
124 |
-
$md_data = array(
|
125 |
-
'account_status' => 'approved',
|
126 |
-
'hide_in_members' => UM()->member_directory()->get_hide_in_members_default(),
|
127 |
-
'profile_photo' => false,
|
128 |
-
'cover_photo' => false,
|
129 |
-
'verified' => false,
|
130 |
-
);
|
131 |
-
}
|
132 |
-
|
133 |
-
switch ( $meta_key ) {
|
134 |
-
case 'account_status':
|
135 |
-
$md_data['account_status'] = 'approved';
|
136 |
-
break;
|
137 |
-
case 'hide_in_members':
|
138 |
-
$md_data['hide_in_members'] = UM()->member_directory()->get_hide_in_members_default();
|
139 |
-
break;
|
140 |
-
case 'synced_gravatar_hashed_id':
|
141 |
-
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
142 |
-
$profile_photo = get_user_meta( $object_id, 'profile_photo', true );
|
143 |
-
$synced_profile_photo = get_user_meta( $object_id, 'synced_profile_photo', true );
|
144 |
-
|
145 |
-
$md_data['profile_photo'] = ! empty( $profile_photo ) || ! empty( $synced_profile_photo );
|
146 |
-
}
|
147 |
-
|
148 |
-
break;
|
149 |
-
case 'synced_profile_photo':
|
150 |
-
$profile_photo = get_user_meta( $object_id, 'profile_photo', true );
|
151 |
-
|
152 |
-
$synced_gravatar_hashed_id = false;
|
153 |
-
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
154 |
-
$synced_gravatar_hashed_id = get_user_meta( $object_id, 'synced_gravatar_hashed_id', true );
|
155 |
-
}
|
156 |
-
|
157 |
-
$md_data['profile_photo'] = ! empty( $profile_photo ) || ! empty( $synced_gravatar_hashed_id );
|
158 |
-
break;
|
159 |
-
case 'profile_photo':
|
160 |
-
$synced_profile_photo = get_user_meta( $object_id, 'synced_profile_photo', true );
|
161 |
-
|
162 |
-
$synced_gravatar_hashed_id = false;
|
163 |
-
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
164 |
-
$synced_gravatar_hashed_id = get_user_meta( $object_id, 'synced_gravatar_hashed_id', true );
|
165 |
-
}
|
166 |
-
|
167 |
-
$md_data['profile_photo'] = ! empty( $synced_profile_photo ) || ! empty( $synced_gravatar_hashed_id );
|
168 |
-
break;
|
169 |
-
case 'cover_photo':
|
170 |
-
$md_data['cover_photo'] = false;
|
171 |
-
break;
|
172 |
-
case '_um_verified':
|
173 |
-
$md_data['verified'] = false;
|
174 |
-
break;
|
175 |
-
}
|
176 |
-
|
177 |
-
update_user_meta( $object_id, 'um_member_directory_data', $md_data );
|
178 |
-
}
|
179 |
-
|
180 |
-
|
181 |
-
/**
|
182 |
-
* When you add/update usermeta connected with member directories - set this data to member directory metakey
|
183 |
-
*
|
184 |
-
* @param int $meta_id
|
185 |
-
* @param int $object_id
|
186 |
-
* @param string $meta_key
|
187 |
-
* @param mixed $_meta_value
|
188 |
-
*/
|
189 |
-
function on_update_usermeta( $meta_id, $object_id, $meta_key, $_meta_value ) {
|
190 |
-
|
191 |
-
$metakeys = array( 'account_status', 'hide_in_members', 'synced_gravatar_hashed_id', 'synced_profile_photo', 'profile_photo', 'cover_photo', '_um_verified' );
|
192 |
-
if ( ! in_array( $meta_key, $metakeys ) ) {
|
193 |
-
return;
|
194 |
-
}
|
195 |
-
|
196 |
-
$md_data = get_user_meta( $object_id, 'um_member_directory_data', true );
|
197 |
-
if ( empty( $md_data ) ) {
|
198 |
-
$md_data = array(
|
199 |
-
'account_status' => 'approved',
|
200 |
-
'hide_in_members' => UM()->member_directory()->get_hide_in_members_default(),
|
201 |
-
'profile_photo' => false,
|
202 |
-
'cover_photo' => false,
|
203 |
-
'verified' => false,
|
204 |
-
);
|
205 |
-
}
|
206 |
-
|
207 |
-
switch ( $meta_key ) {
|
208 |
-
case 'account_status':
|
209 |
-
$md_data['account_status'] = $_meta_value;
|
210 |
-
break;
|
211 |
-
case 'hide_in_members':
|
212 |
-
|
213 |
-
$hide_in_members = UM()->member_directory()->get_hide_in_members_default();
|
214 |
-
if ( ! empty( $_meta_value ) ) {
|
215 |
-
if ( $_meta_value == 'Yes' || $_meta_value == __( 'Yes', 'ultimate-member' ) ||
|
216 |
-
array_intersect( array( 'Yes', __( 'Yes', 'ultimate-member' ) ), $_meta_value ) ) {
|
217 |
-
$hide_in_members = true;
|
218 |
-
} else {
|
219 |
-
$hide_in_members = false;
|
220 |
-
}
|
221 |
-
}
|
222 |
-
|
223 |
-
$md_data['hide_in_members'] = $hide_in_members;
|
224 |
-
|
225 |
-
break;
|
226 |
-
case 'synced_gravatar_hashed_id':
|
227 |
-
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
228 |
-
if ( empty( $md_data['profile_photo'] ) ) {
|
229 |
-
$md_data['profile_photo'] = ! empty( $_meta_value );
|
230 |
-
}
|
231 |
-
}
|
232 |
-
|
233 |
-
break;
|
234 |
-
case 'synced_profile_photo':
|
235 |
-
case 'profile_photo':
|
236 |
-
if ( empty( $md_data['profile_photo'] ) ) {
|
237 |
-
$md_data['profile_photo'] = ! empty( $_meta_value );
|
238 |
-
}
|
239 |
-
break;
|
240 |
-
case 'cover_photo':
|
241 |
-
$md_data['cover_photo'] = ! empty( $_meta_value );
|
242 |
-
break;
|
243 |
-
case '_um_verified':
|
244 |
-
$md_data['verified'] = $_meta_value == 'verified' ? true : false;
|
245 |
-
break;
|
246 |
-
}
|
247 |
-
|
248 |
-
update_user_meta( $object_id, 'um_member_directory_data', $md_data );
|
249 |
-
}
|
250 |
-
|
251 |
-
|
252 |
-
/**
|
253 |
-
* @param $user_id
|
254 |
-
*/
|
255 |
-
function delete_user_handler( $user_id ) {
|
256 |
-
um_fetch_user( $user_id );
|
257 |
-
|
258 |
-
/**
|
259 |
-
* UM hook
|
260 |
-
*
|
261 |
-
* @type action
|
262 |
-
* @title um_delete_user_hook
|
263 |
-
* @description On delete user
|
264 |
-
* @change_log
|
265 |
-
* ["Since: 2.0"]
|
266 |
-
* @usage add_action( 'um_delete_user_hook', 'function_name', 10 );
|
267 |
-
* @example
|
268 |
-
* <?php
|
269 |
-
* add_action( 'um_delete_user_hook', 'my_delete_user', 10 );
|
270 |
-
* function my_delete_user() {
|
271 |
-
* // your code here
|
272 |
-
* }
|
273 |
-
* ?>
|
274 |
-
*/
|
275 |
-
do_action( 'um_delete_user_hook' );
|
276 |
-
|
277 |
-
/**
|
278 |
-
* UM hook
|
279 |
-
*
|
280 |
-
* @type action
|
281 |
-
* @title um_delete_user
|
282 |
-
* @description On delete user
|
283 |
-
* @input_vars
|
284 |
-
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
285 |
-
* @change_log
|
286 |
-
* ["Since: 2.0"]
|
287 |
-
* @usage add_action( 'um_delete_user', 'function_name', 10, 1 );
|
288 |
-
* @example
|
289 |
-
* <?php
|
290 |
-
* add_action( 'um_delete_user', 'my_delete_user', 10, 1 );
|
291 |
-
* function my_delete_user( $user_id ) {
|
292 |
-
* // your code here
|
293 |
-
* }
|
294 |
-
* ?>
|
295 |
-
*/
|
296 |
-
do_action( 'um_delete_user', um_user( 'ID' ) );
|
297 |
-
|
298 |
-
// send email notifications
|
299 |
-
if ( $this->send_mail_on_delete ) {
|
300 |
-
UM()->mail()->send( um_user( 'user_email' ), 'deletion_email' );
|
301 |
-
|
302 |
-
$emails = um_multi_admin_email();
|
303 |
-
if ( ! empty( $emails ) ) {
|
304 |
-
foreach ( $emails as $email ) {
|
305 |
-
UM()->mail()->send( $email, 'notification_deletion', array( 'admin' => true ) );
|
306 |
-
}
|
307 |
-
}
|
308 |
-
}
|
309 |
-
|
310 |
-
// remove uploads
|
311 |
-
UM()->files()->remove_dir( UM()->files()->upload_temp );
|
312 |
-
UM()->files()->remove_dir( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR );
|
313 |
-
}
|
314 |
-
|
315 |
-
|
316 |
-
/**
|
317 |
-
*
|
318 |
-
*/
|
319 |
-
function check_membership() {
|
320 |
-
if ( ! is_user_logged_in() ) {
|
321 |
-
return;
|
322 |
-
}
|
323 |
-
|
324 |
-
um_fetch_user( get_current_user_id() );
|
325 |
-
$status = um_user( 'account_status' );
|
326 |
-
|
327 |
-
if ( 'rejected' == $status ) {
|
328 |
-
wp_logout();
|
329 |
-
session_unset();
|
330 |
-
exit( wp_redirect( um_get_core_page( 'login' ) ) );
|
331 |
-
}
|
332 |
-
|
333 |
-
um_reset_user();
|
334 |
-
}
|
335 |
-
|
336 |
-
|
337 |
-
/**
|
338 |
-
* Multisite add existing user
|
339 |
-
*
|
340 |
-
* @param $user_id
|
341 |
-
* @param $result
|
342 |
-
*/
|
343 |
-
function add_um_role_existing_user( $user_id, $result ) {
|
344 |
-
// Bail if no user ID was passed
|
345 |
-
if ( empty( $user_id ) ) {
|
346 |
-
return;
|
347 |
-
}
|
348 |
-
|
349 |
-
if ( ! empty( $_POST['um-role'] ) && current_user_can( 'promote_users' ) ) {
|
350 |
-
if ( ! user_can( $user_id, $_POST['um-role'] ) ) {
|
351 |
-
UM()->roles()->set_role( $user_id, $_POST['um-role'] );
|
352 |
-
}
|
353 |
-
}
|
354 |
-
|
355 |
-
$this->remove_cache( $user_id );
|
356 |
-
}
|
357 |
-
|
358 |
-
|
359 |
-
/**
|
360 |
-
* Multisite add existing user
|
361 |
-
*
|
362 |
-
* @param $user_id
|
363 |
-
*/
|
364 |
-
function add_um_role_wpmu_new_user( $user_id ) {
|
365 |
-
// Bail if no user ID was passed
|
366 |
-
if ( empty( $user_id ) ) {
|
367 |
-
return;
|
368 |
-
}
|
369 |
-
|
370 |
-
if ( ! empty( $_POST['um-role'] ) && current_user_can( 'promote_users' ) ) {
|
371 |
-
if ( ! user_can( $user_id, $_POST['um-role'] ) ) {
|
372 |
-
UM()->roles()->set_role( $user_id, $_POST['um-role'] );
|
373 |
-
}
|
374 |
-
}
|
375 |
-
|
376 |
-
$this->remove_cache( $user_id );
|
377 |
-
}
|
378 |
-
|
379 |
-
|
380 |
-
/**
|
381 |
-
* Get pending users (in queue)
|
382 |
-
*/
|
383 |
-
function get_pending_users_count() {
|
384 |
-
|
385 |
-
$cached_users_queue = get_option( 'um_cached_users_queue' );
|
386 |
-
if ( $cached_users_queue > 0 && ! isset( $_REQUEST['delete_count'] ) ){
|
387 |
-
return $cached_users_queue;
|
388 |
-
}
|
389 |
-
|
390 |
-
$args = array( 'fields' => 'ID', 'number' => 1 );
|
391 |
-
$args['meta_query']['relation'] = 'OR';
|
392 |
-
$args['meta_query'][] = array(
|
393 |
-
'key' => 'account_status',
|
394 |
-
'value' => 'awaiting_email_confirmation',
|
395 |
-
'compare' => '='
|
396 |
-
);
|
397 |
-
$args['meta_query'][] = array(
|
398 |
-
'key' => 'account_status',
|
399 |
-
'value' => 'awaiting_admin_review',
|
400 |
-
'compare' => '='
|
401 |
-
);
|
402 |
-
|
403 |
-
/**
|
404 |
-
* UM hook
|
405 |
-
*
|
406 |
-
* @type filter
|
407 |
-
* @title um_admin_pending_queue_filter
|
408 |
-
* @description Change user query arguments when get pending users
|
409 |
-
* @input_vars
|
410 |
-
* [{"var":"$args","type":"array","desc":"WP_Users query arguments"}]
|
411 |
-
* @change_log
|
412 |
-
* ["Since: 2.0"]
|
413 |
-
* @usage
|
414 |
-
* <?php add_filter( 'um_admin_pending_queue_filter', 'function_name', 10, 1 ); ?>
|
415 |
-
* @example
|
416 |
-
* <?php
|
417 |
-
* add_filter( 'um_admin_pending_queue_filter', 'my_admin_pending_queue', 10, 1 );
|
418 |
-
* function my_admin_pending_queue( $args ) {
|
419 |
-
* // your code here
|
420 |
-
* return $args;
|
421 |
-
* }
|
422 |
-
* ?>
|
423 |
-
*/
|
424 |
-
$args = apply_filters( 'um_admin_pending_queue_filter', $args );
|
425 |
-
$users = new \WP_User_Query( $args );
|
426 |
-
|
427 |
-
delete_option( 'um_cached_users_queue' );
|
428 |
-
add_option( 'um_cached_users_queue', $users->get_total(), '', 'no' );
|
429 |
-
|
430 |
-
return $users->get_total();
|
431 |
-
}
|
432 |
-
|
433 |
-
|
434 |
-
/**
|
435 |
-
* @param $user_id
|
436 |
-
*
|
437 |
-
* @return bool|mixed
|
438 |
-
*/
|
439 |
-
function get_profile_slug( $user_id ) {
|
440 |
-
// Permalink base
|
441 |
-
$permalink_base = UM()->options()->get( 'permalink_base' );
|
442 |
-
$profile_slug = get_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", true );
|
443 |
-
|
444 |
-
//get default username permalink if it's empty then return false
|
445 |
-
if ( empty( $profile_slug ) ) {
|
446 |
-
if ( $permalink_base != 'user_login' ) {
|
447 |
-
$profile_slug = get_user_meta( $user_id, 'um_user_profile_url_slug_user_login', true );
|
448 |
-
}
|
449 |
-
|
450 |
-
if ( empty( $profile_slug ) ) {
|
451 |
-
return false;
|
452 |
-
}
|
453 |
-
}
|
454 |
-
|
455 |
-
return $profile_slug;
|
456 |
-
}
|
457 |
-
|
458 |
-
|
459 |
-
/**
|
460 |
-
* @param $user_id
|
461 |
-
*
|
462 |
-
* @return bool|string
|
463 |
-
*/
|
464 |
-
function get_profile_link( $user_id ) {
|
465 |
-
$profile_slug = $this->get_profile_slug( $user_id );
|
466 |
-
|
467 |
-
if ( empty( $profile_slug ) ) {
|
468 |
-
return false;
|
469 |
-
}
|
470 |
-
|
471 |
-
return UM()->permalinks()->profile_permalink( $profile_slug );
|
472 |
-
}
|
473 |
-
|
474 |
-
|
475 |
-
/**
|
476 |
-
* Generate User Profile Slug and save to meta
|
477 |
-
*
|
478 |
-
* @param int $user_id
|
479 |
-
* @param bool $force
|
480 |
-
*/
|
481 |
-
function generate_profile_slug( $user_id, $force = false ) {
|
482 |
-
$userdata = get_userdata( $user_id );
|
483 |
-
|
484 |
-
if ( empty( $userdata ) ) {
|
485 |
-
return;
|
486 |
-
}
|
487 |
-
|
488 |
-
delete_option( "um_cache_userdata_{$user_id}" );
|
489 |
-
|
490 |
-
$current_profile_slug = $this->get_profile_slug( $user_id );
|
491 |
-
|
492 |
-
$user_in_url = '';
|
493 |
-
$permalink_base = UM()->options()->get( 'permalink_base' );
|
494 |
-
|
495 |
-
// User ID
|
496 |
-
if ( $permalink_base == 'user_id' ) {
|
497 |
-
$user_in_url = $user_id;
|
498 |
-
}
|
499 |
-
|
500 |
-
// Username
|
501 |
-
if ( $permalink_base == 'user_login' ) {
|
502 |
-
|
503 |
-
$user_in_url = $userdata->user_login;
|
504 |
-
|
505 |
-
if ( is_email( $user_in_url ) ) {
|
506 |
-
|
507 |
-
$user_email = $user_in_url;
|
508 |
-
$user_in_url = str_replace( '@', '', $user_in_url );
|
509 |
-
|
510 |
-
if ( ( $pos = strrpos( $user_in_url, '.' ) ) !== false ) {
|
511 |
-
$search_length = strlen( '.' );
|
512 |
-
$user_in_url = substr_replace( $user_in_url, '-', $pos, $search_length );
|
513 |
-
}
|
514 |
-
update_user_meta( $user_id, "um_email_as_username_{$user_in_url}", $user_email );
|
515 |
-
|
516 |
-
} else {
|
517 |
-
|
518 |
-
$user_in_url = urlencode( $user_in_url );
|
519 |
-
|
520 |
-
}
|
521 |
-
}
|
522 |
-
|
523 |
-
// Fisrt and Last name
|
524 |
-
$full_name_permalinks = array( 'name', 'name_dash', 'name_plus' );
|
525 |
-
if ( in_array( $permalink_base, $full_name_permalinks ) ) {
|
526 |
-
$separated = array( 'name' => '.', 'name_dash' => '-', 'name_plus' => '+' );
|
527 |
-
$separate = $separated[ $permalink_base ];
|
528 |
-
$first_name = $userdata->first_name;
|
529 |
-
$last_name = $userdata->last_name;
|
530 |
-
$full_name = trim( sprintf( '%s %s', $first_name, $last_name ) );
|
531 |
-
$full_name = preg_replace( '/\s+/', ' ', $full_name ); // Remove double spaces
|
532 |
-
$profile_slug = UM()->permalinks()->profile_slug( $full_name, $first_name, $last_name );
|
533 |
-
|
534 |
-
$append = 0;
|
535 |
-
$username = $full_name;
|
536 |
-
$_username = $full_name;
|
537 |
-
|
538 |
-
while ( 1 ) {
|
539 |
-
$username = $_username . ( empty( $append ) ? '' : " $append" );
|
540 |
-
$slug_exists_user_id = UM()->permalinks()->slug_exists_user_id( $profile_slug . ( empty( $append ) ? '' : "{$separate}{$append}" ) );
|
541 |
-
if ( empty( $slug_exists_user_id ) || $user_id == $slug_exists_user_id ) {
|
542 |
-
break;
|
543 |
-
}
|
544 |
-
$append++;
|
545 |
-
}
|
546 |
-
|
547 |
-
$user_in_url = UM()->permalinks()->profile_slug( $username, $first_name, $last_name );
|
548 |
-
if ( empty( $user_in_url ) ) {
|
549 |
-
$user_in_url = $userdata->user_login;
|
550 |
-
|
551 |
-
if ( is_email( $user_in_url ) ) {
|
552 |
-
|
553 |
-
$user_email = $user_in_url;
|
554 |
-
$user_in_url = str_replace( '@', '', $user_in_url );
|
555 |
-
|
556 |
-
if ( ( $pos = strrpos( $user_in_url, '.' ) ) !== false ) {
|
557 |
-
$search_length = strlen( '.' );
|
558 |
-
$user_in_url = substr_replace( $user_in_url, '-', $pos, $search_length );
|
559 |
-
}
|
560 |
-
update_user_meta( $user_id, "um_email_as_username_{$user_in_url}", $user_email );
|
561 |
-
|
562 |
-
} else {
|
563 |
-
|
564 |
-
$user_in_url = sanitize_title( $user_in_url );
|
565 |
-
|
566 |
-
}
|
567 |
-
}
|
568 |
-
|
569 |
-
$user_in_url = trim( $user_in_url, $separate );
|
570 |
-
}
|
571 |
-
|
572 |
-
$user_in_url = apply_filters( 'um_change_user_profile_slug', $user_in_url, $user_id );
|
573 |
-
|
574 |
-
if ( $force || empty( $current_profile_slug ) || $current_profile_slug != $user_in_url ) {
|
575 |
-
update_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", $user_in_url );
|
576 |
-
}
|
577 |
-
}
|
578 |
-
|
579 |
-
|
580 |
-
/**
|
581 |
-
* Backend user creation
|
582 |
-
*
|
583 |
-
* @param $user_id
|
584 |
-
*/
|
585 |
-
function user_register_via_admin( $user_id ) {
|
586 |
-
|
587 |
-
if ( empty( $user_id ) ) {
|
588 |
-
return;
|
589 |
-
}
|
590 |
-
|
591 |
-
if ( is_admin() ) {
|
592 |
-
//if there custom 2 role not empty
|
593 |
-
if ( ! empty( $_POST['um-role'] ) && current_user_can( 'promote_users' ) ) {
|
594 |
-
$user = get_userdata( $user_id );
|
595 |
-
$user->add_role( $_POST['um-role'] );
|
596 |
-
UM()->user()->profile['role'] = $_POST['um-role'];
|
597 |
-
UM()->user()->update_usermeta_info( 'role' );
|
598 |
-
}
|
599 |
-
|
600 |
-
/**
|
601 |
-
* UM hook
|
602 |
-
*
|
603 |
-
* @type action
|
604 |
-
* @title um_user_register
|
605 |
-
* @description Action on user registration
|
606 |
-
* @input_vars
|
607 |
-
* [{"var":"$user_id","type":"int","desc":"User ID"},
|
608 |
-
* {"var":"$submitted","type":"array","desc":"Registration form submitted"}]
|
609 |
-
* @change_log
|
610 |
-
* ["Since: 2.0"]
|
611 |
-
* @usage add_action( 'um_user_register', 'function_name', 10, 2 );
|
612 |
-
* @example
|
613 |
-
* <?php
|
614 |
-
* add_action( 'um_user_register', 'my_user_register', 10, 2 );
|
615 |
-
* function my_user_register( $user_id, $submitted ) {
|
616 |
-
* // your code here
|
617 |
-
* }
|
618 |
-
* ?>
|
619 |
-
*/
|
620 |
-
do_action( 'um_user_register', $user_id, $_POST );
|
621 |
-
}
|
622 |
-
|
623 |
-
}
|
624 |
-
|
625 |
-
|
626 |
-
/**
|
627 |
-
* On wp_update_user function complete
|
628 |
-
*
|
629 |
-
* @param int $user_id
|
630 |
-
* @param \WP_User $old_data
|
631 |
-
*/
|
632 |
-
function profile_update( $user_id, $old_data ) {
|
633 |
-
// Bail if no user ID was passed
|
634 |
-
if ( empty( $user_id ) ) {
|
635 |
-
return;
|
636 |
-
}
|
637 |
-
|
638 |
-
$old_roles = $old_data->roles;
|
639 |
-
$userdata = get_userdata( $user_id );
|
640 |
-
$new_roles = $userdata->roles;
|
641 |
-
|
642 |
-
if ( is_admin() ) {
|
643 |
-
if ( ! empty( $_POST['um-role'] ) && current_user_can( 'promote_users' ) ) {
|
644 |
-
$new_roles = array_merge( $new_roles, array( $_POST['um-role'] ) );
|
645 |
-
if ( ! user_can( $user_id, $_POST['um-role'] ) ) {
|
646 |
-
UM()->roles()->set_role( $user_id, $_POST['um-role'] );
|
647 |
-
}
|
648 |
-
}
|
649 |
-
}
|
650 |
-
|
651 |
-
/**
|
652 |
-
* UM hook
|
653 |
-
*
|
654 |
-
* @type action
|
655 |
-
* @title um_after_member_role_upgrade
|
656 |
-
* @description Action on user registration
|
657 |
-
* @input_vars
|
658 |
-
* [{"var":"$new_roles","type":"array","desc":"User new roles"},
|
659 |
-
* {"var":"$old_roles","type":"array","desc":"Old roles"}]
|
660 |
-
* @change_log
|
661 |
-
* ["Since: 2.0"]
|
662 |
-
* @usage add_action( 'um_after_member_role_upgrade', 'function_name', 10, 2 );
|
663 |
-
* @example
|
664 |
-
* <?php
|
665 |
-
* add_action( 'um_after_member_role_upgrade', 'my_after_member_role_upgrade', 10, 2 );
|
666 |
-
* function my_after_member_role_upgrade( $new_roles, $old_roles ) {
|
667 |
-
* // your code here
|
668 |
-
* }
|
669 |
-
* ?>
|
670 |
-
*/
|
671 |
-
do_action( 'um_after_member_role_upgrade', $new_roles, $old_roles, $user_id );
|
672 |
-
|
673 |
-
//Update permalink
|
674 |
-
$this->generate_profile_slug( $user_id, true );
|
675 |
-
|
676 |
-
$this->remove_cache( $user_id );
|
677 |
-
}
|
678 |
-
|
679 |
-
|
680 |
-
/**
|
681 |
-
* Additional section for WP Profile page with UM data fields
|
682 |
-
*
|
683 |
-
* @param \WP_User $userdata User data
|
684 |
-
* @return void
|
685 |
-
*/
|
686 |
-
function profile_form_additional_section( $userdata ) {
|
687 |
-
|
688 |
-
/**
|
689 |
-
* UM hook
|
690 |
-
*
|
691 |
-
* @type filter
|
692 |
-
* @title um_user_profile_additional_fields
|
693 |
-
* @description Make additional content section
|
694 |
-
* @input_vars
|
695 |
-
* [{"var":"$content","type":"array","desc":"Additional section content"},
|
696 |
-
* {"var":"$userdata","type":"array","desc":"Userdata"}]
|
697 |
-
* @change_log
|
698 |
-
* ["Since: 2.0"]
|
699 |
-
* @usage
|
700 |
-
* <?php add_filter( 'um_user_profile_additional_fields', 'function_name', 10, 2 ); ?>
|
701 |
-
* @example
|
702 |
-
* <?php
|
703 |
-
* add_filter( 'um_user_profile_additional_fields', 'my_admin_pending_queue', 10, 2 );
|
704 |
-
* function my_admin_pending_queue( $content, $userdata ) {
|
705 |
-
* // your code here
|
706 |
-
* return $content;
|
707 |
-
* }
|
708 |
-
* ?>
|
709 |
-
*/
|
710 |
-
$section_content = apply_filters( 'um_user_profile_additional_fields', '', $userdata );
|
711 |
-
|
712 |
-
if ( ! empty( $section_content ) && ! ( is_multisite() && is_network_admin() ) ) {
|
713 |
-
|
714 |
-
if ( $userdata !== 'add-new-user' && $userdata !== 'add-existing-user' ) { ?>
|
715 |
-
<h3 id="um_user_screen_block"><?php esc_html_e( 'Ultimate Member', 'ultimate-member' ); ?></h3>
|
716 |
-
<?php }
|
717 |
-
|
718 |
-
echo $section_content;
|
719 |
-
}
|
720 |
-
}
|
721 |
-
|
722 |
-
|
723 |
-
/**
|
724 |
-
* Default interface for setting a ultimatemember role
|
725 |
-
*
|
726 |
-
* @param string $content Section HTML
|
727 |
-
* @param \WP_User $userdata User data
|
728 |
-
* @return string
|
729 |
-
*/
|
730 |
-
public function secondary_role_field( $content, $userdata ) {
|
731 |
-
$roles = array();
|
732 |
-
|
733 |
-
$role_keys = get_option( 'um_roles', array() );
|
734 |
-
if ( $role_keys ) {
|
735 |
-
foreach ( $role_keys as $role_key ) {
|
736 |
-
$role_meta = get_option( "um_role_{$role_key}_meta" );
|
737 |
-
|
738 |
-
if ( $role_meta ) {
|
739 |
-
$roles[ 'um_' . $role_key ] = $role_meta;
|
740 |
-
}
|
741 |
-
}
|
742 |
-
}
|
743 |
-
|
744 |
-
if ( empty( $roles ) ) {
|
745 |
-
return $content;
|
746 |
-
}
|
747 |
-
|
748 |
-
global $pagenow;
|
749 |
-
if ( 'profile.php' == $pagenow ) {
|
750 |
-
return $content;
|
751 |
-
}
|
752 |
-
|
753 |
-
$style = '';
|
754 |
-
$user_role = false;
|
755 |
-
if ( $userdata !== 'add-new-user' && $userdata !== 'add-existing-user' ) {
|
756 |
-
// Bail if current user cannot edit users
|
757 |
-
if ( ! current_user_can( 'edit_user', $userdata->ID ) ) {
|
758 |
-
return $content;
|
759 |
-
}
|
760 |
-
|
761 |
-
$user_role = UM()->roles()->get_um_user_role( $userdata->ID );
|
762 |
-
if ( $user_role && ! empty( $userdata->roles ) && count( $userdata->roles ) == 1 ) {
|
763 |
-
$style = 'style="display:none;"';
|
764 |
-
}
|
765 |
-
|
766 |
-
}
|
767 |
-
|
768 |
-
$class = ( $userdata == 'add-existing-user' ) ? 'um_role_existing_selector_wrapper' : 'um_role_selector_wrapper';
|
769 |
-
|
770 |
-
ob_start(); ?>
|
771 |
-
|
772 |
-
<div id="<?php echo esc_attr( $class ) ?>" <?php echo $style ?>>
|
773 |
-
<table class="form-table">
|
774 |
-
<tbody>
|
775 |
-
<tr>
|
776 |
-
<th><label for="um-role"><?php esc_html_e( 'Ultimate Member Role', 'ultimate-member' ); ?></label></th>
|
777 |
-
<td>
|
778 |
-
<select name="um-role" id="um-role">
|
779 |
-
<option value="" <?php selected( empty( $user_role ) ) ?>><?php esc_html_e( '— No role for Ultimate Member —', 'ultimate-member' ); ?></option>
|
780 |
-
<?php foreach ( $roles as $role_id => $details ) { ?>
|
781 |
-
<option <?php selected( $user_role, $role_id ); ?> value="<?php echo esc_attr( $role_id ); ?>"><?php echo esc_html( $details['name'] ); ?></option>
|
782 |
-
<?php } ?>
|
783 |
-
</select>
|
784 |
-
</td>
|
785 |
-
</tr>
|
786 |
-
</tbody>
|
787 |
-
</table>
|
788 |
-
</div>
|
789 |
-
|
790 |
-
<?php $content .= ob_get_clean();
|
791 |
-
|
792 |
-
return $content;
|
793 |
-
}
|
794 |
-
|
795 |
-
|
796 |
-
/**
|
797 |
-
* Remove cached queue from Users backend
|
798 |
-
*/
|
799 |
-
function remove_cached_queue() {
|
800 |
-
delete_option( 'um_cached_users_queue' );
|
801 |
-
}
|
802 |
-
|
803 |
-
|
804 |
-
/**
|
805 |
-
* Converts object to array
|
806 |
-
*
|
807 |
-
* @param $obj
|
808 |
-
*
|
809 |
-
* @return array
|
810 |
-
*/
|
811 |
-
function toArray( $obj ) {
|
812 |
-
if ( is_object( $obj ) ) {
|
813 |
-
$obj = (array) $obj;
|
814 |
-
}
|
815 |
-
if ( is_array( $obj ) ) {
|
816 |
-
$new = array();
|
817 |
-
foreach ( $obj as $key => $val ) {
|
818 |
-
$new[ $key ] = $this->toArray( $val );
|
819 |
-
}
|
820 |
-
} else {
|
821 |
-
$new = $obj;
|
822 |
-
}
|
823 |
-
|
824 |
-
return $new;
|
825 |
-
}
|
826 |
-
|
827 |
-
|
828 |
-
/**
|
829 |
-
* @param $user_id
|
830 |
-
*
|
831 |
-
* @return mixed|string
|
832 |
-
*/
|
833 |
-
function get_cached_data( $user_id ) {
|
834 |
-
|
835 |
-
$disallow_cache = UM()->options()->get( 'um_profile_object_cache_stop' );
|
836 |
-
if ( $disallow_cache ) {
|
837 |
-
return '';
|
838 |
-
}
|
839 |
-
|
840 |
-
if ( is_numeric( $user_id ) && $user_id > 0 ) {
|
841 |
-
$find_user = get_option( "um_cache_userdata_{$user_id}" );
|
842 |
-
if ( $find_user ) {
|
843 |
-
/**
|
844 |
-
* UM hook
|
845 |
-
*
|
846 |
-
* @type filter
|
847 |
-
* @title um_user_permissions_filter
|
848 |
-
* @description Change User Permissions
|
849 |
-
* @input_vars
|
850 |
-
* [{"var":"$permissions","type":"array","desc":"User Permissions"},
|
851 |
-
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
852 |
-
* @change_log
|
853 |
-
* ["Since: 2.0"]
|
854 |
-
* @usage
|
855 |
-
* <?php add_filter( 'um_user_permissions_filter', 'function_name', 10, 2 ); ?>
|
856 |
-
* @example
|
857 |
-
* <?php
|
858 |
-
* add_filter( 'um_user_permissions_filter', 'my_user_permissions', 10, 2 );
|
859 |
-
* function my_user_permissions( $permissions, $user_id ) {
|
860 |
-
* // your code here
|
861 |
-
* return $permissions;
|
862 |
-
* }
|
863 |
-
* ?>
|
864 |
-
*/
|
865 |
-
$find_user = apply_filters( 'um_user_permissions_filter', $find_user, $user_id );
|
866 |
-
return $find_user;
|
867 |
-
}
|
868 |
-
}
|
869 |
-
return '';
|
870 |
-
}
|
871 |
-
|
872 |
-
|
873 |
-
/**
|
874 |
-
* @param $user_id
|
875 |
-
* @param $profile
|
876 |
-
*/
|
877 |
-
function setup_cache( $user_id, $profile ) {
|
878 |
-
|
879 |
-
$disallow_cache = UM()->options()->get( 'um_profile_object_cache_stop' );
|
880 |
-
if ( $disallow_cache ) {
|
881 |
-
return;
|
882 |
-
}
|
883 |
-
|
884 |
-
update_option( "um_cache_userdata_{$user_id}", $profile, false );
|
885 |
-
}
|
886 |
-
|
887 |
-
|
888 |
-
/**
|
889 |
-
* @param $user_id
|
890 |
-
*/
|
891 |
-
function remove_cache( $user_id ) {
|
892 |
-
delete_option( "um_cache_userdata_{$user_id}" );
|
893 |
-
}
|
894 |
-
|
895 |
-
|
896 |
-
/**
|
897 |
-
* Remove cache for all users
|
898 |
-
*/
|
899 |
-
function remove_cache_all_users() {
|
900 |
-
global $wpdb;
|
901 |
-
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'um_cache_userdata_%'" );
|
902 |
-
}
|
903 |
-
|
904 |
-
|
905 |
-
/**
|
906 |
-
* This method lets you set a user. For example, to retrieve a profile or anything related to that user.
|
907 |
-
*
|
908 |
-
* @usage <?php UM()->user()->set( $user_id, $clean = false ); ?>
|
909 |
-
*
|
910 |
-
* @param null|int $user_id Which user to retrieve. A numeric user ID
|
911 |
-
* @param bool $clean Should be true or false. Basically, if you did not provide a user ID It will set the current logged in user as a profile
|
912 |
-
*
|
913 |
-
* @example The following example makes you set a user and retrieve their display name after that using the user API.
|
914 |
-
|
915 |
-
<?php
|
916 |
-
|
917 |
-
UM()->user()->set( 12 );
|
918 |
-
$display_name = UM()->user()->profile['display_name']; // Should print user display name
|
919 |
-
|
920 |
-
?>
|
921 |
-
*
|
922 |
-
*/
|
923 |
-
function set( $user_id = null, $clean = false ) {
|
924 |
-
if ( isset( $this->profile ) ) {
|
925 |
-
unset( $this->profile );
|
926 |
-
}
|
927 |
-
|
928 |
-
if ( $user_id ) {
|
929 |
-
$this->id = $user_id;
|
930 |
-
} elseif ( is_user_logged_in() && $clean == false ) {
|
931 |
-
$this->id = get_current_user_id();
|
932 |
-
} else {
|
933 |
-
$this->id = 0;
|
934 |
-
}
|
935 |
-
|
936 |
-
if ( $this->get_cached_data( $this->id ) ) {
|
937 |
-
$this->profile = $this->get_cached_data( $this->id );
|
938 |
-
} else {
|
939 |
-
|
940 |
-
if ( $user_id ) {
|
941 |
-
|
942 |
-
$this->id = $user_id;
|
943 |
-
$this->usermeta = get_user_meta( $user_id );
|
944 |
-
$this->data = get_userdata( $this->id );
|
945 |
-
|
946 |
-
} elseif ( is_user_logged_in() && $clean == false ) {
|
947 |
-
|
948 |
-
$this->id = get_current_user_id();
|
949 |
-
$this->usermeta = get_user_meta($this->id);
|
950 |
-
$this->data = get_userdata($this->id);
|
951 |
-
|
952 |
-
} else {
|
953 |
-
|
954 |
-
$this->id = 0;
|
955 |
-
$this->usermeta = null;
|
956 |
-
$this->data = null;
|
957 |
-
|
958 |
-
}
|
959 |
-
|
960 |
-
// we have a user, populate a profile
|
961 |
-
if ( $this->id && $this->toArray( $this->data ) ) {
|
962 |
-
|
963 |
-
// add user data
|
964 |
-
$this->data = $this->toArray( $this->data );
|
965 |
-
|
966 |
-
foreach ( $this->data as $k=>$v ) {
|
967 |
-
if ( $k == 'roles') {
|
968 |
-
$this->profile['wp_roles'] = implode(',',$v);
|
969 |
-
} else if ( is_array( $v ) ) {
|
970 |
-
foreach($v as $k2 => $v2){
|
971 |
-
$this->profile[$k2] = $v2;
|
972 |
-
}
|
973 |
-
} else {
|
974 |
-
$this->profile[$k] = $v;
|
975 |
-
}
|
976 |
-
}
|
977 |
-
|
978 |
-
// add account status
|
979 |
-
if ( !isset( $this->usermeta['account_status'][0] ) ) {
|
980 |
-
$this->usermeta['account_status'][0] = 'approved';
|
981 |
-
}
|
982 |
-
|
983 |
-
if ( $this->usermeta['account_status'][0] == 'approved' ) {
|
984 |
-
$this->usermeta['account_status_name'][0] = __('Approved','ultimate-member');
|
985 |
-
}
|
986 |
-
|
987 |
-
if ( $this->usermeta['account_status'][0] == 'awaiting_email_confirmation' ) {
|
988 |
-
$this->usermeta['account_status_name'][0] = __('Awaiting E-mail Confirmation','ultimate-member');
|
989 |
-
}
|
990 |
-
|
991 |
-
if ( $this->usermeta['account_status'][0] == 'awaiting_admin_review' ) {
|
992 |
-
$this->usermeta['account_status_name'][0] = __('Pending Review','ultimate-member');
|
993 |
-
}
|
994 |
-
|
995 |
-
if ( $this->usermeta['account_status'][0] == 'rejected' ) {
|
996 |
-
$this->usermeta['account_status_name'][0] = __('Membership Rejected','ultimate-member');
|
997 |
-
}
|
998 |
-
|
999 |
-
if ( $this->usermeta['account_status'][0] == 'inactive' ) {
|
1000 |
-
$this->usermeta['account_status_name'][0] = __('Membership Inactive','ultimate-member');
|
1001 |
-
}
|
1002 |
-
|
1003 |
-
// add user meta
|
1004 |
-
foreach ( $this->usermeta as $k => $v ) {
|
1005 |
-
if ( $k == 'display_name') {
|
1006 |
-
continue;
|
1007 |
-
}
|
1008 |
-
$this->profile[ $k ] = $v[0];
|
1009 |
-
}
|
1010 |
-
|
1011 |
-
// add permissions
|
1012 |
-
$user_role = UM()->roles()->get_priority_user_role( $this->id );
|
1013 |
-
$this->profile['role'] = $user_role;
|
1014 |
-
$this->profile['roles'] = UM()->roles()->get_all_user_roles( $this->id );
|
1015 |
-
|
1016 |
-
$role_meta = UM()->roles()->role_data( $user_role );
|
1017 |
-
/**
|
1018 |
-
* UM hook
|
1019 |
-
*
|
1020 |
-
* @type filter
|
1021 |
-
* @title um_user_permissions_filter
|
1022 |
-
* @description Change User Permissions
|
1023 |
-
* @input_vars
|
1024 |
-
* [{"var":"$permissions","type":"array","desc":"User Permissions"},
|
1025 |
-
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
1026 |
-
* @change_log
|
1027 |
-
* ["Since: 2.0"]
|
1028 |
-
* @usage
|
1029 |
-
* <?php add_filter( 'um_user_permissions_filter', 'function_name', 10, 2 ); ?>
|
1030 |
-
* @example
|
1031 |
-
* <?php
|
1032 |
-
* add_filter( 'um_user_permissions_filter', 'my_user_permissions', 10, 2 );
|
1033 |
-
* function my_user_permissions( $permissions, $user_id ) {
|
1034 |
-
* // your code here
|
1035 |
-
* return $permissions;
|
1036 |
-
* }
|
1037 |
-
* ?>
|
1038 |
-
*/
|
1039 |
-
$role_meta = apply_filters( 'um_user_permissions_filter', $role_meta, $this->id );
|
1040 |
-
|
1041 |
-
/*$role_meta = array_map( function( $key, $item ) {
|
1042 |
-
if ( strpos( $key, '_um_' ) === 0 )
|
1043 |
-
$key = str_replace( '_um_', '', $key );
|
1044 |
-
|
1045 |
-
return array( $key => $item );
|
1046 |
-
}, array_keys( $role_meta ), $role_meta );*/
|
1047 |
-
|
1048 |
-
$this->profile = array_merge( $this->profile, (array)$role_meta );
|
1049 |
-
|
1050 |
-
$this->profile['super_admin'] = ( is_super_admin( $this->id ) ) ? 1 : 0;
|
1051 |
-
|
1052 |
-
// clean profile
|
1053 |
-
$this->clean();
|
1054 |
-
|
1055 |
-
// Setup cache
|
1056 |
-
$this->setup_cache( $this->id, $this->profile );
|
1057 |
-
|
1058 |
-
}
|
1059 |
-
|
1060 |
-
}
|
1061 |
-
|
1062 |
-
}
|
1063 |
-
|
1064 |
-
|
1065 |
-
/**
|
1066 |
-
* Reset user data
|
1067 |
-
*
|
1068 |
-
* @param bool $clean
|
1069 |
-
*/
|
1070 |
-
function reset( $clean = false ){
|
1071 |
-
$this->set(0, $clean);
|
1072 |
-
}
|
1073 |
-
|
1074 |
-
|
1075 |
-
/**
|
1076 |
-
* Clean user profile
|
1077 |
-
*/
|
1078 |
-
function clean() {
|
1079 |
-
foreach ( $this->profile as $key => $value ) {
|
1080 |
-
foreach ( $this->banned_keys as $ban ) {
|
1081 |
-
if ( strstr( $key, $ban ) || is_numeric( $key ) ) {
|
1082 |
-
unset( $this->profile[ $key ] );
|
1083 |
-
}
|
1084 |
-
}
|
1085 |
-
}
|
1086 |
-
}
|
1087 |
-
|
1088 |
-
|
1089 |
-
/**
|
1090 |
-
* This method lets you auto sign-in a user to your site.
|
1091 |
-
*
|
1092 |
-
* @usage <?php UM()->user()->auto_login( $user_id, $rememberme = false ); ?>
|
1093 |
-
*
|
1094 |
-
* @param int $user_id Which user ID to sign in automatically
|
1095 |
-
* @param int|bool $rememberme Should be true or false. If you want the user sign in session to use cookies, use true
|
1096 |
-
*
|
1097 |
-
* @example The following example lets you sign in a user automatically by their ID.
|
1098 |
-
|
1099 |
-
<?php UM()->user()->auto_login( 2 ); ?>
|
1100 |
-
*
|
1101 |
-
*
|
1102 |
-
* @example The following example lets you sign in a user automatically by their ID and makes the plugin remember their session.
|
1103 |
-
|
1104 |
-
<?php UM()->user()->auto_login( 10, true ); ?>
|
1105 |
-
*
|
1106 |
-
*/
|
1107 |
-
function auto_login( $user_id, $rememberme = 0 ) {
|
1108 |
-
|
1109 |
-
wp_set_current_user( $user_id );
|
1110 |
-
|
1111 |
-
wp_set_auth_cookie( $user_id, $rememberme );
|
1112 |
-
|
1113 |
-
$user = get_user_by( 'ID', $user_id );
|
1114 |
-
|
1115 |
-
do_action( 'wp_login', $user->user_login, $user );
|
1116 |
-
|
1117 |
-
}
|
1118 |
-
|
1119 |
-
|
1120 |
-
/**
|
1121 |
-
* Set user's registration details
|
1122 |
-
*
|
1123 |
-
* @param array $submitted
|
1124 |
-
* @param array $args
|
1125 |
-
*/
|
1126 |
-
function set_registration_details( $submitted, $args ) {
|
1127 |
-
|
1128 |
-
if ( isset( $submitted['user_pass'] ) ) {
|
1129 |
-
unset( $submitted['user_pass'] );
|
1130 |
-
}
|
1131 |
-
|
1132 |
-
if ( isset( $submitted['user_password'] ) ) {
|
1133 |
-
unset( $submitted['user_password'] );
|
1134 |
-
}
|
1135 |
-
|
1136 |
-
if ( isset( $submitted['confirm_user_password'] ) ) {
|
1137 |
-
unset( $submitted['confirm_user_password'] );
|
1138 |
-
}
|
1139 |
-
|
1140 |
-
//remove all password field values from submitted details
|
1141 |
-
$password_fields = array();
|
1142 |
-
foreach ( $submitted as $k => $v ) {
|
1143 |
-
if ( UM()->fields()->get_field_type( $k ) == 'password' ) {
|
1144 |
-
$password_fields[] = $k;
|
1145 |
-
$password_fields[] = 'confirm_' . $k;
|
1146 |
-
}
|
1147 |
-
}
|
1148 |
-
|
1149 |
-
foreach ( $password_fields as $pw_field ) {
|
1150 |
-
unset( $submitted[ $pw_field ] );
|
1151 |
-
}
|
1152 |
-
|
1153 |
-
|
1154 |
-
/**
|
1155 |
-
* UM hook
|
1156 |
-
*
|
1157 |
-
* @type filter
|
1158 |
-
* @title um_before_save_filter_submitted
|
1159 |
-
* @description Change submitted data before save usermeta "submitted" on registration process
|
1160 |
-
* @input_vars
|
1161 |
-
* [{"var":"$submitted","type":"array","desc":"Submitted data"},
|
1162 |
-
* {"var":"$args","type":"array","desc":"Form Args"}]
|
1163 |
-
* @change_log
|
1164 |
-
* ["Since: 2.0"]
|
1165 |
-
* @usage
|
1166 |
-
* <?php add_filter( 'um_before_save_filter_submitted', 'function_name', 10, 2 ); ?>
|
1167 |
-
* @example
|
1168 |
-
* <?php
|
1169 |
-
* add_filter( 'um_before_save_filter_submitted', 'my_before_save_filter_submitted', 10, 2 );
|
1170 |
-
* function my_before_save_filter_submitted( $submitted, $args ) {
|
1171 |
-
* // your code here
|
1172 |
-
* return $submitted;
|
1173 |
-
* }
|
1174 |
-
* ?>
|
1175 |
-
*/
|
1176 |
-
$submitted = apply_filters( 'um_before_save_filter_submitted', $submitted, $args );
|
1177 |
-
|
1178 |
-
/**
|
1179 |
-
* UM hook
|
1180 |
-
*
|
1181 |
-
* @type action
|
1182 |
-
* @title um_before_save_registration_details
|
1183 |
-
* @description Action on user registration before save details
|
1184 |
-
* @input_vars
|
1185 |
-
* [{"var":"$user_id","type":"int","desc":"User ID"},
|
1186 |
-
* {"var":"$submitted","type":"array","desc":"Registration form submitted"}]
|
1187 |
-
* @change_log
|
1188 |
-
* ["Since: 2.0"]
|
1189 |
-
* @usage add_action( 'um_before_save_registration_details', 'function_name', 10, 2 );
|
1190 |
-
* @example
|
1191 |
-
* <?php
|
1192 |
-
* add_action( 'um_before_save_registration_details', 'my_before_save_registration_details', 10, 2 );
|
1193 |
-
* function my_before_save_registration_details( $user_id, $submitted ) {
|
1194 |
-
* // your code here
|
1195 |
-
* }
|
1196 |
-
* ?>
|
1197 |
-
*/
|
1198 |
-
do_action( 'um_before_save_registration_details', $this->id, $submitted );
|
1199 |
-
|
1200 |
-
update_user_meta( $this->id, 'submitted', $submitted );
|
1201 |
-
|
1202 |
-
$this->update_profile( $submitted );
|
1203 |
-
/**
|
1204 |
-
* UM hook
|
1205 |
-
*
|
1206 |
-
* @type action
|
1207 |
-
* @title um_after_save_registration_details
|
1208 |
-
* @description Action on user registration after save details
|
1209 |
-
* @input_vars
|
1210 |
-
* [{"var":"$user_id","type":"int","desc":"User ID"},
|
1211 |
-
* {"var":"$submitted","type":"array","desc":"Registration form submitted"}]
|
1212 |
-
* @change_log
|
1213 |
-
* ["Since: 2.0"]
|
1214 |
-
* @usage add_action( 'um_after_save_registration_details', 'function_name', 10, 2 );
|
1215 |
-
* @example
|
1216 |
-
* <?php
|
1217 |
-
* add_action( 'um_after_save_registration_details', 'my_after_save_registration_details', 10, 2 );
|
1218 |
-
* function my_after_save_registration_details( $user_id, $submitted ) {
|
1219 |
-
* // your code here
|
1220 |
-
* }
|
1221 |
-
* ?>
|
1222 |
-
*/
|
1223 |
-
do_action( 'um_after_save_registration_details', $this->id, $submitted );
|
1224 |
-
|
1225 |
-
}
|
1226 |
-
|
1227 |
-
|
1228 |
-
/**
|
1229 |
-
* Set last login for new registered users
|
1230 |
-
*/
|
1231 |
-
function set_last_login() {
|
1232 |
-
update_user_meta( $this->id, '_um_last_login', current_time( 'timestamp' ) );
|
1233 |
-
}
|
1234 |
-
|
1235 |
-
|
1236 |
-
/**
|
1237 |
-
* Set user's account status
|
1238 |
-
*
|
1239 |
-
* @param $status
|
1240 |
-
*/
|
1241 |
-
function set_status( $status ) {
|
1242 |
-
|
1243 |
-
/**
|
1244 |
-
* UM hook
|
1245 |
-
*
|
1246 |
-
* @type action
|
1247 |
-
* @title um_when_status_is_set
|
1248 |
-
* @description Action on user status changed
|
1249 |
-
* @input_vars
|
1250 |
-
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
1251 |
-
* @change_log
|
1252 |
-
* ["Since: 2.0"]
|
1253 |
-
* @usage add_action( 'um_when_status_is_set', 'function_name', 10, 1 );
|
1254 |
-
* @example
|
1255 |
-
* <?php
|
1256 |
-
* add_action( 'um_when_status_is_set', 'my_when_status_is_set', 10, 1 );
|
1257 |
-
* function my_when_status_is_set( $user_id ) {
|
1258 |
-
* // your code here
|
1259 |
-
* }
|
1260 |
-
* ?>
|
1261 |
-
*/
|
1262 |
-
do_action( 'um_when_status_is_set', um_user( 'ID' ) );
|
1263 |
-
|
1264 |
-
$this->profile['account_status'] = $status;
|
1265 |
-
|
1266 |
-
$this->update_usermeta_info( 'account_status' );
|
1267 |
-
|
1268 |
-
/**
|
1269 |
-
* UM hook
|
1270 |
-
*
|
1271 |
-
* @type action
|
1272 |
-
* @title um_after_user_status_is_changed_hook
|
1273 |
-
* @description Action after user status changed
|
1274 |
-
* @input_vars
|
1275 |
-
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
1276 |
-
* @change_log
|
1277 |
-
* ["Since: 2.0"]
|
1278 |
-
* @usage add_action( 'um_after_user_status_is_changed_hook', 'function_name', 10 );
|
1279 |
-
* @example
|
1280 |
-
* <?php
|
1281 |
-
* add_action( 'um_after_user_status_is_changed_hook', 'my_after_user_status_is_changed', 10 );
|
1282 |
-
* function my_after_user_status_is_changed() {
|
1283 |
-
* // your code here
|
1284 |
-
* }
|
1285 |
-
* ?>
|
1286 |
-
*/
|
1287 |
-
do_action( 'um_after_user_status_is_changed_hook', um_user( 'ID' ) );
|
1288 |
-
|
1289 |
-
/**
|
1290 |
-
* UM hook
|
1291 |
-
*
|
1292 |
-
* @type action
|
1293 |
-
* @title um_after_user_status_is_changed
|
1294 |
-
* @description Action after user status changed
|
1295 |
-
* @input_vars
|
1296 |
-
* [{"var":"$status","type":"string","desc":"User Status"},
|
1297 |
-
* {"var":"$user_id","type":"integer","desc":"User ID"}]
|
1298 |
-
* @change_log
|
1299 |
-
* ["Since: 2.0"]
|
1300 |
-
* @usage add_action( 'um_after_user_status_is_changed', 'function_name', 10, 1 );
|
1301 |
-
* @example
|
1302 |
-
* <?php
|
1303 |
-
* add_action( 'um_after_user_status_is_changed', 'my_after_user_status_is_changed', 10, 1 );
|
1304 |
-
* function my_after_user_status_is_changed( $status ) {
|
1305 |
-
* // your code here
|
1306 |
-
* }
|
1307 |
-
* ?>
|
1308 |
-
*/
|
1309 |
-
do_action( 'um_after_user_status_is_changed', $status, um_user( 'ID' ) );
|
1310 |
-
|
1311 |
-
}
|
1312 |
-
|
1313 |
-
|
1314 |
-
/**
|
1315 |
-
* Set user's hash
|
1316 |
-
*/
|
1317 |
-
function assign_secretkey() {
|
1318 |
-
/**
|
1319 |
-
* UM hook
|
1320 |
-
*
|
1321 |
-
* @type action
|
1322 |
-
* @title um_before_user_hash_is_changed
|
1323 |
-
* @description Action before user hash is changed
|
1324 |
-
* @change_log
|
1325 |
-
* ["Since: 2.0"]
|
1326 |
-
* @usage add_action( 'um_before_user_hash_is_changed', 'function_name', 10 );
|
1327 |
-
* @example
|
1328 |
-
* <?php
|
1329 |
-
* add_action( 'um_before_user_hash_is_changed', 'my_before_user_hash_is_changed', 10 );
|
1330 |
-
* function my_before_user_hash_is_changed() {
|
1331 |
-
* // your code here
|
1332 |
-
* }
|
1333 |
-
* ?>
|
1334 |
-
*/
|
1335 |
-
do_action( 'um_before_user_hash_is_changed' );
|
1336 |
-
|
1337 |
-
$this->profile['account_secret_hash'] = UM()->validation()->generate();
|
1338 |
-
$this->update_usermeta_info( 'account_secret_hash' );
|
1339 |
-
|
1340 |
-
$expiry_time = UM()->options()->get( 'activation_link_expiry_time' );
|
1341 |
-
if ( ! empty( $expiry_time ) && is_numeric( $expiry_time ) ) {
|
1342 |
-
$this->profile['account_secret_hash_expiry'] = time() + $expiry_time;
|
1343 |
-
$this->update_usermeta_info( 'account_secret_hash_expiry' );
|
1344 |
-
}
|
1345 |
-
|
1346 |
-
/**
|
1347 |
-
* UM hook
|
1348 |
-
*
|
1349 |
-
* @type action
|
1350 |
-
* @title um_after_user_hash_is_changed
|
1351 |
-
* @description Action after user hash is changed
|
1352 |
-
* @change_log
|
1353 |
-
* ["Since: 2.0"]
|
1354 |
-
* @usage add_action( 'um_after_user_hash_is_changed', 'function_name', 10 );
|
1355 |
-
* @example
|
1356 |
-
* <?php
|
1357 |
-
* add_action( 'um_after_user_hash_is_changed', 'my_after_user_hash_is_changed', 10 );
|
1358 |
-
* function my_after_user_hash_is_changed() {
|
1359 |
-
* // your code here
|
1360 |
-
* }
|
1361 |
-
* ?>
|
1362 |
-
*/
|
1363 |
-
do_action( 'um_after_user_hash_is_changed' );
|
1364 |
-
}
|
1365 |
-
|
1366 |
-
|
1367 |
-
/**
|
1368 |
-
* @param \WP_User $userdata
|
1369 |
-
*
|
1370 |
-
* @return string|\WP_Error
|
1371 |
-
*/
|
1372 |
-
function maybe_generate_password_reset_key( $userdata ) {
|
1373 |
-
if ( empty( $this->password_reset_key ) ) {
|
1374 |
-
$this->password_reset_key = get_password_reset_key( $userdata );
|
1375 |
-
}
|
1376 |
-
|
1377 |
-
return $this->password_reset_key ;
|
1378 |
-
}
|
1379 |
-
|
1380 |
-
|
1381 |
-
/**
|
1382 |
-
* Password reset email
|
1383 |
-
*/
|
1384 |
-
function password_reset() {
|
1385 |
-
$userdata = get_userdata( um_user( 'ID' ) );
|
1386 |
-
|
1387 |
-
$this->maybe_generate_password_reset_key( $userdata );
|
1388 |
-
|
1389 |
-
add_filter( 'um_template_tags_patterns_hook', array( UM()->password(), 'add_placeholder' ), 10, 1 );
|
1390 |
-
add_filter( 'um_template_tags_replaces_hook', array( UM()->password(), 'add_replace_placeholder' ), 10, 1 );
|
1391 |
-
|
1392 |
-
UM()->mail()->send( um_user( 'user_email' ), 'resetpw_email' );
|
1393 |
-
}
|
1394 |
-
|
1395 |
-
|
1396 |
-
/**
|
1397 |
-
* Password changed email
|
1398 |
-
*/
|
1399 |
-
function password_changed() {
|
1400 |
-
UM()->mail()->send( um_user( 'user_email' ), 'changedpw_email' );
|
1401 |
-
}
|
1402 |
-
|
1403 |
-
|
1404 |
-
/**
|
1405 |
-
* This method approves a user membership and sends them an optional welcome/approval e-mail.
|
1406 |
-
*
|
1407 |
-
* @usage <?php UM()->user()->approve(); ?>
|
1408 |
-
*
|
1409 |
-
* @example Approve a pending user and allow him to sign-in to your site.
|
1410 |
-
|
1411 |
-
<?php
|
1412 |
-
|
1413 |
-
um_fetch_user( 352 );
|
1414 |
-
UM()->user()->approve();
|
1415 |
-
|
1416 |
-
?>
|
1417 |
-
*
|
1418 |
-
*/
|
1419 |
-
function approve( $repeat = true ) {
|
1420 |
-
$user_id = um_user('ID');
|
1421 |
-
|
1422 |
-
if ( ! $repeat ) {
|
1423 |
-
$status = get_user_meta( $user_id, 'account_status', true );
|
1424 |
-
if ( 'approved' === $status ) {
|
1425 |
-
return;
|
1426 |
-
}
|
1427 |
-
}
|
1428 |
-
|
1429 |
-
delete_option( "um_cache_userdata_{$user_id}" );
|
1430 |
-
|
1431 |
-
if ( um_user( 'account_status' ) == 'awaiting_admin_review' ) {
|
1432 |
-
$userdata = get_userdata( $user_id );
|
1433 |
-
|
1434 |
-
$this->maybe_generate_password_reset_key( $userdata );
|
1435 |
-
|
1436 |
-
UM()->mail()->send( um_user( 'user_email' ), 'approved_email' );
|
1437 |
-
|
1438 |
-
} else {
|
1439 |
-
//$userdata = get_userdata( $user_id );
|
1440 |
-
//get_password_reset_key( $userdata );
|
1441 |
-
UM()->mail()->send( um_user( 'user_email' ), 'welcome_email' );
|
1442 |
-
}
|
1443 |
-
|
1444 |
-
$this->set_status( 'approved' );
|
1445 |
-
$this->delete_meta( 'account_secret_hash' );
|
1446 |
-
$this->delete_meta( 'account_secret_hash_expiry' );
|
1447 |
-
|
1448 |
-
/**
|
1449 |
-
* UM hook
|
1450 |
-
*
|
1451 |
-
* @type action
|
1452 |
-
* @title um_after_user_is_approved
|
1453 |
-
* @description Action after user was approved
|
1454 |
-
* @input_vars
|
1455 |
-
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
1456 |
-
* @change_log
|
1457 |
-
* ["Since: 2.0"]
|
1458 |
-
* @usage add_action( 'um_after_user_is_approved', 'function_name', 10, 1 );
|
1459 |
-
* @example
|
1460 |
-
* <?php
|
1461 |
-
* add_action( 'um_after_user_is_approved', 'my_after_user_is_approved', 10, 1 );
|
1462 |
-
* function my_after_user_hash_is_changed( $user_id ) {
|
1463 |
-
* // your code here
|
1464 |
-
* }
|
1465 |
-
* ?>
|
1466 |
-
*/
|
1467 |
-
do_action( 'um_after_user_is_approved', um_user( 'ID' ) );
|
1468 |
-
}
|
1469 |
-
|
1470 |
-
|
1471 |
-
/**
|
1472 |
-
* Pending email
|
1473 |
-
*/
|
1474 |
-
function email_pending() {
|
1475 |
-
$this->assign_secretkey();
|
1476 |
-
$this->set_status( 'awaiting_email_confirmation' );
|
1477 |
-
UM()->mail()->send( um_user( 'user_email' ), 'checkmail_email' );
|
1478 |
-
}
|
1479 |
-
|
1480 |
-
|
1481 |
-
/**
|
1482 |
-
* This method puts a user under manual review by administrator and sends them an optional e-mail.
|
1483 |
-
*
|
1484 |
-
* @usage <?php UM()->user()->pending(); ?>
|
1485 |
-
*
|
1486 |
-
* @example An example of putting a user pending manual review
|
1487 |
-
|
1488 |
-
<?php
|
1489 |
-
|
1490 |
-
um_fetch_user( 54 );
|
1491 |
-
UM()->user()->pending();
|
1492 |
-
|
1493 |
-
?>
|
1494 |
-
*
|
1495 |
-
*/
|
1496 |
-
function pending() {
|
1497 |
-
$this->set_status( 'awaiting_admin_review' );
|
1498 |
-
UM()->mail()->send( um_user( 'user_email' ), 'pending_email' );
|
1499 |
-
}
|
1500 |
-
|
1501 |
-
|
1502 |
-
/**
|
1503 |
-
* This method rejects a user membership and sends them an optional e-mail.
|
1504 |
-
*
|
1505 |
-
* @usage <?php UM()->user()->reject(); ?>
|
1506 |
-
*
|
1507 |
-
* @example Reject a user membership example
|
1508 |
-
|
1509 |
-
<?php
|
1510 |
-
|
1511 |
-
um_fetch_user( 114 );
|
1512 |
-
UM()->user()->reject();
|
1513 |
-
|
1514 |
-
?>
|
1515 |
-
|
1516 |
-
*
|
1517 |
-
*/
|
1518 |
-
function reject() {
|
1519 |
-
$this->set_status( 'rejected' );
|
1520 |
-
UM()->mail()->send( um_user( 'user_email' ), 'rejected_email' );
|
1521 |
-
}
|
1522 |
-
|
1523 |
-
|
1524 |
-
/**
|
1525 |
-
* This method deactivates a user membership and sends them an optional e-mail.
|
1526 |
-
*
|
1527 |
-
* @usage <?php UM()->user()->deactivate(); ?>
|
1528 |
-
*
|
1529 |
-
* @example Deactivate a user membership with the following example
|
1530 |
-
|
1531 |
-
<?php
|
1532 |
-
|
1533 |
-
um_fetch_user( 32 );
|
1534 |
-
$ultimatemember->user->deactivate();
|
1535 |
-
|
1536 |
-
?>
|
1537 |
-
*
|
1538 |
-
*/
|
1539 |
-
function deactivate() {
|
1540 |
-
$this->set_status( 'inactive' );
|
1541 |
-
/**
|
1542 |
-
* UM hook
|
1543 |
-
*
|
1544 |
-
* @type action
|
1545 |
-
* @title um_after_user_is_inactive
|
1546 |
-
* @description Action after user was inactive
|
1547 |
-
* @input_vars
|
1548 |
-
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
1549 |
-
* @change_log
|
1550 |
-
* ["Since: 2.0"]
|
1551 |
-
* @usage add_action( 'um_after_user_is_inactive', 'function_name', 10, 1 );
|
1552 |
-
* @example
|
1553 |
-
* <?php
|
1554 |
-
* add_action( 'um_after_user_is_inactive', 'my_after_user_is_inactive', 10, 1 );
|
1555 |
-
* function my_after_user_is_inactive( $user_id ) {
|
1556 |
-
* // your code here
|
1557 |
-
* }
|
1558 |
-
* ?>
|
1559 |
-
*/
|
1560 |
-
do_action( 'um_after_user_is_inactive', um_user( 'ID' ) );
|
1561 |
-
|
1562 |
-
UM()->mail()->send( um_user( 'user_email' ), 'inactive_email' );
|
1563 |
-
}
|
1564 |
-
|
1565 |
-
|
1566 |
-
/**
|
1567 |
-
* Delete user
|
1568 |
-
*
|
1569 |
-
* @param bool $send_mail
|
1570 |
-
*/
|
1571 |
-
function delete( $send_mail = true ) {
|
1572 |
-
|
1573 |
-
$this->send_mail_on_delete = $send_mail;
|
1574 |
-
//don't send email notification to not approved user
|
1575 |
-
if ( 'approved' != um_user( 'account_status' ) ) {
|
1576 |
-
$this->send_mail_on_delete = false;
|
1577 |
-
}
|
1578 |
-
|
1579 |
-
// remove user
|
1580 |
-
if ( is_multisite() ) {
|
1581 |
-
|
1582 |
-
if ( ! function_exists( 'wpmu_delete_user' ) ) {
|
1583 |
-
require_once( ABSPATH . 'wp-admin/includes/ms.php' );
|
1584 |
-
}
|
1585 |
-
|
1586 |
-
wpmu_delete_user( $this->id );
|
1587 |
-
|
1588 |
-
} else {
|
1589 |
-
|
1590 |
-
if ( ! function_exists( 'wp_delete_user' ) ) {
|
1591 |
-
require_once( ABSPATH . 'wp-admin/includes/user.php' );
|
1592 |
-
}
|
1593 |
-
|
1594 |
-
wp_delete_user( $this->id );
|
1595 |
-
|
1596 |
-
}
|
1597 |
-
|
1598 |
-
}
|
1599 |
-
|
1600 |
-
|
1601 |
-
/**
|
1602 |
-
* This method gets a user role in slug format. e.g. member
|
1603 |
-
*
|
1604 |
-
* @usage <?php UM()->user()->get_role(); ?>
|
1605 |
-
*
|
1606 |
-
* @return string
|
1607 |
-
*
|
1608 |
-
* @example Do something if the user's role is paid-member
|
1609 |
-
|
1610 |
-
<?php
|
1611 |
-
|
1612 |
-
um_fetch_user( 12 );
|
1613 |
-
|
1614 |
-
if ( UM()->user()->get_role() == 'paid-member' ) {
|
1615 |
-
// Show this to paid customers
|
1616 |
-
} else {
|
1617 |
-
// You are a free member
|
1618 |
-
}
|
1619 |
-
|
1620 |
-
?>
|
1621 |
-
*
|
1622 |
-
*/
|
1623 |
-
function get_role() {
|
1624 |
-
if ( ! empty( $this->profile['role'] ) ) {
|
1625 |
-
return $this->profile['role'];
|
1626 |
-
} else {
|
1627 |
-
if ( ! empty( $this->profile['wp_roles'] ) && $this->profile['wp_roles'] == 'administrator' ) {
|
1628 |
-
return 'admin';
|
1629 |
-
} else {
|
1630 |
-
return 'member';
|
1631 |
-
}
|
1632 |
-
}
|
1633 |
-
}
|
1634 |
-
|
1635 |
-
|
1636 |
-
/**
|
1637 |
-
* Update one key in user meta
|
1638 |
-
*
|
1639 |
-
* @param $key
|
1640 |
-
*/
|
1641 |
-
function update_usermeta_info( $key ) {
|
1642 |
-
// delete the key first just in case
|
1643 |
-
delete_user_meta( $this->id, $key );
|
1644 |
-
update_user_meta( $this->id, $key, $this->profile[ $key ] );
|
1645 |
-
}
|
1646 |
-
|
1647 |
-
|
1648 |
-
/**
|
1649 |
-
* This method can be used to delete user's meta key.
|
1650 |
-
*
|
1651 |
-
* @usage <?php UM()->user()->delete_meta( $key ); ?>
|
1652 |
-
*
|
1653 |
-
* @param string $key The meta field key to remove from user
|
1654 |
-
*
|
1655 |
-
* @example Delete user's age field
|
1656 |
-
|
1657 |
-
<?php
|
1658 |
-
|
1659 |
-
um_fetch_user( 15 );
|
1660 |
-
UM()->user()->delete_meta( 'age' );
|
1661 |
-
|
1662 |
-
?>
|
1663 |
-
|
1664 |
-
*
|
1665 |
-
*/
|
1666 |
-
function delete_meta( $key ) {
|
1667 |
-
delete_user_meta( $this->id, $key );
|
1668 |
-
}
|
1669 |
-
|
1670 |
-
|
1671 |
-
/**
|
1672 |
-
* Get admin actions for individual user
|
1673 |
-
*
|
1674 |
-
* @return array|bool
|
1675 |
-
*/
|
1676 |
-
function get_admin_actions() {
|
1677 |
-
$items = array();
|
1678 |
-
|
1679 |
-
/**
|
1680 |
-
* UM hook
|
1681 |
-
*
|
1682 |
-
* @type filter
|
1683 |
-
* @title um_admin_user_actions_hook
|
1684 |
-
* @description Extend admin actions for each user
|
1685 |
-
* @input_vars
|
1686 |
-
* [{"var":"$actions","type":"array","desc":"Actions for user"}]
|
1687 |
-
* @change_log
|
1688 |
-
* ["Since: 2.0"]
|
1689 |
-
* @usage
|
1690 |
-
* <?php add_filter( 'um_admin_user_actions_hook', 'function_name', 10, 1 ); ?>
|
1691 |
-
* @example
|
1692 |
-
* <?php
|
1693 |
-
* add_filter( 'um_admin_user_actions_hook', 'my_admin_user_actions', 10, 1 );
|
1694 |
-
* function my_admin_user_actions( $actions ) {
|
1695 |
-
* // your code here
|
1696 |
-
* return $actions;
|
1697 |
-
* }
|
1698 |
-
* ?>
|
1699 |
-
*/
|
1700 |
-
$actions = apply_filters( 'um_admin_user_actions_hook', array(), um_profile_id() );
|
1701 |
-
if ( empty( $actions ) ) {
|
1702 |
-
return $items;
|
1703 |
-
}
|
1704 |
-
|
1705 |
-
foreach ( $actions as $id => $arr ) {
|
1706 |
-
$url = add_query_arg( array( 'um_action' => $id, 'uid' => um_profile_id() ) );
|
1707 |
-
/*$url = add_query_arg( 'um_action', $id );
|
1708 |
-
$url = add_query_arg( 'uid', um_profile_id(), $url );*/
|
1709 |
-
$items[] = '<a href="' . esc_url( $url ) .'" class="real_url ' . esc_attr( $id ) . '-item">' . esc_html( $arr['label'] ) . '</a>';
|
1710 |
-
}
|
1711 |
-
return $items;
|
1712 |
-
}
|
1713 |
-
|
1714 |
-
|
1715 |
-
/**
|
1716 |
-
* This method checks if the profile indexing is disabled
|
1717 |
-
*
|
1718 |
-
* @param int $user_id
|
1719 |
-
*
|
1720 |
-
* @since 2.1.16
|
1721 |
-
* @usage <?php UM()->user()->is_profile_noindex( $user_id ); ?>
|
1722 |
-
*
|
1723 |
-
* @return boolean Is the profile indexing disabled?
|
1724 |
-
*/
|
1725 |
-
function is_profile_noindex( $user_id ) {
|
1726 |
-
$profile_noindex = false;
|
1727 |
-
|
1728 |
-
if ( ! get_option( 'blog_public' ) ) {
|
1729 |
-
// Option "Search engine visibility" in [wp-admin > Settings > Reading]
|
1730 |
-
$profile_noindex = true;
|
1731 |
-
|
1732 |
-
} elseif ( $this->is_private_profile( $user_id ) ) {
|
1733 |
-
// Setting "Profile Privacy" in [Account > Privacy]
|
1734 |
-
$profile_noindex = true;
|
1735 |
-
|
1736 |
-
} elseif ( get_user_meta( $user_id, 'profile_noindex', true ) === '1' ) {
|
1737 |
-
// Setting "Avoid indexing my profile by search engines in [Account > Privacy]
|
1738 |
-
$profile_noindex = true;
|
1739 |
-
|
1740 |
-
}
|
1741 |
-
|
1742 |
-
if ( ! $profile_noindex ) {
|
1743 |
-
$role = UM()->roles()->get_priority_user_role( $user_id );
|
1744 |
-
$permissions = UM()->roles()->role_data( $role );
|
1745 |
-
|
1746 |
-
if ( isset( $permissions['profile_noindex'] ) && $permissions['profile_noindex']
|
1747 |
-
// Setting "Avoid indexing profile by search engines" in [wp-admin > Ultimate Member > User Roles > Edit Role]
|
1748 |
-
$profile_noindex = true;
|
1749 |
-
|
1750 |
-
} elseif ( ( ! isset( $permissions['profile_noindex'] ) || $permissions['profile_noindex'] === '' ) && UM()->options()->get( 'profile_noindex' )
|
1751 |
-
// Setting "Avoid indexing profile by search engines" in [wp-admin > Ultimate Member > Settings > General > Users]
|
1752 |
-
$profile_noindex = true;
|
1753 |
-
|
1754 |
-
}
|
1755 |
-
}
|
1756 |
-
|
1757 |
-
return apply_filters( 'um_user_is_profile_noindex', $profile_noindex, $user_id, $this );
|
1758 |
-
}
|
1759 |
-
|
1760 |
-
|
1761 |
-
/**
|
1762 |
-
* This method checks if give user profile is private.
|
1763 |
-
*
|
1764 |
-
* @usage <?php UM()->user()->is_private_profile( $user_id ); ?>
|
1765 |
-
*
|
1766 |
-
* @param int $user_id A user ID must be passed to check if the user profile is private
|
1767 |
-
*
|
1768 |
-
* @return bool
|
1769 |
-
*
|
1770 |
-
* @example This example display a specific user's name If his profile is public
|
1771 |
-
|
1772 |
-
<?php
|
1773 |
-
|
1774 |
-
um_fetch_user( 60 );
|
1775 |
-
$is_private = UM()->user()->is_private_profile( 60 );
|
1776 |
-
if ( ! $is_private ) {
|
1777 |
-
echo 'User is public and his name is ' . um_user('display_name');
|
1778 |
-
}
|
1779 |
-
|
1780 |
-
?>
|
1781 |
-
*
|
1782 |
-
*/
|
1783 |
-
function is_private_profile( $user_id ) {
|
1784 |
-
$privacy = get_user_meta( $user_id, 'profile_privacy', true );
|
1785 |
-
if ( $privacy == __( 'Only me', 'ultimate-member' ) || $privacy == 'Only me' ) {
|
1786 |
-
return true;
|
1787 |
-
}
|
1788 |
-
return $this->is_private_case( $user_id, $privacy );
|
1789 |
-
}
|
1790 |
-
|
1791 |
-
|
1792 |
-
/**
|
1793 |
-
* This method can be used to determine If a certain user is approved or not.
|
1794 |
-
*
|
1795 |
-
* @usage <?php UM()->user()->is_approved( $user_id ); ?>
|
1796 |
-
*
|
1797 |
-
* @param int $user_id The user ID to check approval status for
|
1798 |
-
*
|
1799 |
-
* @return bool
|
1800 |
-
*
|
1801 |
-
* @example Do something If a user's membership is approved
|
1802 |
-
|
1803 |
-
<?php
|
1804 |
-
|
1805 |
-
if ( UM()->user()->is_approved( 55 ) {
|
1806 |
-
// User account is approved
|
1807 |
-
} else {
|
1808 |
-
// User account is not approved
|
1809 |
-
}
|
1810 |
-
|
1811 |
-
?>
|
1812 |
-
*
|
1813 |
-
*/
|
1814 |
-
function is_approved( $user_id ) {
|
1815 |
-
$status = get_user_meta( $user_id, 'account_status', true );
|
1816 |
-
if ( $status == 'approved' || $status == '' ) {
|
1817 |
-
return true;
|
1818 |
-
}
|
1819 |
-
return false;
|
1820 |
-
}
|
1821 |
-
|
1822 |
-
|
1823 |
-
/**
|
1824 |
-
* Is private
|
1825 |
-
*
|
1826 |
-
* @param $user_id
|
1827 |
-
* @param $case
|
1828 |
-
*
|
1829 |
-
* @return bool
|
1830 |
-
*/
|
1831 |
-
function is_private_case( $user_id, $case ) {
|
1832 |
-
$privacy = get_user_meta( $user_id, 'profile_privacy', true );
|
1833 |
-
|
1834 |
-
if ( $privacy == $case ) {
|
1835 |
-
/**
|
1836 |
-
* UM hook
|
1837 |
-
*
|
1838 |
-
* @type filter
|
1839 |
-
* @title um_is_private_filter_hook
|
1840 |
-
* @description Change user privacy
|
1841 |
-
* @input_vars
|
1842 |
-
* [{"var":"$is_private","type":"bool","desc":"Is user private"},
|
1843 |
-
* {"var":"$privacy","type":"bool","desc":"Profile Privacy"},
|
1844 |
-
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
1845 |
-
* @change_log
|
1846 |
-
* ["Since: 2.0"]
|
1847 |
-
* @usage
|
1848 |
-
* <?php add_filter( 'um_is_private_filter_hook', 'function_name', 10, 3 ); ?>
|
1849 |
-
* @example
|
1850 |
-
* <?php
|
1851 |
-
* add_filter( 'um_is_private_filter_hook', 'my_is_private_filter', 10, 3 );
|
1852 |
-
* function my_is_private_filter( $is_private ) {
|
1853 |
-
* // your code here
|
1854 |
-
* return $is_private;
|
1855 |
-
* }
|
1856 |
-
* ?>
|
1857 |
-
*/
|
1858 |
-
$bool = apply_filters( 'um_is_private_filter_hook', false, $privacy, $user_id );
|
1859 |
-
return $bool;
|
1860 |
-
}
|
1861 |
-
|
1862 |
-
return false;
|
1863 |
-
}
|
1864 |
-
|
1865 |
-
|
1866 |
-
/**
|
1867 |
-
* Update files
|
1868 |
-
*
|
1869 |
-
* @param $changes
|
1870 |
-
*
|
1871 |
-
* @deprecated 2.1.0
|
1872 |
-
*/
|
1873 |
-
function update_files( $changes ) {
|
1874 |
-
um_deprecated_function( 'update_files', '2.1.0', '' );
|
1875 |
-
}
|
1876 |
-
|
1877 |
-
|
1878 |
-
/**
|
1879 |
-
* Update profile
|
1880 |
-
*
|
1881 |
-
* @param $changes
|
1882 |
-
*/
|
1883 |
-
function update_profile( $changes ) {
|
1884 |
-
|
1885 |
-
$args['ID'] = $this->id;
|
1886 |
-
|
1887 |
-
/**
|
1888 |
-
* UM hook
|
1889 |
-
*
|
1890 |
-
* @type filter
|
1891 |
-
* @title um_before_update_profile
|
1892 |
-
* @description Change update profile changes data
|
1893 |
-
* @input_vars
|
1894 |
-
* [{"var":"$changes","type":"array","desc":"User Profile Changes"},
|
1895 |
-
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
1896 |
-
* @change_log
|
1897 |
-
* ["Since: 2.0"]
|
1898 |
-
* @usage
|
1899 |
-
* <?php add_filter( 'um_before_update_profile', 'function_name', 10, 2 ); ?>
|
1900 |
-
* @example
|
1901 |
-
* <?php
|
1902 |
-
* add_filter( 'um_before_update_profile', 'my_before_update_profile', 10, 2 );
|
1903 |
-
* function my_before_update_profile( $changes, $user_id ) {
|
1904 |
-
* // your code here
|
1905 |
-
* return $changes;
|
1906 |
-
* }
|
1907 |
-
* ?>
|
1908 |
-
*/
|
1909 |
-
$changes = apply_filters( 'um_before_update_profile', $changes, $args['ID'] );
|
1910 |
-
|
1911 |
-
foreach ( $changes as $key => $value ) {
|
1912 |
-
if ( in_array( $key, $this->banned_keys ) ) {
|
1913 |
-
continue;
|
1914 |
-
}
|
1915 |
-
|
1916 |
-
if ( ! in_array( $key, $this->update_user_keys ) ) {
|
1917 |
-
if ( $value === 0 ) {
|
1918 |
-
update_user_meta( $this->id, $key, '0' );
|
1919 |
-
} else {
|
1920 |
-
update_user_meta( $this->id, $key, $value );
|
1921 |
-
}
|
1922 |
-
} else {
|
1923 |
-
$args[ $key ] = esc_attr( $changes[ $key ] );
|
1924 |
-
}
|
1925 |
-
}
|
1926 |
-
|
1927 |
-
|
1928 |
-
// update user
|
1929 |
-
if ( count( $args ) > 1 ) {
|
1930 |
-
//if isset roles argument validate role to properly for security reasons
|
1931 |
-
if ( isset( $args['role'] ) ) {
|
1932 |
-
global $wp_roles;
|
1933 |
-
$um_roles = get_option( 'um_roles', array() );
|
1934 |
-
|
1935 |
-
if ( ! empty( $um_roles ) ) {
|
1936 |
-
$role_keys = array_map( function( $item ) {
|
1937 |
-
return 'um_' . $item;
|
1938 |
-
}, $um_roles );
|
1939 |
-
} else {
|
1940 |
-
$role_keys = array();
|
1941 |
-
}
|
1942 |
-
|
1943 |
-
$exclude_roles = array_diff( array_keys( $wp_roles->roles ), array_merge( $role_keys, array( 'subscriber' ) ) );
|
1944 |
-
|
1945 |
-
if ( in_array( $args['role'], $exclude_roles ) ) {
|
1946 |
-
unset( $args['role'] );
|
1947 |
-
}
|
1948 |
-
}
|
1949 |
-
|
1950 |
-
wp_update_user( $args );
|
1951 |
-
}
|
1952 |
-
|
1953 |
-
}
|
1954 |
-
|
1955 |
-
|
1956 |
-
/**
|
1957 |
-
* User exists by meta key and value
|
1958 |
-
*
|
1959 |
-
* @param $key
|
1960 |
-
* @param $value
|
1961 |
-
*
|
1962 |
-
* @return bool|int
|
1963 |
-
*/
|
1964 |
-
function user_has_metadata( $key, $value ) {
|
1965 |
-
|
1966 |
-
$value = UM()->validation()->safe_name_in_url( $value );
|
1967 |
-
|
1968 |
-
$ids = get_users( array( 'fields' => 'ID', 'meta_key' => $key, 'meta_value' => $value, 'meta_compare' => '=' ) );
|
1969 |
-
if ( ! isset( $ids ) || empty( $ids ) ) {
|
1970 |
-
return false;
|
1971 |
-
}
|
1972 |
-
|
1973 |
-
foreach ( $ids as $k => $id ) {
|
1974 |
-
|
1975 |
-
if ( $id == um_user('ID') ) {
|
1976 |
-
unset( $ids[ $k ] );
|
1977 |
-
} else {
|
1978 |
-
$duplicates[] = $id;
|
1979 |
-
}
|
1980 |
-
|
1981 |
-
}
|
1982 |
-
|
1983 |
-
if ( ! empty( $duplicates ) ) {
|
1984 |
-
return count( $duplicates );
|
1985 |
-
}
|
1986 |
-
return false;
|
1987 |
-
}
|
1988 |
-
|
1989 |
-
|
1990 |
-
/**
|
1991 |
-
* User exists by name
|
1992 |
-
*
|
1993 |
-
* @param $value
|
1994 |
-
*
|
1995 |
-
* @return bool
|
1996 |
-
*/
|
1997 |
-
function user_exists_by_name( $value ) {
|
1998 |
-
|
1999 |
-
// Permalink base
|
2000 |
-
$permalink_base = UM()->options()->get( 'permalink_base' );
|
2001 |
-
|
2002 |
-
$raw_value = $value;
|
2003 |
-
$value = UM()->validation()->safe_name_in_url( $value );
|
2004 |
-
$value = um_clean_user_basename( $value );
|
2005 |
-
|
2006 |
-
// Search by Profile Slug
|
2007 |
-
$args = array(
|
2008 |
-
'fields' => array( 'ID' ),
|
2009 |
-
'meta_query' => array(
|
2010 |
-
'relation' => 'OR',
|
2011 |
-
array(
|
2012 |
-
'key' => 'um_user_profile_url_slug_' . $permalink_base,
|
2013 |
-
'value' => strtolower( $raw_value ),
|
2014 |
-
'compare' => '=',
|
2015 |
-
),
|
2016 |
-
),
|
2017 |
-
);
|
2018 |
-
|
2019 |
-
|
2020 |
-
$ids = new \WP_User_Query( $args );
|
2021 |
-
|
2022 |
-
if ( $ids->total_users > 0 ) {
|
2023 |
-
$um_user_query = current( $ids->get_results() );
|
2024 |
-
return $um_user_query->ID;
|
2025 |
-
}
|
2026 |
-
|
2027 |
-
// Search by Display Name or ID
|
2028 |
-
$args = array(
|
2029 |
-
'fields' => array( 'ID' ),
|
2030 |
-
'search' => $value,
|
2031 |
-
'search_columns' => array( 'display_name', 'ID' ),
|
2032 |
-
);
|
2033 |
-
|
2034 |
-
$ids = new \WP_User_Query( $args );
|
2035 |
-
|
2036 |
-
if ( $ids->total_users > 0 ) {
|
2037 |
-
$um_user_query = current( $ids->get_results() );
|
2038 |
-
return $um_user_query->ID;
|
2039 |
-
}
|
2040 |
-
|
2041 |
-
|
2042 |
-
// Search By User Login
|
2043 |
-
$value = str_replace( ".", "_", $value );
|
2044 |
-
$value = str_replace( " ", "", $value );
|
2045 |
-
|
2046 |
-
$args = array(
|
2047 |
-
'fields' => array( 'ID' ),
|
2048 |
-
'search' => $value,
|
2049 |
-
'search_columns' => array(
|
2050 |
-
'user_login',
|
2051 |
-
)
|
2052 |
-
);
|
2053 |
-
|
2054 |
-
$ids = new \WP_User_Query( $args );
|
2055 |
-
|
2056 |
-
if ( $ids->total_users > 0 ) {
|
2057 |
-
$um_user_query = current( $ids->get_results() );
|
2058 |
-
return $um_user_query->ID;
|
2059 |
-
}
|
2060 |
-
|
2061 |
-
return false;
|
2062 |
-
}
|
2063 |
-
|
2064 |
-
|
2065 |
-
/**
|
2066 |
-
* This method checks if a user exists or not in your site based on the user ID.
|
2067 |
-
*
|
2068 |
-
* @usage <?php UM()->user()->user_exists_by_id( $user_id ); ?>
|
2069 |
-
*
|
2070 |
-
* @param int $user_id A user ID must be passed to check if the user exists
|
2071 |
-
*
|
2072 |
-
* @return bool|int
|
2073 |
-
*
|
2074 |
-
* @example Basic Usage
|
2075 |
-
|
2076 |
-
<?php
|
2077 |
-
|
2078 |
-
$boolean = UM()->user()->user_exists_by_id( 15 );
|
2079 |
-
if ( $boolean ) {
|
2080 |
-
// That user exists
|
2081 |
-
}
|
2082 |
-
|
2083 |
-
?>
|
2084 |
-
|
2085 |
-
*
|
2086 |
-
*/
|
2087 |
-
function user_exists_by_id( $user_id ) {
|
2088 |
-
$aux = get_userdata( absint( $user_id ) );
|
2089 |
-
if ( $aux == false ) {
|
2090 |
-
return false;
|
2091 |
-
} else {
|
2092 |
-
return $user_id;
|
2093 |
-
}
|
2094 |
-
}
|
2095 |
-
|
2096 |
-
|
2097 |
-
/**
|
2098 |
-
* This method checks if a user exists or not in your site based on the user email as username
|
2099 |
-
*
|
2100 |
-
* @param string $slug A user slug must be passed to check if the user exists
|
2101 |
-
*
|
2102 |
-
* @usage <?php UM()->user()->user_exists_by_email_as_username( $slug ); ?>
|
2103 |
-
*
|
2104 |
-
* @return bool
|
2105 |
-
*
|
2106 |
-
* @example Basic Usage
|
2107 |
-
|
2108 |
-
<?php
|
2109 |
-
|
2110 |
-
$boolean = UM()->user()->user_exists_by_email_as_username( 'calumgmail-com' );
|
2111 |
-
if ( $boolean ) {
|
2112 |
-
// That user exists
|
2113 |
-
}
|
2114 |
-
|
2115 |
-
?>
|
2116 |
-
*/
|
2117 |
-
function user_exists_by_email_as_username( $slug ) {
|
2118 |
-
|
2119 |
-
$user_id = false;
|
2120 |
-
|
2121 |
-
$ids = get_users( array( 'fields' => 'ID', 'meta_key' => 'um_email_as_username_' . $slug ) );
|
2122 |
-
if ( ! empty( $ids[0] ) ) {
|
2123 |
-
$user_id = $ids[0];
|
2124 |
-
}
|
2125 |
-
|
2126 |
-
return $user_id;
|
2127 |
-
}
|
2128 |
-
|
2129 |
-
|
2130 |
-
/**
|
2131 |
-
* Set gravatar hash id
|
2132 |
-
*
|
2133 |
-
* @param $user_id
|
2134 |
-
* @return string
|
2135 |
-
*/
|
2136 |
-
function set_gravatar( $user_id ) {
|
2137 |
-
|
2138 |
-
um_fetch_user( $user_id );
|
2139 |
-
$email_address = um_user( 'user_email' );
|
2140 |
-
$hash_email_address = '';
|
2141 |
-
|
2142 |
-
if ( $email_address ) {
|
2143 |
-
$hash_email_address = md5( $email_address );
|
2144 |
-
$this->profile['synced_gravatar_hashed_id'] = $hash_email_address;
|
2145 |
-
$this->update_usermeta_info( 'synced_gravatar_hashed_id' );
|
2146 |
-
}
|
2147 |
-
|
2148 |
-
return $hash_email_address;
|
2149 |
-
}
|
2150 |
-
|
2151 |
-
|
2152 |
-
/**
|
2153 |
-
* UM Placeholders for activation link in email
|
2154 |
-
*
|
2155 |
-
* @param $placeholders
|
2156 |
-
*
|
2157 |
-
* @return array
|
2158 |
-
*/
|
2159 |
-
function add_activation_placeholder( $placeholders ) {
|
2160 |
-
$placeholders[] = '{account_activation_link}';
|
2161 |
-
return $placeholders;
|
2162 |
-
}
|
2163 |
-
|
2164 |
-
|
2165 |
-
/**
|
2166 |
-
* UM Replace Placeholders for activation link in email
|
2167 |
-
*
|
2168 |
-
* @param $replace_placeholders
|
2169 |
-
*
|
2170 |
-
* @return array
|
2171 |
-
*/
|
2172 |
-
function add_activation_replace_placeholder( $replace_placeholders ) {
|
2173 |
-
$replace_placeholders[] = um_user( 'account_activation_link' );
|
2174 |
-
return $replace_placeholders;
|
2175 |
-
}
|
2176 |
-
}
|
2177 |
-
}
|
1 |
+
<?php
|
2 |
+
namespace um\core;
|
3 |
+
|
4 |
+
// Exit if accessed directly
|
5 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
6 |
+
|
7 |
+
|
8 |
+
if ( ! class_exists( 'um\core\User' ) ) {
|
9 |
+
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Class User
|
13 |
+
* @package um\core
|
14 |
+
*/
|
15 |
+
class User {
|
16 |
+
|
17 |
+
|
18 |
+
/**
|
19 |
+
* User constructor.
|
20 |
+
*/
|
21 |
+
function __construct() {
|
22 |
+
|
23 |
+
$this->id = 0;
|
24 |
+
$this->usermeta = null;
|
25 |
+
$this->data = null;
|
26 |
+
$this->profile = null;
|
27 |
+
$this->cannot_edit = null;
|
28 |
+
$this->password_reset_key = null;
|
29 |
+
|
30 |
+
global $wpdb;
|
31 |
+
|
32 |
+
$this->banned_keys = array(
|
33 |
+
'metabox','postbox','meta-box',
|
34 |
+
'dismissed_wp_pointers', 'session_tokens',
|
35 |
+
'screen_layout', 'wp_user-', 'dismissed',
|
36 |
+
'cap_key', $wpdb->get_blog_prefix(). 'capabilities',
|
37 |
+
'managenav', 'nav_menu', 'user_activation_key',
|
38 |
+
'level_', $wpdb->get_blog_prefix() . 'user_level'
|
39 |
+
);
|
40 |
+
|
41 |
+
add_action( 'init', array( &$this, 'set' ), 1 );
|
42 |
+
|
43 |
+
$this->preview = false;
|
44 |
+
$this->send_mail_on_delete = true;
|
45 |
+
|
46 |
+
// a list of keys that should never be in wp_usermeta
|
47 |
+
$this->update_user_keys = array(
|
48 |
+
'user_email',
|
49 |
+
'user_pass',
|
50 |
+
'user_password',
|
51 |
+
'display_name',
|
52 |
+
'user_url',
|
53 |
+
'role',
|
54 |
+
);
|
55 |
+
|
56 |
+
$this->target_id = null;
|
57 |
+
|
58 |
+
// When the cache should be cleared
|
59 |
+
add_action( 'um_delete_user_hook', array( &$this, 'remove_cached_queue' ) );
|
60 |
+
add_action( 'um_delete_user', array( &$this, 'remove_cache' ), 10, 1 );
|
61 |
+
|
62 |
+
add_action( 'um_after_user_status_is_changed_hook', array( &$this, 'remove_cached_queue' ) );
|
63 |
+
|
64 |
+
// When user cache should be cleared
|
65 |
+
add_action( 'um_after_user_updated', array( &$this, 'remove_cache' ) );
|
66 |
+
add_action( 'um_after_user_account_updated', array( &$this, 'remove_cache' ) );
|
67 |
+
add_action( 'personal_options_update', array( &$this, 'remove_cache' ) );
|
68 |
+
//add_action('edit_user_profile_update', array(&$this, 'remove_cache') );
|
69 |
+
add_action( 'um_when_role_is_set', array( &$this, 'remove_cache' ) );
|
70 |
+
add_action( 'um_when_status_is_set', array( &$this, 'remove_cache' ) );
|
71 |
+
|
72 |
+
add_action( 'show_user_profile', array( $this, 'profile_form_additional_section' ), 10 );
|
73 |
+
add_action( 'user_new_form', array( $this, 'profile_form_additional_section' ), 10 );
|
74 |
+
add_action( 'edit_user_profile', array( $this, 'profile_form_additional_section' ), 10 );
|
75 |
+
add_filter( 'um_user_profile_additional_fields', array( $this, 'secondary_role_field' ), 1, 2 );
|
76 |
+
|
77 |
+
//on every update of user profile (hook from wp_update_user)
|
78 |
+
add_action( 'profile_update', array( &$this, 'profile_update' ), 10, 2 ); // user_id and old_user_data
|
79 |
+
|
80 |
+
//on user update profile page
|
81 |
+
//add_action( 'edit_user_profile_update', array( &$this, 'profile_update' ), 10, 1 );
|
82 |
+
|
83 |
+
add_action( 'user_register', array( &$this, 'user_register_via_admin' ), 10, 1 );
|
84 |
+
add_action( 'user_register', array( &$this, 'set_gravatar' ), 11, 1 );
|
85 |
+
|
86 |
+
|
87 |
+
if ( is_multisite() ) {
|
88 |
+
add_action( 'added_existing_user', array( &$this, 'add_um_role_existing_user' ), 10, 2 );
|
89 |
+
add_action( 'wpmu_activate_user', array( &$this, 'add_um_role_wpmu_new_user' ), 10, 1 );
|
90 |
+
}
|
91 |
+
|
92 |
+
add_action( 'init', array( &$this, 'check_membership' ), 10 );
|
93 |
+
|
94 |
+
if ( is_multisite() ) {
|
95 |
+
add_action( 'wpmu_delete_user', array( &$this, 'delete_user_handler' ), 10, 1 );
|
96 |
+
} else {
|
97 |
+
add_action( 'delete_user', array( &$this, 'delete_user_handler' ), 10, 1 );
|
98 |
+
}
|
99 |
+
|
100 |
+
|
101 |
+
add_action( 'updated_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
102 |
+
add_action( 'added_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
103 |
+
|
104 |
+
add_action( 'deleted_user_meta', array( &$this, 'on_delete_usermeta' ), 10, 4 );
|
105 |
+
}
|
106 |
+
|
107 |
+
|
108 |
+
/**
|
109 |
+
* When you delete usermeta connected with member directory - reset it to default value
|
110 |
+
*
|
111 |
+
* @param int|array $meta_ids
|
112 |
+
* @param int $object_id
|
113 |
+
* @param string $meta_key
|
114 |
+
* @param mixed $_meta_value
|
115 |
+
*/
|
116 |
+
function on_delete_usermeta( $meta_ids, $object_id, $meta_key, $_meta_value ) {
|
117 |
+
$metakeys = array( 'account_status', 'hide_in_members', 'synced_gravatar_hashed_id', 'synced_profile_photo', 'profile_photo', 'cover_photo', '_um_verified' );
|
118 |
+
if ( ! in_array( $meta_key, $metakeys ) ) {
|
119 |
+
return;
|
120 |
+
}
|
121 |
+
|
122 |
+
$md_data = get_user_meta( $object_id, 'um_member_directory_data', true );
|
123 |
+
if ( empty( $md_data ) ) {
|
124 |
+
$md_data = array(
|
125 |
+
'account_status' => 'approved',
|
126 |
+
'hide_in_members' => UM()->member_directory()->get_hide_in_members_default(),
|
127 |
+
'profile_photo' => false,
|
128 |
+
'cover_photo' => false,
|
129 |
+
'verified' => false,
|
130 |
+
);
|
131 |
+
}
|
132 |
+
|
133 |
+
switch ( $meta_key ) {
|
134 |
+
case 'account_status':
|
135 |
+
$md_data['account_status'] = 'approved';
|
136 |
+
break;
|
137 |
+
case 'hide_in_members':
|
138 |
+
$md_data['hide_in_members'] = UM()->member_directory()->get_hide_in_members_default();
|
139 |
+
break;
|
140 |
+
case 'synced_gravatar_hashed_id':
|
141 |
+
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
142 |
+
$profile_photo = get_user_meta( $object_id, 'profile_photo', true );
|
143 |
+
$synced_profile_photo = get_user_meta( $object_id, 'synced_profile_photo', true );
|
144 |
+
|
145 |
+
$md_data['profile_photo'] = ! empty( $profile_photo ) || ! empty( $synced_profile_photo );
|
146 |
+
}
|
147 |
+
|
148 |
+
break;
|
149 |
+
case 'synced_profile_photo':
|
150 |
+
$profile_photo = get_user_meta( $object_id, 'profile_photo', true );
|
151 |
+
|
152 |
+
$synced_gravatar_hashed_id = false;
|
153 |
+
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
154 |
+
$synced_gravatar_hashed_id = get_user_meta( $object_id, 'synced_gravatar_hashed_id', true );
|
155 |
+
}
|
156 |
+
|
157 |
+
$md_data['profile_photo'] = ! empty( $profile_photo ) || ! empty( $synced_gravatar_hashed_id );
|
158 |
+
break;
|
159 |
+
case 'profile_photo':
|
160 |
+
$synced_profile_photo = get_user_meta( $object_id, 'synced_profile_photo', true );
|
161 |
+
|
162 |
+
$synced_gravatar_hashed_id = false;
|
163 |
+
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
164 |
+
$synced_gravatar_hashed_id = get_user_meta( $object_id, 'synced_gravatar_hashed_id', true );
|
165 |
+
}
|
166 |
+
|
167 |
+
$md_data['profile_photo'] = ! empty( $synced_profile_photo ) || ! empty( $synced_gravatar_hashed_id );
|
168 |
+
break;
|
169 |
+
case 'cover_photo':
|
170 |
+
$md_data['cover_photo'] = false;
|
171 |
+
break;
|
172 |
+
case '_um_verified':
|
173 |
+
$md_data['verified'] = false;
|
174 |
+
break;
|
175 |
+
}
|
176 |
+
|
177 |
+
update_user_meta( $object_id, 'um_member_directory_data', $md_data );
|
178 |
+
}
|
179 |
+
|
180 |
+
|
181 |
+
/**
|
182 |
+
* When you add/update usermeta connected with member directories - set this data to member directory metakey
|
183 |
+
*
|
184 |
+
* @param int $meta_id
|
185 |
+
* @param int $object_id
|
186 |
+
* @param string $meta_key
|
187 |
+
* @param mixed $_meta_value
|
188 |
+
*/
|
189 |
+
function on_update_usermeta( $meta_id, $object_id, $meta_key, $_meta_value ) {
|
190 |
+
|
191 |
+
$metakeys = array( 'account_status', 'hide_in_members', 'synced_gravatar_hashed_id', 'synced_profile_photo', 'profile_photo', 'cover_photo', '_um_verified' );
|
192 |
+
if ( ! in_array( $meta_key, $metakeys ) ) {
|
193 |
+
return;
|
194 |
+
}
|
195 |
+
|
196 |
+
$md_data = get_user_meta( $object_id, 'um_member_directory_data', true );
|
197 |
+
if ( empty( $md_data ) ) {
|
198 |
+
$md_data = array(
|
199 |
+
'account_status' => 'approved',
|
200 |
+
'hide_in_members' => UM()->member_directory()->get_hide_in_members_default(),
|
201 |
+
'profile_photo' => false,
|
202 |
+
'cover_photo' => false,
|
203 |
+
'verified' => false,
|
204 |
+
);
|
205 |
+
}
|
206 |
+
|
207 |
+
switch ( $meta_key ) {
|
208 |
+
case 'account_status':
|
209 |
+
$md_data['account_status'] = $_meta_value;
|
210 |
+
break;
|
211 |
+
case 'hide_in_members':
|
212 |
+
|
213 |
+
$hide_in_members = UM()->member_directory()->get_hide_in_members_default();
|
214 |
+
if ( ! empty( $_meta_value ) ) {
|
215 |
+
if ( $_meta_value == 'Yes' || $_meta_value == __( 'Yes', 'ultimate-member' ) ||
|
216 |
+
array_intersect( array( 'Yes', __( 'Yes', 'ultimate-member' ) ), $_meta_value ) ) {
|
217 |
+
$hide_in_members = true;
|
218 |
+
} else {
|
219 |
+
$hide_in_members = false;
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
$md_data['hide_in_members'] = $hide_in_members;
|
224 |
+
|
225 |
+
break;
|
226 |
+
case 'synced_gravatar_hashed_id':
|
227 |
+
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
228 |
+
if ( empty( $md_data['profile_photo'] ) ) {
|
229 |
+
$md_data['profile_photo'] = ! empty( $_meta_value );
|
230 |
+
}
|
231 |
+
}
|
232 |
+
|
233 |
+
break;
|
234 |
+
case 'synced_profile_photo':
|
235 |
+
case 'profile_photo':
|
236 |
+
if ( empty( $md_data['profile_photo'] ) ) {
|
237 |
+
$md_data['profile_photo'] = ! empty( $_meta_value );
|
238 |
+
}
|
239 |
+
break;
|
240 |
+
case 'cover_photo':
|
241 |
+
$md_data['cover_photo'] = ! empty( $_meta_value );
|
242 |
+
break;
|
243 |
+
case '_um_verified':
|
244 |
+
$md_data['verified'] = $_meta_value == 'verified' ? true : false;
|
245 |
+
break;
|
246 |
+
}
|
247 |
+
|
248 |
+
update_user_meta( $object_id, 'um_member_directory_data', $md_data );
|
249 |
+
}
|
250 |
+
|
251 |
+
|
252 |
+
/**
|
253 |
+
* @param $user_id
|
254 |
+
*/
|
255 |
+
function delete_user_handler( $user_id ) {
|
256 |
+
um_fetch_user( $user_id );
|
257 |
+
|
258 |
+
/**
|
259 |
+
* UM hook
|
260 |
+
*
|
261 |
+
* @type action
|
262 |
+
* @title um_delete_user_hook
|
263 |
+
* @description On delete user
|
264 |
+
* @change_log
|
265 |
+
* ["Since: 2.0"]
|
266 |
+
* @usage add_action( 'um_delete_user_hook', 'function_name', 10 );
|
267 |
+
* @example
|
268 |
+
* <?php
|
269 |
+
* add_action( 'um_delete_user_hook', 'my_delete_user', 10 );
|
270 |
+
* function my_delete_user() {
|
271 |
+
* // your code here
|
272 |
+
* }
|
273 |
+
* ?>
|
274 |
+
*/
|
275 |
+
do_action( 'um_delete_user_hook' );
|
276 |
+
|
277 |
+
/**
|
278 |
+
* UM hook
|
279 |
+
*
|
280 |
+
* @type action
|
281 |
+
* @title um_delete_user
|
282 |
+
* @description On delete user
|
283 |
+
* @input_vars
|
284 |
+
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
285 |
+
* @change_log
|
286 |
+
* ["Since: 2.0"]
|
287 |
+
* @usage add_action( 'um_delete_user', 'function_name', 10, 1 );
|
288 |
+
* @example
|
289 |
+
* <?php
|
290 |
+
* add_action( 'um_delete_user', 'my_delete_user', 10, 1 );
|
291 |
+
* function my_delete_user( $user_id ) {
|
292 |
+
* // your code here
|
293 |
+
* }
|
294 |
+
* ?>
|
295 |
+
*/
|
296 |
+
do_action( 'um_delete_user', um_user( 'ID' ) );
|
297 |
+
|
298 |
+
// send email notifications
|
299 |
+
if ( $this->send_mail_on_delete ) {
|
300 |
+
UM()->mail()->send( um_user( 'user_email' ), 'deletion_email' );
|
301 |
+
|
302 |
+
$emails = um_multi_admin_email();
|
303 |
+
if ( ! empty( $emails ) ) {
|
304 |
+
foreach ( $emails as $email ) {
|
305 |
+
UM()->mail()->send( $email, 'notification_deletion', array( 'admin' => true ) );
|
306 |
+
}
|
307 |
+
}
|
308 |
+
}
|
309 |
+
|
310 |
+
// remove uploads
|
311 |
+
UM()->files()->remove_dir( UM()->files()->upload_temp );
|
312 |
+
UM()->files()->remove_dir( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR );
|
313 |
+
}
|
314 |
+
|
315 |
+
|
316 |
+
/**
|
317 |
+
*
|
318 |
+
*/
|
319 |
+
function check_membership() {
|
320 |
+
if ( ! is_user_logged_in() ) {
|
321 |
+
return;
|
322 |
+
}
|
323 |
+
|
324 |
+
um_fetch_user( get_current_user_id() );
|
325 |
+
$status = um_user( 'account_status' );
|
326 |
+
|
327 |
+
if ( 'rejected' == $status ) {
|
328 |
+
wp_logout();
|
329 |
+
session_unset();
|
330 |
+
exit( wp_redirect( um_get_core_page( 'login' ) ) );
|
331 |
+
}
|
332 |
+
|
333 |
+
um_reset_user();
|
334 |
+
}
|
335 |
+
|
336 |
+
|
337 |
+
/**
|
338 |
+
* Multisite add existing user
|
339 |
+
*
|
340 |
+
* @param $user_id
|
341 |
+
* @param $result
|
342 |
+
*/
|
343 |
+
function add_um_role_existing_user( $user_id, $result ) {
|
344 |
+
// Bail if no user ID was passed
|
345 |
+
if ( empty( $user_id ) ) {
|
346 |
+
return;
|
347 |
+
}
|
348 |
+
|
349 |
+
if ( ! empty( $_POST['um-role'] ) && current_user_can( 'promote_users' ) ) {
|
350 |
+
if ( ! user_can( $user_id, $_POST['um-role'] ) ) {
|
351 |
+
UM()->roles()->set_role( $user_id, $_POST['um-role'] );
|
352 |
+
}
|
353 |
+
}
|
354 |
+
|
355 |
+
$this->remove_cache( $user_id );
|
356 |
+
}
|
357 |
+
|
358 |
+
|
359 |
+
/**
|
360 |
+
* Multisite add existing user
|
361 |
+
*
|
362 |
+
* @param $user_id
|
363 |
+
*/
|
364 |
+
function add_um_role_wpmu_new_user( $user_id ) {
|
365 |
+
// Bail if no user ID was passed
|
366 |
+
if ( empty( $user_id ) ) {
|
367 |
+
return;
|
368 |
+
}
|
369 |
+
|
370 |
+
if ( ! empty( $_POST['um-role'] ) && current_user_can( 'promote_users' ) ) {
|
371 |
+
if ( ! user_can( $user_id, $_POST['um-role'] ) ) {
|
372 |
+
UM()->roles()->set_role( $user_id, $_POST['um-role'] );
|
373 |
+
}
|
374 |
+
}
|
375 |
+
|
376 |
+
$this->remove_cache( $user_id );
|
377 |
+
}
|
378 |
+
|
379 |
+
|
380 |
+
/**
|
381 |
+
* Get pending users (in queue)
|
382 |
+
*/
|
383 |
+
function get_pending_users_count() {
|
384 |
+
|
385 |
+
$cached_users_queue = get_option( 'um_cached_users_queue' );
|
386 |
+
if ( $cached_users_queue > 0 && ! isset( $_REQUEST['delete_count'] ) ){
|
387 |
+
return $cached_users_queue;
|
388 |
+
}
|
389 |
+
|
390 |
+
$args = array( 'fields' => 'ID', 'number' => 1 );
|
391 |
+
$args['meta_query']['relation'] = 'OR';
|
392 |
+
$args['meta_query'][] = array(
|
393 |
+
'key' => 'account_status',
|
394 |
+
'value' => 'awaiting_email_confirmation',
|
395 |
+
'compare' => '='
|
396 |
+
);
|
397 |
+
$args['meta_query'][] = array(
|
398 |
+
'key' => 'account_status',
|
399 |
+
'value' => 'awaiting_admin_review',
|
400 |
+
'compare' => '='
|
401 |
+
);
|
402 |
+
|
403 |
+
/**
|
404 |
+
* UM hook
|
405 |
+
*
|
406 |
+
* @type filter
|
407 |
+
* @title um_admin_pending_queue_filter
|
408 |
+
* @description Change user query arguments when get pending users
|
409 |
+
* @input_vars
|
410 |
+
* [{"var":"$args","type":"array","desc":"WP_Users query arguments"}]
|
411 |
+
* @change_log
|
412 |
+
* ["Since: 2.0"]
|
413 |
+
* @usage
|
414 |
+
* <?php add_filter( 'um_admin_pending_queue_filter', 'function_name', 10, 1 ); ?>
|
415 |
+
* @example
|
416 |
+
* <?php
|
417 |
+
* add_filter( 'um_admin_pending_queue_filter', 'my_admin_pending_queue', 10, 1 );
|
418 |
+
* function my_admin_pending_queue( $args ) {
|
419 |
+
* // your code here
|
420 |
+
* return $args;
|
421 |
+
* }
|
422 |
+
* ?>
|
423 |
+
*/
|
424 |
+
$args = apply_filters( 'um_admin_pending_queue_filter', $args );
|
425 |
+
$users = new \WP_User_Query( $args );
|
426 |
+
|
427 |
+
delete_option( 'um_cached_users_queue' );
|
428 |
+
add_option( 'um_cached_users_queue', $users->get_total(), '', 'no' );
|
429 |
+
|
430 |
+
return $users->get_total();
|
431 |
+
}
|
432 |
+
|
433 |
+
|
434 |
+
/**
|
435 |
+
* @param $user_id
|
436 |
+
*
|
437 |
+
* @return bool|mixed
|
438 |
+
*/
|
439 |
+
function get_profile_slug( $user_id ) {
|
440 |
+
// Permalink base
|
441 |
+
$permalink_base = UM()->options()->get( 'permalink_base' );
|
442 |
+
$profile_slug = get_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", true );
|
443 |
+
|
444 |
+
//get default username permalink if it's empty then return false
|
445 |
+
if ( empty( $profile_slug ) ) {
|
446 |
+
if ( $permalink_base != 'user_login' ) {
|
447 |
+
$profile_slug = get_user_meta( $user_id, 'um_user_profile_url_slug_user_login', true );
|
448 |
+
}
|
449 |
+
|
450 |
+
if ( empty( $profile_slug ) ) {
|
451 |
+
return false;
|
452 |
+
}
|
453 |
+
}
|
454 |
+
|
455 |
+
return $profile_slug;
|
456 |
+
}
|
457 |
+
|
458 |
+
|
459 |
+
/**
|
460 |
+
* @param $user_id
|
461 |
+
*
|
462 |
+
* @return bool|string
|
463 |
+
*/
|
464 |
+
function get_profile_link( $user_id ) {
|
465 |
+
$profile_slug = $this->get_profile_slug( $user_id );
|
466 |
+
|
467 |
+
if ( empty( $profile_slug ) ) {
|
468 |
+
return false;
|
469 |
+
}
|
470 |
+
|
471 |
+
return UM()->permalinks()->profile_permalink( $profile_slug );
|
472 |
+
}
|
473 |
+
|
474 |
+
|
475 |
+
/**
|
476 |
+
* Generate User Profile Slug and save to meta
|
477 |
+
*
|
478 |
+
* @param int $user_id
|
479 |
+
* @param bool $force
|
480 |
+
*/
|
481 |
+
function generate_profile_slug( $user_id, $force = false ) {
|
482 |
+
$userdata = get_userdata( $user_id );
|
483 |
+
|
484 |
+
if ( empty( $userdata ) ) {
|
485 |
+
return;
|
486 |
+
}
|
487 |
+
|
488 |
+
delete_option( "um_cache_userdata_{$user_id}" );
|
489 |
+
|
490 |
+
$current_profile_slug = $this->get_profile_slug( $user_id );
|
491 |
+
|
492 |
+
$user_in_url = '';
|
493 |
+
$permalink_base = UM()->options()->get( 'permalink_base' );
|
494 |
+
|
495 |
+
// User ID
|
496 |
+
if ( $permalink_base == 'user_id' ) {
|
497 |
+
$user_in_url = $user_id;
|
498 |
+
}
|
499 |
+
|
500 |
+
// Username
|
501 |
+
if ( $permalink_base == 'user_login' ) {
|
502 |
+
|
503 |
+
$user_in_url = $userdata->user_login;
|
504 |
+
|
505 |
+
if ( is_email( $user_in_url ) ) {
|
506 |
+
|
507 |
+
$user_email = $user_in_url;
|
508 |
+
$user_in_url = str_replace( '@', '', $user_in_url );
|
509 |
+
|
510 |
+
if ( ( $pos = strrpos( $user_in_url, '.' ) ) !== false ) {
|
511 |
+
$search_length = strlen( '.' );
|
512 |
+
$user_in_url = substr_replace( $user_in_url, '-', $pos, $search_length );
|
513 |
+
}
|
514 |
+
update_user_meta( $user_id, "um_email_as_username_{$user_in_url}", $user_email );
|
515 |
+
|
516 |
+
} else {
|
517 |
+
|
518 |
+
$user_in_url = urlencode( $user_in_url );
|
519 |
+
|
520 |
+
}
|
521 |
+
}
|
522 |
+
|
523 |
+
// Fisrt and Last name
|
524 |
+
$full_name_permalinks = array( 'name', 'name_dash', 'name_plus' );
|
525 |
+
if ( in_array( $permalink_base, $full_name_permalinks ) ) {
|
526 |
+
$separated = array( 'name' => '.', 'name_dash' => '-', 'name_plus' => '+' );
|
527 |
+
$separate = $separated[ $permalink_base ];
|
528 |
+
$first_name = $userdata->first_name;
|
529 |
+
$last_name = $userdata->last_name;
|
530 |
+
$full_name = trim( sprintf( '%s %s', $first_name, $last_name ) );
|
531 |
+
$full_name = preg_replace( '/\s+/', ' ', $full_name ); // Remove double spaces
|
532 |
+
$profile_slug = UM()->permalinks()->profile_slug( $full_name, $first_name, $last_name );
|
533 |
+
|
534 |
+
$append = 0;
|
535 |
+
$username = $full_name;
|
536 |
+
$_username = $full_name;
|
537 |
+
|
538 |
+
while ( 1 ) {
|
539 |
+
$username = $_username . ( empty( $append ) ? '' : " $append" );
|
540 |
+
$slug_exists_user_id = UM()->permalinks()->slug_exists_user_id( $profile_slug . ( empty( $append ) ? '' : "{$separate}{$append}" ) );
|
541 |
+
if ( empty( $slug_exists_user_id ) || $user_id == $slug_exists_user_id ) {
|
542 |
+
break;
|
543 |
+
}
|
544 |
+
$append++;
|
545 |
+
}
|
546 |
+
|
547 |
+
$user_in_url = UM()->permalinks()->profile_slug( $username, $first_name, $last_name );
|
548 |
+
if ( empty( $user_in_url ) ) {
|
549 |
+
$user_in_url = $userdata->user_login;
|
550 |
+
|
551 |
+
if ( is_email( $user_in_url ) ) {
|
552 |
+
|
553 |
+
$user_email = $user_in_url;
|
554 |
+
$user_in_url = str_replace( '@', '', $user_in_url );
|
555 |
+
|
556 |
+
if ( ( $pos = strrpos( $user_in_url, '.' ) ) !== false ) {
|
557 |
+
$search_length = strlen( '.' );
|
558 |
+
$user_in_url = substr_replace( $user_in_url, '-', $pos, $search_length );
|
559 |
+
}
|
560 |
+
update_user_meta( $user_id, "um_email_as_username_{$user_in_url}", $user_email );
|
561 |
+
|
562 |
+
} else {
|
563 |
+
|
564 |
+
$user_in_url = sanitize_title( $user_in_url );
|
565 |
+
|
566 |
+
}
|
567 |
+
}
|
568 |
+
|
569 |
+
$user_in_url = trim( $user_in_url, $separate );
|
570 |
+
}
|
571 |
+
|
572 |
+
$user_in_url = apply_filters( 'um_change_user_profile_slug', $user_in_url, $user_id );
|
573 |
+
|
574 |
+
if ( $force || empty( $current_profile_slug ) || $current_profile_slug != $user_in_url ) {
|
575 |
+
update_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", $user_in_url );
|
576 |
+
}
|
577 |
+
}
|
578 |
+
|
579 |
+
|
580 |
+
/**
|
581 |
+
* Backend user creation
|
582 |
+
*
|
583 |
+
* @param $user_id
|
584 |
+
*/
|
585 |
+
function user_register_via_admin( $user_id ) {
|
586 |
+
|
587 |
+
if ( empty( $user_id ) ) {
|
588 |
+
return;
|
589 |
+
}
|
590 |
+
|
591 |
+
if ( is_admin() ) {
|
592 |
+
//if there custom 2 role not empty
|
593 |
+
if ( ! empty( $_POST['um-role'] ) && current_user_can( 'promote_users' ) ) {
|
594 |
+
$user = get_userdata( $user_id );
|
595 |
+
$user->add_role( $_POST['um-role'] );
|
596 |
+
UM()->user()->profile['role'] = $_POST['um-role'];
|
597 |
+
UM()->user()->update_usermeta_info( 'role' );
|
598 |
+
}
|
599 |
+
|
600 |
+
/**
|
601 |
+
* UM hook
|
602 |
+
*
|
603 |
+
* @type action
|
604 |
+
* @title um_user_register
|
605 |
+
* @description Action on user registration
|
606 |
+
* @input_vars
|
607 |
+
* [{"var":"$user_id","type":"int","desc":"User ID"},
|
608 |
+
* {"var":"$submitted","type":"array","desc":"Registration form submitted"}]
|
609 |
+
* @change_log
|
610 |
+
* ["Since: 2.0"]
|
611 |
+
* @usage add_action( 'um_user_register', 'function_name', 10, 2 );
|
612 |
+
* @example
|
613 |
+
* <?php
|
614 |
+
* add_action( 'um_user_register', 'my_user_register', 10, 2 );
|
615 |
+
* function my_user_register( $user_id, $submitted ) {
|
616 |
+
* // your code here
|
617 |
+
* }
|
618 |
+
* ?>
|
619 |
+
*/
|
620 |
+
do_action( 'um_user_register', $user_id, $_POST );
|
621 |
+
}
|
622 |
+
|
623 |
+
}
|
624 |
+
|
625 |
+
|
626 |
+
/**
|
627 |
+
* On wp_update_user function complete
|
628 |
+
*
|
629 |
+
* @param int $user_id
|
630 |
+
* @param \WP_User $old_data
|
631 |
+
*/
|
632 |
+
function profile_update( $user_id, $old_data ) {
|
633 |
+
// Bail if no user ID was passed
|
634 |
+
if ( empty( $user_id ) ) {
|
635 |
+
return;
|
636 |
+
}
|
637 |
+
|
638 |
+
$old_roles = $old_data->roles;
|
639 |
+
$userdata = get_userdata( $user_id );
|
640 |
+
$new_roles = $userdata->roles;
|
641 |
+
|
642 |
+
if ( is_admin() ) {
|
643 |
+
if ( ! empty( $_POST['um-role'] ) && current_user_can( 'promote_users' ) ) {
|
644 |
+
$new_roles = array_merge( $new_roles, array( $_POST['um-role'] ) );
|
645 |
+
if ( ! user_can( $user_id, $_POST['um-role'] ) ) {
|
646 |
+
UM()->roles()->set_role( $user_id, $_POST['um-role'] );
|
647 |
+
}
|
648 |
+
}
|
649 |
+
}
|
650 |
+
|
651 |
+
/**
|
652 |
+
* UM hook
|
653 |
+
*
|
654 |
+
* @type action
|
655 |
+
* @title um_after_member_role_upgrade
|
656 |
+
* @description Action on user registration
|
657 |
+
* @input_vars
|
658 |
+
* [{"var":"$new_roles","type":"array","desc":"User new roles"},
|
659 |
+
* {"var":"$old_roles","type":"array","desc":"Old roles"}]
|
660 |
+
* @change_log
|
661 |
+
* ["Since: 2.0"]
|
662 |
+
* @usage add_action( 'um_after_member_role_upgrade', 'function_name', 10, 2 );
|
663 |
+
* @example
|
664 |
+
* <?php
|
665 |
+
* add_action( 'um_after_member_role_upgrade', 'my_after_member_role_upgrade', 10, 2 );
|
666 |
+
* function my_after_member_role_upgrade( $new_roles, $old_roles ) {
|
667 |
+
* // your code here
|
668 |
+
* }
|
669 |
+
* ?>
|
670 |
+
*/
|
671 |
+
do_action( 'um_after_member_role_upgrade', $new_roles, $old_roles, $user_id );
|
672 |
+
|
673 |
+
//Update permalink
|
674 |
+
$this->generate_profile_slug( $user_id, true );
|
675 |
+
|
676 |
+
$this->remove_cache( $user_id );
|
677 |
+
}
|
678 |
+
|
679 |
+
|
680 |
+
/**
|
681 |
+
* Additional section for WP Profile page with UM data fields
|
682 |
+
*
|
683 |
+
* @param \WP_User $userdata User data
|
684 |
+
* @return void
|
685 |
+
*/
|
686 |
+
function profile_form_additional_section( $userdata ) {
|
687 |
+
|
688 |
+
/**
|
689 |
+
* UM hook
|
690 |
+
*
|
691 |
+
* @type filter
|
692 |
+
* @title um_user_profile_additional_fields
|
693 |
+
* @description Make additional content section
|
694 |
+
* @input_vars
|
695 |
+
* [{"var":"$content","type":"array","desc":"Additional section content"},
|
696 |
+
* {"var":"$userdata","type":"array","desc":"Userdata"}]
|
697 |
+
* @change_log
|
698 |
+
* ["Since: 2.0"]
|
699 |
+
* @usage
|
700 |
+
* <?php add_filter( 'um_user_profile_additional_fields', 'function_name', 10, 2 ); ?>
|
701 |
+
* @example
|
702 |
+
* <?php
|
703 |
+
* add_filter( 'um_user_profile_additional_fields', 'my_admin_pending_queue', 10, 2 );
|
704 |
+
* function my_admin_pending_queue( $content, $userdata ) {
|
705 |
+
* // your code here
|
706 |
+
* return $content;
|
707 |
+
* }
|
708 |
+
* ?>
|
709 |
+
*/
|
710 |
+
$section_content = apply_filters( 'um_user_profile_additional_fields', '', $userdata );
|
711 |
+
|
712 |
+
if ( ! empty( $section_content ) && ! ( is_multisite() && is_network_admin() ) ) {
|
713 |
+
|
714 |
+
if ( $userdata !== 'add-new-user' && $userdata !== 'add-existing-user' ) { ?>
|
715 |
+
<h3 id="um_user_screen_block"><?php esc_html_e( 'Ultimate Member', 'ultimate-member' ); ?></h3>
|
716 |
+
<?php }
|
717 |
+
|
718 |
+
echo $section_content;
|
719 |
+
}
|
720 |
+
}
|
721 |
+
|
722 |
+
|
723 |
+
/**
|
724 |
+
* Default interface for setting a ultimatemember role
|
725 |
+
*
|
726 |
+
* @param string $content Section HTML
|
727 |
+
* @param \WP_User $userdata User data
|
728 |
+
* @return string
|
729 |
+
*/
|
730 |
+
public function secondary_role_field( $content, $userdata ) {
|
731 |
+
$roles = array();
|
732 |
+
|
733 |
+
$role_keys = get_option( 'um_roles', array() );
|
734 |
+
if ( $role_keys ) {
|
735 |
+
foreach ( $role_keys as $role_key ) {
|
736 |
+
$role_meta = get_option( "um_role_{$role_key}_meta" );
|
737 |
+
|
738 |
+
if ( $role_meta ) {
|
739 |
+
$roles[ 'um_' . $role_key ] = $role_meta;
|
740 |
+
}
|
741 |
+
}
|
742 |
+
}
|
743 |
+
|
744 |
+
if ( empty( $roles ) ) {
|
745 |
+
return $content;
|
746 |
+
}
|
747 |
+
|
748 |
+
global $pagenow;
|
749 |
+
if ( 'profile.php' == $pagenow ) {
|
750 |
+
return $content;
|
751 |
+
}
|
752 |
+
|
753 |
+
$style = '';
|
754 |
+
$user_role = false;
|
755 |
+
if ( $userdata !== 'add-new-user' && $userdata !== 'add-existing-user' ) {
|
756 |
+
// Bail if current user cannot edit users
|
757 |
+
if ( ! current_user_can( 'edit_user', $userdata->ID ) ) {
|
758 |
+
return $content;
|
759 |
+
}
|
760 |
+
|
761 |
+
$user_role = UM()->roles()->get_um_user_role( $userdata->ID );
|
762 |
+
if ( $user_role && ! empty( $userdata->roles ) && count( $userdata->roles ) == 1 ) {
|
763 |
+
$style = 'style="display:none;"';
|
764 |
+
}
|
765 |
+
|
766 |
+
}
|
767 |
+
|
768 |
+
$class = ( $userdata == 'add-existing-user' ) ? 'um_role_existing_selector_wrapper' : 'um_role_selector_wrapper';
|
769 |
+
|
770 |
+
ob_start(); ?>
|
771 |
+
|
772 |
+
<div id="<?php echo esc_attr( $class ) ?>" <?php echo $style ?>>
|
773 |
+
<table class="form-table">
|
774 |
+
<tbody>
|
775 |
+
<tr>
|
776 |
+
<th><label for="um-role"><?php esc_html_e( 'Ultimate Member Role', 'ultimate-member' ); ?></label></th>
|
777 |
+
<td>
|
778 |
+
<select name="um-role" id="um-role">
|
779 |
+
<option value="" <?php selected( empty( $user_role ) ) ?>><?php esc_html_e( '— No role for Ultimate Member —', 'ultimate-member' ); ?></option>
|
780 |
+
<?php foreach ( $roles as $role_id => $details ) { ?>
|
781 |
+
<option <?php selected( $user_role, $role_id ); ?> value="<?php echo esc_attr( $role_id ); ?>"><?php echo esc_html( $details['name'] ); ?></option>
|
782 |
+
<?php } ?>
|
783 |
+
</select>
|
784 |
+
</td>
|
785 |
+
</tr>
|
786 |
+
</tbody>
|
787 |
+
</table>
|
788 |
+
</div>
|
789 |
+
|
790 |
+
<?php $content .= ob_get_clean();
|
791 |
+
|
792 |
+
return $content;
|
793 |
+
}
|
794 |
+
|
795 |
+
|
796 |
+
/**
|
797 |
+
* Remove cached queue from Users backend
|
798 |
+
*/
|
799 |
+
function remove_cached_queue() {
|
800 |
+
delete_option( 'um_cached_users_queue' );
|
801 |
+
}
|
802 |
+
|
803 |
+
|
804 |
+
/**
|
805 |
+
* Converts object to array
|
806 |
+
*
|
807 |
+
* @param $obj
|
808 |
+
*
|
809 |
+
* @return array
|
810 |
+
*/
|
811 |
+
function toArray( $obj ) {
|
812 |
+
if ( is_object( $obj ) ) {
|
813 |
+
$obj = (array) $obj;
|
814 |
+
}
|
815 |
+
if ( is_array( $obj ) ) {
|
816 |
+
$new = array();
|
817 |
+
foreach ( $obj as $key => $val ) {
|
818 |
+
$new[ $key ] = $this->toArray( $val );
|
819 |
+
}
|
820 |
+
} else {
|
821 |
+
$new = $obj;
|
822 |
+
}
|
823 |
+
|
824 |
+
return $new;
|
825 |
+
}
|
826 |
+
|
827 |
+
|
828 |
+
/**
|
829 |
+
* @param $user_id
|
830 |
+
*
|
831 |
+
* @return mixed|string
|
832 |
+
*/
|
833 |
+
function get_cached_data( $user_id ) {
|
834 |
+
|
835 |
+
$disallow_cache = UM()->options()->get( 'um_profile_object_cache_stop' );
|
836 |
+
if ( $disallow_cache ) {
|
837 |
+
return '';
|
838 |
+
}
|
839 |
+
|
840 |
+
if ( is_numeric( $user_id ) && $user_id > 0 ) {
|
841 |
+
$find_user = get_option( "um_cache_userdata_{$user_id}" );
|
842 |
+
if ( $find_user ) {
|
843 |
+
/**
|
844 |
+
* UM hook
|
845 |
+
*
|
846 |
+
* @type filter
|
847 |
+
* @title um_user_permissions_filter
|
848 |
+
* @description Change User Permissions
|
849 |
+
* @input_vars
|
850 |
+
* [{"var":"$permissions","type":"array","desc":"User Permissions"},
|
851 |
+
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
852 |
+
* @change_log
|
853 |
+
* ["Since: 2.0"]
|
854 |
+
* @usage
|
855 |
+
* <?php add_filter( 'um_user_permissions_filter', 'function_name', 10, 2 ); ?>
|
856 |
+
* @example
|
857 |
+
* <?php
|
858 |
+
* add_filter( 'um_user_permissions_filter', 'my_user_permissions', 10, 2 );
|
859 |
+
* function my_user_permissions( $permissions, $user_id ) {
|
860 |
+
* // your code here
|
861 |
+
* return $permissions;
|
862 |
+
* }
|
863 |
+
* ?>
|
864 |
+
*/
|
865 |
+
$find_user = apply_filters( 'um_user_permissions_filter', $find_user, $user_id );
|
866 |
+
return $find_user;
|
867 |
+
}
|
868 |
+
}
|
869 |
+
return '';
|
870 |
+
}
|
871 |
+
|
872 |
+
|
873 |
+
/**
|
874 |
+
* @param $user_id
|
875 |
+
* @param $profile
|
876 |
+
*/
|
877 |
+
function setup_cache( $user_id, $profile ) {
|
878 |
+
|
879 |
+
$disallow_cache = UM()->options()->get( 'um_profile_object_cache_stop' );
|
880 |
+
if ( $disallow_cache ) {
|
881 |
+
return;
|
882 |
+
}
|
883 |
+
|
884 |
+
update_option( "um_cache_userdata_{$user_id}", $profile, false );
|
885 |
+
}
|
886 |
+
|
887 |
+
|
888 |
+
/**
|
889 |
+
* @param $user_id
|
890 |
+
*/
|
891 |
+
function remove_cache( $user_id ) {
|
892 |
+
delete_option( "um_cache_userdata_{$user_id}" );
|
893 |
+
}
|
894 |
+
|
895 |
+
|
896 |
+
/**
|
897 |
+
* Remove cache for all users
|
898 |
+
*/
|
899 |
+
function remove_cache_all_users() {
|
900 |
+
global $wpdb;
|
901 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'um_cache_userdata_%'" );
|
902 |
+
}
|
903 |
+
|
904 |
+
|
905 |
+
/**
|
906 |
+
* This method lets you set a user. For example, to retrieve a profile or anything related to that user.
|
907 |
+
*
|
908 |
+
* @usage <?php UM()->user()->set( $user_id, $clean = false ); ?>
|
909 |
+
*
|
910 |
+
* @param null|int $user_id Which user to retrieve. A numeric user ID
|
911 |
+
* @param bool $clean Should be true or false. Basically, if you did not provide a user ID It will set the current logged in user as a profile
|
912 |
+
*
|
913 |
+
* @example The following example makes you set a user and retrieve their display name after that using the user API.
|
914 |
+
|
915 |
+
<?php
|
916 |
+
|
917 |
+
UM()->user()->set( 12 );
|
918 |
+
$display_name = UM()->user()->profile['display_name']; // Should print user display name
|
919 |
+
|
920 |
+
?>
|
921 |
+
*
|
922 |
+
*/
|
923 |
+
function set( $user_id = null, $clean = false ) {
|
924 |
+
if ( isset( $this->profile ) ) {
|
925 |
+
unset( $this->profile );
|
926 |
+
}
|
927 |
+
|
928 |
+
if ( $user_id ) {
|
929 |
+
$this->id = $user_id;
|
930 |
+
} elseif ( is_user_logged_in() && $clean == false ) {
|
931 |
+
$this->id = get_current_user_id();
|
932 |
+
} else {
|
933 |
+
$this->id = 0;
|
934 |
+
}
|
935 |
+
|
936 |
+
if ( $this->get_cached_data( $this->id ) ) {
|
937 |
+
$this->profile = $this->get_cached_data( $this->id );
|
938 |
+
} else {
|
939 |
+
|
940 |
+
if ( $user_id ) {
|
941 |
+
|
942 |
+
$this->id = $user_id;
|
943 |
+
$this->usermeta = get_user_meta( $user_id );
|
944 |
+
$this->data = get_userdata( $this->id );
|
945 |
+
|
946 |
+
} elseif ( is_user_logged_in() && $clean == false ) {
|
947 |
+
|
948 |
+
$this->id = get_current_user_id();
|
949 |
+
$this->usermeta = get_user_meta($this->id);
|
950 |
+
$this->data = get_userdata($this->id);
|
951 |
+
|
952 |
+
} else {
|
953 |
+
|
954 |
+
$this->id = 0;
|
955 |
+
$this->usermeta = null;
|
956 |
+
$this->data = null;
|
957 |
+
|
958 |
+
}
|
959 |
+
|
960 |
+
// we have a user, populate a profile
|
961 |
+
if ( $this->id && $this->toArray( $this->data ) ) {
|
962 |
+
|
963 |
+
// add user data
|
964 |
+
$this->data = $this->toArray( $this->data );
|
965 |
+
|
966 |
+
foreach ( $this->data as $k=>$v ) {
|
967 |
+
if ( $k == 'roles') {
|
968 |
+
$this->profile['wp_roles'] = implode(',',$v);
|
969 |
+
} else if ( is_array( $v ) ) {
|
970 |
+
foreach($v as $k2 => $v2){
|
971 |
+
$this->profile[$k2] = $v2;
|
972 |
+
}
|
973 |
+
} else {
|
974 |
+
$this->profile[$k] = $v;
|
975 |
+
}
|
976 |
+
}
|
977 |
+
|
978 |
+
// add account status
|
979 |
+
if ( !isset( $this->usermeta['account_status'][0] ) ) {
|
980 |
+
$this->usermeta['account_status'][0] = 'approved';
|
981 |
+
}
|
982 |
+
|
983 |
+
if ( $this->usermeta['account_status'][0] == 'approved' ) {
|
984 |
+
$this->usermeta['account_status_name'][0] = __('Approved','ultimate-member');
|
985 |
+
}
|
986 |
+
|
987 |
+
if ( $this->usermeta['account_status'][0] == 'awaiting_email_confirmation' ) {
|
988 |
+
$this->usermeta['account_status_name'][0] = __('Awaiting E-mail Confirmation','ultimate-member');
|
989 |
+
}
|
990 |
+
|
991 |
+
if ( $this->usermeta['account_status'][0] == 'awaiting_admin_review' ) {
|
992 |
+
$this->usermeta['account_status_name'][0] = __('Pending Review','ultimate-member');
|
993 |
+
}
|
994 |
+
|
995 |
+
if ( $this->usermeta['account_status'][0] == 'rejected' ) {
|
996 |
+
$this->usermeta['account_status_name'][0] = __('Membership Rejected','ultimate-member');
|
997 |
+
}
|
998 |
+
|
999 |
+
if ( $this->usermeta['account_status'][0] == 'inactive' ) {
|
1000 |
+
$this->usermeta['account_status_name'][0] = __('Membership Inactive','ultimate-member');
|
1001 |
+
}
|
1002 |
+
|
1003 |
+
// add user meta
|
1004 |
+
foreach ( $this->usermeta as $k => $v ) {
|
1005 |
+
if ( $k == 'display_name') {
|
1006 |
+
continue;
|
1007 |
+
}
|
1008 |
+
$this->profile[ $k ] = $v[0];
|
1009 |
+
}
|
1010 |
+
|
1011 |
+
// add permissions
|
1012 |
+
$user_role = UM()->roles()->get_priority_user_role( $this->id );
|
1013 |
+
$this->profile['role'] = $user_role;
|
1014 |
+
$this->profile['roles'] = UM()->roles()->get_all_user_roles( $this->id );
|
1015 |
+
|
1016 |
+
$role_meta = UM()->roles()->role_data( $user_role );
|
1017 |
+
/**
|
1018 |
+
* UM hook
|
1019 |
+
*
|
1020 |
+
* @type filter
|
1021 |
+
* @title um_user_permissions_filter
|
1022 |
+
* @description Change User Permissions
|
1023 |
+
* @input_vars
|
1024 |
+
* [{"var":"$permissions","type":"array","desc":"User Permissions"},
|
1025 |
+
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
1026 |
+
* @change_log
|
1027 |
+
* ["Since: 2.0"]
|
1028 |
+
* @usage
|
1029 |
+
* <?php add_filter( 'um_user_permissions_filter', 'function_name', 10, 2 ); ?>
|
1030 |
+
* @example
|
1031 |
+
* <?php
|
1032 |
+
* add_filter( 'um_user_permissions_filter', 'my_user_permissions', 10, 2 );
|
1033 |
+
* function my_user_permissions( $permissions, $user_id ) {
|
1034 |
+
* // your code here
|
1035 |
+
* return $permissions;
|
1036 |
+
* }
|
1037 |
+
* ?>
|
1038 |
+
*/
|
1039 |
+
$role_meta = apply_filters( 'um_user_permissions_filter', $role_meta, $this->id );
|
1040 |
+
|
1041 |
+
/*$role_meta = array_map( function( $key, $item ) {
|
1042 |
+
if ( strpos( $key, '_um_' ) === 0 )
|
1043 |
+
$key = str_replace( '_um_', '', $key );
|
1044 |
+
|
1045 |
+
return array( $key => $item );
|
1046 |
+
}, array_keys( $role_meta ), $role_meta );*/
|
1047 |
+
|
1048 |
+
$this->profile = array_merge( $this->profile, (array)$role_meta );
|
1049 |
+
|
1050 |
+
$this->profile['super_admin'] = ( is_super_admin( $this->id ) ) ? 1 : 0;
|
1051 |
+
|
1052 |
+
// clean profile
|
1053 |
+
$this->clean();
|
1054 |
+
|
1055 |
+
// Setup cache
|
1056 |
+
$this->setup_cache( $this->id, $this->profile );
|
1057 |
+
|
1058 |
+
}
|
1059 |
+
|
1060 |
+
}
|
1061 |
+
|
1062 |
+
}
|
1063 |
+
|
1064 |
+
|
1065 |
+
/**
|
1066 |
+
* Reset user data
|
1067 |
+
*
|
1068 |
+
* @param bool $clean
|
1069 |
+
*/
|
1070 |
+
function reset( $clean = false ){
|
1071 |
+
$this->set(0, $clean);
|
1072 |
+
}
|
1073 |
+
|
1074 |
+
|
1075 |
+
/**
|
1076 |
+
* Clean user profile
|
1077 |
+
*/
|
1078 |
+
function clean() {
|
1079 |
+
foreach ( $this->profile as $key => $value ) {
|
1080 |
+
foreach ( $this->banned_keys as $ban ) {
|
1081 |
+
if ( strstr( $key, $ban ) || is_numeric( $key ) ) {
|
1082 |
+
unset( $this->profile[ $key ] );
|
1083 |
+
}
|
1084 |
+
}
|
1085 |
+
}
|
1086 |
+
}
|
1087 |
+
|
1088 |
+
|
1089 |
+
/**
|
1090 |
+
* This method lets you auto sign-in a user to your site.
|
1091 |
+
*
|
1092 |
+
* @usage <?php UM()->user()->auto_login( $user_id, $rememberme = false ); ?>
|
1093 |
+
*
|
1094 |
+
* @param int $user_id Which user ID to sign in automatically
|
1095 |
+
* @param int|bool $rememberme Should be true or false. If you want the user sign in session to use cookies, use true
|
1096 |
+
*
|
1097 |
+
* @example The following example lets you sign in a user automatically by their ID.
|
1098 |
+
|
1099 |
+
<?php UM()->user()->auto_login( 2 ); ?>
|
1100 |
+
*
|
1101 |
+
*
|
1102 |
+
* @example The following example lets you sign in a user automatically by their ID and makes the plugin remember their session.
|
1103 |
+
|
1104 |
+
<?php UM()->user()->auto_login( 10, true ); ?>
|
1105 |
+
*
|
1106 |
+
*/
|
1107 |
+
function auto_login( $user_id, $rememberme = 0 ) {
|
1108 |
+
|
1109 |
+
wp_set_current_user( $user_id );
|
1110 |
+
|
1111 |
+
wp_set_auth_cookie( $user_id, $rememberme );
|
1112 |
+
|
1113 |
+
$user = get_user_by( 'ID', $user_id );
|
1114 |
+
|
1115 |
+
do_action( 'wp_login', $user->user_login, $user );
|
1116 |
+
|
1117 |
+
}
|
1118 |
+
|
1119 |
+
|
1120 |
+
/**
|
1121 |
+
* Set user's registration details
|
1122 |
+
*
|
1123 |
+
* @param array $submitted
|
1124 |
+
* @param array $args
|
1125 |
+
*/
|
1126 |
+
function set_registration_details( $submitted, $args ) {
|
1127 |
+
|
1128 |
+
if ( isset( $submitted['user_pass'] ) ) {
|
1129 |
+
unset( $submitted['user_pass'] );
|
1130 |
+
}
|
1131 |
+
|
1132 |
+
if ( isset( $submitted['user_password'] ) ) {
|
1133 |
+
unset( $submitted['user_password'] );
|
1134 |
+
}
|
1135 |
+
|
1136 |
+
if ( isset( $submitted['confirm_user_password'] ) ) {
|
1137 |
+
unset( $submitted['confirm_user_password'] );
|
1138 |
+
}
|
1139 |
+
|
1140 |
+
//remove all password field values from submitted details
|
1141 |
+
$password_fields = array();
|
1142 |
+
foreach ( $submitted as $k => $v ) {
|
1143 |
+
if ( UM()->fields()->get_field_type( $k ) == 'password' ) {
|
1144 |
+
$password_fields[] = $k;
|
1145 |
+
$password_fields[] = 'confirm_' . $k;
|
1146 |
+
}
|
1147 |
+
}
|
1148 |
+
|
1149 |
+
foreach ( $password_fields as $pw_field ) {
|
1150 |
+
unset( $submitted[ $pw_field ] );
|
1151 |
+
}
|
1152 |
+
|
1153 |
+
|
1154 |
+
/**
|
1155 |
+
* UM hook
|
1156 |
+
*
|
1157 |
+
* @type filter
|
1158 |
+
* @title um_before_save_filter_submitted
|
1159 |
+
* @description Change submitted data before save usermeta "submitted" on registration process
|
1160 |
+
* @input_vars
|
1161 |
+
* [{"var":"$submitted","type":"array","desc":"Submitted data"},
|
1162 |
+
* {"var":"$args","type":"array","desc":"Form Args"}]
|
1163 |
+
* @change_log
|
1164 |
+
* ["Since: 2.0"]
|
1165 |
+
* @usage
|
1166 |
+
* <?php add_filter( 'um_before_save_filter_submitted', 'function_name', 10, 2 ); ?>
|
1167 |
+
* @example
|
1168 |
+
* <?php
|
1169 |
+
* add_filter( 'um_before_save_filter_submitted', 'my_before_save_filter_submitted', 10, 2 );
|
1170 |
+
* function my_before_save_filter_submitted( $submitted, $args ) {
|
1171 |
+
* // your code here
|
1172 |
+
* return $submitted;
|
1173 |
+
* }
|
1174 |
+
* ?>
|
1175 |
+
*/
|
1176 |
+
$submitted = apply_filters( 'um_before_save_filter_submitted', $submitted, $args );
|
1177 |
+
|
1178 |
+
/**
|
1179 |
+
* UM hook
|
1180 |
+
*
|
1181 |
+
* @type action
|
1182 |
+
* @title um_before_save_registration_details
|
1183 |
+
* @description Action on user registration before save details
|
1184 |
+
* @input_vars
|
1185 |
+
* [{"var":"$user_id","type":"int","desc":"User ID"},
|
1186 |
+
* {"var":"$submitted","type":"array","desc":"Registration form submitted"}]
|
1187 |
+
* @change_log
|
1188 |
+
* ["Since: 2.0"]
|
1189 |
+
* @usage add_action( 'um_before_save_registration_details', 'function_name', 10, 2 );
|
1190 |
+
* @example
|
1191 |
+
* <?php
|
1192 |
+
* add_action( 'um_before_save_registration_details', 'my_before_save_registration_details', 10, 2 );
|
1193 |
+
* function my_before_save_registration_details( $user_id, $submitted ) {
|
1194 |
+
* // your code here
|
1195 |
+
* }
|
1196 |
+
* ?>
|
1197 |
+
*/
|
1198 |
+
do_action( 'um_before_save_registration_details', $this->id, $submitted );
|
1199 |
+
|
1200 |
+
update_user_meta( $this->id, 'submitted', $submitted );
|
1201 |
+
|
1202 |
+
$this->update_profile( $submitted );
|
1203 |
+
/**
|
1204 |
+
* UM hook
|
1205 |
+
*
|
1206 |
+
* @type action
|
1207 |
+
* @title um_after_save_registration_details
|
1208 |
+
* @description Action on user registration after save details
|
1209 |
+
* @input_vars
|
1210 |
+
* [{"var":"$user_id","type":"int","desc":"User ID"},
|
1211 |
+
* {"var":"$submitted","type":"array","desc":"Registration form submitted"}]
|
1212 |
+
* @change_log
|
1213 |
+
* ["Since: 2.0"]
|
1214 |
+
* @usage add_action( 'um_after_save_registration_details', 'function_name', 10, 2 );
|
1215 |
+
* @example
|
1216 |
+
* <?php
|
1217 |
+
* add_action( 'um_after_save_registration_details', 'my_after_save_registration_details', 10, 2 );
|
1218 |
+
* function my_after_save_registration_details( $user_id, $submitted ) {
|
1219 |
+
* // your code here
|
1220 |
+
* }
|
1221 |
+
* ?>
|
1222 |
+
*/
|
1223 |
+
do_action( 'um_after_save_registration_details', $this->id, $submitted );
|
1224 |
+
|
1225 |
+
}
|
1226 |
+
|
1227 |
+
|
1228 |
+
/**
|
1229 |
+
* Set last login for new registered users
|
1230 |
+
*/
|
1231 |
+
function set_last_login() {
|
1232 |
+
update_user_meta( $this->id, '_um_last_login', current_time( 'timestamp' ) );
|
1233 |
+
}
|
1234 |
+
|
1235 |
+
|
1236 |
+
/**
|
1237 |
+
* Set user's account status
|
1238 |
+
*
|
1239 |
+
* @param $status
|
1240 |
+
*/
|
1241 |
+
function set_status( $status ) {
|
1242 |
+
|
1243 |
+
/**
|
1244 |
+
* UM hook
|
1245 |
+
*
|
1246 |
+
* @type action
|
1247 |
+
* @title um_when_status_is_set
|
1248 |
+
* @description Action on user status changed
|
1249 |
+
* @input_vars
|
1250 |
+
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
1251 |
+
* @change_log
|
1252 |
+
* ["Since: 2.0"]
|
1253 |
+
* @usage add_action( 'um_when_status_is_set', 'function_name', 10, 1 );
|
1254 |
+
* @example
|
1255 |
+
* <?php
|
1256 |
+
* add_action( 'um_when_status_is_set', 'my_when_status_is_set', 10, 1 );
|
1257 |
+
* function my_when_status_is_set( $user_id ) {
|
1258 |
+
* // your code here
|
1259 |
+
* }
|
1260 |
+
* ?>
|
1261 |
+
*/
|
1262 |
+
do_action( 'um_when_status_is_set', um_user( 'ID' ) );
|
1263 |
+
|
1264 |
+
$this->profile['account_status'] = $status;
|
1265 |
+
|
1266 |
+
$this->update_usermeta_info( 'account_status' );
|
1267 |
+
|
1268 |
+
/**
|
1269 |
+
* UM hook
|
1270 |
+
*
|
1271 |
+
* @type action
|
1272 |
+
* @title um_after_user_status_is_changed_hook
|
1273 |
+
* @description Action after user status changed
|
1274 |
+
* @input_vars
|
1275 |
+
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
1276 |
+
* @change_log
|
1277 |
+
* ["Since: 2.0"]
|
1278 |
+
* @usage add_action( 'um_after_user_status_is_changed_hook', 'function_name', 10 );
|
1279 |
+
* @example
|
1280 |
+
* <?php
|
1281 |
+
* add_action( 'um_after_user_status_is_changed_hook', 'my_after_user_status_is_changed', 10 );
|
1282 |
+
* function my_after_user_status_is_changed() {
|
1283 |
+
* // your code here
|
1284 |
+
* }
|
1285 |
+
* ?>
|
1286 |
+
*/
|
1287 |
+
do_action( 'um_after_user_status_is_changed_hook', um_user( 'ID' ) );
|
1288 |
+
|
1289 |
+
/**
|
1290 |
+
* UM hook
|
1291 |
+
*
|
1292 |
+
* @type action
|
1293 |
+
* @title um_after_user_status_is_changed
|
1294 |
+
* @description Action after user status changed
|
1295 |
+
* @input_vars
|
1296 |
+
* [{"var":"$status","type":"string","desc":"User Status"},
|
1297 |
+
* {"var":"$user_id","type":"integer","desc":"User ID"}]
|
1298 |
+
* @change_log
|
1299 |
+
* ["Since: 2.0"]
|
1300 |
+
* @usage add_action( 'um_after_user_status_is_changed', 'function_name', 10, 1 );
|
1301 |
+
* @example
|
1302 |
+
* <?php
|
1303 |
+
* add_action( 'um_after_user_status_is_changed', 'my_after_user_status_is_changed', 10, 1 );
|
1304 |
+
* function my_after_user_status_is_changed( $status ) {
|
1305 |
+
* // your code here
|
1306 |
+
* }
|
1307 |
+
* ?>
|
1308 |
+
*/
|
1309 |
+
do_action( 'um_after_user_status_is_changed', $status, um_user( 'ID' ) );
|
1310 |
+
|
1311 |
+
}
|
1312 |
+
|
1313 |
+
|
1314 |
+
/**
|
1315 |
+
* Set user's hash
|
1316 |
+
*/
|
1317 |
+
function assign_secretkey() {
|
1318 |
+
/**
|
1319 |
+
* UM hook
|
1320 |
+
*
|
1321 |
+
* @type action
|
1322 |
+
* @title um_before_user_hash_is_changed
|
1323 |
+
* @description Action before user hash is changed
|
1324 |
+
* @change_log
|
1325 |
+
* ["Since: 2.0"]
|
1326 |
+
* @usage add_action( 'um_before_user_hash_is_changed', 'function_name', 10 );
|
1327 |
+
* @example
|
1328 |
+
* <?php
|
1329 |
+
* add_action( 'um_before_user_hash_is_changed', 'my_before_user_hash_is_changed', 10 );
|
1330 |
+
* function my_before_user_hash_is_changed() {
|
1331 |
+
* // your code here
|
1332 |
+
* }
|
1333 |
+
* ?>
|
1334 |
+
*/
|
1335 |
+
do_action( 'um_before_user_hash_is_changed' );
|
1336 |
+
|
1337 |
+
$this->profile['account_secret_hash'] = UM()->validation()->generate();
|
1338 |
+
$this->update_usermeta_info( 'account_secret_hash' );
|
1339 |
+
|
1340 |
+
$expiry_time = UM()->options()->get( 'activation_link_expiry_time' );
|
1341 |
+
if ( ! empty( $expiry_time ) && is_numeric( $expiry_time ) ) {
|
1342 |
+
$this->profile['account_secret_hash_expiry'] = time() + $expiry_time;
|
1343 |
+
$this->update_usermeta_info( 'account_secret_hash_expiry' );
|
1344 |
+
}
|
1345 |
+
|
1346 |
+
/**
|
1347 |
+
* UM hook
|
1348 |
+
*
|
1349 |
+
* @type action
|
1350 |
+
* @title um_after_user_hash_is_changed
|
1351 |
+
* @description Action after user hash is changed
|
1352 |
+
* @change_log
|
1353 |
+
* ["Since: 2.0"]
|
1354 |
+
* @usage add_action( 'um_after_user_hash_is_changed', 'function_name', 10 );
|
1355 |
+
* @example
|
1356 |
+
* <?php
|
1357 |
+
* add_action( 'um_after_user_hash_is_changed', 'my_after_user_hash_is_changed', 10 );
|
1358 |
+
* function my_after_user_hash_is_changed() {
|
1359 |
+
* // your code here
|
1360 |
+
* }
|
1361 |
+
* ?>
|
1362 |
+
*/
|
1363 |
+
do_action( 'um_after_user_hash_is_changed' );
|
1364 |
+
}
|
1365 |
+
|
1366 |
+
|
1367 |
+
/**
|
1368 |
+
* @param \WP_User $userdata
|
1369 |
+
*
|
1370 |
+
* @return string|\WP_Error
|
1371 |
+
*/
|
1372 |
+
function maybe_generate_password_reset_key( $userdata ) {
|
1373 |
+
if ( empty( $this->password_reset_key ) ) {
|
1374 |
+
$this->password_reset_key = get_password_reset_key( $userdata );
|
1375 |
+
}
|
1376 |
+
|
1377 |
+
return $this->password_reset_key ;
|
1378 |
+
}
|
1379 |
+
|
1380 |
+
|
1381 |
+
/**
|
1382 |
+
* Password reset email
|
1383 |
+
*/
|
1384 |
+
function password_reset() {
|
1385 |
+
$userdata = get_userdata( um_user( 'ID' ) );
|
1386 |
+
|
1387 |
+
$this->maybe_generate_password_reset_key( $userdata );
|
1388 |
+
|
1389 |
+
add_filter( 'um_template_tags_patterns_hook', array( UM()->password(), 'add_placeholder' ), 10, 1 );
|
1390 |
+
add_filter( 'um_template_tags_replaces_hook', array( UM()->password(), 'add_replace_placeholder' ), 10, 1 );
|
1391 |
+
|
1392 |
+
UM()->mail()->send( um_user( 'user_email' ), 'resetpw_email' );
|
1393 |
+
}
|
1394 |
+
|
1395 |
+
|
1396 |
+
/**
|
1397 |
+
* Password changed email
|
1398 |
+
*/
|
1399 |
+
function password_changed() {
|
1400 |
+
UM()->mail()->send( um_user( 'user_email' ), 'changedpw_email' );
|
1401 |
+
}
|
1402 |
+
|
1403 |
+
|
1404 |
+
/**
|
1405 |
+
* This method approves a user membership and sends them an optional welcome/approval e-mail.
|
1406 |
+
*
|
1407 |
+
* @usage <?php UM()->user()->approve(); ?>
|
1408 |
+
*
|
1409 |
+
* @example Approve a pending user and allow him to sign-in to your site.
|
1410 |
+
|
1411 |
+
<?php
|
1412 |
+
|
1413 |
+
um_fetch_user( 352 );
|
1414 |
+
UM()->user()->approve();
|
1415 |
+
|
1416 |
+
?>
|
1417 |
+
*
|
1418 |
+
*/
|
1419 |
+
function approve( $repeat = true ) {
|
1420 |
+
$user_id = um_user('ID');
|
1421 |
+
|
1422 |
+
if ( ! $repeat ) {
|
1423 |
+
$status = get_user_meta( $user_id, 'account_status', true );
|
1424 |
+
if ( 'approved' === $status ) {
|
1425 |
+
return;
|
1426 |
+
}
|
1427 |
+
}
|
1428 |
+
|
1429 |
+
delete_option( "um_cache_userdata_{$user_id}" );
|
1430 |
+
|
1431 |
+
if ( um_user( 'account_status' ) == 'awaiting_admin_review' ) {
|
1432 |
+
$userdata = get_userdata( $user_id );
|
1433 |
+
|
1434 |
+
$this->maybe_generate_password_reset_key( $userdata );
|
1435 |
+
|
1436 |
+
UM()->mail()->send( um_user( 'user_email' ), 'approved_email' );
|
1437 |
+
|
1438 |
+
} else {
|
1439 |
+
//$userdata = get_userdata( $user_id );
|
1440 |
+
//get_password_reset_key( $userdata );
|
1441 |
+
UM()->mail()->send( um_user( 'user_email' ), 'welcome_email' );
|
1442 |
+
}
|
1443 |
+
|
1444 |
+
$this->set_status( 'approved' );
|
1445 |
+
$this->delete_meta( 'account_secret_hash' );
|
1446 |
+
$this->delete_meta( 'account_secret_hash_expiry' );
|
1447 |
+
|
1448 |
+
/**
|
1449 |
+
* UM hook
|
1450 |
+
*
|
1451 |
+
* @type action
|
1452 |
+
* @title um_after_user_is_approved
|
1453 |
+
* @description Action after user was approved
|
1454 |
+
* @input_vars
|
1455 |
+
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
1456 |
+
* @change_log
|
1457 |
+
* ["Since: 2.0"]
|
1458 |
+
* @usage add_action( 'um_after_user_is_approved', 'function_name', 10, 1 );
|
1459 |
+
* @example
|
1460 |
+
* <?php
|
1461 |
+
* add_action( 'um_after_user_is_approved', 'my_after_user_is_approved', 10, 1 );
|
1462 |
+
* function my_after_user_hash_is_changed( $user_id ) {
|
1463 |
+
* // your code here
|
1464 |
+
* }
|
1465 |
+
* ?>
|
1466 |
+
*/
|
1467 |
+
do_action( 'um_after_user_is_approved', um_user( 'ID' ) );
|
1468 |
+
}
|
1469 |
+
|
1470 |
+
|
1471 |
+
/**
|
1472 |
+
* Pending email
|
1473 |
+
*/
|
1474 |
+
function email_pending() {
|
1475 |
+
$this->assign_secretkey();
|
1476 |
+
$this->set_status( 'awaiting_email_confirmation' );
|
1477 |
+
UM()->mail()->send( um_user( 'user_email' ), 'checkmail_email' );
|
1478 |
+
}
|
1479 |
+
|
1480 |
+
|
1481 |
+
/**
|
1482 |
+
* This method puts a user under manual review by administrator and sends them an optional e-mail.
|
1483 |
+
*
|
1484 |
+
* @usage <?php UM()->user()->pending(); ?>
|
1485 |
+
*
|
1486 |
+
* @example An example of putting a user pending manual review
|
1487 |
+
|
1488 |
+
<?php
|
1489 |
+
|
1490 |
+
um_fetch_user( 54 );
|
1491 |
+
UM()->user()->pending();
|
1492 |
+
|
1493 |
+
?>
|
1494 |
+
*
|
1495 |
+
*/
|
1496 |
+
function pending() {
|
1497 |
+
$this->set_status( 'awaiting_admin_review' );
|
1498 |
+
UM()->mail()->send( um_user( 'user_email' ), 'pending_email' );
|
1499 |
+
}
|
1500 |
+
|
1501 |
+
|
1502 |
+
/**
|
1503 |
+
* This method rejects a user membership and sends them an optional e-mail.
|
1504 |
+
*
|
1505 |
+
* @usage <?php UM()->user()->reject(); ?>
|
1506 |
+
*
|
1507 |
+
* @example Reject a user membership example
|
1508 |
+
|
1509 |
+
<?php
|
1510 |
+
|
1511 |
+
um_fetch_user( 114 );
|
1512 |
+
UM()->user()->reject();
|
1513 |
+
|
1514 |
+
?>
|
1515 |
+
|
1516 |
+
*
|
1517 |
+
*/
|
1518 |
+
function reject() {
|
1519 |
+
$this->set_status( 'rejected' );
|
1520 |
+
UM()->mail()->send( um_user( 'user_email' ), 'rejected_email' );
|
1521 |
+
}
|
1522 |
+
|
1523 |
+
|
1524 |
+
/**
|
1525 |
+
* This method deactivates a user membership and sends them an optional e-mail.
|
1526 |
+
*
|
1527 |
+
* @usage <?php UM()->user()->deactivate(); ?>
|
1528 |
+
*
|
1529 |
+
* @example Deactivate a user membership with the following example
|
1530 |
+
|
1531 |
+
<?php
|
1532 |
+
|
1533 |
+
um_fetch_user( 32 );
|
1534 |
+
$ultimatemember->user->deactivate();
|
1535 |
+
|
1536 |
+
?>
|
1537 |
+
*
|
1538 |
+
*/
|
1539 |
+
function deactivate() {
|
1540 |
+
$this->set_status( 'inactive' );
|
1541 |
+
/**
|
1542 |
+
* UM hook
|
1543 |
+
*
|
1544 |
+
* @type action
|
1545 |
+
* @title um_after_user_is_inactive
|
1546 |
+
* @description Action after user was inactive
|
1547 |
+
* @input_vars
|
1548 |
+
* [{"var":"$user_id","type":"int","desc":"User ID"}]
|
1549 |
+
* @change_log
|
1550 |
+
* ["Since: 2.0"]
|
1551 |
+
* @usage add_action( 'um_after_user_is_inactive', 'function_name', 10, 1 );
|
1552 |
+
* @example
|
1553 |
+
* <?php
|
1554 |
+
* add_action( 'um_after_user_is_inactive', 'my_after_user_is_inactive', 10, 1 );
|
1555 |
+
* function my_after_user_is_inactive( $user_id ) {
|
1556 |
+
* // your code here
|
1557 |
+
* }
|
1558 |
+
* ?>
|
1559 |
+
*/
|
1560 |
+
do_action( 'um_after_user_is_inactive', um_user( 'ID' ) );
|
1561 |
+
|
1562 |
+
UM()->mail()->send( um_user( 'user_email' ), 'inactive_email' );
|
1563 |
+
}
|
1564 |
+
|
1565 |
+
|
1566 |
+
/**
|
1567 |
+
* Delete user
|
1568 |
+
*
|
1569 |
+
* @param bool $send_mail
|
1570 |
+
*/
|
1571 |
+
function delete( $send_mail = true ) {
|
1572 |
+
|
1573 |
+
$this->send_mail_on_delete = $send_mail;
|
1574 |
+
//don't send email notification to not approved user
|
1575 |
+
if ( 'approved' != um_user( 'account_status' ) ) {
|
1576 |
+
$this->send_mail_on_delete = false;
|
1577 |
+
}
|
1578 |
+
|
1579 |
+
// remove user
|
1580 |
+
if ( is_multisite() ) {
|
1581 |
+
|
1582 |
+
if ( ! function_exists( 'wpmu_delete_user' ) ) {
|
1583 |
+
require_once( ABSPATH . 'wp-admin/includes/ms.php' );
|
1584 |
+
}
|
1585 |
+
|
1586 |
+
wpmu_delete_user( $this->id );
|
1587 |
+
|
1588 |
+
} else {
|
1589 |
+
|
1590 |
+
if ( ! function_exists( 'wp_delete_user' ) ) {
|
1591 |
+
require_once( ABSPATH . 'wp-admin/includes/user.php' );
|
1592 |
+
}
|
1593 |
+
|
1594 |
+
wp_delete_user( $this->id );
|
1595 |
+
|
1596 |
+
}
|
1597 |
+
|
1598 |
+
}
|
1599 |
+
|
1600 |
+
|
1601 |
+
/**
|
1602 |
+
* This method gets a user role in slug format. e.g. member
|
1603 |
+
*
|
1604 |
+
* @usage <?php UM()->user()->get_role(); ?>
|
1605 |
+
*
|
1606 |
+
* @return string
|
1607 |
+
*
|
1608 |
+
* @example Do something if the user's role is paid-member
|
1609 |
+
|
1610 |
+
<?php
|
1611 |
+
|
1612 |
+
um_fetch_user( 12 );
|
1613 |
+
|
1614 |
+
if ( UM()->user()->get_role() == 'paid-member' ) {
|
1615 |
+
// Show this to paid customers
|
1616 |
+
} else {
|
1617 |
+
// You are a free member
|
1618 |
+
}
|
1619 |
+
|
1620 |
+
?>
|
1621 |
+
*
|
1622 |
+
*/
|
1623 |
+
function get_role() {
|
1624 |
+
if ( ! empty( $this->profile['role'] ) ) {
|
1625 |
+
return $this->profile['role'];
|
1626 |
+
} else {
|
1627 |
+
if ( ! empty( $this->profile['wp_roles'] ) && $this->profile['wp_roles'] == 'administrator' ) {
|
1628 |
+
return 'admin';
|
1629 |
+
} else {
|
1630 |
+
return 'member';
|
1631 |
+
}
|
1632 |
+
}
|
1633 |
+
}
|
1634 |
+
|
1635 |
+
|
1636 |
+
/**
|
1637 |
+
* Update one key in user meta
|
1638 |
+
*
|
1639 |
+
* @param $key
|
1640 |
+
*/
|
1641 |
+
function update_usermeta_info( $key ) {
|
1642 |
+
// delete the key first just in case
|
1643 |
+
delete_user_meta( $this->id, $key );
|
1644 |
+
update_user_meta( $this->id, $key, $this->profile[ $key ] );
|
1645 |
+
}
|
1646 |
+
|
1647 |
+
|
1648 |
+
/**
|
1649 |
+
* This method can be used to delete user's meta key.
|
1650 |
+
*
|
1651 |
+
* @usage <?php UM()->user()->delete_meta( $key ); ?>
|
1652 |
+
*
|
1653 |
+
* @param string $key The meta field key to remove from user
|
1654 |
+
*
|
1655 |
+
* @example Delete user's age field
|
1656 |
+
|
1657 |
+
<?php
|
1658 |
+
|
1659 |
+
um_fetch_user( 15 );
|
1660 |
+
UM()->user()->delete_meta( 'age' );
|
1661 |
+
|
1662 |
+
?>
|
1663 |
+
|
1664 |
+
*
|
1665 |
+
*/
|
1666 |
+
function delete_meta( $key ) {
|
1667 |
+
delete_user_meta( $this->id, $key );
|
1668 |
+
}
|
1669 |
+
|
1670 |
+
|
1671 |
+
/**
|
1672 |
+
* Get admin actions for individual user
|
1673 |
+
*
|
1674 |
+
* @return array|bool
|
1675 |
+
*/
|
1676 |
+
function get_admin_actions() {
|
1677 |
+
$items = array();
|
1678 |
+
|
1679 |
+
/**
|
1680 |
+
* UM hook
|
1681 |
+
*
|
1682 |
+
* @type filter
|
1683 |
+
* @title um_admin_user_actions_hook
|
1684 |
+
* @description Extend admin actions for each user
|
1685 |
+
* @input_vars
|
1686 |
+
* [{"var":"$actions","type":"array","desc":"Actions for user"}]
|
1687 |
+
* @change_log
|
1688 |
+
* ["Since: 2.0"]
|
1689 |
+
* @usage
|
1690 |
+
* <?php add_filter( 'um_admin_user_actions_hook', 'function_name', 10, 1 ); ?>
|
1691 |
+
* @example
|
1692 |
+
* <?php
|
1693 |
+
* add_filter( 'um_admin_user_actions_hook', 'my_admin_user_actions', 10, 1 );
|
1694 |
+
* function my_admin_user_actions( $actions ) {
|
1695 |
+
* // your code here
|
1696 |
+
* return $actions;
|
1697 |
+
* }
|
1698 |
+
* ?>
|
1699 |
+
*/
|
1700 |
+
$actions = apply_filters( 'um_admin_user_actions_hook', array(), um_profile_id() );
|
1701 |
+
if ( empty( $actions ) ) {
|
1702 |
+
return $items;
|
1703 |
+
}
|
1704 |
+
|
1705 |
+
foreach ( $actions as $id => $arr ) {
|
1706 |
+
$url = add_query_arg( array( 'um_action' => $id, 'uid' => um_profile_id() ) );
|
1707 |
+
/*$url = add_query_arg( 'um_action', $id );
|
1708 |
+
$url = add_query_arg( 'uid', um_profile_id(), $url );*/
|
1709 |
+
$items[] = '<a href="' . esc_url( $url ) .'" class="real_url ' . esc_attr( $id ) . '-item">' . esc_html( $arr['label'] ) . '</a>';
|
1710 |
+
}
|
1711 |
+
return $items;
|
1712 |
+
}
|
1713 |
+
|
1714 |
+
|
1715 |
+
/**
|
1716 |
+
* This method checks if the profile indexing is disabled
|
1717 |
+
*
|
1718 |
+
* @param int $user_id
|
1719 |
+
*
|
1720 |
+
* @since 2.1.16
|
1721 |
+
* @usage <?php UM()->user()->is_profile_noindex( $user_id ); ?>
|
1722 |
+
*
|
1723 |
+
* @return boolean Is the profile indexing disabled?
|
1724 |
+
*/
|
1725 |
+
function is_profile_noindex( $user_id ) {
|
1726 |
+
$profile_noindex = false;
|
1727 |
+
|
1728 |
+
if ( ! get_option( 'blog_public' ) ) {
|
1729 |
+
// Option "Search engine visibility" in [wp-admin > Settings > Reading]
|
1730 |
+
$profile_noindex = true;
|
1731 |
+
|
1732 |
+
} elseif ( $this->is_private_profile( $user_id ) ) {
|
1733 |
+
// Setting "Profile Privacy" in [Account > Privacy]
|
1734 |
+
$profile_noindex = true;
|
1735 |
+
|
1736 |
+
} elseif ( get_user_meta( $user_id, 'profile_noindex', true ) === '1' ) {
|
1737 |
+
// Setting "Avoid indexing my profile by search engines in [Account > Privacy]
|
1738 |
+
$profile_noindex = true;
|
1739 |
+
|
1740 |
+
}
|
1741 |
+
|
1742 |
+
if ( ! $profile_noindex ) {
|
1743 |
+
$role = UM()->roles()->get_priority_user_role( $user_id );
|
1744 |
+
$permissions = UM()->roles()->role_data( $role );
|
1745 |
+
|
1746 |
+
if ( isset( $permissions['profile_noindex'] ) && (bool) $permissions['profile_noindex'] ) {
|
1747 |
+
// Setting "Avoid indexing profile by search engines" in [wp-admin > Ultimate Member > User Roles > Edit Role]
|
1748 |
+
$profile_noindex = true;
|
1749 |
+
|
1750 |
+
} elseif ( ( ! isset( $permissions['profile_noindex'] ) || $permissions['profile_noindex'] === '' ) && (bool) UM()->options()->get( 'profile_noindex' ) ) {
|
1751 |
+
// Setting "Avoid indexing profile by search engines" in [wp-admin > Ultimate Member > Settings > General > Users]
|
1752 |
+
$profile_noindex = true;
|
1753 |
+
|
1754 |
+
}
|
1755 |
+
}
|
1756 |
+
|
1757 |
+
return apply_filters( 'um_user_is_profile_noindex', $profile_noindex, $user_id, $this );
|
1758 |
+
}
|
1759 |
+
|
1760 |
+
|
1761 |
+
/**
|
1762 |
+
* This method checks if give user profile is private.
|
1763 |
+
*
|
1764 |
+
* @usage <?php UM()->user()->is_private_profile( $user_id ); ?>
|
1765 |
+
*
|
1766 |
+
* @param int $user_id A user ID must be passed to check if the user profile is private
|
1767 |
+
*
|
1768 |
+
* @return bool
|
1769 |
+
*
|
1770 |
+
* @example This example display a specific user's name If his profile is public
|
1771 |
+
|
1772 |
+
<?php
|
1773 |
+
|
1774 |
+
um_fetch_user( 60 );
|
1775 |
+
$is_private = UM()->user()->is_private_profile( 60 );
|
1776 |
+
if ( ! $is_private ) {
|
1777 |
+
echo 'User is public and his name is ' . um_user('display_name');
|
1778 |
+
}
|
1779 |
+
|
1780 |
+
?>
|
1781 |
+
*
|
1782 |
+
*/
|
1783 |
+
function is_private_profile( $user_id ) {
|
1784 |
+
$privacy = get_user_meta( $user_id, 'profile_privacy', true );
|
1785 |
+
if ( $privacy == __( 'Only me', 'ultimate-member' ) || $privacy == 'Only me' ) {
|
1786 |
+
return true;
|
1787 |
+
}
|
1788 |
+
return $this->is_private_case( $user_id, $privacy );
|
1789 |
+
}
|
1790 |
+
|
1791 |
+
|
1792 |
+
/**
|
1793 |
+
* This method can be used to determine If a certain user is approved or not.
|
1794 |
+
*
|
1795 |
+
* @usage <?php UM()->user()->is_approved( $user_id ); ?>
|
1796 |
+
*
|
1797 |
+
* @param int $user_id The user ID to check approval status for
|
1798 |
+
*
|
1799 |
+
* @return bool
|
1800 |
+
*
|
1801 |
+
* @example Do something If a user's membership is approved
|
1802 |
+
|
1803 |
+
<?php
|
1804 |
+
|
1805 |
+
if ( UM()->user()->is_approved( 55 ) {
|
1806 |
+
// User account is approved
|
1807 |
+
} else {
|
1808 |
+
// User account is not approved
|
1809 |
+
}
|
1810 |
+
|
1811 |
+
?>
|
1812 |
+
*
|
1813 |
+
*/
|
1814 |
+
function is_approved( $user_id ) {
|
1815 |
+
$status = get_user_meta( $user_id, 'account_status', true );
|
1816 |
+
if ( $status == 'approved' || $status == '' ) {
|
1817 |
+
return true;
|
1818 |
+
}
|
1819 |
+
return false;
|
1820 |
+
}
|
1821 |
+
|
1822 |
+
|
1823 |
+
/**
|
1824 |
+
* Is private
|
1825 |
+
*
|
1826 |
+
* @param $user_id
|
1827 |
+
* @param $case
|
1828 |
+
*
|
1829 |
+
* @return bool
|
1830 |
+
*/
|
1831 |
+
function is_private_case( $user_id, $case ) {
|
1832 |
+
$privacy = get_user_meta( $user_id, 'profile_privacy', true );
|
1833 |
+
|
1834 |
+
if ( $privacy == $case ) {
|
1835 |
+
/**
|
1836 |
+
* UM hook
|
1837 |
+
*
|
1838 |
+
* @type filter
|
1839 |
+
* @title um_is_private_filter_hook
|
1840 |
+
* @description Change user privacy
|
1841 |
+
* @input_vars
|
1842 |
+
* [{"var":"$is_private","type":"bool","desc":"Is user private"},
|
1843 |
+
* {"var":"$privacy","type":"bool","desc":"Profile Privacy"},
|
1844 |
+
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
1845 |
+
* @change_log
|
1846 |
+
* ["Since: 2.0"]
|
1847 |
+
* @usage
|
1848 |
+
* <?php add_filter( 'um_is_private_filter_hook', 'function_name', 10, 3 ); ?>
|
1849 |
+
* @example
|
1850 |
+
* <?php
|
1851 |
+
* add_filter( 'um_is_private_filter_hook', 'my_is_private_filter', 10, 3 );
|
1852 |
+
* function my_is_private_filter( $is_private ) {
|
1853 |
+
* // your code here
|
1854 |
+
* return $is_private;
|
1855 |
+
* }
|
1856 |
+
* ?>
|
1857 |
+
*/
|
1858 |
+
$bool = apply_filters( 'um_is_private_filter_hook', false, $privacy, $user_id );
|
1859 |
+
return $bool;
|
1860 |
+
}
|
1861 |
+
|
1862 |
+
return false;
|
1863 |
+
}
|
1864 |
+
|
1865 |
+
|
1866 |
+
/**
|
1867 |
+
* Update files
|
1868 |
+
*
|
1869 |
+
* @param $changes
|
1870 |
+
*
|
1871 |
+
* @deprecated 2.1.0
|
1872 |
+
*/
|
1873 |
+
function update_files( $changes ) {
|
1874 |
+
um_deprecated_function( 'update_files', '2.1.0', '' );
|
1875 |
+
}
|
1876 |
+
|
1877 |
+
|
1878 |
+
/**
|
1879 |
+
* Update profile
|
1880 |
+
*
|
1881 |
+
* @param $changes
|
1882 |
+
*/
|
1883 |
+
function update_profile( $changes ) {
|
1884 |
+
|
1885 |
+
$args['ID'] = $this->id;
|
1886 |
+
|
1887 |
+
/**
|
1888 |
+
* UM hook
|
1889 |
+
*
|
1890 |
+
* @type filter
|
1891 |
+
* @title um_before_update_profile
|
1892 |
+
* @description Change update profile changes data
|
1893 |
+
* @input_vars
|
1894 |
+
* [{"var":"$changes","type":"array","desc":"User Profile Changes"},
|
1895 |
+
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
1896 |
+
* @change_log
|
1897 |
+
* ["Since: 2.0"]
|
1898 |
+
* @usage
|
1899 |
+
* <?php add_filter( 'um_before_update_profile', 'function_name', 10, 2 ); ?>
|
1900 |
+
* @example
|
1901 |
+
* <?php
|
1902 |
+
* add_filter( 'um_before_update_profile', 'my_before_update_profile', 10, 2 );
|
1903 |
+
* function my_before_update_profile( $changes, $user_id ) {
|
1904 |
+
* // your code here
|
1905 |
+
* return $changes;
|
1906 |
+
* }
|
1907 |
+
* ?>
|
1908 |
+
*/
|
1909 |
+
$changes = apply_filters( 'um_before_update_profile', $changes, $args['ID'] );
|
1910 |
+
|
1911 |
+
foreach ( $changes as $key => $value ) {
|
1912 |
+
if ( in_array( $key, $this->banned_keys ) ) {
|
1913 |
+
continue;
|
1914 |
+
}
|
1915 |
+
|
1916 |
+
if ( ! in_array( $key, $this->update_user_keys ) ) {
|
1917 |
+
if ( $value === 0 ) {
|
1918 |
+
update_user_meta( $this->id, $key, '0' );
|
1919 |
+
} else {
|
1920 |
+
update_user_meta( $this->id, $key, $value );
|
1921 |
+
}
|
1922 |
+
} else {
|
1923 |
+
$args[ $key ] = esc_attr( $changes[ $key ] );
|
1924 |
+
}
|
1925 |
+
}
|
1926 |
+
|
1927 |
+
|
1928 |
+
// update user
|
1929 |
+
if ( count( $args ) > 1 ) {
|
1930 |
+
//if isset roles argument validate role to properly for security reasons
|
1931 |
+
if ( isset( $args['role'] ) ) {
|
1932 |
+
global $wp_roles;
|
1933 |
+
$um_roles = get_option( 'um_roles', array() );
|
1934 |
+
|
1935 |
+
if ( ! empty( $um_roles ) ) {
|
1936 |
+
$role_keys = array_map( function( $item ) {
|
1937 |
+
return 'um_' . $item;
|
1938 |
+
}, $um_roles );
|
1939 |
+
} else {
|
1940 |
+
$role_keys = array();
|
1941 |
+
}
|
1942 |
+
|
1943 |
+
$exclude_roles = array_diff( array_keys( $wp_roles->roles ), array_merge( $role_keys, array( 'subscriber' ) ) );
|
1944 |
+
|
1945 |
+
if ( in_array( $args['role'], $exclude_roles ) ) {
|
1946 |
+
unset( $args['role'] );
|
1947 |
+
}
|
1948 |
+
}
|
1949 |
+
|
1950 |
+
wp_update_user( $args );
|
1951 |
+
}
|
1952 |
+
|
1953 |
+
}
|
1954 |
+
|
1955 |
+
|
1956 |
+
/**
|
1957 |
+
* User exists by meta key and value
|
1958 |
+
*
|
1959 |
+
* @param $key
|
1960 |
+
* @param $value
|
1961 |
+
*
|
1962 |
+
* @return bool|int
|
1963 |
+
*/
|
1964 |
+
function user_has_metadata( $key, $value ) {
|
1965 |
+
|
1966 |
+
$value = UM()->validation()->safe_name_in_url( $value );
|
1967 |
+
|
1968 |
+
$ids = get_users( array( 'fields' => 'ID', 'meta_key' => $key, 'meta_value' => $value, 'meta_compare' => '=' ) );
|
1969 |
+
if ( ! isset( $ids ) || empty( $ids ) ) {
|
1970 |
+
return false;
|
1971 |
+
}
|
1972 |
+
|
1973 |
+
foreach ( $ids as $k => $id ) {
|
1974 |
+
|
1975 |
+
if ( $id == um_user('ID') ) {
|
1976 |
+
unset( $ids[ $k ] );
|
1977 |
+
} else {
|
1978 |
+
$duplicates[] = $id;
|
1979 |
+
}
|
1980 |
+
|
1981 |
+
}
|
1982 |
+
|
1983 |
+
if ( ! empty( $duplicates ) ) {
|
1984 |
+
return count( $duplicates );
|
1985 |
+
}
|
1986 |
+
return false;
|
1987 |
+
}
|
1988 |
+
|
1989 |
+
|
1990 |
+
/**
|
1991 |
+
* User exists by name
|
1992 |
+
*
|
1993 |
+
* @param $value
|
1994 |
+
*
|
1995 |
+
* @return bool
|
1996 |
+
*/
|
1997 |
+
function user_exists_by_name( $value ) {
|
1998 |
+
|
1999 |
+
// Permalink base
|
2000 |
+
$permalink_base = UM()->options()->get( 'permalink_base' );
|
2001 |
+
|
2002 |
+
$raw_value = $value;
|
2003 |
+
$value = UM()->validation()->safe_name_in_url( $value );
|
2004 |
+
$value = um_clean_user_basename( $value );
|
2005 |
+
|
2006 |
+
// Search by Profile Slug
|
2007 |
+
$args = array(
|
2008 |
+
'fields' => array( 'ID' ),
|
2009 |
+
'meta_query' => array(
|
2010 |
+
'relation' => 'OR',
|
2011 |
+
array(
|
2012 |
+
'key' => 'um_user_profile_url_slug_' . $permalink_base,
|
2013 |
+
'value' => strtolower( $raw_value ),
|
2014 |
+
'compare' => '=',
|
2015 |
+
),
|
2016 |
+
),
|
2017 |
+
);
|
2018 |
+
|
2019 |
+
|
2020 |
+
$ids = new \WP_User_Query( $args );
|
2021 |
+
|
2022 |
+
if ( $ids->total_users > 0 ) {
|
2023 |
+
$um_user_query = current( $ids->get_results() );
|
2024 |
+
return $um_user_query->ID;
|
2025 |
+
}
|
2026 |
+
|
2027 |
+
// Search by Display Name or ID
|
2028 |
+
$args = array(
|
2029 |
+
'fields' => array( 'ID' ),
|
2030 |
+
'search' => $value,
|
2031 |
+
'search_columns' => array( 'display_name', 'ID' ),
|
2032 |
+
);
|
2033 |
+
|
2034 |
+
$ids = new \WP_User_Query( $args );
|
2035 |
+
|
2036 |
+
if ( $ids->total_users > 0 ) {
|
2037 |
+
$um_user_query = current( $ids->get_results() );
|
2038 |
+
return $um_user_query->ID;
|
2039 |
+
}
|
2040 |
+
|
2041 |
+
|
2042 |
+
// Search By User Login
|
2043 |
+
$value = str_replace( ".", "_", $value );
|
2044 |
+
$value = str_replace( " ", "", $value );
|
2045 |
+
|
2046 |
+
$args = array(
|
2047 |
+
'fields' => array( 'ID' ),
|
2048 |
+
'search' => $value,
|
2049 |
+
'search_columns' => array(
|
2050 |
+
'user_login',
|
2051 |
+
)
|
2052 |
+
);
|
2053 |
+
|
2054 |
+
$ids = new \WP_User_Query( $args );
|
2055 |
+
|
2056 |
+
if ( $ids->total_users > 0 ) {
|
2057 |
+
$um_user_query = current( $ids->get_results() );
|
2058 |
+
return $um_user_query->ID;
|
2059 |
+
}
|
2060 |
+
|
2061 |
+
return false;
|
2062 |
+
}
|
2063 |
+
|
2064 |
+
|
2065 |
+
/**
|
2066 |
+
* This method checks if a user exists or not in your site based on the user ID.
|
2067 |
+
*
|
2068 |
+
* @usage <?php UM()->user()->user_exists_by_id( $user_id ); ?>
|
2069 |
+
*
|
2070 |
+
* @param int $user_id A user ID must be passed to check if the user exists
|
2071 |
+
*
|
2072 |
+
* @return bool|int
|
2073 |
+
*
|
2074 |
+
* @example Basic Usage
|
2075 |
+
|
2076 |
+
<?php
|
2077 |
+
|
2078 |
+
$boolean = UM()->user()->user_exists_by_id( 15 );
|
2079 |
+
if ( $boolean ) {
|
2080 |
+
// That user exists
|
2081 |
+
}
|
2082 |
+
|
2083 |
+
?>
|
2084 |
+
|
2085 |
+
*
|
2086 |
+
*/
|
2087 |
+
function user_exists_by_id( $user_id ) {
|
2088 |
+
$aux = get_userdata( absint( $user_id ) );
|
2089 |
+
if ( $aux == false ) {
|
2090 |
+
return false;
|
2091 |
+
} else {
|
2092 |
+
return $user_id;
|
2093 |
+
}
|
2094 |
+
}
|
2095 |
+
|
2096 |
+
|
2097 |
+
/**
|
2098 |
+
* This method checks if a user exists or not in your site based on the user email as username
|
2099 |
+
*
|
2100 |
+
* @param string $slug A user slug must be passed to check if the user exists
|
2101 |
+
*
|
2102 |
+
* @usage <?php UM()->user()->user_exists_by_email_as_username( $slug ); ?>
|
2103 |
+
*
|
2104 |
+
* @return bool
|
2105 |
+
*
|
2106 |
+
* @example Basic Usage
|
2107 |
+
|
2108 |
+
<?php
|
2109 |
+
|
2110 |
+
$boolean = UM()->user()->user_exists_by_email_as_username( 'calumgmail-com' );
|
2111 |
+
if ( $boolean ) {
|
2112 |
+
// That user exists
|
2113 |
+
}
|
2114 |
+
|
2115 |
+
?>
|
2116 |
+
*/
|
2117 |
+
function user_exists_by_email_as_username( $slug ) {
|
2118 |
+
|
2119 |
+
$user_id = false;
|
2120 |
+
|
2121 |
+
$ids = get_users( array( 'fields' => 'ID', 'meta_key' => 'um_email_as_username_' . $slug ) );
|
2122 |
+
if ( ! empty( $ids[0] ) ) {
|
2123 |
+
$user_id = $ids[0];
|
2124 |
+
}
|
2125 |
+
|
2126 |
+
return $user_id;
|
2127 |
+
}
|
2128 |
+
|
2129 |
+
|
2130 |
+
/**
|
2131 |
+
* Set gravatar hash id
|
2132 |
+
*
|
2133 |
+
* @param $user_id
|
2134 |
+
* @return string
|
2135 |
+
*/
|
2136 |
+
function set_gravatar( $user_id ) {
|
2137 |
+
|
2138 |
+
um_fetch_user( $user_id );
|
2139 |
+
$email_address = um_user( 'user_email' );
|
2140 |
+
$hash_email_address = '';
|
2141 |
+
|
2142 |
+
if ( $email_address ) {
|
2143 |
+
$hash_email_address = md5( $email_address );
|
2144 |
+
$this->profile['synced_gravatar_hashed_id'] = $hash_email_address;
|
2145 |
+
$this->update_usermeta_info( 'synced_gravatar_hashed_id' );
|
2146 |
+
}
|
2147 |
+
|
2148 |
+
return $hash_email_address;
|
2149 |
+
}
|
2150 |
+
|
2151 |
+
|
2152 |
+
/**
|
2153 |
+
* UM Placeholders for activation link in email
|
2154 |
+
*
|
2155 |
+
* @param $placeholders
|
2156 |
+
*
|
2157 |
+
* @return array
|
2158 |
+
*/
|
2159 |
+
function add_activation_placeholder( $placeholders ) {
|
2160 |
+
$placeholders[] = '{account_activation_link}';
|
2161 |
+
return $placeholders;
|
2162 |
+
}
|
2163 |
+
|
2164 |
+
|
2165 |
+
/**
|
2166 |
+
* UM Replace Placeholders for activation link in email
|
2167 |
+
*
|
2168 |
+
* @param $replace_placeholders
|
2169 |
+
*
|
2170 |
+
* @return array
|
2171 |
+
*/
|
2172 |
+
function add_activation_replace_placeholder( $replace_placeholders ) {
|
2173 |
+
$replace_placeholders[] = um_user( 'account_activation_link' );
|
2174 |
+
return $replace_placeholders;
|
2175 |
+
}
|
2176 |
+
}
|
2177 |
+
}
|
readme.txt
CHANGED
@@ -7,7 +7,7 @@ Tags: community, member, membership, user-profile, user-registration
|
|
7 |
Requires PHP: 5.6
|
8 |
Requires at least: 5.0
|
9 |
Tested up to: 5.7
|
10 |
-
Stable tag: 2.1.
|
11 |
License: GNU Version 2 or Any Later Version
|
12 |
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
13 |
|
@@ -155,6 +155,24 @@ The plugin works with popular caching plugins by automatically excluding Ultimat
|
|
155 |
* To learn more about version 2.1 please see this [docs](https://docs.ultimatemember.com/article/1512-upgrade-2-1-0)
|
156 |
* UM2.1+ is a significant update to the Member Directories' code base from 2.0.x. Please make sure you take a full-site backup with restore point before updating the plugin
|
157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
= 2.1.20: May 7, 2021 =
|
159 |
|
160 |
* Enhancements:
|
@@ -2775,4 +2793,4 @@ Credits to "James Golovich http://www.pritect.net" for the security checks
|
|
2775 |
|
2776 |
= 1.0.0: January, 2015 =
|
2777 |
|
2778 |
-
* First official release!
|
7 |
Requires PHP: 5.6
|
8 |
Requires at least: 5.0
|
9 |
Tested up to: 5.7
|
10 |
+
Stable tag: 2.1.21
|
11 |
License: GNU Version 2 or Any Later Version
|
12 |
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
13 |
|
155 |
* To learn more about version 2.1 please see this [docs](https://docs.ultimatemember.com/article/1512-upgrade-2-1-0)
|
156 |
* UM2.1+ is a significant update to the Member Directories' code base from 2.0.x. Please make sure you take a full-site backup with restore point before updating the plugin
|
157 |
|
158 |
+
= 2.1.21: June 17, 2021 =
|
159 |
+
|
160 |
+
* Enhancements:
|
161 |
+
- Added: `um_scripts.max_upload_size` localized variable getting from `wp_max_upload_size()`
|
162 |
+
- Updated: dropdown.js library to make the stable working
|
163 |
+
|
164 |
+
* Bugfixes:
|
165 |
+
- Fixed: Displaying different profile form shortcodes with different role visibility settings on the same page
|
166 |
+
- Fixed: Displaying avatar on the logout page
|
167 |
+
- Fixed: Role meta sanitizing and related XSS vulnerability
|
168 |
+
|
169 |
+
* Templates required update:
|
170 |
+
- logout.php
|
171 |
+
- members.php
|
172 |
+
- members-list.php
|
173 |
+
|
174 |
+
* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade
|
175 |
+
|
176 |
= 2.1.20: May 7, 2021 =
|
177 |
|
178 |
* Enhancements:
|
2793 |
|
2794 |
= 1.0.0: January, 2015 =
|
2795 |
|
2796 |
+
* First official release!
|
templates/logout.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
|
9 |
<div class="um-misc-img">
|
10 |
<a href="<?php echo esc_url( um_get_core_page( 'user' ) ); ?>">
|
11 |
-
<?php echo um_user( '
|
12 |
</a>
|
13 |
</div>
|
14 |
|
@@ -64,4 +64,4 @@
|
|
64 |
|
65 |
</ul>
|
66 |
</div>
|
67 |
-
</div>
|
8 |
|
9 |
<div class="um-misc-img">
|
10 |
<a href="<?php echo esc_url( um_get_core_page( 'user' ) ); ?>">
|
11 |
+
<?php echo get_avatar( um_user( 'ID' ), 80 ) ?>
|
12 |
</a>
|
13 |
</div>
|
14 |
|
64 |
|
65 |
</ul>
|
66 |
</div>
|
67 |
+
</div>
|
templates/members.php
CHANGED
@@ -276,7 +276,7 @@ if ( ( ( $search && $show_search ) || ( $filters && $show_filters && count( $sea
|
|
276 |
<?php $items = array();
|
277 |
|
278 |
foreach ( $sorting_options as $value => $title ) {
|
279 |
-
$items[] = '<a href="javascript:void(0);" data-value="' . esc_attr( $value ) . '" data-selected="' . ( ( $sort_from_url == $value ) ? '1' : '0' ) . '" data-default="' . ( ( $default_sorting == $value ) ? '1' : '0' ) . '">' . $title . '</a>'; ?>
|
280 |
<?php }
|
281 |
|
282 |
UM()->member_directory()->dropdown_menu( '.um-member-directory-sorting-a', 'click', $items ); ?>
|
276 |
<?php $items = array();
|
277 |
|
278 |
foreach ( $sorting_options as $value => $title ) {
|
279 |
+
$items[] = '<a href="javascript:void(0);" data-directory-hash="' . esc_attr( substr( md5( $form_id ), 10, 5 ) ) . '" class="um-sortyng-by-' . esc_attr( $value ) . '" data-value="' . esc_attr( $value ) . '" data-selected="' . ( ( $sort_from_url == $value ) ? '1' : '0' ) . '" data-default="' . ( ( $default_sorting == $value ) ? '1' : '0' ) . '">' . $title . '</a>'; ?>
|
280 |
<?php }
|
281 |
|
282 |
UM()->member_directory()->dropdown_menu( '.um-member-directory-sorting-a', 'click', $items ); ?>
|
ultimate-member.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Ultimate Member
|
4 |
Plugin URI: http://ultimatemember.com/
|
5 |
Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
|
6 |
-
Version: 2.1.
|
7 |
Author: Ultimate Member
|
8 |
Author URI: http://ultimatemember.com/
|
9 |
Text Domain: ultimate-member
|
@@ -21,4 +21,4 @@ define( 'ultimatemember_version', $plugin_data['Version'] );
|
|
21 |
define( 'ultimatemember_plugin_name', $plugin_data['Name'] );
|
22 |
|
23 |
require_once 'includes/class-functions.php';
|
24 |
-
require_once 'includes/class-init.php';
|
3 |
Plugin Name: Ultimate Member
|
4 |
Plugin URI: http://ultimatemember.com/
|
5 |
Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
|
6 |
+
Version: 2.1.21
|
7 |
Author: Ultimate Member
|
8 |
Author URI: http://ultimatemember.com/
|
9 |
Text Domain: ultimate-member
|
21 |
define( 'ultimatemember_plugin_name', $plugin_data['Name'] );
|
22 |
|
23 |
require_once 'includes/class-functions.php';
|
24 |
+
require_once 'includes/class-init.php';
|