mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-11 10:46:11 +09:00
Merge branch 'development/2.6.1' into feature/um-blocks
This commit is contained in:
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
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": {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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' ) );
|
||||
@@ -440,7 +440,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 +1839,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 +1974,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 +3015,192 @@ 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/' );
|
||||
$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();
|
||||
$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 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
|
||||
|
||||
@@ -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>
|
||||
+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
|
||||
),
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -13,33 +13,44 @@ 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 );
|
||||
$this->saved_fields = get_option( 'um_fields' );
|
||||
$this->saved_fields = get_option( 'um_fields', array() );
|
||||
}
|
||||
|
||||
|
||||
@@ -1337,26 +1348,20 @@ if ( ! class_exists( 'um\core\Builtin' ) ) {
|
||||
* Custom Fields
|
||||
*/
|
||||
function set_custom_fields() {
|
||||
|
||||
if ( is_array( $this->saved_fields ) ) {
|
||||
|
||||
$this->custom_fields = $this->saved_fields;
|
||||
|
||||
} else {
|
||||
|
||||
$this->custom_fields = '';
|
||||
|
||||
$this->custom_fields = array();
|
||||
}
|
||||
|
||||
$custom = $this->custom_fields;
|
||||
$custom = $this->custom_fields;
|
||||
$predefined = $this->predefined_fields;
|
||||
|
||||
if ( is_array( $custom ) ){
|
||||
if ( is_array( $custom ) ) {
|
||||
$this->all_user_fields = array_merge( $predefined, $custom );
|
||||
} else {
|
||||
$this->all_user_fields = $predefined;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
*
|
||||
@@ -248,7 +284,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
$fields = UM()->query()->get_attr( 'custom_fields', $form_id );
|
||||
|
||||
if ( isset( $fields[ $id ] ) ) {
|
||||
$condition_fields = get_option( 'um_fields' );
|
||||
$condition_fields = get_option( 'um_fields', array() );
|
||||
|
||||
if( ! is_array( $condition_fields ) ) $condition_fields = array();
|
||||
|
||||
@@ -2390,8 +2426,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
}
|
||||
|
||||
$field_name = $key . $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 ) . '" />
|
||||
|
||||
|
||||
@@ -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,37 +1,53 @@
|
||||
<?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 );
|
||||
@@ -349,12 +365,10 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
}
|
||||
|
||||
echo $plain_email_template;
|
||||
|
||||
}
|
||||
|
||||
$message = ob_get_clean();
|
||||
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
@@ -387,7 +401,6 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
return um_convert_tags( $message, $args );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send Email function
|
||||
*
|
||||
@@ -395,20 +408,27 @@ 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;
|
||||
}
|
||||
|
||||
$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 +452,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,7 +471,6 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
|
||||
do_action( 'um_after_email_notification_sending', $email, $template, $args );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $template_name
|
||||
*
|
||||
|
||||
@@ -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'] );
|
||||
@@ -1580,6 +1583,17 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
|
||||
$meta_value = '%' . $wpdb->esc_like( $search ) . '%';
|
||||
$search_meta = $wpdb->prepare( '%s', $meta_value );
|
||||
|
||||
preg_match( '~(?<=\{)(.*?)(?=\})~', $search_meta, $matches, PREG_OFFSET_CAPTURE, 0 );
|
||||
|
||||
// workaround for standard mySQL hashes which are used by $wpdb->prepare instead of the %symbol
|
||||
// sometimes it breaks error for strings like that wp_postmeta.meta_value LIKE '{12f209b48a89eeab33424902879d05d503f251ca8812dde03b59484a2991dc74}AMS{12f209b48a89eeab33424902879d05d503f251ca8812dde03b59484a2991dc74}'
|
||||
// {12f209b48a89eeab33424902879d05d503f251ca8812dde03b59484a2991dc74} isn't applied by the `preg_replace()` below
|
||||
if ( $matches[0][0] ) {
|
||||
$search_meta = str_replace( '{' . $matches[0][0] . '}', '#%&', $search_meta );
|
||||
$sql['where'] = str_replace( '{' . $matches[0][0] . '}', '#%&', $sql['where'] );
|
||||
}
|
||||
|
||||
// str_replace( '/', '\/', wp_slash( $search_meta ) ) means that we add backslashes to special symbols + add backslash to slash(/) symbol for proper regular pattern.
|
||||
preg_match(
|
||||
'/^(.*).meta_value LIKE ' . str_replace( '/', '\/', wp_slash( $search_meta ) ) . '[^\)]/im',
|
||||
@@ -1587,12 +1601,18 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
$join_matches
|
||||
);
|
||||
|
||||
$sql['where'] = str_replace( '#%&', '{' . $matches[0][0] . '}', $sql['where'] );
|
||||
|
||||
if ( isset( $join_matches[1] ) ) {
|
||||
$meta_join_for_search = trim( $join_matches[1] );
|
||||
|
||||
// skip private invisible fields
|
||||
$custom_fields = array();
|
||||
foreach ( array_keys( UM()->builtin()->all_user_fields ) as $field_key ) {
|
||||
if ( empty( $field_key ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$data = UM()->fields()->get_field( $field_key );
|
||||
if ( ! um_can_view_field( $data ) ) {
|
||||
continue;
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 );
|
||||
|
||||
|
||||
+1019
-1020
File diff suppressed because it is too large
Load Diff
+26
-26
@@ -2,10 +2,10 @@
|
||||
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
|
||||
License: GNU Version 2 or Any Later Version
|
||||
@@ -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? =
|
||||
|
||||
@@ -1494,7 +1494,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 +1510,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 +1540,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 +1561,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 +1576,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 +1674,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 +1723,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 +1745,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 +1754,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 +1783,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 +1913,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 +1954,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 +2442,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>
|
||||
|
||||
+15
-1
@@ -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;
|
||||
|
||||
|
||||
+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">
|
||||
|
||||
@@ -1,4 +1,19 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the profile posts
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/profile/posts.php
|
||||
*
|
||||
* Page: "Profile"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var object $posts
|
||||
* @var int $count_posts
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
||||
//Only for AJAX loading posts
|
||||
@@ -40,4 +55,4 @@ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
||||
</div>
|
||||
|
||||
<?php }
|
||||
}
|
||||
}
|
||||
|
||||
+17
-1
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the register page
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/register.php
|
||||
*
|
||||
* Page: "Register"
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $mode
|
||||
* @var int $form_id
|
||||
* @var array $args
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! is_user_logged_in() ) {
|
||||
um_reset_user();
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* Template for the blog restricted message
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/restricted-blog.php
|
||||
*
|
||||
* Call: function blog_message()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
<?php
|
||||
/**
|
||||
* Template for the taxonomy restricted message
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/restricted-taxonomy.php
|
||||
*
|
||||
* Call: function taxonomy_message()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
get_header(); ?>
|
||||
|
||||
@@ -51,4 +63,4 @@ get_header(); ?>
|
||||
<?php get_sidebar(); ?>
|
||||
</div><!-- .wrap -->
|
||||
|
||||
<?php get_footer();
|
||||
<?php get_footer();
|
||||
|
||||
@@ -1,4 +1,20 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
<?php
|
||||
/**
|
||||
* Template for the search form
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/ultimate-member/searchform.php
|
||||
*
|
||||
* Call: function ultimatemember_searchform()
|
||||
*
|
||||
* @version 2.6.1
|
||||
*
|
||||
* @var string $members_page
|
||||
* @var string $search_value
|
||||
* @var array $query
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
} ?>
|
||||
|
||||
<div class="search-form um-search-form" data-members_page="<?php echo esc_url( $members_page ); ?>">
|
||||
<?php foreach ( array_keys( $query ) as $key ) { ?>
|
||||
@@ -9,4 +25,4 @@
|
||||
<input type="search" class="um-search-field search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ); ?>" value="<?php echo esc_attr( $search_value ); ?>" name="search" title="<?php echo esc_attr_x( 'Search for:', 'label' ); ?>" />
|
||||
<a href="javascript:void(0);" id="um-search-button" class="um-search-icon um-faicon um-faicon-search"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
Plugin Name: Ultimate Member
|
||||
Plugin URI: http://ultimatemember.com/
|
||||
Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
|
||||
Version: 2.6.0
|
||||
Version: 2.6.1-alpha
|
||||
Author: Ultimate Member
|
||||
Author URI: http://ultimatemember.com/
|
||||
Text Domain: ultimate-member
|
||||
|
||||
Reference in New Issue
Block a user