Ultimate Member – User Profile & Membership Plugin - Version 2.1.21

Version Description

Download this release

Release Info

Developer nsinelnikov
Plugin Icon 128x128 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 CHANGED
@@ -1,85 +1,194 @@
1
- var um_dropdown_triggers = {};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
- function um_init_new_dropdown() {
4
- jQuery('.um-new-dropdown').each( function() {
5
- var menu = jQuery(this);
6
 
7
- var is_inited = menu.data( 'um-dropdown-inited' );
8
- if ( is_inited ) {
9
- return;
10
- }
11
 
12
- var element = menu.data('element');
13
- var trigger = menu.data('trigger');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
- menu.data( 'um-dropdown-inited', true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
- if ( -1 === jQuery.inArray( element, um_dropdown_triggers[ trigger ] ) ) {
18
- jQuery( document.body ).on( trigger, element, function(e) {
19
- var obj = jQuery(this);
20
 
21
- if ( obj.data( 'um-new-dropdown-show' ) === true ) {
22
- obj.data( 'um-new-dropdown-show', false );
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
- if ( ! obj.find( '.um-new-dropdown' ).length ) {
29
- var dropdown_layout = menu.clone();
 
30
 
31
- // dropdown_layout.css({
32
- // top : '20px',
33
- // width: '150px',
34
- // right: 0
35
- // });
36
 
37
- obj.append( dropdown_layout );
 
38
 
39
- obj.trigger( 'fmwp_dropdown_render', { dropdown_layout:dropdown_layout, trigger:trigger, element:element, obj:obj} );
40
 
41
- dropdown_layout.show();
 
42
  } else {
43
- obj.find( '.um-new-dropdown' )./*css({
44
- top : '20px',
45
- width: '150px',
46
- right: 0
47
- }).*/show();
48
  }
 
 
49
 
50
- obj.data( 'um-new-dropdown-show', true );
51
 
52
- jQuery( document.body ).bind( 'click', function( event ) {
53
-
54
- if ( jQuery('.um-new-dropdown').find( '.' + jQuery( event.target ).attr('class').trim().replace( ' ', '.' ) ).length === 0 &&
55
-
56
 
57
- jQuery( '.' + jQuery(event.target).attr('class').trim() ) !== element ) {
58
- //event = ev;
59
- jQuery('.um-new-dropdown').hide();
60
- jQuery('.um-new-dropdown').parent().data( 'um-new-dropdown-show', false );
61
- jQuery( document.body ).unbind( event );
62
 
63
- }
64
- });
65
- }
66
- });
67
 
68
- if ( typeof um_dropdown_triggers[ trigger ] == 'undefined' ) {
69
- um_dropdown_triggers[ trigger ] = [];
70
- }
71
- um_dropdown_triggers[ trigger ].push( element );
 
 
 
 
 
 
 
 
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
- var um_dropdown_triggers={};function um_init_new_dropdown(){jQuery(".um-new-dropdown").each(function(){var r=jQuery(this);if(!r.data("um-dropdown-inited")){var e=r.data("element"),u=r.data("trigger");r.data("um-dropdown-inited",!0),-1===jQuery.inArray(e,um_dropdown_triggers[u])&&(jQuery(document.body).on(u,e,function(d){var n=jQuery(this);if(!0===n.data("um-new-dropdown-show"))n.data("um-new-dropdown-show",!1),n.find(".um-new-dropdown").hide();else{if(jQuery(".um-new-dropdown").hide(),jQuery(".um-new-dropdown").parent().data("um-new-dropdown-show",!1),n.find(".um-new-dropdown").length)n.find(".um-new-dropdown").show();else{var o=r.clone();n.append(o),n.trigger("fmwp_dropdown_render",{dropdown_layout:o,trigger:u,element:e,obj:n}),o.show()}n.data("um-new-dropdown-show",!0),jQuery(document.body).bind("click",function(d){0===jQuery(".um-new-dropdown").find("."+jQuery(d.target).attr("class").trim().replace(" ",".")).length&&jQuery("."+jQuery(d.target).attr("class").trim())!==e&&(jQuery(".um-new-dropdown").hide(),jQuery(".um-new-dropdown").parent().data("um-new-dropdown-show",!1),jQuery(document.body).unbind(d))})}}),void 0===um_dropdown_triggers[u]&&(um_dropdown_triggers[u]=[]),um_dropdown_triggers[u].push(e))}})}jQuery(document).ready(function(d){um_init_new_dropdown(),jQuery(document.body).on("click",".um-new-dropdown a",function(d){jQuery(this).parents(".um-new-dropdown").hide(),jQuery(this).parents(".um-new-dropdown").parent().data("um-new-dropdown-show",!1),jQuery("body").trigger("click"),d.stopPropagation()})});
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!==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()});
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 &amp; 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 s="upload-"+(new Date).getTime();this.formGroup=s,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,i=S("<div>"+S(this).html()+"</div>");S(i).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(i),S(r).prepend(S(p.dragDropStr)),t=c,o=p,(a=r).on("dragenter",function(e){e.stopPropagation(),e.preventDefault(),S(this).css("border","2px dashed #ddd")}),a.on("dragover",function(e){e.stopPropagation(),e.preventDefault()}),a.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(),a.css("border","2px dashed #ddd")}),S(document).on("drop",function(e){e.stopPropagation(),e.preventDefault(),a.css("border","2px dashed #ddd")})}else S(c).before(i);!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,s,p,i)}else window.setTimeout(e,10);var t,o,a}(),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)){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}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},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);
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 &amp; 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-directory .um-member-directory-sorting-a .um-new-dropdown li a', function() {
752
- var directory = jQuery(this).parents('.um-directory');
753
-
754
- if ( um_is_directory_busy( directory ) ) {
755
  return;
756
  }
757
 
758
- if ( jQuery( this ).data('selected') === 1 ) {
 
 
 
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
- jQuery( this ).parents('.um-new-dropdown').find('a').data('selected', 0).prop('data-selected', 0).attr('data-selected', 0);
772
- jQuery( this ).data('selected', 1).prop('data-selected', 1).attr('data-selected', 1);
773
- jQuery( this ).parents('.um-member-directory-sorting-a').find('> a').html( jQuery( this ).html() );
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
- 'nonce' => wp_create_nonce( "um-frontend-nonce" ),
 
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}}}">{{{action.title}}}</a></li>
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
- } else {
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( '&mdash; No role for Ultimate Member &mdash;', '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'] === '1' ) {
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' ) === '1' ) {
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( '&mdash; No role for Ultimate Member &mdash;', '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.20
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( 'profile_photo', 80 ); ?>
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.20
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';