mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-11-10 21:20:41 +09:00
Merge pull request #1169 from ultimatemember/development/2.6.1
Version 2.6.1
This commit is contained in:
@@ -47,7 +47,6 @@ local.properties
|
||||
[Dd]ebug/
|
||||
[Rr]elease/
|
||||
x64/
|
||||
build/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
|
||||
@@ -195,7 +194,6 @@ $RECYCLE.BIN/
|
||||
*.egg
|
||||
*.egg-info
|
||||
dist/
|
||||
build/
|
||||
eggs/
|
||||
parts/
|
||||
var/
|
||||
|
||||
@@ -42,7 +42,7 @@ GNU Version 2 or Any Later Version
|
||||
|
||||
## Releases
|
||||
|
||||
[Official Release Version: 2.6.0](https://github.com/ultimatemember/ultimatemember/releases/tag/2.6.0).
|
||||
[Official Release Version: 2.6.1](https://github.com/ultimatemember/ultimatemember/releases/tag/2.6.1).
|
||||
|
||||
## Changelog
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
function um_init_new_dropdown(){jQuery(".um-new-dropdown").um_dropdownMenu()}!function(p){function o(e){var i={get:function(){return i},show:function(){i.hideAll(),i.$menu=i.$element.find(".um-new-dropdown"),i.$menu.length||(i.$menu=p('div.um-new-dropdown[data-element="'+i.data.element+'"]').first()),i.$dropdown=i.$menu.clone(),i.$dropdown.on("click","li a",i.itemHandler).attr("data-cloned","1"),p(window).on("resize",i.updatePosition);var e=""!==i.data.parent?i.data.parent:document.body;return p(e).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")&&(p(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.$element.data("um-new-dropdown-show")&&i.hide(),p('div.um-new-dropdown[data-cloned="1"]').remove(),p(".um-new-dropdown-shown").removeClass("um-new-dropdown-shown").data("um-new-dropdown-show",!1),i},calculatePosition:function(){var e,t=i.$element.get(0).getBoundingClientRect(),n=i.$dropdown.innerHeight()||150,o=i.data.width||150,d="",r=(e=""!==i.data.parent?(r=p(i.data.parent).offset(),{top:(e=i.$element.offset()).top-r.top,left:e.left-r.left}):i.$element.offset(),""!==i.data.parent?p(i.data.parent)[0].offsetWidth:window.innerWidth),a={position:"absolute",width:o+"px"};switch((""!==i.data.parent?p(i.data.parent)[0].offsetHeight:window.innerHeight)-t.bottom>n?(a.top=e.top+t.height+"px",d+="bottom"):(d+="top",a.top=e.top-n+"px"),e.left>o||e.left>r/2?(a.left=e.left+t.width-o+"px",d+="-left"):(a.left=e.left+"px",d+="-right"),d){case"bottom-right":a.borderRadius="0px 5px 5px 5px";break;case"bottom-left":a.borderRadius="5px 0px 5px 5px";break;case"top-right":a.borderRadius="5px 5px 5px 0px";break;case"top-left":a.borderRadius="5px 5px 0px 5px"}return a},updatePosition:function(){return i.$dropdown&&i.$dropdown.is(":visible")&&i.$dropdown.css(i.calculatePosition()),i},itemHandler:function(e){e.stopPropagation();e=p(e.currentTarget).attr("class");i.$menu.find('li a[class="'+e+'"]').trigger("click"),i.$element.data("um-new-dropdown-show")&&i.hide()},triggerHandler:function(e){e.stopPropagation(),i.$element=p(e.currentTarget),i.$element.data("um-new-dropdown-show")?i.hide():i.show()}};return i.$menu=p(e),i.data=i.$menu.data(),i.$element=i.$menu.closest(i.data.element),i.$element.length||(i.$element=p(i.data.element).first()),i.$dropdown=p(document.body).children('div[data-element="'+i.data.element+'"]'),void 0===i.data.initted&&(i.$menu.data("initted",!0),i.data=i.$menu.data(),void 0===o.screenTriggers&&(o.screenTriggers={}),o.screenTriggers[i.data.element]!==i.data.trigger&&(o.screenTriggers[i.data.element]=i.data.trigger,p(document.body).on(i.data.trigger,i.data.element,i.triggerHandler))),void 0===o.globalHandlersInitted&&(o.globalHandlersInitted=!0,p(document.body).on("click",function(e){p(e.target).closest(".um-new-dropdown").length||i.hideAll()})),i}p.fn.um_dropdownMenu=function(n){return"string"==typeof n&&n?this.map(function(e,t){t=o(t);return"function"==typeof t[n]?t[n]():t[n]}).toArray():this.each(function(e,t){o(t)})}}(jQuery),jQuery(document).ready(function(e){um_init_new_dropdown()});
|
||||
function um_init_new_dropdown(){jQuery(".um-new-dropdown").um_dropdownMenu()}!function(p){function o(e){var i={get:function(){return i},show:function(){i.hideAll(),i.$menu=i.$element.find(".um-new-dropdown"),i.$menu.length||(i.$menu=p('div.um-new-dropdown[data-element="'+i.data.element+'"]').first()),i.$dropdown=i.$menu.clone(),i.$dropdown.on("click","li a",i.itemHandler).attr("data-cloned","1"),p(window).on("resize",i.updatePosition);var e=""!==i.data.parent?i.data.parent:document.body;return p(e).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")&&(p(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.$element.data("um-new-dropdown-show")&&i.hide(),p('div.um-new-dropdown[data-cloned="1"]').remove(),p(".um-new-dropdown-shown").removeClass("um-new-dropdown-shown").data("um-new-dropdown-show",!1),i},calculatePosition:function(){var e,t=i.$element.get(0).getBoundingClientRect(),n=i.$dropdown.innerHeight()||150,o=i.data.width||150,d="",r=(e=""!==i.data.parent?(r=p(i.data.parent).offset(),{top:(e=i.$element.offset()).top-r.top,left:e.left-r.left}):i.$element.offset(),""!==i.data.parent?p(i.data.parent)[0].offsetWidth:window.innerWidth),a={position:"absolute",width:o+"px"};switch((""!==i.data.parent?p(i.data.parent)[0].offsetHeight:window.innerHeight)-t.bottom>n?(a.top=e.top+t.height+"px",d+="bottom"):(d+="top",a.top=e.top-n+"px"),e.left>o||e.left>r/2?(a.left=e.left+t.width-o+"px",d+="-left"):(a.left=e.left+"px",d+="-right"),d){case"bottom-right":a.borderRadius="0px 5px 5px 5px";break;case"bottom-left":a.borderRadius="5px 0px 5px 5px";break;case"top-right":a.borderRadius="5px 5px 5px 0px";break;case"top-left":a.borderRadius="5px 5px 0px 5px"}return a},updatePosition:function(){return i.$dropdown&&i.$dropdown.is(":visible")&&i.$dropdown.css(i.calculatePosition()),i},itemHandler:function(e){e.stopPropagation();e=p(e.currentTarget).attr("class");i.$menu.find('li a[class="'+e+'"]').trigger("click"),i.$element.data("um-new-dropdown-show")&&i.hide()},triggerHandler:function(e){e.stopPropagation(),i.$element=p(e.currentTarget),i.$element.data("um-new-dropdown-show")?i.hide():i.show()}};return i.$menu=p(e),i.data=i.$menu.data(),i.$element=i.$menu.closest(i.data.element),i.$element.length||(i.$element=p(i.data.element).first()),i.$dropdown=p(document.body).children('div[data-element="'+i.data.element+'"]'),void 0===i.data.initted&&(i.$menu.data("initted",!0),i.data=i.$menu.data(),void 0===o.screenTriggers&&(o.screenTriggers={}),o.screenTriggers[i.data.element]!==i.data.trigger)&&(o.screenTriggers[i.data.element]=i.data.trigger,p(document.body).on(i.data.trigger,i.data.element,i.triggerHandler)),void 0===o.globalHandlersInitted&&(o.globalHandlersInitted=!0,p(document.body).on("click",function(e){p(e.target).closest(".um-new-dropdown").length||i.hideAll()})),i}p.fn.um_dropdownMenu=function(n){return"string"==typeof n&&n?this.map(function(e,t){t=o(t);return"function"==typeof t[n]?t[n]():t[n]}).toArray():this.each(function(e,t){o(t)})}}(jQuery),jQuery(document).ready(function(e){um_init_new_dropdown()});
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,79 @@
|
||||
jQuery(window).on( 'load', function($) {
|
||||
var observer = new MutationObserver(function(mutations) {
|
||||
mutations.forEach(function(mutation) {
|
||||
jQuery(mutation.addedNodes).find('.um.um-directory').each(function() {
|
||||
jQuery('.um-directory input, .um-directory select, .um-directory button').attr('disabled', 'disabled');
|
||||
jQuery('.um-directory a').attr('href', '');
|
||||
|
||||
if ( typeof( jQuery.fn.select2 ) === 'function' ) {
|
||||
jQuery(".um-s1").each( function( e ) {
|
||||
var obj = jQuery(this);
|
||||
obj.select2({
|
||||
allowClear: true,
|
||||
dropdownParent: obj.parent()
|
||||
}).on( 'change', unselectEmptyOption );
|
||||
} );
|
||||
|
||||
jQuery(".um-s2").each( function( e ) {
|
||||
var obj = jQuery(this);
|
||||
|
||||
// fix https://github.com/ultimatemember/ultimatemember/issues/941
|
||||
// using .um-custom-shortcode-tab class as temporarily solution
|
||||
var atts = {};
|
||||
if ( obj.parents('.um-custom-shortcode-tab').length ) {
|
||||
atts = {
|
||||
allowClear: false
|
||||
};
|
||||
} else {
|
||||
atts = {
|
||||
allowClear: false,
|
||||
minimumResultsForSearch: 10,
|
||||
dropdownParent: obj.parent()
|
||||
};
|
||||
}
|
||||
obj.select2( atts ).on( 'change', unselectEmptyOption );
|
||||
} );
|
||||
|
||||
jQuery(".um-s3").each( function( e ) {
|
||||
var obj = jQuery(this);
|
||||
|
||||
obj.select2({
|
||||
allowClear: false,
|
||||
minimumResultsForSearch: -1,
|
||||
dropdownParent: obj.parent()
|
||||
}).on( 'change', unselectEmptyOption );
|
||||
} );
|
||||
}
|
||||
});
|
||||
jQuery(mutation.addedNodes).find('.um.um-profile').each(function() {
|
||||
jQuery('.um-profile input, .um-profile select, .um-profile button').attr('disabled', 'disabled');
|
||||
jQuery('.um-profile a').attr('href', '');
|
||||
});
|
||||
jQuery(mutation.addedNodes).find('.um.um-account').each(function() {
|
||||
jQuery('.um-account input, .um-account select, .um-account button').attr('disabled', 'disabled');
|
||||
jQuery('.um-account a').attr('href', '');
|
||||
});
|
||||
jQuery(mutation.addedNodes).find('.um.um-password').each(function() {
|
||||
jQuery('.um-password input, .um-password select, .um-password button').attr('disabled', 'disabled');
|
||||
jQuery('.um-password a').attr('href', '');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
|
||||
|
||||
});
|
||||
|
||||
function unselectEmptyOption( e ) {
|
||||
var $element = jQuery( e.currentTarget );
|
||||
var $selected = $element.find(':selected');
|
||||
|
||||
if ( $selected.length > 1 ) {
|
||||
$selected.each( function ( i, option ) {
|
||||
if ( option.value === '' ) {
|
||||
option.selected = false;
|
||||
$element.trigger( 'change' );
|
||||
}
|
||||
});
|
||||
}
|
||||
}``
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
function unselectEmptyOption(e){var u=jQuery(e.currentTarget),e=u.find(":selected");1<e.length&&e.each(function(e,t){""===t.value&&(t.selected=!1,u.trigger("change"))})}jQuery(window).on("load",function(e){new MutationObserver(function(e){e.forEach(function(e){jQuery(e.addedNodes).find(".um.um-directory").each(function(){jQuery(".um-directory input, .um-directory select, .um-directory button").attr("disabled","disabled"),jQuery(".um-directory a").attr("href",""),"function"==typeof jQuery.fn.select2&&(jQuery(".um-s1").each(function(e){var t=jQuery(this);t.select2({allowClear:!0,dropdownParent:t.parent()}).on("change",unselectEmptyOption)}),jQuery(".um-s2").each(function(e){var t=jQuery(this),u={},u=t.parents(".um-custom-shortcode-tab").length?{allowClear:!1}:{allowClear:!1,minimumResultsForSearch:10,dropdownParent:t.parent()};t.select2(u).on("change",unselectEmptyOption)}),jQuery(".um-s3").each(function(e){var t=jQuery(this);t.select2({allowClear:!1,minimumResultsForSearch:-1,dropdownParent:t.parent()}).on("change",unselectEmptyOption)}))}),jQuery(e.addedNodes).find(".um.um-profile").each(function(){jQuery(".um-profile input, .um-profile select, .um-profile button").attr("disabled","disabled"),jQuery(".um-profile a").attr("href","")}),jQuery(e.addedNodes).find(".um.um-account").each(function(){jQuery(".um-account input, .um-account select, .um-account button").attr("disabled","disabled"),jQuery(".um-account a").attr("href","")}),jQuery(e.addedNodes).find(".um.um-password").each(function(){jQuery(".um-password input, .um-password select, .um-password button").attr("disabled","disabled"),jQuery(".um-password a").attr("href","")})})}).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})});
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
||||
!function(){"use strict";jQuery(document).on("click","a.um-toggle-gdpr",function(e){let t=jQuery(e.currentTarget),g=t.closest(".um-field-area"),o=g.find(".um-gdpr-content");o.is(":visible")?(g.find("a.um-toggle-gdpr").text(t.data("toggle-show")),o.hide().find("a.um-toggle-gdpr").remove(),t.length&&t.get(0).scrollIntoView()):(g.find("a.um-toggle-gdpr").text(t.data("toggle-hide")),o.show().prepend(t.clone()))})}();
|
||||
!function(){"use strict";jQuery(document).on("click","a.um-toggle-gdpr",function(e){var e=jQuery(e.currentTarget),t=e.closest(".um-field-area"),g=t.find(".um-gdpr-content");g.is(":visible")?(t.find("a.um-toggle-gdpr").text(e.data("toggle-show")),g.hide().find("a.um-toggle-gdpr").remove(),e.length&&e.get(0).scrollIntoView()):(t.find("a.um-toggle-gdpr").text(e.data("toggle-hide")),g.show().prepend(e.clone()))})}();
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
||||
!function(a){function l(t,e){return"function"==typeof t?t.call(e):t}function h(t,e){this.$element=a(t),this.options=e,this.enabled=!0,this.fixTitle()}h.prototype={show:function(){var t=this.getTitle();if(t&&this.enabled){var e,i=this.tip(),s=(i.find(".tipsy-inner")[this.options.html?"html":"text"](t),i[0].className="tipsy",i.remove().css({top:0,left:0,visibility:"hidden",display:"block"}).prependTo(document.body),a.extend({},this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})),n=i[0].offsetWidth,o=i[0].offsetHeight,t=l(this.options.gravity,this.$element[0]);switch(t.charAt(0)){case"n":e={top:s.top+s.height+this.options.offset,left:s.left+s.width/2-n/2};break;case"s":e={top:s.top-o-this.options.offset,left:s.left+s.width/2-n/2};break;case"e":e={top:s.top+s.height/2-o/2,left:s.left-n-this.options.offset};break;case"w":(extra_gap=0)<a("body").css("position").length&&"relative"==a("body").css("position")&&a("#wpadminbar").length&&(extra_gap=a("#wpadminbar").height()),e={top:s.top+s.height/2-o/2-extra_gap,left:s.left+s.width+this.options.offset}}2==t.length&&("w"==t.charAt(1)?e.left=s.left+s.width/2-15:e.left=s.left+s.width/2-n+15),i.css(e).addClass("tipsy-"+t),i.find(".tipsy-arrow")[0].className="tipsy-arrow tipsy-arrow-"+t.charAt(0),this.options.className&&i.addClass(l(this.options.className,this.$element[0])),this.options.fade?i.stop().css({opacity:0,display:"block",visibility:"visible"}).animate({opacity:this.options.opacity}):i.css({visibility:"visible",opacity:this.options.opacity})}},hide:function(){this.options.fade?this.tip().stop().fadeOut(function(){a(this).remove()}):this.tip().remove()},fixTitle:function(){var t=this.$element;!t.attr("title")&&"string"==typeof t.attr("original-title")||t.attr("original-title",t.attr("title")||"").removeAttr("title")},getTitle:function(){var t,e=this.$element,i=this.options;return this.fixTitle(),"string"==typeof(i=this.options).title?t=e.attr("title"==i.title?"original-title":i.title):"function"==typeof i.title&&(t=i.title.call(e[0])),(t=(""+t).replace(/(^\s*|\s*$)/,""))||i.fallback},tip:function(){return this.$tip||(this.$tip=a('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>'),this.$tip.data("tipsy-pointee",this.$element[0])),this.$tip},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled}},a.fn.tipsy=function(i){return!0===i?this.data("tipsy"):("string"==typeof i?(t=this.data("tipsy"))&&t[i]():((i=a.extend({},a.fn.tipsy.defaults,i)).on||this.each(function(){s(this)}),"manual"!=i.trigger&&(t="hover"==i.trigger?"mouseenter":"focus",e="hover"==i.trigger?"mouseleave":"blur",i.on?a(document).on(t,this.selector,n).on(e,this.selector,o):this.on(t,n).on(e,o))),this);var t,e;function s(t){var e=a.data(t,"tipsy");return e||(e=new h(t,a.fn.tipsy.elementOptions(t,i)),a.data(t,"tipsy",e)),e}function n(){var t=s(this);t.hoverState="in",0==i.delayIn?t.show():(t.fixTitle(),setTimeout(function(){"in"==t.hoverState&&t.show()},i.delayIn))}function o(){var t=s(this);t.hoverState="out",0==i.delayOut?t.hide():setTimeout(function(){"out"==t.hoverState&&t.hide()},i.delayOut)}},a.fn.tipsy.defaults={className:null,delayIn:0,delayOut:0,fade:!1,fallback:"",gravity:"n",html:!1,live:!1,offset:0,opacity:.8,title:"title",trigger:"hover"},a.fn.tipsy.revalidate=function(){a(".tipsy").each(function(){var t=a.data(this,"tipsy-pointee");t&&function(t){for(;t=t.parentNode;)if(t==document)return 1}(t)||a(this).remove()})},a.fn.tipsy.elementOptions=function(t,e){return a.metadata?a.extend({},e,a(t).metadata()):e},a.fn.tipsy.autoNS=function(){return a(this).offset().top>a(document).scrollTop()+a(window).height()/2?"s":"n"},a.fn.tipsy.autoWE=function(){return a(this).offset().left>a(document).scrollLeft()+a(window).width()/2?"e":"w"},a.fn.tipsy.autoBounds=function(n,o){return function(){var t={ns:o[0],ew:1<o.length&&o[1]},e=a(document).scrollTop()+n,i=a(document).scrollLeft()+n,s=a(this);return s.offset().top<e&&(t.ns="n"),s.offset().left<i&&(t.ew="w"),a(window).width()+a(document).scrollLeft()-s.offset().left<n&&(t.ew="e"),a(window).height()+a(document).scrollTop()-s.offset().top<n&&(t.ns="s"),t.ns+(t.ew||"")}}}(jQuery);
|
||||
!function(a){function l(t,e){return"function"==typeof t?t.call(e):t}function h(t,e){this.$element=a(t),this.options=e,this.enabled=!0,this.fixTitle()}h.prototype={show:function(){var t=this.getTitle();if(t&&this.enabled){var e,i=this.tip(),s=(i.find(".tipsy-inner")[this.options.html?"html":"text"](t),i[0].className="tipsy",i.remove().css({top:0,left:0,visibility:"hidden",display:"block"}).prependTo(document.body),a.extend({},this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})),n=i[0].offsetWidth,o=i[0].offsetHeight,t=l(this.options.gravity,this.$element[0]);switch(t.charAt(0)){case"n":e={top:s.top+s.height+this.options.offset,left:s.left+s.width/2-n/2};break;case"s":e={top:s.top-o-this.options.offset,left:s.left+s.width/2-n/2};break;case"e":e={top:s.top+s.height/2-o/2,left:s.left-n-this.options.offset};break;case"w":(extra_gap=0)<a("body").css("position").length&&"relative"==a("body").css("position")&&a("#wpadminbar").length&&(extra_gap=a("#wpadminbar").height()),e={top:s.top+s.height/2-o/2-extra_gap,left:s.left+s.width+this.options.offset}}2==t.length&&("w"==t.charAt(1)?e.left=s.left+s.width/2-15:e.left=s.left+s.width/2-n+15),i.css(e).addClass("tipsy-"+t),i.find(".tipsy-arrow")[0].className="tipsy-arrow tipsy-arrow-"+t.charAt(0),this.options.className&&i.addClass(l(this.options.className,this.$element[0])),this.options.fade?i.stop().css({opacity:0,display:"block",visibility:"visible"}).animate({opacity:this.options.opacity}):i.css({visibility:"visible",opacity:this.options.opacity})}},hide:function(){this.options.fade?this.tip().stop().fadeOut(function(){a(this).remove()}):this.tip().remove()},fixTitle:function(){var t=this.$element;!t.attr("title")&&"string"==typeof t.attr("original-title")||t.attr("original-title",t.attr("title")||"").removeAttr("title")},getTitle:function(){var t,e=this.$element,i=this.options;return this.fixTitle(),"string"==typeof(i=this.options).title?t=e.attr("title"==i.title?"original-title":i.title):"function"==typeof i.title&&(t=i.title.call(e[0])),(t=(""+t).replace(/(^\s*|\s*$)/,""))||i.fallback},tip:function(){return this.$tip||(this.$tip=a('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>'),this.$tip.data("tipsy-pointee",this.$element[0])),this.$tip},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled}},a.fn.tipsy=function(i){var t,e;return!0===i?this.data("tipsy"):("string"==typeof i?(t=this.data("tipsy"))&&t[i]():((i=a.extend({},a.fn.tipsy.defaults,i)).on||this.each(function(){s(this)}),"manual"!=i.trigger&&(t="hover"==i.trigger?"mouseenter":"focus",e="hover"==i.trigger?"mouseleave":"blur",i.on?a(document).on(t,this.selector,n).on(e,this.selector,o):this.on(t,n).on(e,o))),this);function s(t){var e=a.data(t,"tipsy");return e||(e=new h(t,a.fn.tipsy.elementOptions(t,i)),a.data(t,"tipsy",e)),e}function n(){var t=s(this);t.hoverState="in",0==i.delayIn?t.show():(t.fixTitle(),setTimeout(function(){"in"==t.hoverState&&t.show()},i.delayIn))}function o(){var t=s(this);t.hoverState="out",0==i.delayOut?t.hide():setTimeout(function(){"out"==t.hoverState&&t.hide()},i.delayOut)}},a.fn.tipsy.defaults={className:null,delayIn:0,delayOut:0,fade:!1,fallback:"",gravity:"n",html:!1,live:!1,offset:0,opacity:.8,title:"title",trigger:"hover"},a.fn.tipsy.revalidate=function(){a(".tipsy").each(function(){var t=a.data(this,"tipsy-pointee");t&&function(t){for(;t=t.parentNode;)if(t==document)return 1}(t)||a(this).remove()})},a.fn.tipsy.elementOptions=function(t,e){return a.metadata?a.extend({},e,a(t).metadata()):e},a.fn.tipsy.autoNS=function(){return a(this).offset().top>a(document).scrollTop()+a(window).height()/2?"s":"n"},a.fn.tipsy.autoWE=function(){return a(this).offset().left>a(document).scrollLeft()+a(window).width()/2?"e":"w"},a.fn.tipsy.autoBounds=function(n,o){return function(){var t={ns:o[0],ew:1<o.length&&o[1]},e=a(document).scrollTop()+n,i=a(document).scrollLeft()+n,s=a(this);return s.offset().top<e&&(t.ns="n"),s.offset().left<i&&(t.ew="w"),a(window).width()+a(document).scrollLeft()-s.offset().left<n&&(t.ew="e"),a(window).height()+a(document).scrollTop()-s.offset().top<n&&(t.ns="s"),t.ns+(t.ew||"")}}}(jQuery);
|
||||
@@ -7,6 +7,14 @@
|
||||
"minimum-stability": "stable",
|
||||
"prefer-stable": true,
|
||||
"require": {
|
||||
"ext-mbstring": "*",
|
||||
"ext-json": "*",
|
||||
"ext-dom": "*",
|
||||
"ext-exif": "*",
|
||||
"ext-gd": "*",
|
||||
"ext-fileinfo": "*",
|
||||
"ext-curl": "*",
|
||||
"ext-iconv": "*",
|
||||
"woocommerce/action-scheduler": "3.2.1"
|
||||
},
|
||||
"require-dev": {
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ gulp.task( 'default', function ( done ) {
|
||||
|
||||
gulp.src(['assets/sass/*.sass']).pipe( sass().on( 'error', sass.logError ) ).pipe( gulp.dest( 'assets/css' ) );
|
||||
|
||||
gulp.src(['assets/js/*.js', '!assets/js/*.min.js']) // path to your files
|
||||
gulp.src(['assets/js/*.js','!assets/js/um-fileupload.js', '!assets/js/*.min.js']) // path to your files
|
||||
.pipe( uglify() )
|
||||
.pipe( rename({ suffix: '.min' }) )
|
||||
.pipe( gulp.dest( 'assets/js/' ) );
|
||||
|
||||
@@ -46,6 +46,20 @@
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-core_version {
|
||||
width: 100px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-theme_version {
|
||||
width: 100px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-status {
|
||||
width: 260px;
|
||||
}
|
||||
|
||||
th.column-email.column-primary {
|
||||
padding-left: 48px;
|
||||
}
|
||||
@@ -213,6 +227,16 @@ th.column-email.column-primary {
|
||||
.um-small-field {
|
||||
width:50%;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-core_version {
|
||||
width: auto;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.wp-list-table.templates .column-theme_version {
|
||||
width: auto;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -243,4 +267,4 @@ th.column-email.column-primary {
|
||||
.um_setting_ajax_button_response.complete {
|
||||
color:darkgreen;
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,405 +0,0 @@
|
||||
//-------------------------------------\\
|
||||
//--------- Um Forms shortcode --------\\
|
||||
//-------------------------------------\\
|
||||
|
||||
wp.blocks.registerBlockType( 'um-block/um-forms', {
|
||||
title: wp.i18n.__( 'Form', 'ultimate-member' ),
|
||||
description: wp.i18n.__( 'Choose display form', 'ultimate-member' ),
|
||||
icon: 'forms',
|
||||
category: 'um-blocks',
|
||||
attributes: {
|
||||
content: {
|
||||
source: 'html',
|
||||
selector: 'p'
|
||||
},
|
||||
form_id: {
|
||||
type: 'select'
|
||||
}
|
||||
},
|
||||
|
||||
edit: wp.data.withSelect( function( select ) {
|
||||
return {
|
||||
posts: select( 'core' ).getEntityRecords( 'postType', 'um_form', {
|
||||
per_page: -1
|
||||
})
|
||||
};
|
||||
} )( function( props ) {
|
||||
var posts = props.posts,
|
||||
className = props.className,
|
||||
attributes = props.attributes,
|
||||
setAttributes = props.setAttributes,
|
||||
form_id = props.attributes.form_id,
|
||||
content = props.attributes.content;
|
||||
|
||||
function get_option( posts ) {
|
||||
|
||||
var option = [];
|
||||
|
||||
posts.map( function( post ) {
|
||||
option.push(
|
||||
{
|
||||
label: post.title.rendered,
|
||||
value: post.id
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
return option;
|
||||
}
|
||||
|
||||
function umShortcode( value ) {
|
||||
|
||||
var shortcode = '';
|
||||
|
||||
if ( value !== undefined ) {
|
||||
shortcode = '[ultimatemember form_id="' + value + '"]';
|
||||
}
|
||||
|
||||
return shortcode;
|
||||
}
|
||||
|
||||
|
||||
if ( ! posts ) {
|
||||
return wp.element.createElement(
|
||||
'p',
|
||||
{
|
||||
className: className
|
||||
},
|
||||
wp.element.createElement(
|
||||
wp.components.Spinner,
|
||||
null
|
||||
),
|
||||
wp.i18n.__( 'Loading Forms', 'ultimate-member' )
|
||||
);
|
||||
}
|
||||
|
||||
if ( 0 === posts.length ) {
|
||||
return wp.element.createElement(
|
||||
'p',
|
||||
null,
|
||||
wp.i18n.__( 'No Posts', 'ultimate-member' )
|
||||
);
|
||||
}
|
||||
|
||||
if ( form_id === undefined ) {
|
||||
props.setAttributes({ form_id: posts[0]['id'] });
|
||||
var shortcode = umShortcode( posts[0]['id'] );
|
||||
props.setAttributes( { content: shortcode } );
|
||||
}
|
||||
|
||||
var get_post = get_option( posts );
|
||||
|
||||
return wp.element.createElement(
|
||||
'div',
|
||||
{
|
||||
className: className
|
||||
},
|
||||
wp.element.createElement(
|
||||
wp.components.SelectControl,
|
||||
{
|
||||
label: wp.i18n.__( 'Select Forms', 'ultimate-member' ),
|
||||
className: 'um_select_forms',
|
||||
type: 'number',
|
||||
value: form_id,
|
||||
options: get_post,
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes({ form_id: value });
|
||||
var shortcode = umShortcode( value );
|
||||
props.setAttributes( { content: shortcode } );
|
||||
}
|
||||
}
|
||||
)
|
||||
);
|
||||
} // end withSelect
|
||||
), // end edit
|
||||
|
||||
save: function save( props ) {
|
||||
|
||||
return wp.element.createElement(
|
||||
wp.editor.RichText.Content,
|
||||
{
|
||||
tagName: 'p',
|
||||
className: props.className,
|
||||
value: props.attributes.content
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
//-------------------------------------\\
|
||||
//-- Um Member Directories shortcode --\\
|
||||
//-------------------------------------\\
|
||||
|
||||
wp.blocks.registerBlockType( 'um-block/um-member-directories', {
|
||||
title: wp.i18n.__( 'Member Directory', 'ultimate-member' ),
|
||||
description: wp.i18n.__( 'Choose display directory', 'ultimate-member' ),
|
||||
icon: 'groups',
|
||||
category: 'um-blocks',
|
||||
attributes: {
|
||||
content: {
|
||||
source: 'html',
|
||||
selector: 'p'
|
||||
},
|
||||
member_id: {
|
||||
type: 'select'
|
||||
}
|
||||
},
|
||||
|
||||
edit: wp.data.withSelect( function( select ) {
|
||||
return {
|
||||
posts: select( 'core' ).getEntityRecords( 'postType', 'um_directory', {
|
||||
per_page: -1
|
||||
})
|
||||
};
|
||||
} )( function( props ) {
|
||||
var posts = props.posts,
|
||||
className = props.className,
|
||||
attributes = props.attributes,
|
||||
setAttributes = props.setAttributes,
|
||||
member_id = props.attributes.member_id,
|
||||
content = props.attributes.content;
|
||||
|
||||
function get_option( posts ) {
|
||||
var option = [];
|
||||
|
||||
posts.map( function( post ) {
|
||||
option.push(
|
||||
{
|
||||
label: post.title.rendered,
|
||||
value: post.id
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
return option;
|
||||
}
|
||||
|
||||
function umShortcode( value ) {
|
||||
|
||||
var shortcode = '';
|
||||
|
||||
if ( value !== undefined ) {
|
||||
shortcode = '[ultimatemember form_id="' + value + '"]';
|
||||
}
|
||||
|
||||
return shortcode;
|
||||
}
|
||||
|
||||
if ( ! posts ) {
|
||||
return wp.element.createElement(
|
||||
'p',
|
||||
{
|
||||
className: className
|
||||
},
|
||||
wp.element.createElement(
|
||||
wp.components.Spinner,
|
||||
null
|
||||
),
|
||||
wp.i18n.__( 'Loading Forms', 'ultimate-member' )
|
||||
);
|
||||
}
|
||||
|
||||
if ( 0 === posts.length ) {
|
||||
return wp.element.createElement(
|
||||
'p',
|
||||
null,
|
||||
wp.i18n.__( 'No Posts', 'ultimate-member' )
|
||||
);
|
||||
}
|
||||
|
||||
if ( member_id === undefined ) {
|
||||
props.setAttributes({ member_id: posts[0]['id'] });
|
||||
var shortcode = umShortcode(posts[0]['id']);
|
||||
props.setAttributes( { content: shortcode } );
|
||||
}
|
||||
|
||||
var get_post = get_option( posts );
|
||||
|
||||
return wp.element.createElement(
|
||||
'div',
|
||||
{
|
||||
className: className
|
||||
},
|
||||
wp.element.createElement(
|
||||
wp.components.SelectControl,
|
||||
{
|
||||
label: wp.i18n.__( 'Select Directories', 'ultimate-member' ),
|
||||
className: 'um_select_directory',
|
||||
type: 'number',
|
||||
value: member_id,
|
||||
options: get_post,
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes({ member_id: value });
|
||||
var shortcode = umShortcode(value);
|
||||
props.setAttributes( { content: shortcode } );
|
||||
}
|
||||
}
|
||||
)
|
||||
);
|
||||
} // end withSelect
|
||||
), // end edit
|
||||
|
||||
save: function save( props ) {
|
||||
|
||||
return wp.element.createElement(
|
||||
wp.editor.RichText.Content,
|
||||
{
|
||||
tagName: 'p',
|
||||
className: props.className,
|
||||
value: props.attributes.content
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
//-------------------------------------\\
|
||||
//--------- Um password reset ---------\\
|
||||
//-------------------------------------\\
|
||||
wp.blocks.registerBlockType( 'um-block/um-password-reset', {
|
||||
title: wp.i18n.__( 'Password Reset', 'ultimate-member' ),
|
||||
description: wp.i18n.__( 'Displaying the password reset form', 'ultimate-member' ),
|
||||
icon: 'unlock',
|
||||
category: 'um-blocks',
|
||||
attributes: {
|
||||
content: {
|
||||
source: 'html',
|
||||
selector: 'p'
|
||||
}
|
||||
},
|
||||
|
||||
edit: function( props ) {
|
||||
var content = props.attributes.content;
|
||||
props.setAttributes({ content: '[ultimatemember_password]' });
|
||||
|
||||
return [
|
||||
wp.element.createElement(
|
||||
"div",
|
||||
{
|
||||
className: "um-password-reset-wrapper"
|
||||
},
|
||||
wp.i18n.__( 'Password Reset', 'ultimate-member' )
|
||||
)
|
||||
]
|
||||
},
|
||||
|
||||
save: function( props ) {
|
||||
|
||||
return wp.element.createElement(
|
||||
wp.editor.RichText.Content,
|
||||
{
|
||||
tagName: 'p',
|
||||
className: props.className,
|
||||
value: props.attributes.content
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
//-------------------------------------\\
|
||||
//------------ Um Account -------------\\
|
||||
//-------------------------------------\\
|
||||
wp.blocks.registerBlockType( 'um-block/um-account', {
|
||||
title: wp.i18n.__( 'Account', 'ultimate-member' ),
|
||||
description: wp.i18n.__( 'Displaying the account page of the current user', 'ultimate-member' ),
|
||||
icon: 'id',
|
||||
category: 'um-blocks',
|
||||
attributes: {
|
||||
content: {
|
||||
source: 'html',
|
||||
selector: 'p'
|
||||
},
|
||||
tab: {
|
||||
type: 'select'
|
||||
}
|
||||
},
|
||||
|
||||
edit: function( props ) {
|
||||
var content = props.attributes.content,
|
||||
tab = props.attributes.tab;
|
||||
|
||||
function get_options() {
|
||||
var option = [];
|
||||
|
||||
option.push( { label: wp.i18n.__( 'All', 'ultimate-member' ), value: 'all' } );
|
||||
|
||||
for ( var key in um_account_settings ) {
|
||||
if ( um_account_settings.hasOwnProperty( key ) && um_account_settings[ key ]['enabled'] ) {
|
||||
option.push(
|
||||
{
|
||||
label: um_account_settings[ key ]['label'],
|
||||
value: key
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return option;
|
||||
}
|
||||
|
||||
function umShortcode( value ) {
|
||||
|
||||
var shortcode = '[ultimatemember_account';
|
||||
|
||||
if ( value !== 'all' ) {
|
||||
shortcode = shortcode + ' tab="' + value + '"';
|
||||
}
|
||||
|
||||
shortcode = shortcode + ']';
|
||||
|
||||
props.setAttributes({ content: shortcode });
|
||||
}
|
||||
|
||||
if ( content === undefined ) {
|
||||
props.setAttributes({ content: '[ultimatemember_account]' });
|
||||
}
|
||||
|
||||
return [
|
||||
wp.element.createElement(
|
||||
"div",
|
||||
{
|
||||
className: 'um-account-wrapper'
|
||||
},
|
||||
wp.i18n.__( 'Account', 'ultimate-member' )
|
||||
),
|
||||
wp.element.createElement(
|
||||
wp.blockEditor.InspectorControls,
|
||||
{},
|
||||
wp.element.createElement(
|
||||
wp.components.PanelBody,
|
||||
{
|
||||
title: wp.i18n.__( 'Account Tab', 'ultimate-member' )
|
||||
},
|
||||
wp.element.createElement(
|
||||
wp.components.SelectControl,
|
||||
{
|
||||
label: wp.i18n.__( 'Select Tab', 'ultimate-member' ),
|
||||
className: "um_select_account_tab",
|
||||
type: 'number',
|
||||
value: props.attributes.tab,
|
||||
options: get_options(),
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes({ tab: value });
|
||||
umShortcode( value );
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
},
|
||||
|
||||
save: function( props ) {
|
||||
|
||||
return wp.element.createElement(
|
||||
wp.editor.RichText.Content,
|
||||
{
|
||||
tagName: 'p',
|
||||
className: props.className,
|
||||
value: props.attributes.content
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var um_components = wp.components,
|
||||
umSelectControl = um_components.SelectControl,
|
||||
var um_components = wp.components,
|
||||
umSelectControl = um_components.SelectControl,
|
||||
umTextareaControl = um_components.TextareaControl;
|
||||
|
||||
|
||||
@@ -9,227 +9,189 @@ function um_admin_blocks_custom_fields( um_condition_fields, props ) {
|
||||
return wp.hooks.applyFilters( 'um_admin_blocks_custom_fields', [], um_condition_fields, props );
|
||||
}
|
||||
|
||||
var um_block_restriction = wp.compose.createHigherOrderComponent( function( BlockEdit ) {
|
||||
var um_condition_fields = {
|
||||
um_who_access: 'um_block_settings_hide',
|
||||
um_roles_access: 'um_block_settings_hide',
|
||||
um_message_type: 'um_block_settings_hide',
|
||||
um_message_content: 'um_block_settings_hide'
|
||||
};
|
||||
var um_block_restriction = wp.compose.createHigherOrderComponent(
|
||||
function( BlockEdit ) {
|
||||
var um_condition_fields = {
|
||||
um_who_access: 'um_block_settings_hide',
|
||||
um_roles_access: 'um_block_settings_hide',
|
||||
um_message_type: 'um_block_settings_hide',
|
||||
um_message_content: 'um_block_settings_hide'
|
||||
};
|
||||
|
||||
um_condition_fields = wp.hooks.applyFilters( 'um_admin_blocks_condition_fields_default', um_condition_fields );
|
||||
um_condition_fields = wp.hooks.applyFilters( 'um_admin_blocks_condition_fields_default', um_condition_fields );
|
||||
|
||||
return function( props ) {
|
||||
return function( props ) {
|
||||
let initialIsRestrict = props.attributes.um_is_restrict !== undefined ? props.attributes.um_is_restrict : false;
|
||||
|
||||
if ( props.attributes.um_is_restrict !== true ) {
|
||||
um_condition_fields['um_who_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_type'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
} else {
|
||||
um_condition_fields['um_who_access'] = '';
|
||||
|
||||
if ( parseInt( props.attributes.um_who_access ) === 0 || typeof props.attributes.um_who_access === 'undefined' ) {
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_type'] = 'um_block_settings_hide';
|
||||
if ( props.attributes.um_is_restrict !== true ) {
|
||||
um_condition_fields['um_who_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_type'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
} else if ( parseInt( props.attributes.um_who_access ) === 1 ) {
|
||||
um_condition_fields['um_roles_access'] = '';
|
||||
um_condition_fields['um_message_type'] = '';
|
||||
|
||||
if ( parseInt( props.attributes.um_message_type ) === 2 ) {
|
||||
um_condition_fields['um_message_content'] = '';
|
||||
} else {
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
}
|
||||
} else {
|
||||
um_condition_fields['um_message_type'] = '';
|
||||
um_condition_fields['um_who_access'] = '';
|
||||
|
||||
if ( parseInt( props.attributes.um_message_type ) === 2 ) {
|
||||
um_condition_fields['um_message_content'] = '';
|
||||
} else {
|
||||
if ( parseInt( props.attributes.um_who_access ) === 0 || typeof props.attributes.um_who_access === 'undefined' ) {
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_type'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
} else if ( parseInt( props.attributes.um_who_access ) === 1 ) {
|
||||
um_condition_fields['um_roles_access'] = '';
|
||||
um_condition_fields['um_message_type'] = '';
|
||||
|
||||
if ( parseInt( props.attributes.um_message_type ) === 2 ) {
|
||||
um_condition_fields['um_message_content'] = '';
|
||||
} else {
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
}
|
||||
} else {
|
||||
um_condition_fields['um_message_type'] = '';
|
||||
|
||||
if ( parseInt( props.attributes.um_message_type ) === 2 ) {
|
||||
um_condition_fields['um_message_content'] = '';
|
||||
} else {
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
um_condition_fields = wp.hooks.applyFilters( 'um_admin_blocks_condition_fields', um_condition_fields, props );
|
||||
um_condition_fields = wp.hooks.applyFilters( 'um_admin_blocks_condition_fields', um_condition_fields, props );
|
||||
|
||||
return wp.element.createElement(
|
||||
wp.element.Fragment,
|
||||
{},
|
||||
wp.element.createElement( BlockEdit, props ),
|
||||
wp.element.createElement(
|
||||
wp.blockEditor.InspectorControls,
|
||||
return wp.element.createElement(
|
||||
wp.element.Fragment,
|
||||
{},
|
||||
wp.element.createElement( BlockEdit, props ),
|
||||
wp.element.createElement(
|
||||
wp.components.PanelBody,
|
||||
{
|
||||
title: wp.i18n.__( 'Ultimate Member: Content Restriction', 'ultimate-member' ),
|
||||
className: 'um_block_settings'
|
||||
},
|
||||
wp.blockEditor.InspectorControls,
|
||||
{},
|
||||
wp.element.createElement(
|
||||
wp.components.ToggleControl,
|
||||
wp.components.PanelBody,
|
||||
{
|
||||
label: wp.i18n.__( 'Restrict access?', 'ultimate-member' ),
|
||||
checked: props.attributes.um_is_restrict,
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes({ um_is_restrict: value });
|
||||
if ( value === false ) {
|
||||
um_condition_fields['um_who_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_type'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
} else {
|
||||
um_condition_fields['um_who_access'] = '';
|
||||
}
|
||||
title: wp.i18n.__( 'Ultimate Member: Content Restriction', 'ultimate-member' ),
|
||||
className: 'um_block_settings'
|
||||
},
|
||||
wp.element.createElement(
|
||||
wp.components.ToggleControl,
|
||||
{
|
||||
label: wp.i18n.__( 'Restrict access?', 'ultimate-member' ),
|
||||
checked: initialIsRestrict,
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes( { um_is_restrict: value } );
|
||||
if ( value === false ) {
|
||||
um_condition_fields['um_who_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_type'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
} else {
|
||||
um_condition_fields['um_who_access'] = '';
|
||||
}
|
||||
|
||||
um_condition_fields = wp.hooks.applyFilters( 'um_admin_blocks_condition_fields_on_change', um_condition_fields, 'um_is_restrict', value );
|
||||
um_condition_fields = wp.hooks.applyFilters( 'um_admin_blocks_condition_fields_on_change', um_condition_fields, 'um_is_restrict', value );
|
||||
}
|
||||
}
|
||||
}
|
||||
),
|
||||
wp.element.createElement(
|
||||
umSelectControl,
|
||||
{
|
||||
type: 'number',
|
||||
className: um_condition_fields['um_who_access'],
|
||||
label: wp.i18n.__( 'Who can access this block?', 'ultimate-member' ),
|
||||
value: props.attributes.um_who_access,
|
||||
options: [
|
||||
{
|
||||
label: wp.i18n.__( 'Everyone', 'ultimate-member' ),
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: wp.i18n.__( 'Logged in users', 'ultimate-member' ),
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: wp.i18n.__( 'Logged out users', 'ultimate-member' ),
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes({ um_who_access: value });
|
||||
if ( parseInt( value ) === 0 ) {
|
||||
um_condition_fields['um_message_type'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
} else if ( parseInt( value ) === 1 ) {
|
||||
um_condition_fields['um_message_type'] = '';
|
||||
um_condition_fields['um_roles_access'] = '';
|
||||
} else {
|
||||
um_condition_fields['um_message_type'] = '';
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
}
|
||||
),
|
||||
wp.element.createElement(
|
||||
umSelectControl,
|
||||
{
|
||||
type: 'number',
|
||||
className: um_condition_fields['um_who_access'],
|
||||
label: wp.i18n.__( 'Who can access this block?', 'ultimate-member' ),
|
||||
value: props.attributes.um_who_access,
|
||||
options: [
|
||||
{
|
||||
label: wp.i18n.__( 'Everyone', 'ultimate-member' ),
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: wp.i18n.__( 'Logged in users', 'ultimate-member' ),
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: wp.i18n.__( 'Logged out users', 'ultimate-member' ),
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes( { um_who_access: value } );
|
||||
if ( parseInt( value ) === 0 ) {
|
||||
um_condition_fields['um_message_type'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
} else if ( parseInt( value ) === 1 ) {
|
||||
um_condition_fields['um_message_type'] = '';
|
||||
um_condition_fields['um_roles_access'] = '';
|
||||
} else {
|
||||
um_condition_fields['um_message_type'] = '';
|
||||
um_condition_fields['um_roles_access'] = 'um_block_settings_hide';
|
||||
}
|
||||
|
||||
um_condition_fields = wp.hooks.applyFilters( 'um_admin_blocks_condition_fields_on_change', um_condition_fields, 'um_who_access', value );
|
||||
}
|
||||
}
|
||||
),
|
||||
wp.element.createElement(
|
||||
umSelectControl,
|
||||
{
|
||||
multiple: true,
|
||||
className: um_condition_fields['um_roles_access'],
|
||||
label: wp.i18n.__( 'What roles can access this block?', 'ultimate-member' ),
|
||||
value: props.attributes.um_roles_access,
|
||||
options: um_restrict_roles,
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes({ um_roles_access: value });
|
||||
}
|
||||
}
|
||||
),
|
||||
wp.element.createElement(
|
||||
umSelectControl,
|
||||
{
|
||||
type: 'number',
|
||||
className: um_condition_fields['um_message_type'],
|
||||
label: wp.i18n.__( 'Restriction action', 'ultimate-member' ),
|
||||
value: props.attributes.um_message_type,
|
||||
options: [
|
||||
{
|
||||
label: wp.i18n.__( 'Hide block', 'ultimate-member' ),
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: wp.i18n.__( 'Show global default message', 'ultimate-member' ),
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: wp.i18n.__( 'Show custom message', 'ultimate-member' ),
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes({ um_message_type: value });
|
||||
if ( parseInt( value ) === 2 ) {
|
||||
um_condition_fields['um_message_content'] = '';
|
||||
} else {
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
um_condition_fields = wp.hooks.applyFilters( 'um_admin_blocks_condition_fields_on_change', um_condition_fields, 'um_who_access', value );
|
||||
}
|
||||
}
|
||||
}
|
||||
),
|
||||
wp.element.createElement(
|
||||
umTextareaControl,
|
||||
{
|
||||
type: 'number',
|
||||
className: um_condition_fields['um_message_content'],
|
||||
label: wp.i18n.__( 'Custom restricted access message', 'ultimate-member' ),
|
||||
value: props.attributes.um_message_content,
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes({ um_message_content: value });
|
||||
),
|
||||
wp.element.createElement(
|
||||
umSelectControl,
|
||||
{
|
||||
multiple: true,
|
||||
className: um_condition_fields['um_roles_access'],
|
||||
label: wp.i18n.__( 'What roles can access this block?', 'ultimate-member' ),
|
||||
value: props.attributes.um_roles_access,
|
||||
options: um_restrict_roles,
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes( { um_roles_access: value } );
|
||||
}
|
||||
}
|
||||
}
|
||||
),
|
||||
um_admin_blocks_custom_fields( um_condition_fields, props )
|
||||
),
|
||||
wp.element.createElement(
|
||||
umSelectControl,
|
||||
{
|
||||
type: 'number',
|
||||
className: um_condition_fields['um_message_type'],
|
||||
label: wp.i18n.__( 'Restriction action', 'ultimate-member' ),
|
||||
value: props.attributes.um_message_type,
|
||||
options: [
|
||||
{
|
||||
label: wp.i18n.__( 'Hide block', 'ultimate-member' ),
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: wp.i18n.__( 'Show global default message', 'ultimate-member' ),
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: wp.i18n.__( 'Show custom message', 'ultimate-member' ),
|
||||
value: 2
|
||||
}
|
||||
],
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes( { um_message_type: value } );
|
||||
if ( parseInt( value ) === 2 ) {
|
||||
um_condition_fields['um_message_content'] = '';
|
||||
} else {
|
||||
um_condition_fields['um_message_content'] = 'um_block_settings_hide';
|
||||
}
|
||||
}
|
||||
}
|
||||
),
|
||||
wp.element.createElement(
|
||||
umTextareaControl,
|
||||
{
|
||||
type: 'number',
|
||||
className: um_condition_fields['um_message_content'],
|
||||
label: wp.i18n.__( 'Custom restricted access message', 'ultimate-member' ),
|
||||
value: props.attributes.um_message_content,
|
||||
onChange: function onChange( value ) {
|
||||
props.setAttributes( { um_message_content: value } );
|
||||
}
|
||||
}
|
||||
),
|
||||
um_admin_blocks_custom_fields( um_condition_fields, props )
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
};
|
||||
}, 'um_block_restriction' );
|
||||
);
|
||||
};
|
||||
},
|
||||
'um_block_restriction'
|
||||
);
|
||||
|
||||
wp.hooks.addFilter( 'editor.BlockEdit', 'um-block/um_block_restriction', um_block_restriction );
|
||||
|
||||
|
||||
/**
|
||||
* Save Attributes
|
||||
*
|
||||
* @type {{um_is_restrict: {type: string}, um_who_access: {type: string}, um_message_type: {type: string}, um_message_content: {type: string}}}
|
||||
*/
|
||||
var um_block_restrict_settings = {
|
||||
um_is_restrict: {
|
||||
type: "boolean"
|
||||
},
|
||||
um_who_access: {
|
||||
type: "select"
|
||||
},
|
||||
um_roles_access: {
|
||||
type: "select"
|
||||
},
|
||||
um_message_type: {
|
||||
type: "select"
|
||||
},
|
||||
um_message_content: {
|
||||
type: "string"
|
||||
}
|
||||
};
|
||||
|
||||
um_block_restrict_settings = wp.hooks.applyFilters( 'um_admin_blocks_restrict_settings', um_block_restrict_settings );
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param settings
|
||||
* @returns {*}
|
||||
*/
|
||||
function um_add_block_attributes( settings ) {
|
||||
var _lodash = lodash,
|
||||
assign = _lodash.assign;
|
||||
|
||||
settings.attributes = assign( settings.attributes, um_block_restrict_settings );
|
||||
return settings;
|
||||
}
|
||||
|
||||
wp.hooks.addFilter( 'blocks.registerBlockType', 'um-block/um_add_block_attributes', um_add_block_attributes );
|
||||
|
||||
@@ -80,6 +80,7 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
|
||||
add_action( 'um_admin_do_action__um_can_register_notice', array( &$this, 'um_hide_notice' ) );
|
||||
add_action( 'um_admin_do_action__um_hide_exif_notice', array( &$this, 'um_hide_notice' ) );
|
||||
add_action( 'um_admin_do_action__user_action', array( &$this, 'user_action' ) );
|
||||
add_action( 'um_admin_do_action__check_templates_version', array( &$this, 'check_templates_version' ) );
|
||||
|
||||
add_action( 'um_admin_do_action__install_core_pages', array( &$this, 'install_core_pages' ) );
|
||||
|
||||
@@ -1745,48 +1746,55 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
|
||||
*
|
||||
* @param $action
|
||||
*/
|
||||
function duplicate_form( $action ) {
|
||||
if ( ! is_admin() || ! current_user_can('manage_options') ) {
|
||||
public function duplicate_form( $action ) {
|
||||
if ( ! is_admin() || ! current_user_can( 'manage_options' ) ) {
|
||||
die();
|
||||
}
|
||||
if ( ! isset( $_REQUEST['post_id'] ) || ! is_numeric( $_REQUEST['post_id'] ) ) {
|
||||
|
||||
if ( empty( $_REQUEST['post_id'] ) || empty( $_REQUEST['nonce'] ) || ! wp_verify_nonce( $_REQUEST['nonce'], "um-duplicate_form{$_REQUEST['post_id']}" ) ) {
|
||||
die();
|
||||
}
|
||||
|
||||
if ( ! is_numeric( $_REQUEST['post_id'] ) ) {
|
||||
die();
|
||||
}
|
||||
|
||||
$post_id = absint( $_REQUEST['post_id'] );
|
||||
|
||||
$n = array(
|
||||
'post_type' => 'um_form',
|
||||
'post_title' => sprintf( __( 'Duplicate of %s', 'ultimate-member' ), get_the_title( $post_id ) ),
|
||||
'post_status' => 'publish',
|
||||
'post_author' => get_current_user_id(),
|
||||
'post_type' => 'um_form',
|
||||
// translators: %s - Form title
|
||||
'post_title' => sprintf( __( 'Duplicate of %s', 'ultimate-member' ), get_the_title( $post_id ) ),
|
||||
'post_status' => 'publish',
|
||||
'post_author' => get_current_user_id(),
|
||||
);
|
||||
|
||||
$n_id = wp_insert_post( $n );
|
||||
|
||||
$n_fields = get_post_custom( $post_id );
|
||||
foreach ( $n_fields as $key => $value ) {
|
||||
|
||||
if ( $key == '_um_custom_fields' ) {
|
||||
$the_value = unserialize( $value[0] );
|
||||
if ( '_um_custom_fields' === $key ) {
|
||||
$the_value = maybe_unserialize( $value[0] );
|
||||
} else {
|
||||
$the_value = $value[0];
|
||||
}
|
||||
|
||||
update_post_meta( $n_id, $key, $the_value );
|
||||
|
||||
}
|
||||
|
||||
delete_post_meta( $n_id, '_um_core' );
|
||||
|
||||
$url = admin_url( 'edit.php?post_type=um_form' );
|
||||
$url = add_query_arg( 'update', 'form_duplicated', $url );
|
||||
|
||||
exit( wp_redirect( $url ) );
|
||||
|
||||
$url = add_query_arg(
|
||||
array(
|
||||
'post_type' => 'um_form',
|
||||
'update' => 'form_duplicated',
|
||||
),
|
||||
admin_url( 'edit.php' )
|
||||
);
|
||||
wp_safe_redirect( $url );
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action to hide notices in admin
|
||||
*
|
||||
@@ -1801,7 +1809,6 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
|
||||
exit( wp_redirect( remove_query_arg( 'um_adm_action' ) ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Various user actions
|
||||
*
|
||||
@@ -1868,6 +1875,36 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Manual check templates versions
|
||||
*
|
||||
* @param $action
|
||||
*/
|
||||
public function check_templates_version( $action ) {
|
||||
$templates = UM()->admin_settings()->get_override_templates( true );
|
||||
$out_date = false;
|
||||
|
||||
foreach ( $templates as $template ) {
|
||||
if ( 0 === $template['status_code'] ) {
|
||||
$out_date = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( false === $out_date ) {
|
||||
delete_option( 'um_override_templates_outdated' );
|
||||
}
|
||||
|
||||
$url = add_query_arg(
|
||||
array(
|
||||
'page' => 'um_options',
|
||||
'tab' => 'override_templates',
|
||||
),
|
||||
admin_url( 'admin.php' )
|
||||
);
|
||||
wp_safe_redirect( $url );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add any custom links to plugin page
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?php
|
||||
namespace um\admin\core;
|
||||
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
||||
|
||||
@@ -14,17 +14,20 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
||||
*/
|
||||
class Admin_Builder {
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $form_id;
|
||||
|
||||
/**
|
||||
* @var
|
||||
* @var array
|
||||
*/
|
||||
var $form_id;
|
||||
|
||||
public $global_fields = array();
|
||||
|
||||
/**
|
||||
* Admin_Builder constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
public function __construct() {
|
||||
add_action( 'um_admin_field_modal_header', array( &$this, 'add_message_handlers' ) );
|
||||
add_action( 'um_admin_field_modal_footer', array( &$this, 'add_conditional_support' ), 10, 4 );
|
||||
add_filter( 'um_admin_builder_skip_field_validation', array( &$this, 'skip_field_validation' ), 10, 3 );
|
||||
@@ -33,7 +36,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
||||
add_filter( 'um_admin_field_update_error_handling', array( &$this, 'um_admin_field_update_error_handling' ), 1, 2 );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Apply a filter to handle errors for field updating in backend
|
||||
*
|
||||
|
||||
@@ -104,7 +104,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Columns' ) ) {
|
||||
return $actions;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Duplicate a form
|
||||
*
|
||||
@@ -112,13 +111,20 @@ if ( ! class_exists( 'um\admin\core\Admin_Columns' ) ) {
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function duplicate_uri( $id ) {
|
||||
$url = add_query_arg('um_adm_action', 'duplicate_form', admin_url('edit.php?post_type=um_form') );
|
||||
$url = add_query_arg('post_id', $id, $url);
|
||||
private function duplicate_uri( $id ) {
|
||||
$url = add_query_arg(
|
||||
array(
|
||||
'post_type' => 'um_form',
|
||||
'um_adm_action' => 'duplicate_form',
|
||||
'post_id' => $id,
|
||||
'nonce' => wp_create_nonce( "um-duplicate_form{$id}" ),
|
||||
),
|
||||
admin_url( 'edit.php' )
|
||||
);
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Custom columns for Form
|
||||
*
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
namespace um\admin\core;
|
||||
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
@@ -18,53 +19,53 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $js_url;
|
||||
public $js_url;
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $css_url;
|
||||
public $css_url;
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $front_js_baseurl;
|
||||
public $front_js_baseurl;
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $front_css_baseurl;
|
||||
public $front_css_baseurl;
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $suffix;
|
||||
public $suffix;
|
||||
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
var $um_cpt_form_screen;
|
||||
public $um_cpt_form_screen;
|
||||
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
var $post_page;
|
||||
public $post_page;
|
||||
|
||||
|
||||
/**
|
||||
* Admin_Enqueue constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
$this->js_url = um_url . 'includes/admin/assets/js/';
|
||||
public function __construct() {
|
||||
$this->js_url = um_url . 'includes/admin/assets/js/';
|
||||
$this->css_url = um_url . 'includes/admin/assets/css/';
|
||||
|
||||
$this->front_js_baseurl = um_url . 'assets/js/';
|
||||
$this->front_js_baseurl = um_url . 'assets/js/';
|
||||
$this->front_css_baseurl = um_url . 'assets/css/';
|
||||
|
||||
$this->suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG || defined( 'UM_SCRIPT_DEBUG' ) ) ? '' : '.min';
|
||||
@@ -73,7 +74,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
|
||||
add_action( 'admin_head', array( &$this, 'admin_head' ), 9 );
|
||||
|
||||
add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts' ) );
|
||||
add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts' ) );
|
||||
|
||||
add_filter( 'enter_title_here', array( &$this, 'enter_title_here' ) );
|
||||
|
||||
@@ -89,20 +90,135 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
} else {
|
||||
add_filter( 'block_categories', array( &$this, 'blocks_category' ), 10, 2 );
|
||||
}
|
||||
add_action( 'enqueue_block_assets', array( &$this, 'block_editor' ), 11 );
|
||||
}
|
||||
|
||||
|
||||
function enqueue_role_wrapper() {
|
||||
add_action( 'admin_enqueue_scripts', array( &$this, 'load_role_wrapper' ) );
|
||||
/**
|
||||
* Enqueue Gutenberg Block Editor assets
|
||||
*/
|
||||
public function block_editor() {
|
||||
wp_register_style( 'um_ui', um_url . 'assets/css/jquery-ui.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_members', um_url . 'assets/css/um-members.css', array( 'um_ui' ), ultimatemember_version );
|
||||
if ( is_rtl() ) {
|
||||
wp_register_style( 'um_members_rtl', um_url . 'assets/css/um-members-rtl.css', array( 'um_members' ), ultimatemember_version );
|
||||
}
|
||||
wp_register_style( 'um_styles', um_url . 'assets/css/um-styles.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_profile', um_url . 'assets/css/um-profile.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_crop', um_url . 'assets/css/um-crop.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_responsive', um_url . 'assets/css/um-responsive.css', array( 'um_profile', 'um_crop' ), ultimatemember_version );
|
||||
wp_register_style( 'um_account', um_url . 'assets/css/um-account.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_default_css', um_url . 'assets/css/um-old-default.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_fonticons_fa', um_url . 'assets/css/um-fonticons-fa.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'select2', um_url . 'assets/css/select2/select2' . $this->suffix . '.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_fonticons_ii', um_url . 'assets/css/um-fonticons-ii.css', array(), ultimatemember_version );
|
||||
|
||||
wp_register_script( 'um_admin_blocks_shortcodes', um_url . 'assets/js/um-blocks' . $this->suffix . '.js', array( 'wp-i18n', 'wp-blocks', 'wp-components' ), ultimatemember_version, true );
|
||||
wp_set_script_translations( 'um_admin_blocks_shortcodes', 'ultimate-member' );
|
||||
|
||||
if ( ! empty( UM()->account()->get_tab_fields( 'notifications', array() ) ) ) {
|
||||
$notifications_enabled = 1;
|
||||
} else {
|
||||
$notifications_enabled = 0;
|
||||
}
|
||||
|
||||
$um_account_settings = array(
|
||||
'general' => array(
|
||||
'label' => __( 'General', 'ultimate-member' ),
|
||||
'enabled' => 1,
|
||||
),
|
||||
'password' => array(
|
||||
'label' => __( 'Password', 'ultimate-member' ),
|
||||
'enabled' => UM()->options()->get( 'account_tab_password' ),
|
||||
),
|
||||
'privacy' => array(
|
||||
'label' => __( 'Privacy', 'ultimate-member' ),
|
||||
'enabled' => UM()->options()->get( 'account_tab_privacy' ),
|
||||
),
|
||||
'notifications' => array(
|
||||
'label' => __( 'Notifications', 'ultimate-member' ),
|
||||
'enabled' => $notifications_enabled,
|
||||
),
|
||||
'delete' => array(
|
||||
'label' => __( 'Delete', 'ultimate-member' ),
|
||||
'enabled' => UM()->options()->get( 'account_tab_delete' ),
|
||||
),
|
||||
);
|
||||
$um_account_settings = apply_filters( 'um_extend_account_settings', $um_account_settings );
|
||||
wp_localize_script( 'um_admin_blocks_shortcodes', 'um_account_settings', $um_account_settings );
|
||||
|
||||
wp_enqueue_script( 'um_admin_blocks_shortcodes' );
|
||||
|
||||
wp_register_script( 'select2', um_url . 'assets/js/select2/select2.full' . $this->suffix . '.js', array( 'jquery', 'jquery-masonry' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime', um_url . 'assets/js/pickadate/picker.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_date', um_url . 'assets/js/pickadate/picker.date.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_time', um_url . 'assets/js/pickadate/picker.time.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_conditional', um_url . 'assets/js/um-conditional' . $this->suffix . '.js', array( 'jquery', 'wp-hooks' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_scripts', um_url . 'assets/js/um-scripts' . $this->suffix . '.js', array( 'jquery', 'wp-util', 'um_conditional', 'um_datetime', 'um_datetime_date', 'um_datetime_time', 'select2' ), ultimatemember_version, true );
|
||||
$max_upload_size = wp_max_upload_size();
|
||||
if ( ! $max_upload_size ) {
|
||||
$max_upload_size = 0;
|
||||
}
|
||||
|
||||
$localize_data = apply_filters(
|
||||
'um_enqueue_localize_data',
|
||||
array(
|
||||
'max_upload_size' => $max_upload_size,
|
||||
'nonce' => wp_create_nonce( 'um-frontend-nonce' ),
|
||||
)
|
||||
);
|
||||
wp_localize_script( 'um_scripts', 'um_scripts', $localize_data );
|
||||
|
||||
wp_register_script( 'um_dropdown', um_url . 'assets/js/dropdown' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_members', um_url . 'assets/js/um-members' . $this->suffix . '.js', array( 'jquery', 'wp-util', 'jquery-ui-slider', 'um_dropdown', 'wp-hooks', 'jquery-masonry', 'um_scripts' ), ultimatemember_version, true );
|
||||
|
||||
wp_register_script( 'um_account', um_url . 'assets/js/um-account' . $this->suffix . '.js', array( 'jquery', 'wp-hooks' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_scrollbar', um_url . 'assets/js/simplebar' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_crop', um_url . 'assets/js/um-crop' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_functions', um_url . 'assets/js/um-functions' . $this->suffix . '.js', array( 'jquery', 'jquery-masonry', 'wp-util', 'um_scrollbar' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_responsive', um_url . 'assets/js/um-responsive' . $this->suffix . '.js', array( 'jquery', 'um_functions', 'um_crop' ), ultimatemember_version, true );
|
||||
|
||||
// render blocks
|
||||
wp_enqueue_script( 'um_datetime' );
|
||||
wp_enqueue_script( 'um_datetime_date' );
|
||||
wp_enqueue_script( 'um_datetime_time' );
|
||||
wp_enqueue_script( 'um_conditional' );
|
||||
wp_enqueue_script( 'um_dropdown' );
|
||||
wp_enqueue_script( 'um_members' );
|
||||
wp_enqueue_script( 'um_account' );
|
||||
wp_enqueue_script( 'um_scrollbar' );
|
||||
wp_enqueue_script( 'um_crop' );
|
||||
wp_enqueue_script( 'um_functions' );
|
||||
wp_enqueue_script( 'um_responsive' );
|
||||
|
||||
wp_enqueue_style( 'um_fonticons_ii' );
|
||||
wp_enqueue_style( 'select2' );
|
||||
wp_enqueue_style( 'um_default_css' );
|
||||
wp_enqueue_style( 'um_fonticons_fa' );
|
||||
wp_enqueue_style( 'um_members' );
|
||||
wp_enqueue_style( 'um_styles' );
|
||||
wp_enqueue_style( 'um_profile' );
|
||||
wp_enqueue_style( 'um_crop' );
|
||||
wp_enqueue_style( 'um_responsive' );
|
||||
wp_enqueue_style( 'um_account' );
|
||||
|
||||
$custom_css = '.um{opacity: 1;}.um_request_name {display: none !important;}';
|
||||
|
||||
wp_add_inline_style( 'um_styles', $custom_css );
|
||||
}
|
||||
|
||||
|
||||
public function enqueue_role_wrapper() {
|
||||
add_action( 'admin_enqueue_scripts', array( &$this, 'load_role_wrapper' ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function enqueue_cpt_scripts() {
|
||||
if ( ( isset( $_GET['post_type'] ) && 'um_form' === sanitize_key( $_GET['post_type'] ) ) ||
|
||||
( isset( $_GET['post'] ) && 'um_form' === get_post_type( absint( $_GET['post'] ) ) ) ) {
|
||||
public function enqueue_cpt_scripts() {
|
||||
// phpcs:ignore WordPress.Security.NonceVerification
|
||||
if ( ( isset( $_GET['post_type'] ) && 'um_form' === sanitize_key( $_GET['post_type'] ) ) || ( isset( $_GET['post'] ) && 'um_form' === get_post_type( absint( $_GET['post'] ) ) ) ) {
|
||||
$this->um_cpt_form_screen = true;
|
||||
add_action( 'admin_footer', array( $this, 'admin_footer_scripts' ), 20 );
|
||||
}
|
||||
@@ -112,7 +228,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function enqueue_frontend_preview_assets() {
|
||||
public function enqueue_frontend_preview_assets() {
|
||||
//scripts for FRONTEND PREVIEW
|
||||
if ( class_exists( 'WooCommerce' ) ) {
|
||||
wp_dequeue_style( 'select2' );
|
||||
@@ -122,7 +238,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
wp_deregister_script( 'select2' );
|
||||
}
|
||||
|
||||
|
||||
wp_register_script( 'select2', $this->front_js_baseurl . 'select2/select2.full' . $this->suffix . '.js', array( 'jquery', 'jquery-masonry' ), '4.0.13', true );
|
||||
wp_register_script( 'um_jquery_form', $this->front_js_baseurl . 'um-jquery-form' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_fileupload', $this->front_js_baseurl . 'um-fileupload.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
@@ -138,9 +253,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
$locale = get_locale();
|
||||
if ( $locale ) {
|
||||
if ( file_exists( WP_LANG_DIR . '/plugins/ultimate-member/assets/js/pickadate/' . $locale . '.js' ) ) {
|
||||
wp_register_script('um_datetime_locale', content_url() . '/languages/plugins/ultimate-member/assets/js/pickadate/' . $locale . '.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_locale', content_url() . '/languages/plugins/ultimate-member/assets/js/pickadate/' . $locale . '.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
} elseif ( file_exists( um_path . 'assets/js/pickadate/translations/' . $locale . '.js' ) ) {
|
||||
wp_register_script('um_datetime_locale', um_url . 'assets/js/pickadate/translations/' . $locale . '.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_locale', um_url . 'assets/js/pickadate/translations/' . $locale . '.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,7 +263,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
wp_register_script( 'um_responsive', $this->front_js_baseurl . 'um-responsive' . $this->suffix . '.js', array( 'um_scripts' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_modal', $this->front_js_baseurl . 'um-modal' . $this->suffix . '.js', array( 'um_responsive' ), ultimatemember_version, true );
|
||||
|
||||
|
||||
wp_register_style( 'select2', $this->front_css_baseurl . 'select2/select2' . $this->suffix . '.css', array(), '4.0.13' );
|
||||
wp_register_style( 'um_datetime', $this->front_css_baseurl . 'pickadate/default.css', array(), ultimatemember_version );
|
||||
wp_register_style( 'um_datetime_date', $this->front_css_baseurl . 'pickadate/default.date.css', array( 'um_datetime' ), ultimatemember_version );
|
||||
@@ -174,7 +288,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load js for Add/Edit User form
|
||||
*/
|
||||
function load_role_wrapper() {
|
||||
public function load_role_wrapper() {
|
||||
wp_register_script( 'um_admin_role_wrapper', $this->js_url . 'um-admin-role-wrapper.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
$localize_roles_data = get_option( 'um_roles', array() );
|
||||
wp_localize_script( 'um_admin_role_wrapper', 'um_roles', (array) $localize_roles_data );
|
||||
@@ -189,11 +303,11 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function enter_title_here( $title ) {
|
||||
public function enter_title_here( $title ) {
|
||||
$screen = get_current_screen();
|
||||
if ( 'um_directory' == $screen->post_type ) {
|
||||
if ( 'um_directory' === $screen->post_type ) {
|
||||
$title = __( 'e.g. Member Directory', 'ultimate-member' );
|
||||
} elseif ( 'um_form' == $screen->post_type ) {
|
||||
} elseif ( 'um_form' === $screen->post_type ) {
|
||||
$title = __( 'e.g. New Registration Form', 'ultimate-member' );
|
||||
}
|
||||
return $title;
|
||||
@@ -203,7 +317,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Runs on admin head
|
||||
*/
|
||||
function admin_head() {
|
||||
public function admin_head() {
|
||||
if ( UM()->admin()->is_plugin_post_type() ) { ?>
|
||||
<style type="text/css">
|
||||
.um-admin.post-type-<?php echo esc_attr( get_post_type() ); ?> div#slugdiv,
|
||||
@@ -211,14 +325,15 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
.um-admin.post-type-<?php echo esc_attr( get_post_type() ); ?> div#screen-meta-links
|
||||
{display:none}
|
||||
</style>
|
||||
<?php }
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load Form
|
||||
*/
|
||||
function load_form() {
|
||||
public function load_form() {
|
||||
wp_register_style( 'um_admin_form', $this->css_url . 'um-admin-form.css', array(), ultimatemember_version );
|
||||
wp_enqueue_style( 'um_admin_form' );
|
||||
|
||||
@@ -230,7 +345,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load Forms
|
||||
*/
|
||||
function load_forms() {
|
||||
public function load_forms() {
|
||||
if ( class_exists( 'WooCommerce' ) ) {
|
||||
wp_dequeue_style( 'select2' );
|
||||
wp_deregister_style( 'select2' );
|
||||
@@ -248,9 +363,20 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
|
||||
wp_register_script( 'um_admin_forms', $this->js_url . 'um-admin-forms.js', array( 'jquery', 'wp-i18n', 'select2' ), ultimatemember_version, true );
|
||||
|
||||
wp_localize_script( 'um_admin_forms', 'um_forms_data', array(
|
||||
'successfully_redirect' => add_query_arg( array( 'page' => 'um_options', 'tab' => 'misc', 'msg' => 'updated' ), admin_url( 'admin.php' ) ),
|
||||
) );
|
||||
wp_localize_script(
|
||||
'um_admin_forms',
|
||||
'um_forms_data',
|
||||
array(
|
||||
'successfully_redirect' => add_query_arg(
|
||||
array(
|
||||
'page' => 'um_options',
|
||||
'tab' => 'misc',
|
||||
'msg' => 'updated',
|
||||
),
|
||||
admin_url( 'admin.php' )
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
wp_enqueue_script( 'um_admin_forms' );
|
||||
}
|
||||
@@ -259,7 +385,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load dashboard
|
||||
*/
|
||||
function load_dashboard() {
|
||||
public function load_dashboard() {
|
||||
wp_register_style( 'um_admin_dashboard', $this->css_url . 'um-admin-dashboard.css', array(), ultimatemember_version );
|
||||
wp_enqueue_style( 'um_admin_dashboard' );
|
||||
}
|
||||
@@ -268,7 +394,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load settings
|
||||
*/
|
||||
function load_settings() {
|
||||
public function load_settings() {
|
||||
wp_register_style( 'um_admin_settings', $this->css_url . 'um-admin-settings.css', array(), ultimatemember_version );
|
||||
wp_enqueue_style( 'um_admin_settings' );
|
||||
|
||||
@@ -280,7 +406,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load modal
|
||||
*/
|
||||
function load_modal() {
|
||||
public function load_modal() {
|
||||
wp_register_style( 'um_admin_modal', $this->css_url . 'um-admin-modal.css', array( 'wp-color-picker' ), ultimatemember_version );
|
||||
wp_enqueue_style( 'um_admin_modal' );
|
||||
|
||||
@@ -292,8 +418,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Field Processing
|
||||
*/
|
||||
function load_field() {
|
||||
wp_register_script( 'um_admin_field', $this->js_url . 'um-admin-field.js', array('jquery', 'wp-util', 'wp-i18n'), ultimatemember_version, true );
|
||||
public function load_field() {
|
||||
wp_register_script( 'um_admin_field', $this->js_url . 'um-admin-field.js', array( 'jquery', 'wp-util', 'wp-i18n' ), ultimatemember_version, true );
|
||||
wp_enqueue_script( 'um_admin_field' );
|
||||
}
|
||||
|
||||
@@ -301,8 +427,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load Builder
|
||||
*/
|
||||
function load_builder() {
|
||||
wp_register_script( 'um_admin_builder', $this->js_url . 'um-admin-builder.js', array('jquery', 'wp-util'), ultimatemember_version, true );
|
||||
public function load_builder() {
|
||||
wp_register_script( 'um_admin_builder', $this->js_url . 'um-admin-builder.js', array( 'jquery', 'wp-util' ), ultimatemember_version, true );
|
||||
wp_enqueue_script( 'um_admin_builder' );
|
||||
|
||||
//hide footer text on add/edit UM Forms
|
||||
@@ -310,9 +436,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
//and WP calculate page height
|
||||
$hide_footer = false;
|
||||
global $pagenow, $post;
|
||||
if ( ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) &&
|
||||
( ( isset( $_GET['post_type'] ) && 'um_form' === sanitize_key( $_GET['post_type'] ) ) ||
|
||||
( isset( $post->post_type ) && 'um_form' === $post->post_type ) ) ) {
|
||||
// phpcs:ignore WordPress.Security.NonceVerification
|
||||
if ( ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) && ( ( isset( $_GET['post_type'] ) && 'um_form' === sanitize_key( $_GET['post_type'] ) ) || ( isset( $post->post_type ) && 'um_form' === $post->post_type ) ) ) {
|
||||
$hide_footer = true;
|
||||
}
|
||||
|
||||
@@ -321,7 +446,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
);
|
||||
wp_localize_script( 'um_admin_builder', 'um_admin_builder_data', $localize_data );
|
||||
|
||||
wp_register_script( 'um_admin_dragdrop', $this->js_url . 'um-admin-dragdrop.js', array('jquery', 'wp-util'), ultimatemember_version, true );
|
||||
wp_register_script( 'um_admin_dragdrop', $this->js_url . 'um-admin-dragdrop.js', array( 'jquery', 'wp-util' ), ultimatemember_version, true );
|
||||
wp_enqueue_script( 'um_admin_dragdrop' );
|
||||
|
||||
wp_register_style( 'um_admin_builder', $this->css_url . 'um-admin-builder.css', array(), ultimatemember_version );
|
||||
@@ -332,7 +457,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load core WP styles/scripts
|
||||
*/
|
||||
function load_core_wp() {
|
||||
public function load_core_wp() {
|
||||
wp_enqueue_script( 'jquery-ui-draggable' );
|
||||
wp_enqueue_script( 'jquery-ui-sortable' );
|
||||
|
||||
@@ -343,7 +468,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load Admin Styles
|
||||
*/
|
||||
function load_css() {
|
||||
public function load_css() {
|
||||
wp_register_style( 'um_admin_menu', $this->css_url . 'um-admin-menu.css', array(), ultimatemember_version );
|
||||
wp_enqueue_style( 'um_admin_menu' );
|
||||
|
||||
@@ -358,7 +483,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load functions js
|
||||
*/
|
||||
function load_functions() {
|
||||
public function load_functions() {
|
||||
wp_register_script( 'um_scrollbar', um_url . 'assets/js/simplebar.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_functions', um_url . 'assets/js/um-functions.js', array( 'jquery', 'jquery-masonry', 'wp-util', 'um_scrollbar' ), ultimatemember_version, true );
|
||||
wp_enqueue_script( 'um_functions' );
|
||||
@@ -368,7 +493,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load Fonticons
|
||||
*/
|
||||
function load_fonticons() {
|
||||
public function load_fonticons() {
|
||||
wp_register_style( 'um_fonticons_ii', um_url . 'assets/css/um-fonticons-ii.css', array(), ultimatemember_version );
|
||||
wp_enqueue_style( 'um_fonticons_ii' );
|
||||
|
||||
@@ -380,8 +505,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load global css
|
||||
*/
|
||||
function load_global_scripts() {
|
||||
wp_register_script( 'um_admin_global', $this->js_url . 'um-admin-global.js', array('jquery'), ultimatemember_version, true );
|
||||
public function load_global_scripts() {
|
||||
wp_register_script( 'um_admin_global', $this->js_url . 'um-admin-global.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_enqueue_script( 'um_admin_global' );
|
||||
|
||||
wp_register_style( 'um_admin_global', $this->css_url . 'um-admin-global.css', array(), ultimatemember_version );
|
||||
@@ -392,7 +517,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load jQuery custom code
|
||||
*/
|
||||
function load_custom_scripts() {
|
||||
public function load_custom_scripts() {
|
||||
wp_register_script( 'um_datetime', $this->front_js_baseurl . 'pickadate/picker.js', array( 'jquery' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_date', $this->front_js_baseurl . 'pickadate/picker.date.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_time', $this->front_js_baseurl . 'pickadate/picker.time.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
@@ -401,9 +526,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
$locale = get_locale();
|
||||
if ( $locale ) {
|
||||
if ( file_exists( WP_LANG_DIR . '/plugins/ultimate-member/assets/js/pickadate/' . $locale . '.js' ) ) {
|
||||
wp_register_script('um_datetime_locale', content_url() . '/languages/plugins/ultimate-member/assets/js/pickadate/' . $locale . '.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_locale', content_url() . '/languages/plugins/ultimate-member/assets/js/pickadate/' . $locale . '.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
} elseif ( file_exists( um_path . 'assets/js/pickadate/translations/' . $locale . '.js' ) ) {
|
||||
wp_register_script('um_datetime_locale', um_url . 'assets/js/pickadate/translations/' . $locale . '.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_datetime_locale', um_url . 'assets/js/pickadate/translations/' . $locale . '.js', array( 'jquery', 'um_datetime' ), ultimatemember_version, true );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -411,9 +536,10 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
wp_register_style( 'um_datetime_date', $this->front_css_baseurl . 'pickadate/default.date.css', array( 'um_datetime' ), ultimatemember_version );
|
||||
wp_register_style( 'um_datetime_time', $this->front_css_baseurl . 'pickadate/default.time.css', array( 'um_datetime' ), ultimatemember_version );
|
||||
|
||||
wp_enqueue_style( 'um_datetime_date', 'um_datetime_time' );
|
||||
wp_enqueue_style( 'um_datetime_date' );
|
||||
wp_enqueue_style( 'um_datetime_time' );
|
||||
|
||||
wp_register_script( 'um_admin_scripts', $this->js_url . 'um-admin-scripts.js', array('jquery','wp-util', 'wp-color-picker', 'um_datetime', 'um_datetime_date', 'um_datetime_time'/*, 'um_datetime_legacy'*/ ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_admin_scripts', $this->js_url . 'um-admin-scripts.js', array( 'jquery', 'wp-util', 'wp-color-picker', 'um_datetime', 'um_datetime_date', 'um_datetime_time'/*, 'um_datetime_legacy'*/ ), ultimatemember_version, true );
|
||||
wp_enqueue_script( 'um_admin_scripts' );
|
||||
}
|
||||
|
||||
@@ -421,8 +547,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load jQuery custom code
|
||||
*/
|
||||
function load_nav_manus_scripts() {
|
||||
wp_register_script( 'um_admin_nav_manus', $this->js_url . 'um-admin-nav-menu.js', array('jquery','wp-util'), ultimatemember_version, true );
|
||||
public function load_nav_manus_scripts() {
|
||||
wp_register_script( 'um_admin_nav_manus', $this->js_url . 'um-admin-nav-menu.js', array( 'jquery', 'wp-util' ), ultimatemember_version, true );
|
||||
wp_enqueue_script( 'um_admin_nav_manus' );
|
||||
}
|
||||
|
||||
@@ -430,8 +556,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load AJAX
|
||||
*/
|
||||
function load_ajax_js() {
|
||||
wp_register_script( 'um_admin_ajax', $this->js_url . 'um-admin-ajax.js', array('jquery','wp-util'), ultimatemember_version, true );
|
||||
public function load_ajax_js() {
|
||||
wp_register_script( 'um_admin_ajax', $this->js_url . 'um-admin-ajax.js', array( 'jquery', 'wp-util' ), ultimatemember_version, true );
|
||||
wp_enqueue_script( 'um_admin_ajax' );
|
||||
}
|
||||
|
||||
@@ -439,7 +565,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Load Gutenberg scripts
|
||||
*/
|
||||
function load_gutenberg_js() {
|
||||
public function load_gutenberg_js() {
|
||||
//disable Gutenberg scripts to avoid the conflicts
|
||||
$disable_script = apply_filters( 'um_disable_blocks_script', false );
|
||||
if ( $disable_script ) {
|
||||
@@ -455,12 +581,12 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
wp_set_script_translations( 'um_block_js', 'ultimate-member' );
|
||||
|
||||
$restrict_options = array();
|
||||
$roles = UM()->roles()->get_roles( false );
|
||||
$roles = UM()->roles()->get_roles( false );
|
||||
if ( ! empty( $roles ) ) {
|
||||
foreach ( $roles as $role_key => $title ) {
|
||||
$restrict_options[] = array(
|
||||
'label' => $title,
|
||||
'value' => $role_key
|
||||
'value' => $role_key,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -472,71 +598,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load Gutenberg blocks js
|
||||
*/
|
||||
function load_gutenberg_shortcode_blocks() {
|
||||
if ( ! function_exists( 'register_block_type' ) ) {
|
||||
// Gutenberg is not active.
|
||||
return;
|
||||
}
|
||||
|
||||
//disable Gutenberg scripts to avoid the conflicts
|
||||
$disable_script = apply_filters( 'um_disable_blocks_script', false );
|
||||
if ( $disable_script ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$enable_blocks = UM()->options()->get( 'enable_blocks' );
|
||||
if ( empty( $enable_blocks ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
wp_register_script( 'um-blocks-shortcode-js', $this->js_url . 'um-admin-blocks-shortcode.js', array( 'wp-i18n', 'wp-blocks', 'wp-components', /*'rich-text'*/ ), ultimatemember_version, true );
|
||||
wp_set_script_translations( 'um-blocks-shortcode-js', 'ultimate-member' );
|
||||
wp_enqueue_script( 'um-blocks-shortcode-js' );
|
||||
|
||||
$account_settings = array(
|
||||
'password' => array(
|
||||
'label' => __( 'Password', 'ultimate-member' ),
|
||||
'enabled' => UM()->options()->get( 'account_tab_password' ),
|
||||
),
|
||||
'privacy' => array(
|
||||
'label' => __( 'Privacy', 'ultimate-member' ),
|
||||
'enabled' => UM()->options()->get( 'account_tab_privacy' ),
|
||||
),
|
||||
'notifications' => array(
|
||||
'label' => __( 'Notifications', 'ultimate-member' ),
|
||||
'enabled' => UM()->options()->get( 'account_tab_notifications' ),
|
||||
),
|
||||
'delete' => array(
|
||||
'label' => __( 'Delete', 'ultimate-member' ),
|
||||
'enabled' => UM()->options()->get( 'account_tab_delete' ),
|
||||
),
|
||||
);
|
||||
wp_localize_script( 'um-blocks-shortcode-js', 'um_account_settings', $account_settings );
|
||||
|
||||
/**
|
||||
* create gutenberg blocks
|
||||
*/
|
||||
register_block_type( 'um-block/um-forms', array(
|
||||
'editor_script' => 'um-blocks-shortcode-js',
|
||||
) );
|
||||
|
||||
register_block_type( 'um-block/um-member-directories', array(
|
||||
'editor_script' => 'um-blocks-shortcode-js',
|
||||
) );
|
||||
|
||||
register_block_type( 'um-block/um-password-reset', array(
|
||||
'editor_script' => 'um-blocks-shortcode-js',
|
||||
) );
|
||||
|
||||
register_block_type( 'um-block/um-account', array(
|
||||
'editor_script' => 'um-blocks-shortcode-js',
|
||||
) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add Gutenberg category for UM shortcodes
|
||||
*
|
||||
@@ -545,27 +606,27 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function blocks_category( $categories, $context ) {
|
||||
$enable_blocks = UM()->options()->get( 'enable_blocks' );
|
||||
if ( empty( $enable_blocks ) ) {
|
||||
return $categories;
|
||||
}
|
||||
public function blocks_category( $categories, $context ) {
|
||||
$enable_blocks = UM()->options()->get( 'enable_blocks' );
|
||||
if ( empty( $enable_blocks ) ) {
|
||||
return $categories;
|
||||
}
|
||||
|
||||
return array_merge(
|
||||
$categories,
|
||||
array(
|
||||
array(
|
||||
'slug' => 'um-blocks',
|
||||
'title' => __( 'Ultimate Member Blocks', 'ultimate-member' ),
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
return array_merge(
|
||||
$categories,
|
||||
array(
|
||||
array(
|
||||
'slug' => 'um-blocks',
|
||||
'title' => __( 'Ultimate Member Blocks', 'ultimate-member' ),
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load localize scripts
|
||||
*/
|
||||
function load_localize_scripts() {
|
||||
public function load_localize_scripts() {
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
@@ -587,10 +648,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$localize_data = apply_filters( 'um_admin_enqueue_localize_data', array(
|
||||
'nonce' => wp_create_nonce( "um-admin-nonce" )
|
||||
)
|
||||
);
|
||||
$localize_data = apply_filters( 'um_admin_enqueue_localize_data', array( 'nonce' => wp_create_nonce( 'um-admin-nonce' ) ) );
|
||||
|
||||
wp_localize_script( 'um_admin_global', 'um_admin_scripts', $localize_data );
|
||||
}
|
||||
@@ -599,7 +657,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Enqueue scripts and styles
|
||||
*/
|
||||
function admin_enqueue_scripts() {
|
||||
public function admin_enqueue_scripts() {
|
||||
if ( UM()->admin()->is_um_screen() ) {
|
||||
|
||||
/*if ( get_post_type() != 'shop_order' ) {
|
||||
@@ -628,7 +686,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
$this->load_fonticons();
|
||||
$this->load_localize_scripts();
|
||||
|
||||
|
||||
//scripts for frontend preview
|
||||
UM()->enqueue()->load_imagecrop();
|
||||
UM()->enqueue()->load_css();
|
||||
@@ -646,7 +703,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
wp_register_style( 'um_admin_rtl', $this->css_url . 'um-admin-rtl.css', array(), ultimatemember_version );
|
||||
wp_enqueue_style( 'um_admin_rtl' );
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
$this->load_global_scripts();
|
||||
@@ -659,7 +715,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
if ( version_compare( $wp_version, '5.0', '>=' ) ) {
|
||||
if ( isset( $current_screen ) && $current_screen->is_block_editor() ) {
|
||||
$this->load_gutenberg_js();
|
||||
$this->load_gutenberg_shortcode_blocks();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -668,7 +723,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
/**
|
||||
* Print editor scripts if they are not printed by default
|
||||
*/
|
||||
function admin_footer_scripts() {
|
||||
public function admin_footer_scripts() {
|
||||
/**
|
||||
* @var $class \_WP_Editors
|
||||
*/
|
||||
|
||||
@@ -123,10 +123,19 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
|
||||
'href' => array(),
|
||||
'title' => array(),
|
||||
'target' => array(),
|
||||
'class' => array(),
|
||||
),
|
||||
'i' => array(
|
||||
'class' => array(),
|
||||
),
|
||||
'span' => array(
|
||||
'class' => array(),
|
||||
),
|
||||
'br' => array(),
|
||||
'em' => array(),
|
||||
'strong' => array(),
|
||||
'strong' => array(
|
||||
'style' => array()
|
||||
),
|
||||
);
|
||||
$data['value'] = wp_kses( $data['value'], $arr_kses );
|
||||
}
|
||||
|
||||
@@ -34,18 +34,38 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
|
||||
private $custom_nonce_added = false;
|
||||
|
||||
|
||||
var $init_icon = false;
|
||||
public $init_icon = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $in_edit = false;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $edit_mode_value = null;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $edit_array = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $postmeta = array();
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $is_loaded = false;
|
||||
|
||||
/**
|
||||
* Admin_Metabox constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
$this->in_edit = false;
|
||||
$this->edit_mode_value = null;
|
||||
$this->edit_array = [];
|
||||
|
||||
add_action( 'admin_head', array( &$this, 'admin_head' ), 9);
|
||||
public function __construct() {
|
||||
add_action( 'admin_head', array( &$this, 'admin_head' ), 9 );
|
||||
add_action( 'admin_footer', array( &$this, 'load_modal_content' ), 9 );
|
||||
|
||||
add_action( 'load-post.php', array( &$this, 'add_metabox' ), 9 );
|
||||
|
||||
@@ -52,6 +52,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
|
||||
|
||||
$this->extensions_page();
|
||||
|
||||
$this->template_version();
|
||||
|
||||
// removed for now to avoid the bad reviews
|
||||
//$this->reviews_notice();
|
||||
|
||||
@@ -714,6 +716,37 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check Templates Versions notice
|
||||
*/
|
||||
public function template_version() {
|
||||
if ( true === (bool) get_option( 'um_override_templates_outdated' ) ) {
|
||||
$link = admin_url( 'admin.php?page=um_options&tab=override_templates' );
|
||||
ob_start();
|
||||
?>
|
||||
|
||||
<p>
|
||||
<?php
|
||||
// translators: %s override templates page link.
|
||||
echo wp_kses( sprintf( __( 'Your templates are out of date. Please visit <a href="%s">override templates status page</a> and update templates.', 'ultimate-member' ), $link ), UM()->get_allowed_html( 'admin_notice' ) );
|
||||
?>
|
||||
</p>
|
||||
|
||||
<?php
|
||||
$message = ob_get_clean();
|
||||
UM()->admin()->notices()->add_notice(
|
||||
'um_override_templates_notice',
|
||||
array(
|
||||
'class' => 'error',
|
||||
'message' => $message,
|
||||
'dismissible' => false,
|
||||
),
|
||||
10
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function dismiss_notice() {
|
||||
UM()->admin()->check_ajax_nonce();
|
||||
|
||||
|
||||
@@ -64,10 +64,12 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
|
||||
add_filter( 'um_settings_section_install_info__content', array( $this, 'settings_install_info_tab' ), 10, 2 );
|
||||
|
||||
//custom content for override templates tab
|
||||
add_action( 'plugins_loaded', array( $this, 'um_check_template_version' ), 10 );
|
||||
add_filter( 'um_settings_section_override_templates__content', array( $this, 'settings_override_templates_tab' ), 10, 2 );
|
||||
|
||||
add_filter( 'um_settings_structure', array( $this, 'sorting_licenses_options' ), 9999, 1 );
|
||||
|
||||
|
||||
//save handlers
|
||||
add_action( 'admin_init', array( $this, 'save_settings_handler' ), 10 );
|
||||
|
||||
@@ -75,10 +77,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
add_action( 'um_settings_before_save', array( $this, 'check_permalinks_changes' ) );
|
||||
add_action( 'um_settings_save', array( $this, 'on_settings_save' ) );
|
||||
|
||||
|
||||
add_filter( 'um_change_settings_before_save', array( $this, 'save_email_templates' ) );
|
||||
|
||||
|
||||
//save licenses options
|
||||
add_action( 'um_settings_before_save', array( $this, 'before_licenses_save' ) );
|
||||
add_action( 'um_settings_save', array( $this, 'licenses_save' ) );
|
||||
@@ -422,6 +422,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
'id' => 'profile_menu_icons',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Enable menu icons in desktop view', 'ultimate-member' ),
|
||||
'description' => __( '"Desktop view" means the profile block\'s width lower than 800px', 'ultimate-member' ),
|
||||
'conditional' => array( 'profile_menu', '=', 1 ),
|
||||
),
|
||||
)
|
||||
@@ -440,7 +441,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
$duplicates = array();
|
||||
$taxonomies_options = array();
|
||||
$exclude_taxonomies = UM()->excluded_taxonomies();
|
||||
$all_taxonomies = get_taxonomies( array( 'public' => true ), 'objects' );
|
||||
$all_taxonomies = get_taxonomies( array( 'public' => true, 'show_ui' => true ), 'objects' );
|
||||
foreach ( $all_taxonomies as $key => $taxonomy ) {
|
||||
if ( in_array( $key, $exclude_taxonomies, true ) ) {
|
||||
continue;
|
||||
@@ -1839,6 +1840,14 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
),
|
||||
),
|
||||
),
|
||||
'override_templates' => array(
|
||||
'title' => __( 'Override templates', 'ultimate-member' ),
|
||||
'fields' => array(
|
||||
array(
|
||||
'type' => 'override_templates',
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1966,7 +1975,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
*/
|
||||
do_action( "um_settings_page_before_" . $current_tab . "_" . $current_subtab . "_content" );
|
||||
|
||||
if ( in_array( $current_tab, apply_filters('um_settings_custom_tabs', array( 'licenses', 'install_info' ) ) ) || in_array( $current_subtab, apply_filters( 'um_settings_custom_subtabs', array(), $current_tab ) ) ) {
|
||||
if ( in_array( $current_tab, apply_filters('um_settings_custom_tabs', array( 'licenses', 'install_info', 'override_templates' ) ) ) || in_array( $current_subtab, apply_filters( 'um_settings_custom_subtabs', array(), $current_tab ) ) ) {
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
@@ -3007,6 +3016,215 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
return $section;
|
||||
}
|
||||
|
||||
/**
|
||||
* Periodically checking the versions of templates.
|
||||
*
|
||||
* @since 2.6.1
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function um_check_template_version() {
|
||||
$um_check_version = get_transient( 'um_check_template_versions' );
|
||||
if ( false === $um_check_version ) {
|
||||
$this->get_override_templates();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* HTML for Settings > Override Templates tab.
|
||||
* @return void
|
||||
*/
|
||||
public function settings_override_templates_tab() {
|
||||
$um_check_version = get_transient( 'um_check_template_versions' );
|
||||
?>
|
||||
|
||||
<p class="description" style="margin: 20px 0 0 0;">
|
||||
<a href="<?php echo esc_url( add_query_arg( 'um_adm_action', 'check_templates_version' ) ); ?>" class="button" style="margin-right: 10px;">
|
||||
<?php esc_html_e( 'Re-check templates', 'ultimate-member' ); ?>
|
||||
</a>
|
||||
<?php
|
||||
if ( false !== $um_check_version ) {
|
||||
// translators: %s: Last checking templates time.
|
||||
echo esc_html( sprintf( __( 'Last update: %s. You could re-check changes manually.', 'ultimate-member' ), wp_date( get_option( 'date_format', 'Y-m-d' ) . ' ' . get_option( 'time_format', 'H:i:s' ), $um_check_version ) ) );
|
||||
} else {
|
||||
esc_html_e( 'Templates haven\'t check yet. You could check changes manually.', 'ultimate-member' );
|
||||
}
|
||||
?>
|
||||
</p>
|
||||
<p class="description" style="margin: 20px 0 0 0;">
|
||||
<?php
|
||||
/** @noinspection HtmlUnknownTarget */
|
||||
// translators: %s: Link to the docs article.
|
||||
echo wp_kses( sprintf( __( 'You may get more details about overriding templates <a href="%s" target="_blank">here</a>.', 'ultimate-member' ), 'https://docs.ultimatemember.com/article/1516-templates-map' ), UM()->get_allowed_html( 'admin_notice' ) );
|
||||
?>
|
||||
</p>
|
||||
|
||||
<?php
|
||||
include_once um_path . 'includes/admin/core/list-tables/version-template-list-table.php';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $get_list boolean
|
||||
*
|
||||
* @return array|void
|
||||
*/
|
||||
public function get_override_templates( $get_list = false ) {
|
||||
$outdated_files = array();
|
||||
$scan_files['um'] = $this->scan_template_files( um_path . '/templates/' );
|
||||
/**
|
||||
* Filters an array of the template files for scanning versions.
|
||||
*
|
||||
* @since 2.6.1
|
||||
* @hook um_override_templates_scan_files
|
||||
*
|
||||
* @param {array} $scan_files Template files for scanning versions.
|
||||
*
|
||||
* @return {array} Template files for scanning versions.
|
||||
*/
|
||||
$scan_files = apply_filters( 'um_override_templates_scan_files', $scan_files );
|
||||
$out_date = false;
|
||||
|
||||
set_transient( 'um_check_template_versions', time(), 12 * HOUR_IN_SECONDS );
|
||||
|
||||
foreach ( $scan_files as $key => $files ) {
|
||||
foreach ( $files as $file ) {
|
||||
if ( ! str_contains( $file, 'email/' ) ) {
|
||||
$located = array();
|
||||
/**
|
||||
* Filters an array of the template files for scanning versions based on $key.
|
||||
*
|
||||
* Note: $key - means um or extension key.
|
||||
*
|
||||
* @since 2.6.1
|
||||
* @hook um_override_templates_get_template_path__{$key}
|
||||
*
|
||||
* @param {array} $located Template file paths for scanning versions.
|
||||
* @param {string} $file Template file name.
|
||||
*
|
||||
* @return {array} Template file paths for scanning versions.
|
||||
*/
|
||||
$located = apply_filters( "um_override_templates_get_template_path__{$key}", $located, $file );
|
||||
|
||||
if ( ! empty( $located ) ) {
|
||||
$theme_file = $located['theme'];
|
||||
} elseif ( file_exists( get_stylesheet_directory() . '/ultimate-member/templates/' . $file ) ) {
|
||||
$theme_file = get_stylesheet_directory() . '/ultimate-member/templates/' . $file;
|
||||
} else {
|
||||
$theme_file = false;
|
||||
}
|
||||
|
||||
if ( ! empty( $theme_file ) ) {
|
||||
$core_file = $file;
|
||||
|
||||
if ( ! empty( $located ) ) {
|
||||
$core_path = $located['core'];
|
||||
$core_file_path = stristr( $core_path, 'wp-content' );
|
||||
} else {
|
||||
$core_path = um_path . '/templates/' . $core_file;
|
||||
$core_file_path = stristr( um_path . 'templates/' . $core_file, 'wp-content' );
|
||||
}
|
||||
$core_version = $this->get_file_version( $core_path );
|
||||
$theme_version = $this->get_file_version( $theme_file );
|
||||
|
||||
$status = esc_html__( 'Theme version up to date', 'ultimate-member' );
|
||||
$status_code = 1;
|
||||
if ( version_compare( $theme_version, $core_version, '<' ) ) {
|
||||
$status = esc_html__( 'Theme version is out of date', 'ultimate-member' );
|
||||
$status_code = 0;
|
||||
}
|
||||
if ( '' === $theme_version ) {
|
||||
$status = esc_html__( 'Theme version is empty', 'ultimate-member' );
|
||||
$status_code = 0;
|
||||
}
|
||||
if ( 0 === $status_code ) {
|
||||
$out_date = true;
|
||||
update_option( 'um_override_templates_outdated', true );
|
||||
}
|
||||
$outdated_files[] = array(
|
||||
'core_version' => $core_version,
|
||||
'theme_version' => $theme_version,
|
||||
'core_file' => $core_file_path,
|
||||
'theme_file' => stristr( $theme_file, 'wp-content' ),
|
||||
'status' => $status,
|
||||
'status_code' => $status_code,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( false === $out_date ) {
|
||||
delete_option( 'um_override_templates_outdated' );
|
||||
}
|
||||
update_option( 'um_template_statuses', $outdated_files );
|
||||
if ( true === $get_list ) {
|
||||
return $outdated_files;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Scan the template files.
|
||||
*
|
||||
* @param string $template_path Path to the template directory.
|
||||
* @return array
|
||||
*/
|
||||
public static function scan_template_files( $template_path ) {
|
||||
$files = @scandir( $template_path ); // @codingStandardsIgnoreLine.
|
||||
$result = array();
|
||||
|
||||
if ( ! empty( $files ) ) {
|
||||
|
||||
foreach ( $files as $value ) {
|
||||
|
||||
if ( ! in_array( $value, array( '.', '..' ), true ) ) {
|
||||
|
||||
if ( is_dir( $template_path . DIRECTORY_SEPARATOR . $value ) ) {
|
||||
$sub_files = self::scan_template_files( $template_path . DIRECTORY_SEPARATOR . $value );
|
||||
foreach ( $sub_files as $sub_file ) {
|
||||
$result[] = $value . DIRECTORY_SEPARATOR . $sub_file;
|
||||
}
|
||||
} else {
|
||||
$result[] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $file string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_file_version( $file ) {
|
||||
// Avoid notices if file does not exist.
|
||||
if ( ! file_exists( $file ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// We don't need to write to the file, so just open for reading.
|
||||
$fp = fopen( $file, 'r' ); // @codingStandardsIgnoreLine.
|
||||
|
||||
// Pull only the first 8kiB of the file in.
|
||||
$file_data = fread( $fp, 8192 ); // @codingStandardsIgnoreLine.
|
||||
|
||||
// PHP will close a file handle, but we are good citizens.
|
||||
fclose( $fp ); // @codingStandardsIgnoreLine.
|
||||
|
||||
// Make sure we catch CR-only line endings.
|
||||
$file_data = str_replace( "\r", "\n", $file_data );
|
||||
$version = '';
|
||||
|
||||
if ( preg_match( '/^[ \t\/*#@]*' . preg_quote( '@version', '/' ) . '(.*)$/mi', $file_data, $match ) && $match[1] ) {
|
||||
$version = _cleanup_header_comment( $match[1] );
|
||||
}
|
||||
|
||||
return $version;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $html
|
||||
@@ -3237,18 +3455,22 @@ Blacklist Words: <?php echo count( explode("\n",UM()->options()->get('bl
|
||||
|
||||
--- UM Email Configurations ---
|
||||
|
||||
Mail appears from: <?php $mail_from = UM()->options()->get('mail_from'); if( ! empty( $mail_from ) ){echo UM()->options()->get('mail_from');}else{echo "-";}; echo "\n";?>
|
||||
Mail appears from address: <?php $mail_from_addr = UM()->options()->get('mail_from_addr'); if( ! empty( $mail_from_addr ) ){echo UM()->options()->get('mail_from_addr');}else{echo "-";}; echo "\n";?>
|
||||
Use HTML for E-mails: <?php echo $this->info_value( UM()->options()->get('email_html'), 'yesno', true ); ?>
|
||||
Account Welcome Email: <?php echo $this->info_value( UM()->options()->get('welcome_email_on'), 'yesno', true ); ?>
|
||||
Account Activation Email: <?php echo $this->info_value( UM()->options()->get('checkmail_email_on'), 'yesno', true ); ?>
|
||||
Pending Review Email: <?php echo $this->info_value( UM()->options()->get('pending_email_on'), 'yesno', true ); ?>
|
||||
Account Approved Email: <?php echo $this->info_value( UM()->options()->get('approved_email_on'), 'yesno', true ); ?>
|
||||
Account Rejected Email: <?php echo $this->info_value( UM()->options()->get('rejected_email_on'), 'yesno', true ); ?>
|
||||
Account Deactivated Email: <?php echo $this->info_value( UM()->options()->get('inactive_email_on'), 'yesno', true ); ?>
|
||||
Account Deleted Email: <?php echo $this->info_value( UM()->options()->get('deletion_email_on'), 'yesno', true ); ?>
|
||||
Password Reset Email: <?php echo $this->info_value( UM()->options()->get('resetpw_email_on'), 'yesno', true ); ?>
|
||||
Password Changed Email: <?php echo $this->info_value( UM()->options()->get('changedpw_email_on'), 'yesno', true ); ?>
|
||||
Mail appears from: <?php $mail_from = UM()->options()->get( 'mail_from' ); if ( ! empty( $mail_from ) ){ echo UM()->options()->get( 'mail_from' ); } else { echo "-"; }; echo "\n"; ?>
|
||||
Mail appears from address: <?php $mail_from_addr = UM()->options()->get( 'mail_from_addr' ); if ( ! empty( $mail_from_addr ) ) { echo UM()->options()->get( 'mail_from_addr' ); } else { echo "-"; }; echo "\n"; ?>
|
||||
Use HTML for E-mails: <?php echo $this->info_value( UM()->options()->get( 'email_html' ), 'yesno', true ); ?>
|
||||
Account Welcome Email: <?php echo $this->info_value( UM()->options()->get( 'welcome_email_on' ), 'yesno', true ); ?>
|
||||
Account Activation Email: <?php echo $this->info_value( UM()->options()->get( 'checkmail_email_on' ), 'yesno', true ); ?>
|
||||
Pending Review Email: <?php echo $this->info_value( UM()->options()->get( 'pending_email_on' ), 'yesno', true ); ?>
|
||||
Account Approved Email: <?php echo $this->info_value( UM()->options()->get( 'approved_email_on' ), 'yesno', true ); ?>
|
||||
Account Rejected Email: <?php echo $this->info_value( UM()->options()->get( 'rejected_email_on' ), 'yesno', true ); ?>
|
||||
Account Deactivated Email: <?php echo $this->info_value( UM()->options()->get( 'inactive_email_on' ), 'yesno', true ); ?>
|
||||
Account Deleted Email: <?php echo $this->info_value( UM()->options()->get( 'deletion_email_on' ), 'yesno', true ); ?>
|
||||
Password Reset Email: <?php echo $this->info_value( UM()->options()->get( 'resetpw_email_on' ), 'yesno', true ); ?>
|
||||
Password Changed Email: <?php echo $this->info_value( UM()->options()->get( 'changedpw_email_on' ), 'yesno', true ); ?>
|
||||
Account Updated Email: <?php echo $this->info_value( UM()->options()->get( 'changedaccount_email_on' ), 'yesno', true ); ?>
|
||||
New User Notification: <?php echo $this->info_value( UM()->options()->get( 'notification_new_user_on' ), 'yesno', true ); ?>
|
||||
Account Needs Review Notification: <?php echo $this->info_value( UM()->options()->get( 'notification_review_on' ), 'yesno', true ); ?>
|
||||
Account Deletion Notification: <?php echo $this->info_value( UM()->options()->get( 'notification_deletion_on' ), 'yesno', true ); ?>
|
||||
|
||||
|
||||
--- UM Total Users ---
|
||||
|
||||
@@ -14,14 +14,15 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
|
||||
*/
|
||||
class Admin_Users {
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $custom_role = 'um_role';
|
||||
|
||||
/**
|
||||
* Admin_Users constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
|
||||
$this->custom_role = 'um_role';
|
||||
|
||||
public function __construct() {
|
||||
add_action( 'restrict_manage_users', array( &$this, 'restrict_manage_users' ) );
|
||||
|
||||
add_filter( 'user_row_actions', array( &$this, 'user_row_actions' ), 10, 2 );
|
||||
@@ -273,7 +274,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
|
||||
|
||||
$submitted = get_user_meta( $user_id, 'submitted', true );
|
||||
if ( ! empty( $submitted ) ) {
|
||||
$actions['view_info'] = '<a href="javascript:void(0);" data-modal="UM_preview_registration" data-modal-size="smaller"
|
||||
$actions['view_info'] = '<a href="javascript:void(0);" data-modal="UM_preview_registration" data-modal-size="smaller"
|
||||
data-dynamic-content="um_admin_review_registration" data-arg1="' . esc_attr( $user_id ) . '" data-arg2="edit_registration">' . __( 'Info', 'ultimate-member' ) . '</a>';
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,215 @@
|
||||
<?php
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Class UM_Versions_List_Table
|
||||
*/
|
||||
class UM_Versions_List_Table extends WP_List_Table {
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $no_items_message = '';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $columns = array();
|
||||
|
||||
/**
|
||||
* UM_Versions_List_Table constructor.
|
||||
*
|
||||
* @param array $args
|
||||
*/
|
||||
public function __construct( $args = array() ) {
|
||||
$args = wp_parse_args(
|
||||
$args,
|
||||
array(
|
||||
'singular' => __( 'item', 'ultimate-member' ),
|
||||
'plural' => __( 'items', 'ultimate-member' ),
|
||||
'ajax' => false,
|
||||
)
|
||||
);
|
||||
|
||||
$this->no_items_message = $args['plural'] . ' ' . __( 'not found.', 'ultimate-member' );
|
||||
|
||||
parent::__construct( $args );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param callable $name
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function __call( $name, $arguments ) {
|
||||
return call_user_func_array( array( $this, $name ), $arguments );
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function prepare_items() {
|
||||
$screen = $this->screen;
|
||||
|
||||
$columns = $this->get_columns();
|
||||
$sortable = $this->get_sortable_columns();
|
||||
$this->_column_headers = array( $columns, array(), $sortable );
|
||||
|
||||
$templates = get_option( 'um_template_statuses', array() );
|
||||
$templates = is_array( $templates ) ? $templates : array();
|
||||
|
||||
@uasort(
|
||||
$templates,
|
||||
function ( $a, $b ) {
|
||||
if ( strtolower( $a['status_code'] ) === strtolower( $b['status_code'] ) ) {
|
||||
return 0;
|
||||
}
|
||||
return ( strtolower( $a['status_code'] ) < strtolower( $b['status_code'] ) ) ? -1 : 1;
|
||||
}
|
||||
);
|
||||
|
||||
$per_page = $this->get_items_per_page( str_replace( '-', '_', $screen->id . '_per_page' ), 999 );
|
||||
$paged = $this->get_pagenum();
|
||||
|
||||
$this->items = array_slice( $templates, ( $paged - 1 ) * $per_page, $per_page );
|
||||
|
||||
$this->set_pagination_args(
|
||||
array(
|
||||
'total_items' => count( $templates ),
|
||||
'per_page' => $per_page,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object $item
|
||||
* @param string $column_name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_default( $item, $column_name ) {
|
||||
if ( isset( $item[ $column_name ] ) ) {
|
||||
return $item[ $column_name ];
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function no_items() {
|
||||
echo $this->no_items_message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $args
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function set_columns( $args = array() ) {
|
||||
$this->columns = $args;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function get_columns() {
|
||||
return $this->columns;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $item
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_template( $item ) {
|
||||
$output = esc_html__( 'Core path - ', 'ultimate-member' );
|
||||
$output .= $item['core_file'] . '<br>';
|
||||
$output .= esc_html__( 'Theme path - ', 'ultimate-member' );
|
||||
$output .= $item['theme_file'];
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $item
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_core_version( $item ) {
|
||||
return $item['core_version'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $item
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_theme_version( $item ) {
|
||||
return $item['theme_version'] ? $item['theme_version'] : '-';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $item
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function column_status( $item ) {
|
||||
$icon = 1 === $item['status_code'] ? 'um-notification-is-active dashicons-yes' : 'dashicons-no-alt';
|
||||
return $item['status'] . ' <span class="dashicons um-notification-status ' . esc_attr( $icon ) . '"></span>';
|
||||
}
|
||||
}
|
||||
|
||||
$list_table = new UM_Versions_List_Table(
|
||||
array(
|
||||
'singular' => __( 'Template', 'ultimate-member' ),
|
||||
'plural' => __( 'Templates', 'ultimate-member' ),
|
||||
'ajax' => false,
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type filter
|
||||
* @title um_versions_templates_columns
|
||||
* @description Version Templates List Table columns
|
||||
* @input_vars
|
||||
* [{"var":"$columns","type":"array","desc":"Columns"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage add_filter( 'um_versions_templates_columns', 'function_name', 10, 1 );
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_versions_templates_columns', 'um_versions_templates_columns', 10, 1 );
|
||||
* function um_versions_templates_columns( $columns ) {
|
||||
* // your code here
|
||||
* $columns['my-custom-column'] = 'My Custom Column';
|
||||
* return $columns;
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$columns = apply_filters(
|
||||
'um_versions_templates_columns',
|
||||
array(
|
||||
'template' => __( 'Template', 'ultimate-member' ),
|
||||
'core_version' => __( 'Core version', 'ultimate-member' ),
|
||||
'theme_version' => __( 'Theme version', 'ultimate-member' ),
|
||||
'status' => __( 'Status', 'ultimate-member' ),
|
||||
)
|
||||
);
|
||||
|
||||
$list_table->set_columns( $columns );
|
||||
$list_table->prepare_items();
|
||||
?>
|
||||
|
||||
<form action="" method="get" name="um-settings-template-versions" id="um-settings-template-versions">
|
||||
<input type="hidden" name="page" value="um_options" />
|
||||
<input type="hidden" name="tab" value="override_templates" />
|
||||
<?php $list_table->display(); ?>
|
||||
</form>
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"apiVersion": 2,
|
||||
"name": "um-block/um-account",
|
||||
"title": "Account",
|
||||
"description": "Displaying the account page of the current user",
|
||||
"icon": "id",
|
||||
"category": "um-blocks",
|
||||
"attributes": {
|
||||
"tab": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"editorScript": "file:./build/index.js",
|
||||
"textdomain": "ultimate-member"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-server-side-render'), 'version' => '98a99fd44cd9deb95734');
|
||||
@@ -0,0 +1 @@
|
||||
(()=>{"use strict";var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var a in n)t.o(n,a)&&!t.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:n[a]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)};const e=window.wp.element,n=window.wp.blocks,a=window.wp.serverSideRender;var o=t.n(a);const u=window.wp.blockEditor,r=window.wp.components;(0,n.registerBlockType)("um-block/um-account",{edit:function(t){let{tab:n,setAttributes:a}=t.attributes;const c=(0,u.useBlockProps)();return(0,e.createElement)("div",c,(0,e.createElement)(o(),{block:"um-block/um-account",attributes:t.attributes}),(0,e.createElement)(u.InspectorControls,null,(0,e.createElement)(r.PanelBody,{title:wp.i18n.__("Account Tab","ultimate-member")},(0,e.createElement)(r.SelectControl,{label:wp.i18n.__("Select Tab","ultimate-member"),className:"um_select_account_tab",value:n,options:function(){var t=[];for(var e in t.push({label:wp.i18n.__("All","ultimate-member"),value:"all"}),um_account_settings)um_account_settings.hasOwnProperty(e)&&um_account_settings[e].enabled&&t.push({label:um_account_settings[e].label,value:e});return t}(),style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:e=>{t.setAttributes({tab:e}),function(e){var n="[ultimatemember_account";"all"!==e&&(n=n+' tab="'+e+'"'),n+="]",t.setAttributes({content:n})}(e)}}))))},save:function(t){return null}}),jQuery(window).on("load",(function(t){new MutationObserver((function(t){t.forEach((function(t){jQuery(t.addedNodes).find(".um.um-account").each((function(){var t=jQuery(this).find(".um-account-main").attr("data-current_tab");t&&(jQuery(this).find('.um-account-tab[data-tab="'+t+'"]').show(),jQuery(this).find(".um-account-tab:not(:visible)").find("input, select, textarea").not(":disabled").addClass("um_account_inactive").prop("disabled",!0).attr("disabled",!0),um_responsive(),um_modal_responsive())}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
|
||||
@@ -0,0 +1,88 @@
|
||||
import { registerBlockType } from '@wordpress/blocks';
|
||||
import ServerSideRender from '@wordpress/server-side-render';
|
||||
import {InspectorControls, useBlockProps} from '@wordpress/block-editor';
|
||||
import {PanelBody, SelectControl} from "@wordpress/components";
|
||||
|
||||
registerBlockType('um-block/um-account', {
|
||||
edit: function (props) {
|
||||
let { tab, setAttributes } = props.attributes;
|
||||
const blockProps = useBlockProps();
|
||||
|
||||
function get_options() {
|
||||
var option = [];
|
||||
|
||||
option.push( { label: wp.i18n.__( 'All', 'ultimate-member' ), value: 'all' } );
|
||||
|
||||
for ( var key in um_account_settings ) {
|
||||
if ( um_account_settings.hasOwnProperty( key ) && um_account_settings[ key ]['enabled'] ) {
|
||||
option.push(
|
||||
{
|
||||
label: um_account_settings[ key ]['label'],
|
||||
value: key
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return option;
|
||||
}
|
||||
|
||||
function umShortcode( value ) {
|
||||
|
||||
var shortcode = '[ultimatemember_account';
|
||||
|
||||
if ( value !== 'all' ) {
|
||||
shortcode = shortcode + ' tab="' + value + '"';
|
||||
}
|
||||
|
||||
shortcode = shortcode + ']';
|
||||
|
||||
props.setAttributes({ content: shortcode });
|
||||
}
|
||||
|
||||
return (
|
||||
<div {...blockProps}>
|
||||
<ServerSideRender block="um-block/um-account" attributes={props.attributes} />
|
||||
<InspectorControls>
|
||||
<PanelBody title={wp.i18n.__('Account Tab', 'ultimate-member')}>
|
||||
<SelectControl
|
||||
label={wp.i18n.__('Select Tab', 'ultimate-member')}
|
||||
className="um_select_account_tab"
|
||||
value={tab}
|
||||
options={get_options()}
|
||||
style={{ height: '35px', lineHeight: '20px', padding: '0 7px' }}
|
||||
onChange={(value) => {
|
||||
props.setAttributes({ tab: value });
|
||||
umShortcode(value);
|
||||
}}
|
||||
/>
|
||||
</PanelBody>
|
||||
</InspectorControls>
|
||||
</div>
|
||||
);
|
||||
|
||||
},
|
||||
save: function save(props) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
jQuery(window).on( 'load', function($) {
|
||||
var observer = new MutationObserver(function(mutations) {
|
||||
mutations.forEach(function(mutation) {
|
||||
|
||||
jQuery(mutation.addedNodes).find('.um.um-account').each(function() {
|
||||
var current_tab = jQuery(this).find('.um-account-main').attr('data-current_tab');
|
||||
|
||||
if ( current_tab ) {
|
||||
jQuery(this).find('.um-account-tab[data-tab="'+current_tab+'"]').show();
|
||||
jQuery(this).find('.um-account-tab:not(:visible)').find( 'input, select, textarea' ).not( ':disabled' ).addClass('um_account_inactive').prop( 'disabled', true ).attr( 'disabled', true );
|
||||
um_responsive();
|
||||
um_modal_responsive();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
|
||||
});
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"apiVersion": 2,
|
||||
"name": "um-block/um-forms",
|
||||
"title": "Form",
|
||||
"description": "Choose display form",
|
||||
"icon": "forms",
|
||||
"category": "um-blocks",
|
||||
"attributes": {
|
||||
"form_id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"editorScript": "file:./build/index.js",
|
||||
"textdomain": "ultimate-member"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-server-side-render'), 'version' => '9dc130f3a0af7db5d679');
|
||||
@@ -0,0 +1 @@
|
||||
(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.element,r=window.wp.data,n=window.wp.components,l=window.wp.blockEditor,o=window.wp.serverSideRender;var i=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-forms",{edit:function(e){let{form_id:o,setAttributes:a}=e.attributes;const s=(0,l.useBlockProps)(),m=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_form",{per_page:-1,_fields:["id","title"]})));if(!m)return(0,t.createElement)("p",null,(0,t.createElement)(n.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===m.length)return"No forms found.";let c=[{id:"",title:""}].concat(m).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",s,(0,t.createElement)(i(),{block:"um-block/um-forms",attributes:e.attributes}),(0,t.createElement)(l.InspectorControls,null,(0,t.createElement)(n.PanelBody,{title:wp.i18n.__("Select Forms","ultimate-member")},(0,t.createElement)(n.SelectControl,{label:wp.i18n.__("Select Forms","ultimate-member"),className:"um_select_forms",value:o,options:c,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({form_id:t})}}))))},save:function(e){return null}})})();
|
||||
@@ -0,0 +1,91 @@
|
||||
import { useSelect } from '@wordpress/data';
|
||||
import { PanelBody, SelectControl, Spinner } from '@wordpress/components';
|
||||
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
|
||||
import ServerSideRender from '@wordpress/server-side-render';
|
||||
import { registerBlockType } from "@wordpress/blocks";
|
||||
|
||||
registerBlockType('um-block/um-forms', {
|
||||
edit: function (props) {
|
||||
let { form_id, setAttributes } = props.attributes;
|
||||
const blockProps = useBlockProps();
|
||||
const posts = useSelect((select) => {
|
||||
return select('core').getEntityRecords('postType', 'um_form', {
|
||||
per_page: -1,
|
||||
_fields: ['id', 'title']
|
||||
});
|
||||
});
|
||||
|
||||
if (!posts) {
|
||||
return (
|
||||
<p>
|
||||
<Spinner />
|
||||
{wp.i18n.__('Loading...', 'ultimate-member')}
|
||||
</p>
|
||||
);
|
||||
}
|
||||
|
||||
if (posts.length === 0) {
|
||||
return 'No forms found.';
|
||||
}
|
||||
|
||||
function get_option( posts ) {
|
||||
var option = [];
|
||||
|
||||
posts.map( function( post ) {
|
||||
option.push(
|
||||
{
|
||||
label: post.title.rendered,
|
||||
value: post.id
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
return option;
|
||||
}
|
||||
|
||||
function umShortcode( value ) {
|
||||
|
||||
var shortcode = '';
|
||||
|
||||
if (value !== undefined && value !== '') {
|
||||
shortcode = '[ultimatemember form_id="' + value + '"]';
|
||||
}
|
||||
|
||||
return shortcode;
|
||||
}
|
||||
|
||||
let posts_data = [{ id: '', title: '' }].concat(posts);
|
||||
|
||||
let get_post = posts_data.map((post) => {
|
||||
return {
|
||||
label: post.title.rendered,
|
||||
value: post.id
|
||||
};
|
||||
});
|
||||
|
||||
return (
|
||||
<div {...blockProps}>
|
||||
<ServerSideRender block="um-block/um-forms" attributes={props.attributes} />
|
||||
<InspectorControls>
|
||||
<PanelBody title={wp.i18n.__('Select Forms', 'ultimate-member')}>
|
||||
<SelectControl
|
||||
label={wp.i18n.__('Select Forms', 'ultimate-member')}
|
||||
className="um_select_forms"
|
||||
value={form_id}
|
||||
options={get_post}
|
||||
style={{ height: '35px', lineHeight: '20px', padding: '0 7px' }}
|
||||
onChange={(value) => {
|
||||
props.setAttributes({ form_id: value });
|
||||
umShortcode(value);
|
||||
}}
|
||||
/>
|
||||
</PanelBody>
|
||||
</InspectorControls>
|
||||
</div>
|
||||
);
|
||||
|
||||
},
|
||||
save: function save(props) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"apiVersion": 2,
|
||||
"name": "um-block/um-member-directories",
|
||||
"title": "Member Directory",
|
||||
"description": "Choose display directory",
|
||||
"icon": "groups",
|
||||
"category": "um-blocks",
|
||||
"attributes": {
|
||||
"member_id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"editorScript": "file:./build/index.js",
|
||||
"textdomain": "ultimate-member"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-server-side-render'), 'version' => '57ea4f619de4d752a4bb');
|
||||
@@ -0,0 +1 @@
|
||||
(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.element,r=window.wp.data,n=window.wp.components,i=window.wp.blockEditor,o=window.wp.serverSideRender;var l=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-member-directories",{edit:function(e){let{member_id:o,setAttributes:a}=e.attributes;const c=(0,i.useBlockProps)(),u=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_directory",{per_page:-1,_fields:["id","title"]})));if(!u)return(0,t.createElement)("p",null,(0,t.createElement)(n.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===u.length)return"No posts found.";let d=[{id:"",title:""}].concat(u).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",c,(0,t.createElement)(l(),{block:"um-block/um-member-directories",attributes:e.attributes}),(0,t.createElement)(i.InspectorControls,null,(0,t.createElement)(n.PanelBody,{title:wp.i18n.__("Select Directories","ultimate-member")},(0,t.createElement)(n.SelectControl,{label:wp.i18n.__("Select Directories","ultimate-member"),className:"um_select_directory",value:o,options:d,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({member_id:t})}}))))},save:function(e){return null}}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um.um-directory").each((function(){var e=jQuery(this);um_ajax_get_members(e)}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
|
||||
@@ -0,0 +1,105 @@
|
||||
import { useSelect } from '@wordpress/data';
|
||||
import { PanelBody, SelectControl, Spinner } from '@wordpress/components';
|
||||
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
|
||||
import ServerSideRender from '@wordpress/server-side-render';
|
||||
import { registerBlockType } from "@wordpress/blocks";
|
||||
|
||||
registerBlockType('um-block/um-member-directories', {
|
||||
edit: function (props) {
|
||||
let { member_id, setAttributes } = props.attributes;
|
||||
const blockProps = useBlockProps();
|
||||
const posts = useSelect((select) => {
|
||||
return select('core').getEntityRecords('postType', 'um_directory', {
|
||||
per_page: -1,
|
||||
_fields: ['id', 'title']
|
||||
});
|
||||
});
|
||||
|
||||
if (!posts) {
|
||||
return (
|
||||
<p>
|
||||
<Spinner />
|
||||
{wp.i18n.__('Loading...', 'ultimate-member')}
|
||||
</p>
|
||||
);
|
||||
}
|
||||
|
||||
if (posts.length === 0) {
|
||||
return 'No posts found.';
|
||||
}
|
||||
|
||||
function get_option( posts ) {
|
||||
var option = [];
|
||||
|
||||
posts.map( function( post ) {
|
||||
option.push(
|
||||
{
|
||||
label: post.title.rendered,
|
||||
value: post.id
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
return option;
|
||||
}
|
||||
|
||||
function umShortcode( value ) {
|
||||
|
||||
var shortcode = '';
|
||||
|
||||
if (value !== undefined && value !== '') {
|
||||
shortcode = '[ultimatemember form_id="' + value + '"]';
|
||||
}
|
||||
|
||||
return shortcode;
|
||||
}
|
||||
|
||||
let posts_data = [{ id: '', title: '' }].concat(posts);
|
||||
|
||||
let get_post = posts_data.map((post) => {
|
||||
return {
|
||||
label: post.title.rendered,
|
||||
value: post.id
|
||||
};
|
||||
});
|
||||
|
||||
return (
|
||||
<div {...blockProps}>
|
||||
<ServerSideRender block="um-block/um-member-directories" attributes={props.attributes} />
|
||||
<InspectorControls>
|
||||
<PanelBody title={wp.i18n.__('Select Directories', 'ultimate-member')}>
|
||||
<SelectControl
|
||||
label={wp.i18n.__('Select Directories', 'ultimate-member')}
|
||||
className="um_select_directory"
|
||||
value={member_id}
|
||||
options={get_post}
|
||||
style={{ height: '35px', lineHeight: '20px', padding: '0 7px' }}
|
||||
onChange={(value) => {
|
||||
props.setAttributes({ member_id: value });
|
||||
umShortcode(value);
|
||||
}}
|
||||
/>
|
||||
</PanelBody>
|
||||
</InspectorControls>
|
||||
</div>
|
||||
);
|
||||
|
||||
},
|
||||
save: function save(props) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
jQuery(window).on( 'load', function($) {
|
||||
var observer = new MutationObserver(function(mutations) {
|
||||
mutations.forEach(function(mutation) {
|
||||
|
||||
jQuery(mutation.addedNodes).find('.um.um-directory').each(function() {
|
||||
var directory = jQuery(this);
|
||||
um_ajax_get_members( directory );
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
|
||||
});
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"apiVersion": 2,
|
||||
"name": "um-block/um-password-reset",
|
||||
"title": "Password Reset",
|
||||
"description": "Displaying the password reset form",
|
||||
"icon": "unlock",
|
||||
"category": "um-blocks",
|
||||
"editorScript": "file:./build/index.js",
|
||||
"textdomain": "ultimate-member"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-element', 'wp-server-side-render'), 'version' => '95e8fe2695e681505871');
|
||||
@@ -0,0 +1 @@
|
||||
(()=>{"use strict";var e={n:r=>{var o=r&&r.__esModule?()=>r.default:()=>r;return e.d(o,{a:o}),o},d:(r,o)=>{for(var t in o)e.o(o,t)&&!e.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:o[t]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r)};const r=window.wp.element,o=window.wp.blocks,t=window.wp.serverSideRender;var n=e.n(t);const s=window.wp.blockEditor;(0,o.registerBlockType)("um-block/um-password-reset",{edit:function(e){const o=(0,s.useBlockProps)();return(0,r.createElement)("div",o,(0,r.createElement)(n(),{block:"um-block/um-password-reset"}))},save:function(e){return null}})})();
|
||||
@@ -0,0 +1,19 @@
|
||||
import { registerBlockType } from '@wordpress/blocks';
|
||||
import ServerSideRender from '@wordpress/server-side-render';
|
||||
import { useBlockProps } from '@wordpress/block-editor';
|
||||
|
||||
registerBlockType('um-block/um-password-reset', {
|
||||
edit: function (props) {
|
||||
const blockProps = useBlockProps();
|
||||
|
||||
return (
|
||||
<div {...blockProps}>
|
||||
<ServerSideRender block="um-block/um-password-reset" />
|
||||
</div>
|
||||
);
|
||||
|
||||
},
|
||||
save: function save(props) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
+21
-29
@@ -17,83 +17,75 @@ if ( ! class_exists( 'um\Config' ) ) {
|
||||
*/
|
||||
class Config {
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $core_forms;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $core_forms;
|
||||
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $core_directories;
|
||||
|
||||
public $core_directories;
|
||||
|
||||
/**
|
||||
* @var mixed|void
|
||||
*/
|
||||
var $core_pages;
|
||||
|
||||
public $core_pages;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $core_directory_meta = array();
|
||||
|
||||
public $core_directory_meta = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $core_global_meta_all;
|
||||
|
||||
public $core_global_meta_all;
|
||||
|
||||
/**
|
||||
* @var mixed|void
|
||||
*/
|
||||
var $core_form_meta_all;
|
||||
|
||||
public $core_form_meta_all;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $core_form_meta = array();
|
||||
|
||||
public $core_form_meta = array();
|
||||
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
var $perms;
|
||||
|
||||
public $perms;
|
||||
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
var $nonadmin_perms;
|
||||
|
||||
public $nonadmin_perms;
|
||||
|
||||
/**
|
||||
* @var mixed|void
|
||||
*/
|
||||
var $email_notifications;
|
||||
|
||||
public $email_notifications;
|
||||
|
||||
/**
|
||||
* @var mixed|void
|
||||
*/
|
||||
var $settings_defaults;
|
||||
|
||||
public $settings_defaults;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $permalinks;
|
||||
public $permalinks;
|
||||
|
||||
/**
|
||||
* @var array|array[]
|
||||
*/
|
||||
public $default_roles_metadata = array();
|
||||
|
||||
/**
|
||||
* Config constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
public function __construct() {
|
||||
$this->core_forms = array(
|
||||
'register',
|
||||
'login',
|
||||
@@ -457,7 +449,7 @@ if ( ! class_exists( 'um\Config' ) ) {
|
||||
'If you did not make this change and believe your {site_name} account has been compromised, please contact us at the following email address: {admin_email}<br /><br />' .
|
||||
'Thanks,<br />' .
|
||||
'{site_name}',
|
||||
'description' => __('Whether to send the user an email when he request to reset password (Recommended, please keep on)','ultimate-member'),
|
||||
'description' => __('Whether to send the user an email when he requests to reset password (Recommended, please keep on)','ultimate-member'),
|
||||
'recipient' => 'user',
|
||||
'default_active' => true
|
||||
),
|
||||
|
||||
+20
-1
@@ -71,6 +71,10 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
*/
|
||||
public $is_permalinks;
|
||||
|
||||
/**
|
||||
* @var null|string
|
||||
*/
|
||||
public $honeypot = null;
|
||||
|
||||
/**
|
||||
* Main UM Instance
|
||||
@@ -82,7 +86,7 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
* @see UM()
|
||||
* @return UM - Main instance
|
||||
*/
|
||||
static public function instance() {
|
||||
public static function instance() {
|
||||
if ( is_null( self::$instance ) ) {
|
||||
self::$instance = new self();
|
||||
self::$instance->_um_construct();
|
||||
@@ -602,6 +606,7 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
$this->external_integrations();
|
||||
$this->gdpr();
|
||||
$this->member_directory();
|
||||
$this->blocks();
|
||||
|
||||
//if multisite networks active
|
||||
if ( is_multisite() ) {
|
||||
@@ -631,6 +636,20 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @since 2.6.1
|
||||
*
|
||||
* @return um\core\Blocks()
|
||||
*/
|
||||
public function blocks() {
|
||||
if ( empty( $this->classes['blocks'] ) ) {
|
||||
$this->classes['blocks'] = new um\core\Blocks();
|
||||
}
|
||||
|
||||
return $this->classes['blocks'];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get extension API
|
||||
*
|
||||
|
||||
@@ -1196,7 +1196,7 @@ if ( ! class_exists( 'um\core\Access' ) ) {
|
||||
if ( $block['attrs']['um_message_type'] == '1' ) {
|
||||
$block_content = $default_message;
|
||||
} elseif ( $block['attrs']['um_message_type'] == '2' ) {
|
||||
$block_content = $block['attrs']['um_message_content'];
|
||||
$block_content = isset( $block['attrs']['um_message_content'] ) ? esc_textarea( $block['attrs']['um_message_content'] ) : '';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1220,7 +1220,7 @@ if ( ! class_exists( 'um\core\Access' ) ) {
|
||||
if ( $block['attrs']['um_message_type'] == '1' ) {
|
||||
$block_content = $default_message;
|
||||
} elseif ( $block['attrs']['um_message_type'] == '2' ) {
|
||||
$block_content = $block['attrs']['um_message_content'];
|
||||
$block_content = isset( $block['attrs']['um_message_content'] ) ? esc_textarea( $block['attrs']['um_message_content'] ) : '';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1234,7 +1234,7 @@ if ( ! class_exists( 'um\core\Access' ) ) {
|
||||
if ( $block['attrs']['um_message_type'] == '1' ) {
|
||||
$block_content = $default_message;
|
||||
} elseif ( $block['attrs']['um_message_type'] == '2' ) {
|
||||
$block_content = $block['attrs']['um_message_content'];
|
||||
$block_content = isset( $block['attrs']['um_message_content'] ) ? esc_textarea( $block['attrs']['um_message_content'] ) : '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -626,6 +626,9 @@ if ( ! class_exists( 'um\core\Account' ) ) {
|
||||
$this->init_displayed_fields( $fields, $id );
|
||||
|
||||
foreach ( $fields as $key => $data ) {
|
||||
if ( isset( $shortcode_args['is_block'] ) && 1 === (int) $shortcode_args['is_block'] ) {
|
||||
$data['is_block'] = 1;
|
||||
}
|
||||
$output .= UM()->fields()->edit_field( $key, $data );
|
||||
}
|
||||
break;
|
||||
@@ -666,6 +669,9 @@ if ( ! class_exists( 'um\core\Account' ) ) {
|
||||
$this->init_displayed_fields( $fields, $id );
|
||||
|
||||
foreach ( $fields as $key => $data ) {
|
||||
if ( isset( $shortcode_args['is_block'] ) && 1 === (int) $shortcode_args['is_block'] ) {
|
||||
$data['is_block'] = 1;
|
||||
}
|
||||
$output .= UM()->fields()->edit_field( $key, $data );
|
||||
}
|
||||
|
||||
@@ -720,6 +726,9 @@ if ( ! class_exists( 'um\core\Account' ) ) {
|
||||
$this->init_displayed_fields( $fields, $id );
|
||||
|
||||
foreach ( $fields as $key => $data ) {
|
||||
if ( isset( $shortcode_args['is_block'] ) && 1 === (int) $shortcode_args['is_block'] ) {
|
||||
$data['is_block'] = 1;
|
||||
}
|
||||
$output .= UM()->fields()->edit_field( $key, $data );
|
||||
}
|
||||
|
||||
@@ -758,6 +767,9 @@ if ( ! class_exists( 'um\core\Account' ) ) {
|
||||
$this->init_displayed_fields( $fields, $id );
|
||||
|
||||
foreach ( $fields as $key => $data ) {
|
||||
if ( isset( $shortcode_args['is_block'] ) && 1 === (int) $shortcode_args['is_block'] ) {
|
||||
$data['is_block'] = 1;
|
||||
}
|
||||
$output .= UM()->fields()->edit_field( $key, $data );
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
namespace um\core;
|
||||
|
||||
// Exit if accessed directly
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'um\core\Blocks' ) ) {
|
||||
|
||||
|
||||
/**
|
||||
* Class Blocks
|
||||
* @package um\core
|
||||
*/
|
||||
class Blocks {
|
||||
|
||||
|
||||
/**
|
||||
* Access constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action( 'init', array( &$this, 'block_editor_render' ), 10 );
|
||||
add_filter( 'block_type_metadata_settings', array( &$this, 'block_type_metadata_settings' ), 10, 2 );
|
||||
}
|
||||
|
||||
|
||||
public function block_type_metadata_settings( $settings, $args ) {
|
||||
if ( empty( $settings['attributes']['um_is_restrict'] ) ) {
|
||||
$settings['attributes']['um_is_restrict'] = array(
|
||||
'type' => 'boolean',
|
||||
);
|
||||
}
|
||||
if ( empty( $settings['attributes']['um_who_access'] ) ) {
|
||||
$settings['attributes']['um_who_access'] = array(
|
||||
'type' => 'string',
|
||||
);
|
||||
}
|
||||
if ( empty( $settings['attributes']['um_roles_access'] ) ) {
|
||||
$settings['attributes']['um_roles_access'] = array(
|
||||
'type' => 'array',
|
||||
);
|
||||
}
|
||||
if ( empty( $settings['attributes']['um_message_type'] ) ) {
|
||||
$settings['attributes']['um_message_type'] = array(
|
||||
'type' => 'string',
|
||||
);
|
||||
}
|
||||
if ( empty( $settings['attributes']['um_message_content'] ) ) {
|
||||
$settings['attributes']['um_message_content'] = array(
|
||||
'type' => 'string',
|
||||
);
|
||||
}
|
||||
|
||||
return $settings;
|
||||
}
|
||||
|
||||
|
||||
public function block_editor_render() {
|
||||
//disable Gutenberg scripts to avoid the conflicts
|
||||
$disable_script = apply_filters( 'um_disable_blocks_script', false );
|
||||
if ( $disable_script ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$enable_blocks = UM()->options()->get( 'enable_blocks' );
|
||||
if ( empty( $enable_blocks ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$blocks = array(
|
||||
'um-block/um-member-directories' => array(
|
||||
'render_callback' => array( $this, 'um_member_directories_render' ),
|
||||
'attributes' => array(
|
||||
'member_id' => array(
|
||||
'type' => 'string',
|
||||
),
|
||||
),
|
||||
),
|
||||
'um-block/um-forms' => array(
|
||||
'render_callback' => array( $this, 'um_forms_render' ),
|
||||
'attributes' => array(
|
||||
'form_id' => array(
|
||||
'type' => 'string',
|
||||
),
|
||||
),
|
||||
),
|
||||
'um-block/um-password-reset' => array(
|
||||
'render_callback' => array( $this, 'um_password_reset_render' ),
|
||||
),
|
||||
'um-block/um-account' => array(
|
||||
'render_callback' => array( $this, 'um_account_render' ),
|
||||
'attributes' => array(
|
||||
'tab' => array(
|
||||
'type' => 'string',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
foreach ( $blocks as $k => $block_data ) {
|
||||
$block_type = str_replace( 'um-block/', '', $k );
|
||||
register_block_type_from_metadata( um_path . 'includes/blocks/' . $block_type, $block_data );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function um_member_directories_render( $atts ) {
|
||||
$shortcode = '[ultimatemember';
|
||||
|
||||
if ( isset( $atts['member_id'] ) && '' !== $atts['member_id'] ) {
|
||||
$shortcode .= ' form_id="' . $atts['member_id'] . '"';
|
||||
}
|
||||
|
||||
$shortcode .= ']';
|
||||
|
||||
return apply_shortcodes( $shortcode );
|
||||
}
|
||||
|
||||
|
||||
public function um_forms_render( $atts ) {
|
||||
if ( isset( $atts['form_id'] ) && '' !== $atts['form_id'] ) {
|
||||
$mode = get_post_meta( $atts['form_id'], '_um_mode', true );
|
||||
if ( 'profile' === $mode && ( um_is_core_page( 'account' ) || um_is_core_page( 'user' ) ) ) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
$shortcode = '[ultimatemember is_block="1"';
|
||||
|
||||
if ( isset( $atts['form_id'] ) && '' !== $atts['form_id'] ) {
|
||||
$shortcode .= ' form_id="' . $atts['form_id'] . '"';
|
||||
}
|
||||
|
||||
$shortcode .= ']';
|
||||
|
||||
return apply_shortcodes( $shortcode );
|
||||
}
|
||||
|
||||
|
||||
public function um_password_reset_render() {
|
||||
$shortcode = '[ultimatemember_password]';
|
||||
|
||||
return apply_shortcodes( $shortcode );
|
||||
}
|
||||
|
||||
|
||||
public function um_account_render( $atts ) {
|
||||
if ( um_is_core_page( 'account' ) || um_is_core_page( 'user' ) ) {
|
||||
return '';
|
||||
}
|
||||
$shortcode = '[ultimatemember_account is_block="1"';
|
||||
|
||||
if ( isset( $atts['tab'] ) && 'all' !== $atts['tab'] ) {
|
||||
$shortcode .= ' tab="' . $atts['tab'] . '"';
|
||||
}
|
||||
|
||||
$shortcode .= ']';
|
||||
|
||||
return apply_shortcodes( $shortcode );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,29 +13,40 @@ if ( ! class_exists( 'um\core\Builtin' ) ) {
|
||||
*/
|
||||
class Builtin {
|
||||
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $predefined_fields = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $all_user_fields = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $all_user_fields = array();
|
||||
|
||||
public $core_fields = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $core_fields = array();
|
||||
public $saved_fields = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $custom_fields = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $fields_dropdown = array();
|
||||
|
||||
/**
|
||||
* Builtin constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
public function __construct() {
|
||||
add_action( 'init', array( &$this, 'set_core_fields' ), 1 );
|
||||
add_action( 'init', array( &$this, 'set_predefined_fields' ), 1 );
|
||||
add_action( 'init', array( &$this, 'set_custom_fields' ), 1 );
|
||||
|
||||
+138
-79
@@ -18,7 +18,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $set_mode = '';
|
||||
public $set_mode = '';
|
||||
|
||||
|
||||
/**
|
||||
@@ -26,17 +26,53 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
*/
|
||||
public $set_id = null;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $editing = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $viewing = false;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $timestamp = null;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $global_args = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $field_icons = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $get_fields = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $rows = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $fields = array();
|
||||
|
||||
/**
|
||||
* Fields constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
$this->editing = false;
|
||||
$this->viewing = false;
|
||||
public function __construct() {
|
||||
$this->timestamp = current_time( 'timestamp' );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Standard checkbox field
|
||||
*
|
||||
@@ -2073,76 +2109,89 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
* @return string|null
|
||||
* @throws \Exception
|
||||
*/
|
||||
function edit_field( $key, $data, $rule = false, $args = array() ) {
|
||||
public function edit_field( $key, $data, $rule = false, $args = array() ) {
|
||||
global $_um_profile_id;
|
||||
|
||||
$output = '';
|
||||
if ( isset( $data['is_block'] ) && 1 === (int) $data['is_block'] ) {
|
||||
$form_suffix = '';
|
||||
} else {
|
||||
$form_suffix = UM()->form()->form_suffix;
|
||||
}
|
||||
|
||||
$output = '';
|
||||
$disabled = '';
|
||||
if ( empty( $_um_profile_id ) ) {
|
||||
$_um_profile_id = um_user( 'ID' );
|
||||
}
|
||||
|
||||
if ( ! is_user_logged_in() && isset( $data['is_block'] ) && 1 === (int) $data['is_block'] ) {
|
||||
$_um_profile_id = 0;
|
||||
}
|
||||
|
||||
// get whole field data
|
||||
if ( isset( $data ) && is_array( $data ) ) {
|
||||
$data = $this->get_field( $key );
|
||||
if ( is_array( $data ) ) {
|
||||
/**
|
||||
* @var string $in_row
|
||||
* @var boolean $in_sub_row
|
||||
* @var boolean $in_column
|
||||
* @var string $type
|
||||
* @var string $metakey
|
||||
* @var int $position
|
||||
* @var string $title
|
||||
* @var string $help
|
||||
* @var array $options
|
||||
* @var string $visibility
|
||||
* @var string $label
|
||||
* @var string $placeholder
|
||||
* @var boolean $public
|
||||
* @var boolean $editable
|
||||
* @var string $icon
|
||||
* @var boolean $in_group
|
||||
* @var boolean $required
|
||||
* @var string $validate
|
||||
* @var string $default
|
||||
* @var string $conditional
|
||||
* @var string $input
|
||||
* @var string $js_format
|
||||
* @var string $date_max
|
||||
* @var string $date_min
|
||||
* @var string $disabled_weekdays
|
||||
* @var string $years_x
|
||||
* @var string $years
|
||||
* @var string $range
|
||||
* @var string $intervals
|
||||
* @var string $height
|
||||
* @var string $spacing
|
||||
* @var string $borderwidth
|
||||
* @var string $borderstyle
|
||||
* @var string $bordercolor
|
||||
* @var string $divider_text
|
||||
* @var string $crop_class
|
||||
* @var string $crop_data
|
||||
* @var string $modal_size
|
||||
* @var string $ratio
|
||||
* @var string $min_width
|
||||
* @var string $min_height
|
||||
* @var string $button_text
|
||||
* @var string $max_size
|
||||
* @var string $max_size_error
|
||||
* @var string $extension_error
|
||||
* @var string $allowed_types
|
||||
* @var string $upload_text
|
||||
* @var string $max_files_error
|
||||
* @var string $upload_help_text
|
||||
* @var string $min_size_error
|
||||
* @var string $filter
|
||||
* @var string $content
|
||||
* @var string $max_entries
|
||||
*/
|
||||
extract( $data );
|
||||
$origin_data = $this->get_field( $key );
|
||||
if ( is_array( $origin_data ) ) {
|
||||
// Merge data passed with original field data.
|
||||
$data = array_merge( $origin_data, $data );
|
||||
}
|
||||
|
||||
/**
|
||||
* @var string $in_row
|
||||
* @var boolean $in_sub_row
|
||||
* @var boolean $in_column
|
||||
* @var string $type
|
||||
* @var string $metakey
|
||||
* @var int $position
|
||||
* @var string $title
|
||||
* @var string $help
|
||||
* @var array $options
|
||||
* @var string $visibility
|
||||
* @var string $label
|
||||
* @var string $placeholder
|
||||
* @var boolean $public
|
||||
* @var boolean $editable
|
||||
* @var string $icon
|
||||
* @var boolean $in_group
|
||||
* @var boolean $required
|
||||
* @var string $validate
|
||||
* @var string $default
|
||||
* @var string $conditional
|
||||
* @var string $input
|
||||
* @var string $js_format
|
||||
* @var string $date_max
|
||||
* @var string $date_min
|
||||
* @var string $disabled_weekdays
|
||||
* @var string $years_x
|
||||
* @var string $years
|
||||
* @var string $range
|
||||
* @var string $intervals
|
||||
* @var string $height
|
||||
* @var string $spacing
|
||||
* @var string $borderwidth
|
||||
* @var string $borderstyle
|
||||
* @var string $bordercolor
|
||||
* @var string $divider_text
|
||||
* @var string $crop_class
|
||||
* @var string $crop_data
|
||||
* @var string $modal_size
|
||||
* @var string $ratio
|
||||
* @var string $min_width
|
||||
* @var string $min_height
|
||||
* @var string $button_text
|
||||
* @var string $max_size
|
||||
* @var string $max_size_error
|
||||
* @var string $extension_error
|
||||
* @var string $allowed_types
|
||||
* @var string $upload_text
|
||||
* @var string $max_files_error
|
||||
* @var string $upload_help_text
|
||||
* @var string $min_size_error
|
||||
* @var string $filter
|
||||
* @var string $content
|
||||
* @var string $max_entries
|
||||
*/
|
||||
extract( $data );
|
||||
}
|
||||
|
||||
if ( ! isset( $data['type'] ) ) {
|
||||
@@ -2344,7 +2393,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$field_name = $key . UM()->form()->form_suffix;
|
||||
$field_name = $key . $form_suffix;
|
||||
$field_value = htmlspecialchars( $this->field_value( $key, $default, $data ) );
|
||||
|
||||
$output .= '<input ' . $disabled . ' class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_name ) . '" value="' . esc_attr( $field_value ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" />
|
||||
@@ -2381,8 +2430,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$field_name = $key . UM()->form()->form_suffix;
|
||||
$field_value = htmlspecialchars( $this->field_value( $key, $default, $data ) );
|
||||
$field_name = $key . $form_suffix;
|
||||
$field_value = $this->field_value( $key, $default, $data );
|
||||
$field_value = ! is_null( $field_value ) ? htmlspecialchars( $field_value ) : null;
|
||||
|
||||
$output .= '<input ' . $disabled . ' autocomplete="' . esc_attr( $autocomplete ) . '" class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_name ) . '" value="' . esc_attr( $field_value ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" />
|
||||
|
||||
@@ -2418,7 +2468,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$field_name = $key . UM()->form()->form_suffix;
|
||||
$field_name = $key . $form_suffix;
|
||||
$field_value = htmlspecialchars( $this->field_value( $key, $default, $data ) );
|
||||
|
||||
$output .= '<input ' . $disabled . ' autocomplete="' . esc_attr( $autocomplete ) . '" class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_name ) . '" value="' . esc_attr( $field_value ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" />
|
||||
@@ -2463,7 +2513,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
$number_limit .= ' max="' . esc_attr( $max ) . '" ';
|
||||
}
|
||||
|
||||
$output .= '<input ' . $disabled . ' class="' . $this->get_class( $key, $data ) . '" type="number" name="' . esc_attr( $key . UM()->form()->form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . esc_attr( htmlspecialchars( $this->field_value( $key, $default, $data ) ) ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" ' . $number_limit . ' />
|
||||
$output .= '<input ' . $disabled . ' class="' . $this->get_class( $key, $data ) . '" type="number" name="' . esc_attr( $key . $form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . esc_attr( htmlspecialchars( $this->field_value( $key, $default, $data ) ) ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" ' . $number_limit . ' />
|
||||
|
||||
</div>';
|
||||
|
||||
@@ -2499,7 +2549,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$output .= '<input class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . UM()->form()->form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $this->field_value( $key, $default, $data ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" />
|
||||
$output .= '<input class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . $form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $this->field_value( $key, $default, $data ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" />
|
||||
|
||||
</div>';
|
||||
|
||||
@@ -2531,7 +2581,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$output .= '<input class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . UM()->form()->form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $this->field_value( $key, $default, $data ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" />
|
||||
$output .= '<input class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . $form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $this->field_value( $key, $default, $data ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" />
|
||||
|
||||
</div>';
|
||||
|
||||
@@ -2567,7 +2617,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$name = $key . UM()->form()->form_suffix;
|
||||
$name = $key . $form_suffix;
|
||||
if ( $this->set_mode == 'password' && um_is_core_page( 'password-reset' ) ) {
|
||||
$name = $key;
|
||||
}
|
||||
@@ -2605,7 +2655,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$name = $key . UM()->form()->form_suffix;
|
||||
$name = $key . $form_suffix;
|
||||
if ( $this->set_mode == 'password' && um_is_core_page( 'password-reset' ) ) {
|
||||
$name = $key;
|
||||
}
|
||||
@@ -2655,7 +2705,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$output .= '<input ' . $disabled . ' class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . UM()->form()->form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . esc_attr( $this->field_value( $key, $default, $data ) ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" />
|
||||
$output .= '<input ' . $disabled . ' class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . $form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . esc_attr( $this->field_value( $key, $default, $data ) ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" />
|
||||
|
||||
</div>';
|
||||
|
||||
@@ -2698,7 +2748,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
$value = date( 'Y/m/d', $unixtimestamp );
|
||||
}
|
||||
|
||||
$output .= '<input ' . $disabled . ' class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . UM()->form()->form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . esc_attr( $value ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" data-range="' . esc_attr( $range ) . '" data-years="' . esc_attr( $years ) . '" data-years_x="' . esc_attr( $years_x ) . '" data-disabled_weekdays="' . esc_attr( $disabled_weekdays ) . '" data-date_min="' . esc_attr( $date_min ) . '" data-date_max="' . esc_attr( $date_max ) . '" data-format="' . esc_attr( $js_format ) . '" data-value="' . esc_attr( $value ) . '" />
|
||||
$output .= '<input ' . $disabled . ' class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . $form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . esc_attr( $value ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" data-range="' . esc_attr( $range ) . '" data-years="' . esc_attr( $years ) . '" data-years_x="' . esc_attr( $years_x ) . '" data-disabled_weekdays="' . esc_attr( $disabled_weekdays ) . '" data-date_min="' . esc_attr( $date_min ) . '" data-date_max="' . esc_attr( $date_max ) . '" data-format="' . esc_attr( $js_format ) . '" data-value="' . esc_attr( $value ) . '" />
|
||||
|
||||
</div>';
|
||||
|
||||
@@ -2728,7 +2778,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$output .= '<input ' . $disabled . ' class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . UM()->form()->form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $this->field_value( $key, $default, $data ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" data-format="' . esc_attr( $js_format ) . '" data-intervals="' . esc_attr( $intervals ) . '" data-value="' . $this->field_value( $key, $default, $data ) . '" />
|
||||
$output .= '<input ' . $disabled . ' class="' . $this->get_class( $key, $data ) . '" type="' . esc_attr( $input ) . '" name="' . esc_attr( $key . $form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $this->field_value( $key, $default, $data ) . '" placeholder="' . esc_attr( $placeholder ) . '" data-validate="' . esc_attr( $validate ) . '" data-key="' . esc_attr( $key ) . '" data-format="' . esc_attr( $js_format ) . '" data-intervals="' . esc_attr( $intervals ) . '" data-value="' . $this->field_value( $key, $default, $data ) . '" />
|
||||
|
||||
</div>';
|
||||
|
||||
@@ -2869,7 +2919,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
} else {
|
||||
$field_value = $this->field_value( $key, $default, $data );
|
||||
}
|
||||
$output .= '<input type="hidden" name="' . esc_attr( $key . UM()->form()->form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $field_value . '" />';
|
||||
$output .= '<input type="hidden" name="' . esc_attr( $key . $form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $field_value . '" />';
|
||||
if ( isset( $data['label'] ) ) {
|
||||
$output .= $this->field_label( $label, $key, $data );
|
||||
}
|
||||
@@ -2954,7 +3004,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
/* Single File Upload */
|
||||
case 'file':
|
||||
$output .= '<div ' . $this->get_atts( $key, $classes, $conditional, $data ) . ' data-mode="' . esc_attr( $this->set_mode ) . '" data-upload-label="' . ( ! empty( $data['button_text'] ) ? esc_attr( $data['button_text'] ) : esc_attr__( 'Upload', 'ultimate-member' ) ) . '">';
|
||||
$output .= '<input type="hidden" name="' . esc_attr( $key . UM()->form()->form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $this->field_value( $key, $default, $data ) . '" />';
|
||||
$output .= '<input type="hidden" name="' . esc_attr( $key . $form_suffix ) . '" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '" value="' . $this->field_value( $key, $default, $data ) . '" />';
|
||||
if ( isset( $data['label'] ) ) {
|
||||
$output .= $this->field_label( $label, $key, $data );
|
||||
}
|
||||
@@ -4188,6 +4238,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
$col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
|
||||
if ( $col1_fields ) {
|
||||
foreach ( $col1_fields as $key => $data ) {
|
||||
if ( ! empty( $args['is_block'] ) ) {
|
||||
$data['is_block'] = 1;
|
||||
}
|
||||
$output .= $this->edit_field( $key, $data );
|
||||
}
|
||||
}
|
||||
@@ -4199,6 +4252,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
$col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
|
||||
if ( $col1_fields ) {
|
||||
foreach ( $col1_fields as $key => $data ) {
|
||||
if ( ! empty( $args['is_block'] ) ) {
|
||||
$data['is_block'] = 1;
|
||||
}
|
||||
$output .= $this->edit_field( $key, $data );
|
||||
}
|
||||
}
|
||||
@@ -4208,6 +4264,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
$col2_fields = $this->get_fields_in_column( $subrow_fields, 2 );
|
||||
if ( $col2_fields ) {
|
||||
foreach ( $col2_fields as $key => $data ) {
|
||||
if ( ! empty( $args['is_block'] ) ) {
|
||||
$data['is_block'] = 1;
|
||||
}
|
||||
$output .= $this->edit_field( $key, $data );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,30 +13,45 @@ if ( ! class_exists( 'um\core\Files' ) ) {
|
||||
*/
|
||||
class Files {
|
||||
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
public $upload_temp;
|
||||
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
var $upload_temp;
|
||||
|
||||
public $upload_baseurl;
|
||||
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
var $upload_baseurl;
|
||||
|
||||
public $upload_basedir;
|
||||
|
||||
/**
|
||||
* @var
|
||||
* @var array|array[]
|
||||
*/
|
||||
var $upload_basedir;
|
||||
public $fonticon = array();
|
||||
|
||||
/**
|
||||
* @var null|string
|
||||
*/
|
||||
public $upload_dir = null;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $upload_temp_url = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $default_file_fonticon = 'um-faicon-file-o';
|
||||
|
||||
/**
|
||||
* Files constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
|
||||
public function __construct() {
|
||||
$this->setup_paths();
|
||||
|
||||
add_action( 'template_redirect', array( &$this, 'download_routing' ), 1 );
|
||||
@@ -63,8 +78,6 @@ if ( ! class_exists( 'um\core\Files' ) ) {
|
||||
'tif' => array('icon' => 'um-icon-image' ),
|
||||
'tiff' => array('icon' => 'um-icon-image' ),
|
||||
);
|
||||
|
||||
$this->default_file_fonticon = 'um-faicon-file-o';
|
||||
}
|
||||
|
||||
|
||||
@@ -326,8 +339,8 @@ if ( ! class_exists( 'um\core\Files' ) ) {
|
||||
|
||||
$user_id = empty( $_REQUEST['user_id'] ) ? get_current_user_id() : absint( $_REQUEST['user_id'] );
|
||||
|
||||
UM()->fields()->set_id = filter_input( INPUT_POST, 'set_id', FILTER_SANITIZE_NUMBER_INT );
|
||||
UM()->fields()->set_mode = filter_input( INPUT_POST, 'set_mode', FILTER_SANITIZE_STRING );
|
||||
UM()->fields()->set_id = isset( $_POST['set_id'] ) ? absint( $_POST['set_id'] ) : null;
|
||||
UM()->fields()->set_mode = isset( $_POST['set_mode'] ) ? sanitize_text_field( $_POST['set_mode'] ) : null;
|
||||
|
||||
if ( UM()->fields()->set_mode != 'register' && ! UM()->roles()->um_current_user_can( 'edit', $user_id ) ) {
|
||||
$ret['error'] = esc_js( __( 'You have no permission to edit this user', 'ultimate-member' ) );
|
||||
|
||||
@@ -13,43 +13,47 @@ if ( ! class_exists( 'um\core\Form' ) ) {
|
||||
*/
|
||||
class Form {
|
||||
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $form_suffix;
|
||||
|
||||
public $form_suffix = null;
|
||||
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
var $form_id;
|
||||
|
||||
public $form_id;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
var $post_form = null;
|
||||
public $post_form = null;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $nonce = null;
|
||||
|
||||
var $nonce = null;
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $errors = null;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $processing = null;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $all_fields = array();
|
||||
|
||||
/**
|
||||
* Form constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
|
||||
$this->form_suffix = null;
|
||||
|
||||
$this->errors = null;
|
||||
|
||||
$this->processing = null;
|
||||
|
||||
public function __construct() {
|
||||
add_action( 'template_redirect', array( &$this, 'form_init' ), 2 );
|
||||
|
||||
add_action( 'init', array( &$this, 'field_declare' ), 10 );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,43 +1,57 @@
|
||||
<?php
|
||||
namespace um\core;
|
||||
|
||||
|
||||
// Exit if accessed directly
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
|
||||
|
||||
/**
|
||||
* Class Mail
|
||||
* @package um\core
|
||||
*/
|
||||
class Mail {
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $email_templates = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $email_templates = array();
|
||||
|
||||
public $path_by_slug = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $path_by_slug = array();
|
||||
public $attachments = array();
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $headers = '';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $subject = '';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $message = '';
|
||||
|
||||
/**
|
||||
* Mail constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
public function __construct() {
|
||||
//mandrill compatibility
|
||||
add_filter( 'mandrill_nl2br', array( &$this, 'mandrill_nl2br' ) );
|
||||
add_action( 'plugins_loaded', array( &$this, 'init_paths' ), 99 );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Mandrill compatibility
|
||||
*
|
||||
@@ -45,7 +59,7 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
* @param string $message
|
||||
* @return bool
|
||||
*/
|
||||
function mandrill_nl2br( $nl2br, $message = '' ) {
|
||||
public function mandrill_nl2br( $nl2br, $message = '' ) {
|
||||
// text emails
|
||||
if ( ! UM()->options()->get( 'email_html' ) ) {
|
||||
$nl2br = true;
|
||||
@@ -54,11 +68,10 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
return $nl2br;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Init paths for email notifications
|
||||
*/
|
||||
function init_paths() {
|
||||
public function init_paths() {
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
@@ -83,13 +96,12 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
$this->path_by_slug = apply_filters( 'um_email_templates_path_by_slug', $this->path_by_slug );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check blog ID on multisite, return '' if single site
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function get_blog_id() {
|
||||
public function get_blog_id() {
|
||||
$blog_id = '';
|
||||
if ( is_multisite() ) {
|
||||
$blog_id = '/' . get_current_blog_id();
|
||||
@@ -98,7 +110,6 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
return $blog_id;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Locate a template and return the path for inclusion.
|
||||
*
|
||||
@@ -106,25 +117,29 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
* @param string $template_name
|
||||
* @return string
|
||||
*/
|
||||
function locate_template( $template_name ) {
|
||||
private function locate_template( $template_name ) {
|
||||
// check if there is template at theme folder
|
||||
$blog_id = $this->get_blog_id();
|
||||
|
||||
//get template file from current blog ID folder
|
||||
$template = locate_template( array(
|
||||
trailingslashit( 'ultimate-member/email' . $blog_id ) . $template_name . '.php'
|
||||
) );
|
||||
$template = locate_template(
|
||||
array(
|
||||
trailingslashit( 'ultimate-member/email' . $blog_id ) . $template_name . '.php',
|
||||
)
|
||||
);
|
||||
|
||||
//if there isn't template at theme folder for current blog ID get template file from theme folder
|
||||
// If there isn't template at theme folder for current blog ID get template file from theme folder
|
||||
if ( is_multisite() && ! $template ) {
|
||||
$template = locate_template( array(
|
||||
trailingslashit( 'ultimate-member/email' ) . $template_name . '.php'
|
||||
) );
|
||||
$template = locate_template(
|
||||
array(
|
||||
trailingslashit( 'ultimate-member/email' ) . $template_name . '.php',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
//if there isn't template at theme folder get template file from plugin dir
|
||||
// If there isn't template at theme folder, get template file from plugin dir
|
||||
if ( ! $template ) {
|
||||
$path = ! empty( $this->path_by_slug[ $template_name ] ) ? $this->path_by_slug[ $template_name ] : um_path . 'templates/email';
|
||||
$path = ! empty( $this->path_by_slug[ $template_name ] ) ? $this->path_by_slug[ $template_name ] : um_path . 'templates/email';
|
||||
$template = trailingslashit( $path ) . $template_name . '.php';
|
||||
}
|
||||
|
||||
@@ -154,13 +169,12 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
return apply_filters( 'um_locate_email_template', $template, $template_name );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $slug
|
||||
* @param $args
|
||||
* @return bool|string
|
||||
*/
|
||||
function get_email_template( $slug, $args = array() ) {
|
||||
public function get_email_template( $slug, $args = array() ) {
|
||||
$located = $this->locate_template( $slug );
|
||||
|
||||
/**
|
||||
@@ -349,12 +363,10 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
}
|
||||
|
||||
echo $plain_email_template;
|
||||
|
||||
}
|
||||
|
||||
$message = ob_get_clean();
|
||||
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
@@ -387,7 +399,6 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
return um_convert_tags( $message, $args );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send Email function
|
||||
*
|
||||
@@ -395,20 +406,39 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
* @param null $template
|
||||
* @param array $args
|
||||
*/
|
||||
function send( $email, $template, $args = array() ) {
|
||||
|
||||
public function send( $email, $template, $args = array() ) {
|
||||
if ( ! is_email( $email ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( UM()->options()->get( $template . '_on' ) != 1 ) {
|
||||
if ( ! empty( UM()->options()->get( $template . '_on' ) ) ) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* Filters for disabling email notifications programmatically.
|
||||
*
|
||||
* @since 2.6.1
|
||||
* @hook um_disable_email_notification_sending
|
||||
*
|
||||
* @param {bool} $disabled Does an email is disabled programmatically. By default it is false.
|
||||
* @param {string} $email Email address for sending.
|
||||
* @param {string} $template Email template key.
|
||||
* @param {array} $args Arguments for sending email.
|
||||
*
|
||||
* @return {bool} `true` if email is disabled programmatically.
|
||||
*/
|
||||
$hook_disabled = apply_filters( 'um_disable_email_notification_sending', false, $email, $template, $args );
|
||||
if ( false !== $hook_disabled ) {
|
||||
return;
|
||||
}
|
||||
|
||||
do_action( 'um_before_email_notification_sending', $email, $template, $args );
|
||||
|
||||
$this->attachments = array();
|
||||
$this->headers = 'From: '. stripslashes( UM()->options()->get('mail_from') ) .' <'. UM()->options()->get('mail_from_addr') .'>' . "\r\n";
|
||||
$this->headers = 'From: ' . stripslashes( UM()->options()->get( 'mail_from' ) ) . ' <' . UM()->options()->get( 'mail_from_addr' ) . '>' . "\r\n";
|
||||
|
||||
add_filter( 'um_template_tags_patterns_hook', array( UM()->mail(), 'add_placeholder' ), 10, 1 );
|
||||
add_filter( 'um_template_tags_replaces_hook', array( UM()->mail(), 'add_replace_placeholder' ), 10, 1 );
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
@@ -432,15 +462,10 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
|
||||
add_filter( 'um_template_tags_patterns_hook', array( UM()->mail(), 'add_placeholder' ), 10, 1 );
|
||||
add_filter( 'um_template_tags_replaces_hook', array( UM()->mail(), 'add_replace_placeholder' ), 10, 1 );
|
||||
|
||||
$subject = apply_filters( 'um_email_send_subject', UM()->options()->get( $template . '_sub' ), $template );
|
||||
$subject = wp_unslash( um_convert_tags( $subject, $args ) );
|
||||
|
||||
$subject = wp_unslash( um_convert_tags( $subject , $args ) );
|
||||
|
||||
$this->subject = html_entity_decode( $subject, ENT_QUOTES, 'UTF-8' );
|
||||
$this->subject = html_entity_decode( $subject, ENT_QUOTES, 'UTF-8' );
|
||||
|
||||
$this->message = $this->prepare_template( $template, $args );
|
||||
|
||||
@@ -456,13 +481,12 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
do_action( 'um_after_email_notification_sending', $email, $template, $args );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $template_name
|
||||
*
|
||||
* @return mixed|void
|
||||
*/
|
||||
function get_template_filename( $template_name ) {
|
||||
public function get_template_filename( $template_name ) {
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
@@ -487,7 +511,6 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
return apply_filters( 'um_change_email_template_file', $template_name );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Locate a template and return the path for inclusion.
|
||||
*
|
||||
@@ -495,15 +518,17 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
* @param string $template_name
|
||||
* @return string
|
||||
*/
|
||||
function template_in_theme( $template_name ) {
|
||||
public function template_in_theme( $template_name ) {
|
||||
$template_name_file = $this->get_template_filename( $template_name );
|
||||
|
||||
$blog_id = $this->get_blog_id();
|
||||
|
||||
// check if there is template at theme blog ID folder
|
||||
$template = locate_template( array(
|
||||
trailingslashit( 'ultimate-member/email' . $blog_id ) . $template_name_file . '.php'
|
||||
) );
|
||||
// check if there is a template at theme blog ID folder
|
||||
$template = locate_template(
|
||||
array(
|
||||
trailingslashit( 'ultimate-member/email' . $blog_id ) . $template_name_file . '.php',
|
||||
)
|
||||
);
|
||||
|
||||
// Return what we found.
|
||||
if ( get_template_directory() === get_stylesheet_directory() ) {
|
||||
@@ -513,9 +538,8 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Method returns expected path for template
|
||||
* Method returns an expected path for template
|
||||
*
|
||||
* @access public
|
||||
*
|
||||
@@ -524,34 +548,45 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function get_template_file( $location, $template_name ) {
|
||||
$template_path = '';
|
||||
public function get_template_file( $location, $template_name ) {
|
||||
$template_path = '';
|
||||
$template_name_file = $this->get_template_filename( $template_name );
|
||||
|
||||
switch( $location ) {
|
||||
switch ( $location ) {
|
||||
case 'theme':
|
||||
//save email template in blog ID folder if we use multisite
|
||||
$blog_id = $this->get_blog_id();
|
||||
|
||||
$template_path = trailingslashit( get_stylesheet_directory() . '/ultimate-member/email' . $blog_id ). $template_name_file . '.php';
|
||||
$template_path = trailingslashit( get_stylesheet_directory() . '/ultimate-member/email' . $blog_id ) . $template_name_file . '.php';
|
||||
break;
|
||||
case 'plugin':
|
||||
$path = ! empty( $this->path_by_slug[ $template_name ] ) ? $this->path_by_slug[ $template_name ] : um_path . 'templates/email';
|
||||
$path = ! empty( $this->path_by_slug[ $template_name ] ) ? $this->path_by_slug[ $template_name ] : um_path . 'templates/email';
|
||||
$template_path = trailingslashit( $path ) . $template_name . '.php';
|
||||
break;
|
||||
}
|
||||
|
||||
return $template_path;
|
||||
/**
|
||||
* Filters an expected path for email template in theme or plugin.
|
||||
*
|
||||
* @since 2.6.1
|
||||
* @hook um_email_get_template_file_path
|
||||
*
|
||||
* @param {string} $template_path Expected template path.
|
||||
* @param {string} $location Where to search 'theme||plugin'.
|
||||
* @param {string} $template_name_file Expected filename.
|
||||
*
|
||||
* @return {string} Expected template path.
|
||||
*/
|
||||
return apply_filters( 'um_email_get_template_file_path', $template_path, $location, $template_name_file );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ajax copy template to the theme
|
||||
* Copy template to the theme
|
||||
*
|
||||
* @param string $template
|
||||
* @return bool
|
||||
*/
|
||||
function copy_email_template( $template ) {
|
||||
public function copy_email_template( $template ) {
|
||||
$in_theme = $this->template_in_theme( $template );
|
||||
if ( $in_theme ) {
|
||||
return false;
|
||||
@@ -574,7 +609,6 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UM Placeholders for site url, admin email, submit registration
|
||||
*
|
||||
@@ -582,7 +616,7 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function add_placeholder( $placeholders ) {
|
||||
public function add_placeholder( $placeholders ) {
|
||||
$placeholders[] = '{user_profile_link}';
|
||||
$placeholders[] = '{site_url}';
|
||||
$placeholders[] = '{admin_email}';
|
||||
@@ -593,7 +627,6 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
return $placeholders;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UM Replace Placeholders for site url, admin email, submit registration
|
||||
*
|
||||
@@ -601,7 +634,7 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function add_replace_placeholder( $replace_placeholders ) {
|
||||
public function add_replace_placeholder( $replace_placeholders ) {
|
||||
$replace_placeholders[] = um_user_profile_url();
|
||||
$replace_placeholders[] = get_bloginfo( 'url' );
|
||||
$replace_placeholders[] = um_admin_email();
|
||||
|
||||
@@ -634,13 +634,16 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
|
||||
if ( isset( $_GET[ 'filter_' . $attrs['parent_dropdown_relationship'] . '_' . $unique_hash ] ) ) {
|
||||
$_POST['parent_option_name'] = $attrs['parent_dropdown_relationship'];
|
||||
$_POST['parent_option'] = explode( '||', filter_input( INPUT_GET, 'filter_' . $attrs['parent_dropdown_relationship'] . '_' . $unique_hash ) );
|
||||
|
||||
$parent_option_value = sanitize_text_field( $_GET[ 'filter_' . $attrs['parent_dropdown_relationship'] . '_' . $unique_hash ] );
|
||||
$_POST['parent_option'] = explode( '||', $parent_option_value );
|
||||
}
|
||||
}
|
||||
|
||||
$attrs['custom_dropdown_options_source'] = wp_unslash( $attrs['custom_dropdown_options_source'] );
|
||||
|
||||
$ajax_source = apply_filters( "um_custom_dropdown_options_source__{$filter}", $attrs['custom_dropdown_options_source'], $attrs );
|
||||
|
||||
$custom_dropdown .= ' data-um-ajax-source="' . esc_attr( $ajax_source ) . '" ';
|
||||
|
||||
$attrs['options'] = UM()->fields()->get_options_from_callback( $attrs, $attrs['type'] );
|
||||
|
||||
@@ -31,6 +31,11 @@ if ( ! class_exists( 'um\core\Profile' ) ) {
|
||||
*/
|
||||
var $active_tab;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $active_subnav = null;
|
||||
|
||||
|
||||
/**
|
||||
* Profile constructor.
|
||||
|
||||
@@ -1,30 +1,62 @@
|
||||
<?php
|
||||
namespace um\core;
|
||||
|
||||
// Exit if accessed directly
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
|
||||
|
||||
/**
|
||||
* Class Shortcodes
|
||||
* @package um\core
|
||||
*/
|
||||
class Shortcodes {
|
||||
|
||||
var $profile_role = '';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $profile_role = '';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $message_mode = false;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $custom_message = '';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $loop = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $emoji = array();
|
||||
|
||||
/**
|
||||
* @var null|int
|
||||
*/
|
||||
public $form_id = null;
|
||||
|
||||
/**
|
||||
* @var null|string
|
||||
*/
|
||||
public $form_status = null;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $set_args = array();
|
||||
|
||||
/**
|
||||
* Shortcodes constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
|
||||
$this->message_mode = false;
|
||||
$this->custom_message = '';
|
||||
|
||||
$this->loop = array();
|
||||
|
||||
public function __construct() {
|
||||
add_shortcode( 'ultimatemember', array( &$this, 'ultimatemember' ) );
|
||||
|
||||
add_shortcode( 'ultimatemember_login', array( &$this, 'ultimatemember_login' ) );
|
||||
@@ -123,10 +155,8 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
$this->emoji[':innocent:'] = $base_uri . '72x72/1f607.png';
|
||||
$this->emoji[':smirk:'] = $base_uri . '72x72/1f60f.png';
|
||||
$this->emoji[':expressionless:'] = $base_uri . '72x72/1f611.png';
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Conditional logout form
|
||||
*
|
||||
@@ -430,11 +460,11 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
$args = ! empty( $args ) ? $args : array();
|
||||
|
||||
$default_login = $wpdb->get_var(
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
LEFT JOIN {$wpdb->postmeta} pm2 ON( pm.post_id = pm2.post_id AND pm2.meta_key = '_um_is_default' )
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'login' AND
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'login' AND
|
||||
pm2.meta_value = '1'"
|
||||
);
|
||||
|
||||
@@ -463,11 +493,11 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
$args = ! empty( $args ) ? $args : array();
|
||||
|
||||
$default_register = $wpdb->get_var(
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
LEFT JOIN {$wpdb->postmeta} pm2 ON( pm.post_id = pm2.post_id AND pm2.meta_key = '_um_is_default' )
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'register' AND
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'register' AND
|
||||
pm2.meta_value = '1'"
|
||||
);
|
||||
|
||||
@@ -496,11 +526,11 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
$args = ! empty( $args ) ? $args : array();
|
||||
|
||||
$default_profile = $wpdb->get_var(
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
LEFT JOIN {$wpdb->postmeta} pm2 ON( pm.post_id = pm2.post_id AND pm2.meta_key = '_um_is_default' )
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'profile' AND
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'profile' AND
|
||||
pm2.meta_value = '1'"
|
||||
);
|
||||
|
||||
@@ -530,11 +560,11 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
$args = ! empty( $args ) ? $args : array();
|
||||
|
||||
$default_directory = $wpdb->get_var(
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
"SELECT pm.post_id
|
||||
FROM {$wpdb->postmeta} pm
|
||||
LEFT JOIN {$wpdb->postmeta} pm2 ON( pm.post_id = pm2.post_id AND pm2.meta_key = '_um_is_default' )
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'directory' AND
|
||||
WHERE pm.meta_key = '_um_mode' AND
|
||||
pm.meta_value = 'directory' AND
|
||||
pm2.meta_value = '1'"
|
||||
);
|
||||
|
||||
@@ -691,6 +721,10 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! is_user_logged_in() && isset( $args['is_block'] ) && 1 === (int) $args['is_block'] && 'profile' === $mode ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// for profiles only
|
||||
if ( $mode == 'profile' && um_profile_id() ) {
|
||||
|
||||
|
||||
@@ -22,35 +22,86 @@ if ( ! class_exists( 'um\core\User' ) ) {
|
||||
*/
|
||||
public $previous_data = null;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $id = 0;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $usermeta = null;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $data = null;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $profile = null;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $cannot_edit = null;
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $deleted_user_id = null;
|
||||
|
||||
/**
|
||||
* @var array|string[]
|
||||
*/
|
||||
public $banned_keys = array();
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $preview = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $send_mail_on_delete = true;
|
||||
|
||||
/**
|
||||
* A list of keys that should never be in wp_usermeta.
|
||||
* @var array|string[]
|
||||
*/
|
||||
public $update_user_keys = array();
|
||||
|
||||
/**
|
||||
* @var null
|
||||
*/
|
||||
public $target_id = null;
|
||||
|
||||
/**
|
||||
* User constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
|
||||
$this->id = 0;
|
||||
$this->usermeta = null;
|
||||
$this->data = null;
|
||||
$this->profile = null;
|
||||
$this->cannot_edit = null;
|
||||
$this->deleted_user_id = null;
|
||||
|
||||
public function __construct() {
|
||||
global $wpdb;
|
||||
|
||||
$this->banned_keys = array(
|
||||
'metabox','postbox','meta-box',
|
||||
'dismissed_wp_pointers', 'session_tokens',
|
||||
'screen_layout', 'wp_user-', 'dismissed',
|
||||
'cap_key', $wpdb->get_blog_prefix(). 'capabilities',
|
||||
'managenav', 'nav_menu', 'user_activation_key',
|
||||
'level_', $wpdb->get_blog_prefix() . 'user_level'
|
||||
'metabox',
|
||||
'postbox',
|
||||
'meta-box',
|
||||
'dismissed_wp_pointers',
|
||||
'session_tokens',
|
||||
'screen_layout',
|
||||
'wp_user-',
|
||||
'dismissed',
|
||||
'cap_key',
|
||||
$wpdb->get_blog_prefix() . 'capabilities',
|
||||
'managenav',
|
||||
'nav_menu',
|
||||
'user_activation_key',
|
||||
'level_',
|
||||
$wpdb->get_blog_prefix() . 'user_level',
|
||||
);
|
||||
|
||||
add_action( 'init', array( &$this, 'set' ), 1 );
|
||||
|
||||
$this->preview = false;
|
||||
$this->send_mail_on_delete = true;
|
||||
|
||||
// a list of keys that should never be in wp_usermeta
|
||||
$this->update_user_keys = array(
|
||||
'user_email',
|
||||
@@ -61,7 +112,7 @@ if ( ! class_exists( 'um\core\User' ) ) {
|
||||
'role',
|
||||
);
|
||||
|
||||
$this->target_id = null;
|
||||
add_action( 'init', array( &$this, 'set' ), 1 );
|
||||
|
||||
// When the cache should be cleared
|
||||
add_action( 'um_delete_user', array( &$this, 'remove_cache' ), 10, 1 );
|
||||
@@ -88,7 +139,6 @@ if ( ! class_exists( 'um\core\User' ) ) {
|
||||
add_action( 'user_register', array( &$this, 'user_register_via_admin' ), 10, 1 );
|
||||
add_action( 'user_register', array( &$this, 'set_gravatar' ), 11, 1 );
|
||||
|
||||
|
||||
if ( is_multisite() ) {
|
||||
add_action( 'added_existing_user', array( &$this, 'add_um_role_existing_user' ), 10, 2 );
|
||||
add_action( 'wpmu_activate_user', array( &$this, 'add_um_role_wpmu_new_user' ), 10, 1 );
|
||||
@@ -102,13 +152,11 @@ if ( ! class_exists( 'um\core\User' ) ) {
|
||||
add_action( 'delete_user', array( &$this, 'delete_user_handler' ), 10, 1 );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'updated_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
||||
add_action( 'added_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
||||
|
||||
add_action( 'deleted_user_meta', array( &$this, 'on_delete_usermeta' ), 10, 4 );
|
||||
|
||||
|
||||
add_action( 'update_user_meta', array( &$this, 'flush_um_count_users_transient_update' ), 10, 4 );
|
||||
add_action( 'added_user_meta', array( &$this, 'flush_um_count_users_transient_add' ), 10, 4 );
|
||||
add_action( 'delete_user_meta', array( &$this, 'flush_um_count_users_transient_delete' ), 10, 4 );
|
||||
|
||||
@@ -13,16 +13,25 @@ if ( ! class_exists( 'um\core\Validation' ) ) {
|
||||
*/
|
||||
class Validation {
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $regex_safe = '/\A[\w\-\.]+\z/';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $regex_username_safe = '|[^a-z0-9 _.\-@]|i';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $regex_phone_number = '/\A[\d\-\.\+\(\)\ ]+\z/';
|
||||
|
||||
/**
|
||||
* Validation constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
$this->regex_safe = '/\A[\w\-\.]+\z/';
|
||||
$this->regex_username_safe = '|[^a-z0-9 _.\-@]|i';
|
||||
$this->regex_phone_number = '/\A[\d\-\.\+\(\)\ ]+\z/';
|
||||
|
||||
|
||||
public function __construct() {
|
||||
add_filter( 'um_user_pre_updating_files_array', array( $this, 'validate_files' ), 10, 1 );
|
||||
add_filter( 'um_before_save_filter_submitted', array( $this, 'validate_fields_values' ), 10, 2 );
|
||||
}
|
||||
@@ -91,7 +100,7 @@ if ( ! class_exists( 'um\core\Validation' ) ) {
|
||||
}
|
||||
|
||||
// Dropdown options source from callback function
|
||||
if ( in_array( $fields[ $key ]['type'], array( 'select','multiselect' ) ) &&
|
||||
if ( in_array( $fields[ $key ]['type'], array( 'select','multiselect' ) ) &&
|
||||
isset( $fields[ $key ]['custom_dropdown_options_source'] ) &&
|
||||
! empty( $fields[ $key ]['custom_dropdown_options_source'] ) &&
|
||||
function_exists( $fields[ $key ]['custom_dropdown_options_source'] ) ) {
|
||||
@@ -100,7 +109,7 @@ if ( ! class_exists( 'um\core\Validation' ) ) {
|
||||
$fields[ $key ]['options'] = array_keys( $arr_options );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Unset changed value that doesn't match the option list
|
||||
if ( in_array( $fields[ $key ]['type'], array( 'select' ) ) &&
|
||||
! empty( $stripslashes ) && ! empty( $fields[ $key ]['options'] ) &&
|
||||
@@ -297,10 +306,10 @@ if ( ! class_exists( 'um\core\Validation' ) ) {
|
||||
if ( ! $string ) {
|
||||
return true;
|
||||
}
|
||||
if ( substr_count( $string, '#' ) > 1 ) {
|
||||
if ( strlen( $string ) < 2 || strlen( $string ) > 31 ) {
|
||||
return false;
|
||||
}
|
||||
if ( ! preg_match( '/^(.+)#(\d+)$/', trim( $string ) ) ) {
|
||||
if ( ! preg_match( '/^[a-z\d_]+(?:\.[a-z\d_]+)*(\.[a-z]*)?$/', trim( $string ) ) ) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -593,20 +593,20 @@ function um_after_account_privacy( $args ) {
|
||||
<div class="um-clear"></div>
|
||||
</div>
|
||||
<?php $completed = $wpdb->get_row(
|
||||
"SELECT ID
|
||||
FROM $wpdb->posts
|
||||
WHERE post_author = $user_id AND
|
||||
post_type = 'user_request' AND
|
||||
post_name = 'export_personal_data' AND
|
||||
post_status = 'request-completed'
|
||||
ORDER BY ID DESC
|
||||
"SELECT ID
|
||||
FROM $wpdb->posts
|
||||
WHERE post_author = $user_id AND
|
||||
post_type = 'user_request' AND
|
||||
post_name = 'export_personal_data' AND
|
||||
post_status = 'request-completed'
|
||||
ORDER BY ID DESC
|
||||
LIMIT 1",
|
||||
ARRAY_A );
|
||||
|
||||
if ( ! empty( $completed ) ) {
|
||||
|
||||
|
||||
$exports_url = wp_privacy_exports_url();
|
||||
|
||||
|
||||
echo '<p>' . esc_html__( 'You could download your previous data:', 'ultimate-member' ) . '</p>';
|
||||
echo '<a href="'.esc_attr( $exports_url . get_post_meta( $completed['ID'], '_export_file_name', true ) ) . '">' . esc_html__( 'Download Personal Data', 'ultimate-member' ) . '</a>';
|
||||
echo '<p>' . esc_html__( 'You could send a new request for an export of personal your data.', 'ultimate-member' ) . '</p>';
|
||||
@@ -614,13 +614,13 @@ function um_after_account_privacy( $args ) {
|
||||
}
|
||||
|
||||
$pending = $wpdb->get_row(
|
||||
"SELECT ID, post_status
|
||||
FROM $wpdb->posts
|
||||
WHERE post_author = $user_id AND
|
||||
post_type = 'user_request' AND
|
||||
post_name = 'export_personal_data' AND
|
||||
post_status != 'request-completed'
|
||||
ORDER BY ID DESC
|
||||
"SELECT ID, post_status
|
||||
FROM $wpdb->posts
|
||||
WHERE post_author = $user_id AND
|
||||
post_type = 'user_request' AND
|
||||
post_name = 'export_personal_data' AND
|
||||
post_status != 'request-completed'
|
||||
ORDER BY ID DESC
|
||||
LIMIT 1",
|
||||
ARRAY_A );
|
||||
|
||||
@@ -670,13 +670,13 @@ function um_after_account_privacy( $args ) {
|
||||
</div>
|
||||
|
||||
<?php $completed = $wpdb->get_row(
|
||||
"SELECT ID
|
||||
FROM $wpdb->posts
|
||||
WHERE post_author = $user_id AND
|
||||
post_type = 'user_request' AND
|
||||
post_name = 'remove_personal_data' AND
|
||||
post_status = 'request-completed'
|
||||
ORDER BY ID DESC
|
||||
"SELECT ID
|
||||
FROM $wpdb->posts
|
||||
WHERE post_author = $user_id AND
|
||||
post_type = 'user_request' AND
|
||||
post_name = 'remove_personal_data' AND
|
||||
post_status = 'request-completed'
|
||||
ORDER BY ID DESC
|
||||
LIMIT 1",
|
||||
ARRAY_A );
|
||||
|
||||
@@ -688,13 +688,13 @@ function um_after_account_privacy( $args ) {
|
||||
}
|
||||
|
||||
$pending = $wpdb->get_row(
|
||||
"SELECT ID, post_status
|
||||
FROM $wpdb->posts
|
||||
WHERE post_author = $user_id AND
|
||||
post_type = 'user_request' AND
|
||||
post_name = 'remove_personal_data' AND
|
||||
post_status != 'request-completed'
|
||||
ORDER BY ID DESC
|
||||
"SELECT ID, post_status
|
||||
FROM $wpdb->posts
|
||||
WHERE post_author = $user_id AND
|
||||
post_type = 'user_request' AND
|
||||
post_name = 'remove_personal_data' AND
|
||||
post_status != 'request-completed'
|
||||
ORDER BY ID DESC
|
||||
LIMIT 1",
|
||||
ARRAY_A );
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ function um_submit_form_errors_hook_login( $args ) {
|
||||
if ( ! empty( $third_party_codes ) && in_array( $user->get_error_code(), $third_party_codes ) ) {
|
||||
UM()->form()->add_error( $user->get_error_code(), $user->get_error_message() );
|
||||
} else {
|
||||
UM()->form()->add_error( $user->get_error_code(), __( 'Password is incorrect. Please try again.', 'ultimate-member' ) );
|
||||
UM()->form()->add_error( 'user_password', __( 'Password is incorrect. Please try again.', 'ultimate-member' ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ function um_submit_form_errors_hook_login( $args ) {
|
||||
if ( ! empty( $third_party_codes ) && in_array( $user->get_error_code(), $third_party_codes ) ) {
|
||||
UM()->form()->add_error( $user->get_error_code(), $user->get_error_message() );
|
||||
} else {
|
||||
UM()->form()->add_error( $user->get_error_code(), __( 'Password is incorrect. Please try again.', 'ultimate-member' ) );
|
||||
UM()->form()->add_error( 'user_password', __( 'Password is incorrect. Please try again.', 'ultimate-member' ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ function um_dynamic_user_profile_title( $title, $id = '' ) {
|
||||
return $title;
|
||||
}
|
||||
|
||||
return ( strlen( $title ) !== mb_strlen( $title ) ) ? $title : utf8_encode( $title );
|
||||
return ( strlen( $title ) !== mb_strlen( $title ) ) ? $title : mb_convert_encoding( $title, 'UTF-8' );
|
||||
}
|
||||
add_filter( 'the_title', 'um_dynamic_user_profile_title', 100000, 2 );
|
||||
|
||||
|
||||
@@ -671,10 +671,10 @@ function um_get_snippet( $str, $wordCount = 10 ) {
|
||||
|
||||
/**
|
||||
* Format submitted data for Info preview & Email template
|
||||
* @param boolean $style
|
||||
* @param boolean $style
|
||||
* @return string
|
||||
*
|
||||
* @since 2.1.4
|
||||
* @since 2.1.4
|
||||
*/
|
||||
function um_user_submitted_registration_formatted( $style = false ) {
|
||||
$output = null;
|
||||
@@ -839,7 +839,7 @@ function um_user_submitted_registration_formatted( $style = false ) {
|
||||
* @param boolean $style
|
||||
* @return string
|
||||
*
|
||||
* @since 2.1.4
|
||||
* @since 2.1.4
|
||||
*/
|
||||
function um_user_submited_display( $k, $title, $data = array(), $style = true ) {
|
||||
$output = '';
|
||||
@@ -1142,8 +1142,8 @@ function um_is_file_owner( $url, $user_id = null, $image_path = false ) {
|
||||
|
||||
/**
|
||||
* Check if file is temporary
|
||||
* @param string $filename
|
||||
* @return bool
|
||||
* @param string $filename
|
||||
* @return bool
|
||||
*/
|
||||
function um_is_temp_file( $filename ) {
|
||||
$user_basedir = UM()->uploader()->get_upload_user_base_dir( 'temp' );
|
||||
@@ -2503,7 +2503,7 @@ function um_user( $data, $attrs = null ) {
|
||||
case 'profile_photo':
|
||||
$data = um_get_user_avatar_data( um_user( 'ID' ), $attrs );
|
||||
|
||||
return sprintf( '<img src="%s" class="%s" width="%s" height="%s" alt="%s" data-default="%s" onerror="%s" />',
|
||||
return sprintf( '<img src="%s" class="%s" width="%s" height="%s" alt="%s" data-default="%s" onerror="%s" loading="lazy" />',
|
||||
esc_attr( $data['url'] ),
|
||||
esc_attr( $data['class'] ),
|
||||
esc_attr( $data['size'] ),
|
||||
@@ -2553,7 +2553,7 @@ function um_user( $data, $attrs = null ) {
|
||||
|
||||
$alt = um_profile( 'nickname' );
|
||||
|
||||
$cover_html = $cover_uri ? '<img src="' . esc_attr( $cover_uri ) . '" alt="' . esc_attr( $alt ) . '" />' : '';
|
||||
$cover_html = $cover_uri ? '<img src="' . esc_attr( $cover_uri ) . '" alt="' . esc_attr( $alt ) . '" loading="lazy" />' : '';
|
||||
|
||||
$cover_html = apply_filters( 'um_user_cover_photo_html__filter', $cover_html, $cover_uri, $alt, $is_default, $attrs );
|
||||
return $cover_html;
|
||||
|
||||
+17
-3
@@ -17,7 +17,13 @@
|
||||
}
|
||||
],
|
||||
"scripts": {
|
||||
"postinstall": "node node_modules/bower/bin/bower install && grunt dev"
|
||||
"postinstall": "node node_modules/bower/bin/bower install && grunt dev",
|
||||
"build": "npm-run-all build:*",
|
||||
"build:all-blocks": "npm-run-all --parallel build-block-*",
|
||||
"build-block-um-member-directories": "cd includes/blocks/um-member-directories && wp-scripts build src/index.js",
|
||||
"build-block-um-forms": "cd includes/blocks/um-forms && wp-scripts build src/index.js",
|
||||
"build-block-um-password-reset": "cd includes/blocks/um-password-reset && wp-scripts build src/index.js",
|
||||
"build-block-um-account": "cd includes/blocks/um-account && wp-scripts build src/index.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.10.0"
|
||||
@@ -27,10 +33,18 @@
|
||||
"gulp-cli": "^2.3.0",
|
||||
"gulp-concat": "2.6.1",
|
||||
"gulp-rename": "^2.0.0",
|
||||
"gulp-sass": "^4.1.0",
|
||||
"gulp-sass": "^5.1.0",
|
||||
"gulp-uglify": "^3.0.2",
|
||||
"gulp-clean-css": "^4.3.0"
|
||||
"gulp-clean-css": "^4.3.0",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"@wordpress/block-editor": "^11.5.0",
|
||||
"@wordpress/blocks": "^12.5.0",
|
||||
"@wordpress/components": "^23.5.0",
|
||||
"@wordpress/i18n": "^4.28.0",
|
||||
"@wordpress/scripts": "^25.5.1",
|
||||
"@wordpress/server-side-render": "^4.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "^18.2.0"
|
||||
}
|
||||
}
|
||||
|
||||
+53
-27
@@ -2,12 +2,12 @@
|
||||
Author URI: https://ultimatemember.com/
|
||||
Plugin URI: https://ultimatemember.com/
|
||||
Contributors: ultimatemember, champsupertramp, nsinelnikov
|
||||
Donate link:
|
||||
Donate link:
|
||||
Tags: community, member, membership, user-profile, user-registration
|
||||
Requires PHP: 5.6
|
||||
Requires at least: 5.0
|
||||
Requires at least: 5.5
|
||||
Tested up to: 6.2
|
||||
Stable tag: 2.6.0
|
||||
Stable tag: 2.6.1
|
||||
License: GNU Version 2 or Any Later Version
|
||||
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
||||
|
||||
@@ -119,7 +119,7 @@ No, we have built Ultimate Member to be extremely easy to use and does not requi
|
||||
|
||||
= Is Ultimate Member mobile responsive? =
|
||||
|
||||
Yes. Ultimate Member is designed to adapt nicely to any screen resolution. It includes specific designs for phones, tablets and desktops.
|
||||
Yes. Ultimate Member is designed to adapt nicely to any screen resolution. It includes specific designs for phones, tablets and desktops.
|
||||
|
||||
= Is Ultimate Member multi-site compatible? =
|
||||
|
||||
@@ -131,7 +131,7 @@ Yes. Ultimate Member will work with any properly coded theme. However, some them
|
||||
|
||||
= Does the plugin work with caching plugins? =
|
||||
|
||||
The plugin works with popular caching plugins by automatically excluding Ultimate Member pages from being cached. This ensures other visitors to a page will not see the private information of another user. However, if you add features of Ultimate Member to other pages you have to exclude those pages from being cached through your cache plugin settings panel.
|
||||
The plugin works with popular caching plugins by automatically excluding Ultimate Member pages from being cached. This ensures other visitors to a page will not see the private information of another user. However, if you add features of Ultimate Member to other pages you have to exclude those pages from being cached through your cache plugin settings panel.
|
||||
|
||||
= Does Ultimate Member restrict access to wp-login.php when the plugin is active? =
|
||||
|
||||
@@ -163,6 +163,32 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* To learn more about version 2.1 please see this [docs](https://docs.ultimatemember.com/article/1512-upgrade-2-1-0)
|
||||
* 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
|
||||
|
||||
= 2.6.1: May 25, 2023 =
|
||||
|
||||
* Enhancements:
|
||||
|
||||
- Added: Override templates versioning utility for wp-admin
|
||||
- Added: Style and class attributes to `info_text` field type in settings
|
||||
- Added: Emails to install info
|
||||
- Added: 'um_email_get_template_file_path' hook
|
||||
- Added: Merging data passed with original field data when `edit_field()` function running
|
||||
- Added: loading="lazy" for avatars and cover photos
|
||||
- Tweak: Changed Discord account validation
|
||||
- Tweak: Changes the structure for the Gutenberg blocks' scripts and way of registration
|
||||
- Tweak: Removed `filter_input` function using
|
||||
|
||||
* Bugfixes:
|
||||
|
||||
- Fixed: Removed the hidden in UI taxonomies from the Access > Enable the "Content Restriction" settings for taxonomies setting
|
||||
- Fixed: Dynamically declared variables inside the classes for PHP8 installations
|
||||
- Fixed: Added wpnonce attribute for duplicate UM Form link
|
||||
- Fixed: Sanitize restriction messages when Gutenberg block is restricted
|
||||
- Fixed: Login form error class vulnerability
|
||||
|
||||
* All templates required update. Please add the version comments to your custom templates in themes
|
||||
|
||||
* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade
|
||||
|
||||
= 2.6.0: March 29, 2023 =
|
||||
|
||||
* Enhancements:
|
||||
@@ -1494,7 +1520,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
- Add class for member tagline in directory grid `um-member-tagline-<field key>`
|
||||
- Add recaptcha support and submit button id
|
||||
- Update extensions page layout
|
||||
|
||||
|
||||
* Bugfixes:
|
||||
- Fix Conditional Logic fields
|
||||
- Fix required field with specific roles in privacy
|
||||
@@ -1510,7 +1536,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Enhancements:
|
||||
- Update readme.txt
|
||||
|
||||
|
||||
|
||||
= 1.3.85: June 19, 2017 =
|
||||
|
||||
@@ -1540,12 +1566,12 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Fix png image upload with transparency
|
||||
* Fix extra slashes in form edit view when invalid input fields occur
|
||||
* Remove notices
|
||||
|
||||
|
||||
|
||||
|
||||
= 1.3.84: April 18, 2017 =
|
||||
|
||||
* Enhancements:
|
||||
* Adds new action hooks before and after WP_User_Query.
|
||||
* Adds new action hooks before and after WP_User_Query.
|
||||
* `um_user_before_query`
|
||||
* `um_user_after_query`
|
||||
* Adds a dismiss link in locale / language translation notices
|
||||
@@ -1561,7 +1587,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Bugfixes
|
||||
* Fix image url cache filter
|
||||
* Fix PHP 7.1+ compatibility issues
|
||||
* Fix PHP 7.1+ compatibility issues
|
||||
* Fix UTF8 encoding in form fields
|
||||
* Fix hide member directory option.
|
||||
* Fix conditional logic fields.
|
||||
@@ -1576,7 +1602,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Enhancements:
|
||||
* Adds user avatar's alternate text. The default text is set to `display_name`
|
||||
* Adds new filter hook to modif the user avatar's alternate text.
|
||||
* Adds new filter hook to modif the user avatar's alternate text.
|
||||
* `um_avatar_image_alternate_text`
|
||||
* Set gravatar for newly registered users
|
||||
* Adds Tag archive page access settings
|
||||
@@ -1674,11 +1700,11 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Bugfixes:
|
||||
* Fix 'Invalid user ID' on profile update
|
||||
|
||||
|
||||
= 1.3.74: November 29, 2016 =
|
||||
|
||||
* Enhancements:
|
||||
* Improves clear users cache.
|
||||
* Improves clear users cache.
|
||||
* Removes user id from redirect URL on registration process for pending review and email activation statuses.
|
||||
|
||||
* Bugfixes:
|
||||
@@ -1723,10 +1749,10 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* Enhancements:
|
||||
* Improves the bulk filters, actions and redirection in `User Screens`
|
||||
* Adds new access options to disallow access on homepage and category pages.
|
||||
* Adds new access options to disallow access on homepage and category pages.
|
||||
* Adds Textarea to show in profile tagline on Member Directory
|
||||
* Adds a filter hook `um_allow_frontend_image_uploads` to allow profile and cover photo uploads on front-end pages.
|
||||
* Adds new filter hooks to modify image field data on upload:
|
||||
* Adds new filter hooks to modify image field data on upload:
|
||||
* `um_image_handle_global__option`
|
||||
* `um_image_handle_{$field}__option`
|
||||
* Adds a new filter hook to modify the redirection of non logged in users who visit the parent user page.
|
||||
@@ -1745,7 +1771,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Fixes a typo in Password Reset Email option's description
|
||||
* Fixes a bug where conditional fields 'equals to' validation on registration process
|
||||
* Fixes a bug to disable the query with hiding account on member directory
|
||||
* Fixes a bug to retrieve specific number of members
|
||||
* Fixes a bug to retrieve specific number of members
|
||||
* Fixes a bug to retrieve all members with `get_members` new parameter `number`
|
||||
* Fixes a typo in Welcome Email template.
|
||||
* Fixes a bug where login form redirection is set to `wp-admin/admin-ajax.php` instead of the current page when loaded via ajax.
|
||||
@@ -1754,20 +1780,20 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Fixes a bug where non-logged in users are not able to access the profile page when `Global Site Access` is set to `Site accessible to Logged In Users`.
|
||||
* Fixes a bug to modify the login redirection url especially when DOING_AJAX is defined.
|
||||
* Fixes a bug to retrieve correct community roles per site in a Multisite Network setup.
|
||||
|
||||
|
||||
= 1.3.71: September 12, 2016 =
|
||||
|
||||
* Enhancements:
|
||||
* Enhancements:
|
||||
* Adds a new filter hook to modify the `cover photo` uri.
|
||||
* `um_user_cover_photo_uri__filter`
|
||||
* Bugfixes:
|
||||
* Fixes a bug to allow users change their password in account form
|
||||
* Fixes a bug to allow role validation and assigning of roles to users on registration process
|
||||
* Fixes a bug to allow role validation and assigning of roles to users on registration process
|
||||
* Fixes a bug to avoid blank admin footer text all around WordPress
|
||||
|
||||
= 1.3.70: September 09, 2016 =
|
||||
|
||||
* Enhancements:
|
||||
* Enhancements:
|
||||
* Adds a new filter hook to modify the profile `cover photo` uri.
|
||||
* `um_user_cover_photo_uri__filter`
|
||||
* Bugfixes:
|
||||
@@ -1783,10 +1809,10 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* This improves the performance when loading profiles in directories. It generates profile slug on Profile Update ( front and back-end ), Registration Process and viewing the Users in the back-end.
|
||||
* Adds new filter hook `um_activate_url` to modify the account activation url.
|
||||
* Adds new filter hooks to modify first and last name cases
|
||||
* `um_user_first_name_case`
|
||||
* `um_user_first_name_case`
|
||||
* `um_user_last_name_case`
|
||||
* Adds new filter hooks to modify nonces of image and file uploads
|
||||
* `um_file_upload_nonce`
|
||||
* `um_file_upload_nonce`
|
||||
* `um_image_upload_nonce`
|
||||
* Improves search member filters and keyword sensitivity
|
||||
* Improves generation of profile slugs
|
||||
@@ -1913,13 +1939,13 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Fixed: select fields with accented characters
|
||||
* Fixed: select fields with accented text values
|
||||
* Fixed: select fields in overlay
|
||||
* Fixed: admin front-end access restriction
|
||||
* Fixed: admin front-end access restriction
|
||||
* Fixed: pages query
|
||||
|
||||
= 1.3.54: June 02, 2016 =
|
||||
* Fixed: remove quick edit from Built-in roles row actions
|
||||
* Fixed: remove notices
|
||||
* Fixed: dropdown/select fields
|
||||
* Fixed: dropdown/select fields
|
||||
* Fixed: upload file extension's case sensitive issue
|
||||
* Fixed: reset and change password
|
||||
|
||||
@@ -1954,7 +1980,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
* Added: option to force display name to be capitlized
|
||||
* Fixed: remove notices
|
||||
* Fixed: redirect url on login
|
||||
* Fixed: optimize query and object caching
|
||||
* Fixed: optimize query and object caching
|
||||
* Fixed: profile photo as required field
|
||||
* Fixed: admin access in front-end login
|
||||
* Fixed: typos in tooltips
|
||||
@@ -2442,7 +2468,7 @@ No, you do not need to use our plugin’s login or registration pages and can us
|
||||
|
||||
* New: user profiles are cached to speed up load time
|
||||
* New: emoji support added to bio / user descriptions
|
||||
* Fixed: issues with bio field HTML
|
||||
* Fixed: issues with bio field HTML
|
||||
* Fixed: WP-admin PHP warning
|
||||
* Fixed: bug with localization of en_US.po file
|
||||
|
||||
|
||||
+25
-9
@@ -1,11 +1,27 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the account page
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/account.php
|
||||
*
|
||||
* Page: "Account"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
<div class="um-form">
|
||||
|
||||
|
||||
<form method="post" action="">
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -46,7 +62,7 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="um-account-side uimob340-hide uimob500-hide">
|
||||
|
||||
<div class="um-account-meta radius-<?php echo esc_attr( UM()->options()->get( 'profile_photocorner' ) ); ?>">
|
||||
@@ -118,9 +134,9 @@
|
||||
} ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="um-account-main" data-current_tab="<?php echo esc_attr( UM()->account()->current_tab ); ?>">
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -164,11 +180,11 @@
|
||||
|
||||
<?php }
|
||||
} ?>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="um-clear"></div>
|
||||
</form>
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -191,4 +207,4 @@
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,37 +1,47 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Approved Email".
|
||||
* Whether to send the user an email when his account is approved.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/approved_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Thank you for signing up!<span style="display: block;">Your account is now approved.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{login_url}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Login to our site</a></div>
|
||||
|
||||
|
||||
<div style="padding: 0 0 15px 0;">
|
||||
|
||||
|
||||
<div style="background: #eee;color: #444;padding: 12px 15px; border-radius: 3px;font-weight: bold;font-size: 16px;">Account Information</div>
|
||||
|
||||
|
||||
<div style="padding: 10px 15px 0 15px;color: #333;"><span style="color:#999">Your account e-mail:</span> <span style="font-weight:bold">{email}</span></div>
|
||||
<div style="padding: 10px 15px 0 15px;color: #333;"><span style="color:#999">Your account username:</span> <span style="font-weight:bold">{username}</span></div>
|
||||
<div style="padding: 10px 15px 0 15px;color: #333;"><span style="color:#999">Set your password:</span> <span style="font-weight:bold"><a href="{password_reset_link}" style="color: #3ba1da;text-decoration: none;">{password_reset_link}</a></span></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,40 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Updated Email".
|
||||
* Whether to send the user an email when he updated their account.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/changedaccount_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">You recently updated your account.</div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{user_account_link}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Go to your Account</a></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If you did not make this change and believe your account has been compromised, please <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none;">contact us</a> ASAP.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,39 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Password Changed Email".
|
||||
* Whether to send the user an email when he requests to reset password (Recommended, please keep on).
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/changedpw_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">You recently changed the password associated with your account.</div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{user_account_link}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Go to your Account</a></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If you did not make this change and believe your account has been compromised, please <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none;">contact us</a> ASAP.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,39 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Activation Email".
|
||||
* Whether to send the user an email when his account needs e-mail activation.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/checkmail_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Thank you for signing up!<span style="display: block;">Please click the following link to activate your account.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{account_activation_link}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Activate your Account</a></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">Need help? <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none;">contact us</a> today.</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,26 +1,38 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Deleted Email".
|
||||
* Whether to send the user an email when his account is deleted.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/deletion_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Your account has been deleted.<span style="display: block;">All your personal details and any uploads have been permanently removed.</span></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If your account has been deleted by accident please <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none">contact us</a>.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,26 +1,37 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Deactivated Email".
|
||||
* Whether to send the user an email when his account is deactivated.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/inactive_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Your account is now deactivated.</div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If you want your account to be re-activated, please <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none">contact us</a>.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,25 +1,35 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Deletion Notification".
|
||||
* Whether to receive notification when an account is deleted.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/notification_deletion.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">{display_name} has just deleted their {site_name} account.</span></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,34 +1,45 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "New User Notification".
|
||||
* Whether to receive notification when a new user account is created.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/notification_new_user.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">{display_name} has just created an account on {site_name}.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;">To view their profile click here: <a href="{user_profile_link}" style="color: #3ba1da;text-decoration: none;">{user_profile_link}</a></div>
|
||||
|
||||
|
||||
<div style="padding: 0 0 15px 0;">
|
||||
|
||||
|
||||
<div style="background: #eee;color: #444;padding: 12px 15px; border-radius: 3px;font-weight: bold;font-size: 16px;">Here is the submitted registration form:<br /><br />
|
||||
{submitted_registration}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,34 +1,45 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Needs Review Notification".
|
||||
* Whether to receive notification when an account needs admin review.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/notification_review.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">{display_name} has just applied for membership to {site_name} and is waiting to be reviewed.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;">To review this member please click the following link: <a href="{user_profile_link}" style="color: #3ba1da;text-decoration: none;">{user_profile_link}</a></div>
|
||||
|
||||
|
||||
<div style="padding: 0 0 15px 0;">
|
||||
|
||||
|
||||
<div style="background: #eee;color: #444;padding: 12px 15px; border-radius: 3px;font-weight: bold;font-size: 16px;">Here is the submitted registration form:<br /><br />
|
||||
{submitted_registration}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,27 +1,38 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Your account is pending review".
|
||||
* Whether to send the user an email when his account needs admin review.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/pending_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Thank you for signing up!<span style="display: block;">Your account has to be manually reviewed.</span></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">Please allow us some time to process your request and review your information.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,26 +1,37 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Rejected Email".
|
||||
* Whether to send the user an email when his account is rejected.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/rejected_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Your registration request has been rejected.</div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">Please feel free to apply at a future date or <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none">contact us</a> If you want your information to be reviewed again.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,39 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Password Reset Email".
|
||||
* Whether to send an email when users changed their password.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/resetpw_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">We received a request to reset the password for your account. If you made this request, click the link below to change your password:</div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{password_reset_link}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Reset your password</a></div>
|
||||
|
||||
|
||||
<div style="padding: 15px;background: #eee;border-radius: 3px;text-align: center;">If you didn't make this request, ignore this email or <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none;">report it to us</a>.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,29 +1,40 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Template for the "Account Welcome Email".
|
||||
* Whether to send the user an email when his account is automatically approved.
|
||||
*
|
||||
* This template can be overridden by copying it to {your-theme}/ultimate-member/email/welcome_email.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div style="max-width: 560px;padding: 20px;background: #ffffff;border-radius: 5px;margin:40px auto;font-family: Open Sans,Helvetica,Arial;font-size: 15px;color: #666;">
|
||||
|
||||
<div style="color: #444444;font-weight: normal;">
|
||||
<div style="text-align: center;font-weight:600;font-size:26px;padding: 10px 0;border-bottom: solid 3px #eeeeee;">{site_name}</div>
|
||||
|
||||
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding: 0 30px 30px 30px;border-bottom: 3px solid #eeeeee;">
|
||||
|
||||
<div style="padding: 30px 0;font-size: 24px;text-align: center;line-height: 40px;">Thank you for signing up!<span style="display: block;">Your account is now active.</span></div>
|
||||
|
||||
<div style="padding: 10px 0 50px 0;text-align: center;"><a href="{login_url}" style="background: #555555;color: #fff;padding: 12px 30px;text-decoration: none;border-radius: 3px;letter-spacing: 0.3px;">Login to our site</a></div>
|
||||
|
||||
|
||||
<div style="padding:20px;">If you have any problems, please contact us at <a href="mailto:{admin_email}" style="color: #3ba1da;text-decoration: none">{admin_email}</a></div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div style="color: #999;padding: 20px 30px">
|
||||
|
||||
<div style="">Thank you!</div>
|
||||
<div style="">The <a href="{site_url}" style="color: #3ba1da;text-decoration: none;">{site_name}</a> Team</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the GDPR checkbox in register form
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/gdpr-register.php
|
||||
*
|
||||
* Page: "Register"
|
||||
* Call: function display_option()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var object $um_content_query
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
<!-- This file should primarily consist of HTML with a little bit of PHP. -->
|
||||
<div class="um-field um-field-type_terms_conditions" data-key="use_terms_conditions_agreement" style="display:block;padding:0;">
|
||||
@@ -48,4 +62,4 @@
|
||||
|
||||
<div class="um-clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,21 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the login only content, locked message
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/login-to-view.php
|
||||
*
|
||||
* Call: function um_loggedin()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $lock_text
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um-locked-content">
|
||||
|
||||
<div class="um-locked-content-msg"><?php echo htmlspecialchars_decode( $lock_text ); ?></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+18
-2
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the login form
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/login.php
|
||||
*
|
||||
* Page: "Login"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
@@ -137,4 +153,4 @@
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+23
-7
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the logout
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/logout.php
|
||||
*
|
||||
* Page: "Logout"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode, $args ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
@@ -11,9 +27,9 @@
|
||||
<?php echo get_avatar( um_user( 'ID' ), 80 ) ?>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div><strong><?php echo esc_html( um_user( 'display_name' ) ); ?></strong></div>
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -35,11 +51,11 @@
|
||||
* ?>
|
||||
*/
|
||||
do_action( 'um_logout_after_user_welcome', $args ); ?>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="um-misc-ul">
|
||||
|
||||
|
||||
<?php
|
||||
/**
|
||||
* UM hook
|
||||
@@ -61,7 +77,7 @@
|
||||
* ?>
|
||||
*/
|
||||
do_action( 'um_logout_user_links', $args ); ?>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,27 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory grid
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members-grid.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var array $args
|
||||
* @var bool $cover_photos
|
||||
* @var bool $profile_photo
|
||||
* @var bool $show_name
|
||||
* @var bool $show_tagline
|
||||
* @var bool $show_userinfo
|
||||
* @var bool $userinfo_animate
|
||||
* @var bool $show_social
|
||||
* @var array $reveal_fields
|
||||
* @var string $no_users
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$unique_hash = substr( md5( $args['form_id'] ), 10, 5 ); ?>
|
||||
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory header JS-template
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members-header.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<script type="text/template" id="tmpl-um-members-header">
|
||||
@@ -13,4 +25,4 @@
|
||||
</div>
|
||||
|
||||
<div class="um-clear"></div>
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -1,4 +1,25 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory list
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members-list.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var array $args
|
||||
* @var bool $cover_photos
|
||||
* @var bool $profile_photo
|
||||
* @var bool $show_name
|
||||
* @var bool $show_tagline
|
||||
* @var bool $show_userinfo
|
||||
* @var bool $userinfo_animate
|
||||
* @var bool $show_social
|
||||
* @var array $reveal_fields
|
||||
* @var string $no_users
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
$unique_hash = substr( md5( $args['form_id'] ), 10, 5 ); ?>
|
||||
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory pagination JS template
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members-pagination.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
<script type="text/template" id="tmpl-um-members-pagination">
|
||||
@@ -24,4 +36,4 @@
|
||||
<span class="pagi pagi-arrow <# if ( data.pagination.current_page == data.pagination.total_pages ) { #>disabled<# } #>" data-page="last" aria-label="<?php esc_attr_e( 'Last page', 'ultimate-member' ); ?>"><i class="um-faicon-angle-double-right"></i></span>
|
||||
</div>
|
||||
<# } #>
|
||||
</script>
|
||||
</script>
|
||||
|
||||
+20
-3
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the members directory
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/members.php
|
||||
*
|
||||
* Page: "Members"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
global $post;
|
||||
|
||||
@@ -208,10 +222,13 @@ if ( ( ( $search && $show_search ) || ( $filters && $show_filters && count( $sea
|
||||
}
|
||||
}
|
||||
}
|
||||
} ?>
|
||||
}
|
||||
|
||||
$postid = ! empty( $post->ID ) ? $post->ID : '';
|
||||
?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( substr( md5( $form_id ), 10, 5 ) ); ?>"
|
||||
data-hash="<?php echo esc_attr( substr( md5( $form_id ), 10, 5 ) ) ?>" data-base-post="<?php echo esc_attr( $post->ID ) ?>"
|
||||
data-hash="<?php echo esc_attr( substr( md5( $form_id ), 10, 5 ) ) ?>" data-base-post="<?php echo esc_attr( $postid ) ?>"
|
||||
data-must-search="<?php echo esc_attr( $must_search ); ?>" data-searched="<?php echo $not_searched ? '0' : '1'; ?>"
|
||||
data-view_type="<?php echo esc_attr( $current_view ) ?>" data-page="<?php echo esc_attr( $current_page ) ?>"
|
||||
data-sorting="<?php echo esc_attr( $sort_from_url ) ?>">
|
||||
|
||||
+17
-2
@@ -1,4 +1,19 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the message after registration process
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/message.php
|
||||
*
|
||||
* Call: function parse_shortcode_args()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
@@ -8,4 +23,4 @@
|
||||
printf( __( '%s', 'ultimate-member' ), $this->custom_message ); ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the modal form
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/modal/um_upload_single.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div id="um_upload_single" style="display:none"></div>
|
||||
<div id="um_upload_single" style="display:none"></div>
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the modal photo
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/modal/um_view_photo.php
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div id="um_view_photo" style="display:none">
|
||||
|
||||
@@ -11,4 +21,4 @@
|
||||
<div class="um-modal-photo"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,21 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the password change
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/password-change.php
|
||||
*
|
||||
* Call: function ultimatemember_password()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var string $rp_key
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
|
||||
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) {
|
||||
<?php
|
||||
/**
|
||||
* Template for the password reset
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/password-reset.php
|
||||
*
|
||||
* Call: function ultimatemember_password()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
|
||||
+17
-1
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile page
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?> um-role-<?php echo esc_attr( um_user( 'role' ) ); ?> ">
|
||||
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile single comments
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile/comments-single.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var object $comment
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$comment_title = apply_filters( 'um_user_profile_comment_title', get_the_title( $comment->comment_post_ID ), $comment );
|
||||
$link = apply_filters( 'um_user_profile_comment_url', get_permalink( $comment->comment_post_ID ), $comment ); ?>
|
||||
@@ -13,4 +27,4 @@ $link = apply_filters( 'um_user_profile_comment_url', get_permalink( $comment->c
|
||||
<div class="um-item-meta">
|
||||
<span><?php printf( __( 'On <a href="%1$s">%2$s</a>','ultimate-member' ), $link, $comment_title ); ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile comments
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile/comments.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
* Call: function add_comments(), function load_comments()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var int $count_comments
|
||||
* @var object $comments
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
||||
@@ -41,4 +57,4 @@ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
||||
</div>
|
||||
|
||||
<?php }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile single post
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile/posts-single.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var object $post
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="um-item">
|
||||
<div class="um-item-link">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user