Ultimate Member – User Profile & Membership Plugin - Version 2.1.8

Version Description

Download this release

Release Info

Developer nsinelnikov
Plugin Icon 128x128 Ultimate Member – User Profile & Membership Plugin
Version 2.1.8
Comparing to
See all releases

Code changes from version 2.1.7 to 2.1.8

assets/img/extensions/user-notes.png ADDED
Binary file
assets/js/um-members.js CHANGED
@@ -1374,6 +1374,9 @@ jQuery(document.body).ready( function() {
1374
  },
1375
  stop: function( event, ui ) {
1376
  if ( ! um_is_directory_busy( directory ) ) {
 
 
 
1377
  um_set_url_from_data( directory, 'filter_' + filter_name + '_from', ui.values[0] );
1378
  um_set_url_from_data( directory, 'filter_' + filter_name + '_to', ui.values[1] );
1379
 
1374
  },
1375
  stop: function( event, ui ) {
1376
  if ( ! um_is_directory_busy( directory ) ) {
1377
+
1378
+ um_members_show_preloader( directory );
1379
+
1380
  um_set_url_from_data( directory, 'filter_' + filter_name + '_from', ui.values[0] );
1381
  um_set_url_from_data( directory, 'filter_' + filter_name + '_to', ui.values[1] );
1382
 
assets/js/um-members.min.js CHANGED
@@ -1 +1 @@
1
- var um_members_directory_busy=[],um_member_directories=[],um_member_directory_last_data=[];function um_parse_current_url(){var t={},a=window.location.search.substring(1).split("&");return jQuery.each(a,function(e){var r=a[e].split("=");t[r[0]]=r[1]}),t}function um_get_data_for_directory(e,r){var t=um_members_get_hash(e),a={},i=um_parse_current_url();if(jQuery.each(i,function(e){-1!==e.indexOf("_"+t)&&""!==i[e]&&(a[e.replace("_"+t,"")]=i[e])}),r){if(void 0!==a[r])try{a[r]=decodeURIComponent(a[r])}catch(e){console.error(e)}return a[r]}return a}function um_set_url_from_data(e,r,t){var a=um_members_get_hash(e),i=um_get_data_for_directory(e),m={};jQuery.isArray(t)?(jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")):jQuery.isNumeric(t)||(t=t.split("||"),jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")),""!==t&&(m[r+"_"+a]=t),jQuery.each(i,function(e){r===e?""!==t&&(m[e+"_"+a]=t):m[e+"_"+a]=i[e]}),jQuery.each(um_member_directories,function(e){var r=um_member_directories[e];if(r!==a){var t=um_get_data_for_directory(jQuery('.um-directory[data-hash="'+r+'"]'));jQuery.each(t,function(e){m[e+"_"+r]=t[e]})}});var d=[];jQuery.each(m,function(e){d.push(e+"="+m[e])});var s="?"+(d=wp.hooks.applyFilters("um_member_directory_url_attrs",d)).join("&");"?"===s&&(s=""),window.history.pushState("string","UM Member Directory",window.location.origin+window.location.pathname+s)}function um_members_get_hash(e){return e.data("hash")}function um_is_directory_busy(e){var r=um_members_get_hash(e);return void 0!==um_members_directory_busy[r]&&um_members_directory_busy[r]}function um_members_show_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!0,e.find(".um-members-overlay").show()}function um_members_hide_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!1,e.find(".um-members-overlay").hide()}function um_set_range_label(e,r){var t="",a=e.siblings(".um-slider-range").data("placeholder-s"),i=e.siblings(".um-slider-range").data("placeholder-p");t=r?r.values[0]===r.values[1]?a.replace("{value}",r.values[0]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):i.replace("{min_range}",r.values[0]).replace("{max_range}",r.values[1]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):e.slider("values",0)===e.slider("values",1)?a.replace("{value}",e.slider("values",0)).replace("{field_label}",e.siblings(".um-slider-range").data("label")):i.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1)).replace("{field_label}",e.siblings(".um-slider-range").data("label")),e.siblings(".um-slider-range").html(t),e.siblings(".um_range_min").val(e.slider("values",0)),e.siblings(".um_range_max").val(e.slider("values",1))}function um_get_search(e){return e.find(".um-search-line").length?e.find(".um-search-line").val():""}function um_get_sort(e){return e.data("sorting")}function um_get_current_page(e){var r=e.data("page");return r&&void 0!==r||(r=1),r}function um_time_convert(e,r){var t=Math.floor(e/60),a=e%60;return 60<=a&&(a=0,24<=(t+=1)&&(t=0)),a<10&&(a="0"+a),t+":"+a}function um_ajax_get_members(u,e){var t=um_members_get_hash(u),r=um_get_current_page(u),a=um_get_search(u),i=um_get_sort(u),m=-(new Date).getTimezoneOffset()/60,_={directory_id:t,page:r,search:a,sorting:i,gmt_offset:m,post_refferer:u.data("base-post"),nonce:um_scripts.nonce};u.find(".um-search-filter").length&&u.find(".um-search-filter").each(function(){var e=jQuery(this);if(e.find(".um-slider").length){var r=e.find(".um-slider").data("field_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-datepicker-filter").length){r=e.find(".um-datepicker-filter").data("filter_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-timepicker-filter").length){r=e.find(".um-timepicker-filter").data("filter_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");if(void 0!==t)(i=1*(t=t.split(":"))[0])<10&&(i="0"+i),(d=1*t[1])<10&&(d="0"+d),t=i+":"+d+":00";if(void 0!==a){var i,m=a.split(":"),d=1*m[1];(i=1*m[0])<10&&(i="0"+i),d<10&&(d="0"+d),a=i+":"+d+":59"}void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find("select").length){r=e.find("select").attr("name");void 0!==(s=um_get_data_for_directory(u,"filter_"+r))&&(_[r]=s.split("||"))}else if(e.hasClass("um-text-filter-type")&&e.find('input[type="text"]').length){var s;r=e.find('input[type="text"]').attr("name");void 0!==(s=um_get_data_for_directory(u,"filter_"+r))&&(_[r]=s)}else _=wp.hooks.applyFilters("um_member_directory_custom_filter_handler",_,e,u)}),_=wp.hooks.applyFilters("um_member_directory_filter_request",_),wp.ajax.send("um_get_members",{data:_,success:function(e){um_member_directory_last_data[t]=e,um_build_template(u,e);var r=wp.template("um-members-pagination");u.find(".um-members-pagination-box").html(r(e)),u.data("total_pages",e.pagination.total_pages),e.pagination.total_pages?(u.find(".um-member-directory-sorting-options").prop("disabled",!1),u.find(".um-member-directory-view-type").removeClass("um-disabled")):(u.find(".um-member-directory-sorting-options").prop("disabled",!0),u.find(".um-member-directory-view-type").addClass("um-disabled")),wp.hooks.doAction("um_member_directory_loaded",u,e),um_init_new_dropdown(),um_members_hide_preloader(u)},error:function(e){console.log(e),um_members_hide_preloader(u)}})}function um_build_template(e,r){var t=e.data("view_type"),a=wp.template("um-member-"+t+"-"+um_members_get_hash(e));e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-members-wrapper").prepend(a(r.users));var i=wp.template("um-members-header");e.find(".um-members-intro").remove();var m=wp.hooks.applyFilters("um_member_directory_generate_header",!1,e);(void 0!==r.is_search&&r.is_search||m)&&e.find(".um-members-wrapper").prepend(i(r)),e.addClass("um-loaded"),e.find(".um-members.um-members-grid").length&&UM_Member_Grid(e.find(".um-members.um-members-grid")),jQuery(document).trigger("um_build_template",[e,r]),jQuery(window).trigger("resize"),init_tipsy()}function UM_Member_Grid(e){e.find(".um-member").length&&e.imagesLoaded(function(){e.masonry({itemSelector:".um-member",columnWidth:".um-member",gutter:".um-gutter-sizer"}).on("layoutComplete",function(e,r){jQuery(document).trigger("um_grid_initialized",[e,r])})})}function um_get_filters_data(u){var _=[];return u.find(".um-search-filter").each(function(){var t,a,d,i=jQuery(this);if(i.find("input.um-datepicker-filter").length)d="datepicker",i.find("input.um-datepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(u,"filter_"+e+"_from"),t=um_get_data_for_directory(u,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=u.find('input.um-datepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("input.um-timepicker-filter").length)d="timepicker",i.find("input.um-timepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(u,"filter_"+e+"_from"),t=um_get_data_for_directory(u,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=u.find('input.um-timepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("select").length){d="select",t=i.find("select").attr("name"),a=i.find("select").data("placeholder"),m=void 0===(m=um_get_data_for_directory(u,"filter_"+t))?[]:m.split("||"),jQuery.each(m,function(e){var r=i.find('select option[value="'+m[e]+'"]').data("value_label");_.push({name:t,label:a,value_label:r,value:m[e],type:d})})}else if(i.hasClass("um-text-filter-type")&&i.find('input[type="text"]').length){var m;d="text",t=i.find('input[type="text"]').attr("name"),a=i.find('input[type="text"]').attr("placeholder"),void 0===(m=um_get_data_for_directory(u,"filter_"+t))&&(m=""),""!=m&&_.push({name:t,label:a,value_label:m,value:m,type:d})}else if(i.find("div.ui-slider").length){d="slider",t=i.find("div.ui-slider").data("field_name");var e,r=um_get_data_for_directory(u,"filter_"+t+"_from"),s=um_get_data_for_directory(u,"filter_"+t+"_to");if(void 0===r&&void 0===s)return;e=r===s?i.find("div.um-slider-range").data("placeholder-s").replace("{value}",r).replace("{field_label}",i.find("div.um-slider-range").data("label")):i.find("div.um-slider-range").data("placeholder-p").replace("{min_range}",r).replace("{max_range}",s).replace("{field_label}",i.find("div.um-slider-range").data("label")),a=i.find("div.um-slider-range").data("label"),_.push({name:t,label:a,value_label:e,value:[r,s],type:d})}else _=wp.hooks.applyFilters("um_member_directory_get_filter_data",_,u,i)}),_}function um_change_tag(e){var r=um_get_filters_data(e);e.find(".um-members-filter-tag").remove();var t=e.find(".um-filtered-line");if(t.length){var a=wp.template("um-members-filtered-line");t.prepend(a({filters:r})),0===e.find(".um-members-filter-remove").length?(e.find(".um-clear-filters").hide(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(e.find(".um-clear-filters").show(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"))}}function um_run_search(e){if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=um_get_data_for_directory(e,"search"),t=e.find(".um-search-line").val();if(t===r||""===t&&void 0===r)um_members_hide_preloader(e);else{e.data("general_search",t),um_set_url_from_data(e,"search",t),e.data("page",1),um_set_url_from_data(e,"page","");var a=!1;if(!(a=wp.hooks.applyFilters("um_member_directory_ignore_after_search",a,e)))if(1===e.data("must-search")&&(t=um_get_search(e),0===e.find(".um-members-filter-remove").length&&!t))return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e);e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}}jQuery(document.body).ready(function(){jQuery(".um-directory .um-search-filter select").each(function(){1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),jQuery(this).select2("destroy").select2()}),jQuery(document.body).on("mouseover",".um-directory .um-member-directory-view-type",function(){if(!jQuery(this).hasClass("um-disabled")){var e=jQuery(this).find(".um-member-directory-view-type-a:visible");e.hide(),e.next().length?e.next().show().tipsy("show"):jQuery(this).find(".um-member-directory-view-type-a:first").show().tipsy("show")}}).on("mouseout",".um-directory .um-member-directory-view-type",function(){jQuery(this).hasClass("um-disabled")||(jQuery(this).find(".um-member-directory-view-type-a").hide().tipsy("hide"),jQuery(this).find('.um-member-directory-view-type-a[data-type="'+jQuery(this).parents(".um-directory").data("view_type")+'"]').show())}),jQuery(document.body).on("click",".um-directory .um-member-directory-view-type-a",function(){var e=jQuery(this).parents(".um-directory");if(um_is_directory_busy(e))return!1;var r=jQuery(this),t=r.parents(".um-member-directory-view-type");if(!t.hasClass("um-disabled")){um_members_show_preloader(e);var a=t.find(".um-member-directory-view-type-a:visible");a.hide(),a.next().length?a.next().show().tipsy("show"):t.find(".um-member-directory-view-type-a:first").show().tipsy("show");var i=um_member_directory_last_data[um_members_get_hash(e)];if(null!==i){var m=r.data("type");um_set_url_from_data(e,"view_type",m),e.data("view_type",m),um_build_template(e,i),um_init_new_dropdown()}um_members_hide_preloader(e)}}),jQuery(document.body).on("click",".um-directory .um-do-search",function(){um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("keypress",".um-directory .um-search-line",function(e){13===e.which&&um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("click",".um-directory .um-member-directory-sorting-a .um-new-dropdown li a",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&1!==jQuery(this).data("selected")){um_members_show_preloader(e);var r=jQuery(this).data("value");e.data("sorting",r),um_set_url_from_data(e,"sort",r),um_ajax_get_members(e),jQuery(this).parents(".um-new-dropdown").find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),jQuery(this).data("selected",1).prop("data-selected",1).attr("data-selected",1),jQuery(this).parents(".um-member-directory-sorting-a").find("> a").html(jQuery(this).html())}}),jQuery(document.body).on("click",".um-directory .pagi:not(.current)",function(){if(!jQuery(this).hasClass("disabled")){var e,r=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(r))um_members_show_preloader(r),1===(e="first"===jQuery(this).data("page")?1:"prev"===jQuery(this).data("page")?1*r.data("page")-1:"next"===jQuery(this).data("page")?1*r.data("page")+1:"last"===jQuery(this).data("page")?parseInt(r.data("total_pages")):parseInt(jQuery(this).data("page")))?(r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').addClass("disabled"),r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled")):(e===parseInt(r.data("total_pages"))?r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').addClass("disabled"):r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled"),r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').removeClass("disabled")),r.find(".pagi").removeClass("current"),r.find('.pagi[data-page="'+e+'"]').addClass("current"),r.data("page",e),um_set_url_from_data(r,"page",1===e?"":e),um_ajax_get_members(r)}}),jQuery(document.body).on("change",".um-directory .um-members-pagi-dropdown",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).val();e.find(".pagi").removeClass("current"),e.find('.pagi[data-page="'+r+'"]').addClass("current"),e.data("page",r),um_set_url_from_data(e,"page",1===r?"":r),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-more").hide(),r.find(".um-member-meta-main").slideDown(),r.find(".um-member-less").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-less").hide(),r.find(".um-member-meta-main").slideUp(),r.find(".um-member-more").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-more").hide(),r.find(".um-member-meta").slideDown(function(){UM_Member_Grid(t)}),r.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(t)},100),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-less").hide(),r.find(".um-member-meta").slideUp(function(){r.find(".um-member-more").fadeIn(),UM_Member_Grid(t)}),!1}),jQuery(".um-member-directory-filters-a").click(function(){var e=jQuery(this),r=e.parents(".um-directory").find(".um-search");r.is(":visible")?r.slideUp(250,function(){e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}):r.slideDown({duration:250,start:function(){jQuery(this).css({display:"grid"}),e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}})}),jQuery(document.body).on("change",".um-directory .um-search-filter select",function(){if(""!==jQuery(this).val()){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).prop("name"),t=um_get_data_for_directory(e,"filter_"+r);t=void 0===t?[]:t.split("||"),-1===jQuery.inArray(jQuery(this).val(),t)&&(t.push(jQuery(this).val()),um_set_url_from_data(e,"filter_"+r,t=t.join("||")),e.data("page",1),um_set_url_from_data(e,"page","")),jQuery(this).find('option[value="'+jQuery(this).val()+'"]').prop("disabled",!0).hide(),1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),jQuery(this).select2("destroy").select2(),jQuery(this).val("").trigger("change"),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled")}}}),jQuery(document.body).on("blur",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){var r=jQuery(this).val(),t=jQuery(this).prop("name"),a=um_get_data_for_directory(e,"filter_"+t);void 0===a&&(a=""),r!==a&&(um_members_show_preloader(e),um_set_url_from_data(e,"filter_"+t,r),e.data("page",1),um_set_url_from_data(e,"page",""),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),jQuery(document.body).on("keypress",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(e){if(13===e.which){var r=jQuery(this).parents(".um-directory");if(um_is_directory_busy(r))return;var t=jQuery(this).val(),a=jQuery(this).prop("name"),i=um_get_data_for_directory(r,"filter_"+a);if(void 0===i&&(i=""),t===i)return;um_members_show_preloader(r),um_set_url_from_data(r,"filter_"+a,t),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}),jQuery(document.body).on("click",".um-directory .um-members-filter-remove",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&e){um_members_show_preloader(e);var r=jQuery(this).data("value"),t=jQuery(this).data("name"),a=jQuery(this).data("type");if("text"===a)um_set_url_from_data(e,"filter_"+t,""),jQuery('.um-search-filter input[name="'+t+'"]').val("");else if("select"===a){var i=um_get_data_for_directory(e,"filter_"+t);i=void 0===i?[]:i.split("||"),-1!==jQuery.inArray(r.toString(),i)&&(i=jQuery.grep(i,function(e){return e!==r.toString()})),i.length||(i=""),um_set_url_from_data(e,"filter_"+t,i);var m=jQuery('.um-search-filter select[name="'+t+'"]');m.find('option[value="'+r+'"]').prop("disabled",!1).show(),1<m.find("option:not(:disabled)").length&&m.prop("disabled",!1),m.select2("destroy").select2(),0<e.find('.um-search-filter select[data-um-parent="'+t+'"]').length&&m.trigger("change")}else if("slider"===a){um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to","");var d=jQuery(".um-search-filter #"+t+"_min").siblings(".um-slider"),s=d.slider("option");d.slider("values",[s.min,s.max]),jQuery(".um-search-filter #"+t+"_min").val(""),jQuery(".um-search-filter #"+t+"_max").val(""),um_set_range_label(d)}else"datepicker"===a?(um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to",""),jQuery(".um-search-filter #"+t+"_from").val(""),jQuery(".um-search-filter #"+t+"_to").val("")):"timepicker"===a?(um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to",""),jQuery(".um-search-filter #"+t+"_from").val(""),jQuery(".um-search-filter #"+t+"_to").val("")):wp.hooks.doAction("um_member_directory_filter_remove",a,e,t,r);e.data("page",1),um_set_url_from_data(e,"page",""),jQuery(this).tipsy("hide"),jQuery(this).parents(".um-members-filter-tag").remove(),0===e.find(".um-members-filter-remove").length?e.find(".um-clear-filters").hide():e.find(".um-clear-filters").show();var u=!1;if(!(u=wp.hooks.applyFilters("um_member_directory_ignore_after_search",u,e)))if(1===e.data("must-search")){var _=um_get_search(e);if(0===e.find(".um-members-filter-remove").length&&!_)return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e)}e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-clear-filters-a",function(){var s=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(s)){um_members_show_preloader(s),s.find(".um-members-filter-remove").each(function(){var r=jQuery(this).data("value"),e=jQuery(this).data("name"),t=jQuery(this).data("type");if("text"===t)um_set_url_from_data(s,"filter_"+e,""),jQuery('.um-search-filter input[name="'+e+'"]').val("");else if("select"===t){var a=um_get_data_for_directory(s,"filter_"+e);a=void 0===a?[]:a.split("||"),-1!==jQuery.inArray(r.toString(),a)&&(a=jQuery.grep(a,function(e){return e!==r.toString()})),a.length||(a=""),um_set_url_from_data(s,"filter_"+e,a);var i=jQuery('.um-search-filter select[name="'+e+'"]');i.find('option[value="'+r+'"]').prop("disabled",!1).show(),1<i.find("option:not(:disabled)").length&&i.prop("disabled",!1),i.select2("destroy").select2(),0<s.find('.um-search-filter select[data-um-parent="'+e+'"]').length&&i.trigger("change")}else if("slider"===t){um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to","");var m=jQuery(".um-search-filter #"+e+"_min").siblings(".um-slider"),d=m.slider("option");m.slider("values",[d.min,d.max]),jQuery(".um-search-filter #"+e+"_min").val(""),jQuery(".um-search-filter #"+e+"_max").val(""),um_set_range_label(m)}else"datepicker"===t?(um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to",""),jQuery(".um-search-filter #"+e+"_from").val(""),jQuery(".um-search-filter #"+e+"_to").val("")):"timepicker"===t?(um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to",""),jQuery(".um-search-filter #"+e+"_from").val(""),jQuery(".um-search-filter #"+e+"_to").val("")):wp.hooks.doAction("um_member_directory_clear_filters",t,s,e,r)}),s.data("page",1),um_set_url_from_data(s,"page",""),s.find(".um-members-filter-tag").remove(),0===s.find(".um-members-filter-remove").length?(s.find(".um-clear-filters").hide(),s.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(s.find(".um-clear-filters").show(),s.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"));var e=!1;if(!(e=wp.hooks.applyFilters("um_member_directory_ignore_after_search",e,s)))if(1===s.data("must-search"))if(!um_get_search(s))return s.data("searched",0),s.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),s.find(".um-member-directory-sorting-options").prop("disabled",!0),s.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",s),void um_members_hide_preloader(s);s.find(".um-member-directory-sorting-options").prop("disabled",!1),s.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(s)}}),wp.hooks.doAction("um_member_directory_on_first_pages_loading"),jQuery(".um-directory").each(function(){var e=jQuery(this),r=um_members_get_hash(e);um_member_directories.push(r),e.find(".um-search").length&&(e.find(".um-search").is(":visible")||e.find(".um-search").css({display:"grid"}).slideUp(1)),e.find(".um-slider").each(function(){var e=jQuery(this),t=e.parents(".um-directory"),a=e.data("field_name"),r=um_get_data_for_directory(t,"filter_"+a+"_from"),i=um_get_data_for_directory(t,"filter_"+a+"_to");void 0===r&&(r=parseInt(e.data("min"))),void 0===i&&(i=parseInt(e.data("max")));var m=[r,i];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:m,create:function(e,r){},step:1,slide:function(e,r){um_set_range_label(jQuery(this),r)},stop:function(e,r){um_is_directory_busy(t)||(um_set_url_from_data(t,"filter_"+a+"_from",r.values[0]),um_set_url_from_data(t,"filter_"+a+"_to",r.values[1]),t.data("page",1),um_set_url_from_data(t,"page",""),um_ajax_get_members(t),um_change_tag(t),t.data("searched",1),t.find(".um-member-directory-sorting-options").prop("disabled",!1),t.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),um_set_range_label(e)}),e.find(".um-datepicker-filter").each(function(){var s=jQuery(this),u=new Date(1e3*s.data("date_min")),_=new Date(1e3*s.data("date_max")),e=s.pickadate({selectYears:!0,min:u,max:_,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){s.blur()},onClose:function(){s.blur()},onSet:function(e){if(e.select){var r=s.parents(".um-directory");if(!um_is_directory_busy(r)){um_members_show_preloader(r);var t=s.data("filter_name"),a=s.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to");void 0===i&&(i=u/1e3),void 0===m&&(m=_/1e3);var d=e.select/1e3;s.val();"from"===a?i=d:"to"===a&&(m=d),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}}}).pickadate("picker"),r=s.data("filter_name"),t=s.data("range"),a=um_get_data_for_directory(s.parents(".um-directory"),"filter_"+r+"_"+t);void 0!==a&&e.set("select",1e3*a)}),e.find(".um-timepicker-filter").each(function(){var u=jQuery(this),_=u.attr("id"),o=u.data("filter_name"),n=u.attr("data-min"),l=u.attr("data-max"),e=n.split(":"),r=l.split(":"),t=u.pickatime({format:u.data("format"),interval:parseInt(u.data("intervals")),min:[e[0],e[1]],max:[r[0],r[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){u.blur()},onClose:function(){u.blur()},onSet:function(e){if(e.select){var r=u.parents(".um-directory");if(!um_is_directory_busy(r)){um_members_show_preloader(r);var t=u.data("filter_name"),a=u.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to");if(void 0===i&&(i=n),void 0===m&&(m=l),void 0!==e.select){var d=um_time_convert(e.select,a);"from"===a?i=d:"to"===a&&(m=d)}else"from"===a?i=n:"to"===a&&(m=l);var s=jQuery("#"+_).val();"from"===u.data("range")?jQuery("#"+o+"_to").pickatime("picker").set("min",s):jQuery("#"+o+"_from").pickatime("picker").set("max",s),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}}}).pickatime("picker"),a=u.data("filter_name"),i=u.data("range"),m=um_get_data_for_directory(u.parents(".um-directory"),"filter_"+a+"_"+i);if(void 0!==m){var d=m.split(":");t.set("select",60*d[0]+1*d[1])}}),wp.hooks.doAction("um_member_directory_on_init",e,r);var t=!1;if(!(t=wp.hooks.applyFilters("um_member_directory_ignore_after_search",t,e))&&1===e.data("must-search")){var a=um_get_search(e);if(!um_get_filters_data(e).length&&!a)return}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,e,r)||(um_members_show_preloader(e),um_ajax_get_members(e,{first_load:!0}),um_change_tag(e))}),window.addEventListener("popstate",function(e){jQuery(".um-directory").each(function(){var d=jQuery(this),e=um_members_get_hash(d);(um_member_directories.push(e),um_members_show_preloader(d),d.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),d.find(".um-member-directory-search-line").length)&&(void 0===(s=um_get_data_for_directory(d,"search"))&&(s=""),d.data("general_search",s),d.find(".um-search-line").val(s));var r=um_get_data_for_directory(d,"page");if(void 0===r?r=1:r>d.data("total_pages")&&(r=d.data("total_pages")),d.data("page",r).attr("data-page",r),d.find(".um-member-directory-sorting").length){var t=um_get_data_for_directory(d,"sort");void 0===t&&(t=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find('a[data-default="1"]').data("value")),d.data("sorting",t);var a=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]');a.find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),a.find('a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),d.find(".um-member-directory-sorting-a").find("> a").html(a.find('a[data-value="'+t+'"]').html())}if(d.find(".um-member-directory-view-type").length){var i=um_get_data_for_directory(d,"view_type");void 0===i&&(i=d.find('.um-member-directory-view-type-a[data-default="1"]').data("type")),d.data("view_type",i),d.find(".um-member-directory-view-type .um-member-directory-view-type-a").hide(),d.find('.um-member-directory-view-type .um-member-directory-view-type-a[data-type="'+i+'"]').show()}d.find(".um-datepicker-filter").each(function(){var e=jQuery(this),r=e.pickadate("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);void 0!==i?r.set("select",1e3*i):r.clear()}),d.find(".um-slider").each(function(){var e=jQuery(this),r=e.data("field_name"),t=um_get_data_for_directory(d,"filter_"+r+"_from"),a=um_get_data_for_directory(d,"filter_"+r+"_to");void 0===t&&(t=e.data("min")),t=parseInt(t),void 0===a&&(a=e.data("max")),a=parseInt(a),e.slider("values",[t,a]),um_set_range_label(e)}),d.find(".um-timepicker-filter").each(function(){var e=jQuery(this),r=e.pickatime("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);if(void 0!==i){var m=i.split(":");r.set("select",60*m[0])}else r.clear()});var m=!1;if(!(m=wp.hooks.applyFilters("um_member_directory_ignore_after_search",m,d))&&1===d.data("must-search")){var s=um_get_search(d);if(!um_get_filters_data(d).length&&!s)return d.data("searched",0),void um_members_hide_preloader(d);d.data("searched",1)}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,d,e)||(um_ajax_get_members(d),um_change_tag(d))})})});
1
+ var um_members_directory_busy=[],um_member_directories=[],um_member_directory_last_data=[];function um_parse_current_url(){var t={},a=window.location.search.substring(1).split("&");return jQuery.each(a,function(e){var r=a[e].split("=");t[r[0]]=r[1]}),t}function um_get_data_for_directory(e,r){var t=um_members_get_hash(e),a={},i=um_parse_current_url();if(jQuery.each(i,function(e){-1!==e.indexOf("_"+t)&&""!==i[e]&&(a[e.replace("_"+t,"")]=i[e])}),r){if(void 0!==a[r])try{a[r]=decodeURIComponent(a[r])}catch(e){console.error(e)}return a[r]}return a}function um_set_url_from_data(e,r,t){var a=um_members_get_hash(e),i=um_get_data_for_directory(e),m={};jQuery.isArray(t)?(jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")):jQuery.isNumeric(t)||(t=t.split("||"),jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")),""!==t&&(m[r+"_"+a]=t),jQuery.each(i,function(e){r===e?""!==t&&(m[e+"_"+a]=t):m[e+"_"+a]=i[e]}),jQuery.each(um_member_directories,function(e){var r=um_member_directories[e];if(r!==a){var t=um_get_data_for_directory(jQuery('.um-directory[data-hash="'+r+'"]'));jQuery.each(t,function(e){m[e+"_"+r]=t[e]})}});var d=[];jQuery.each(m,function(e){d.push(e+"="+m[e])});var s="?"+(d=wp.hooks.applyFilters("um_member_directory_url_attrs",d)).join("&");"?"===s&&(s=""),window.history.pushState("string","UM Member Directory",window.location.origin+window.location.pathname+s)}function um_members_get_hash(e){return e.data("hash")}function um_is_directory_busy(e){var r=um_members_get_hash(e);return void 0!==um_members_directory_busy[r]&&um_members_directory_busy[r]}function um_members_show_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!0,e.find(".um-members-overlay").show()}function um_members_hide_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!1,e.find(".um-members-overlay").hide()}function um_set_range_label(e,r){var t="",a=e.siblings(".um-slider-range").data("placeholder-s"),i=e.siblings(".um-slider-range").data("placeholder-p");t=r?r.values[0]===r.values[1]?a.replace("{value}",r.values[0]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):i.replace("{min_range}",r.values[0]).replace("{max_range}",r.values[1]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):e.slider("values",0)===e.slider("values",1)?a.replace("{value}",e.slider("values",0)).replace("{field_label}",e.siblings(".um-slider-range").data("label")):i.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1)).replace("{field_label}",e.siblings(".um-slider-range").data("label")),e.siblings(".um-slider-range").html(t),e.siblings(".um_range_min").val(e.slider("values",0)),e.siblings(".um_range_max").val(e.slider("values",1))}function um_get_search(e){return e.find(".um-search-line").length?e.find(".um-search-line").val():""}function um_get_sort(e){return e.data("sorting")}function um_get_current_page(e){var r=e.data("page");return r&&void 0!==r||(r=1),r}function um_time_convert(e,r){var t=Math.floor(e/60),a=e%60;return 60<=a&&(a=0,24<=(t+=1)&&(t=0)),a<10&&(a="0"+a),t+":"+a}function um_ajax_get_members(u,e){var t=um_members_get_hash(u),r=um_get_current_page(u),a=um_get_search(u),i=um_get_sort(u),m=-(new Date).getTimezoneOffset()/60,_={directory_id:t,page:r,search:a,sorting:i,gmt_offset:m,post_refferer:u.data("base-post"),nonce:um_scripts.nonce};u.find(".um-search-filter").length&&u.find(".um-search-filter").each(function(){var e=jQuery(this);if(e.find(".um-slider").length){var r=e.find(".um-slider").data("field_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-datepicker-filter").length){r=e.find(".um-datepicker-filter").data("filter_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-timepicker-filter").length){r=e.find(".um-timepicker-filter").data("filter_name"),t=um_get_data_for_directory(u,"filter_"+r+"_from"),a=um_get_data_for_directory(u,"filter_"+r+"_to");if(void 0!==t)(i=1*(t=t.split(":"))[0])<10&&(i="0"+i),(d=1*t[1])<10&&(d="0"+d),t=i+":"+d+":00";if(void 0!==a){var i,m=a.split(":"),d=1*m[1];(i=1*m[0])<10&&(i="0"+i),d<10&&(d="0"+d),a=i+":"+d+":59"}void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find("select").length){r=e.find("select").attr("name");void 0!==(s=um_get_data_for_directory(u,"filter_"+r))&&(_[r]=s.split("||"))}else if(e.hasClass("um-text-filter-type")&&e.find('input[type="text"]').length){var s;r=e.find('input[type="text"]').attr("name");void 0!==(s=um_get_data_for_directory(u,"filter_"+r))&&(_[r]=s)}else _=wp.hooks.applyFilters("um_member_directory_custom_filter_handler",_,e,u)}),_=wp.hooks.applyFilters("um_member_directory_filter_request",_),wp.ajax.send("um_get_members",{data:_,success:function(e){um_member_directory_last_data[t]=e,um_build_template(u,e);var r=wp.template("um-members-pagination");u.find(".um-members-pagination-box").html(r(e)),u.data("total_pages",e.pagination.total_pages),e.pagination.total_pages?(u.find(".um-member-directory-sorting-options").prop("disabled",!1),u.find(".um-member-directory-view-type").removeClass("um-disabled")):(u.find(".um-member-directory-sorting-options").prop("disabled",!0),u.find(".um-member-directory-view-type").addClass("um-disabled")),wp.hooks.doAction("um_member_directory_loaded",u,e),um_init_new_dropdown(),um_members_hide_preloader(u)},error:function(e){console.log(e),um_members_hide_preloader(u)}})}function um_build_template(e,r){var t=e.data("view_type"),a=wp.template("um-member-"+t+"-"+um_members_get_hash(e));e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-members-wrapper").prepend(a(r.users));var i=wp.template("um-members-header");e.find(".um-members-intro").remove();var m=wp.hooks.applyFilters("um_member_directory_generate_header",!1,e);(void 0!==r.is_search&&r.is_search||m)&&e.find(".um-members-wrapper").prepend(i(r)),e.addClass("um-loaded"),e.find(".um-members.um-members-grid").length&&UM_Member_Grid(e.find(".um-members.um-members-grid")),jQuery(document).trigger("um_build_template",[e,r]),jQuery(window).trigger("resize"),init_tipsy()}function UM_Member_Grid(e){e.find(".um-member").length&&e.imagesLoaded(function(){e.masonry({itemSelector:".um-member",columnWidth:".um-member",gutter:".um-gutter-sizer"}).on("layoutComplete",function(e,r){jQuery(document).trigger("um_grid_initialized",[e,r])})})}function um_get_filters_data(u){var _=[];return u.find(".um-search-filter").each(function(){var t,a,d,i=jQuery(this);if(i.find("input.um-datepicker-filter").length)d="datepicker",i.find("input.um-datepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(u,"filter_"+e+"_from"),t=um_get_data_for_directory(u,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=u.find('input.um-datepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("input.um-timepicker-filter").length)d="timepicker",i.find("input.um-timepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(u,"filter_"+e+"_from"),t=um_get_data_for_directory(u,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=u.find('input.um-timepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("select").length){d="select",t=i.find("select").attr("name"),a=i.find("select").data("placeholder"),m=void 0===(m=um_get_data_for_directory(u,"filter_"+t))?[]:m.split("||"),jQuery.each(m,function(e){var r=i.find('select option[value="'+m[e]+'"]').data("value_label");_.push({name:t,label:a,value_label:r,value:m[e],type:d})})}else if(i.hasClass("um-text-filter-type")&&i.find('input[type="text"]').length){var m;d="text",t=i.find('input[type="text"]').attr("name"),a=i.find('input[type="text"]').attr("placeholder"),void 0===(m=um_get_data_for_directory(u,"filter_"+t))&&(m=""),""!=m&&_.push({name:t,label:a,value_label:m,value:m,type:d})}else if(i.find("div.ui-slider").length){d="slider",t=i.find("div.ui-slider").data("field_name");var e,r=um_get_data_for_directory(u,"filter_"+t+"_from"),s=um_get_data_for_directory(u,"filter_"+t+"_to");if(void 0===r&&void 0===s)return;e=r===s?i.find("div.um-slider-range").data("placeholder-s").replace("{value}",r).replace("{field_label}",i.find("div.um-slider-range").data("label")):i.find("div.um-slider-range").data("placeholder-p").replace("{min_range}",r).replace("{max_range}",s).replace("{field_label}",i.find("div.um-slider-range").data("label")),a=i.find("div.um-slider-range").data("label"),_.push({name:t,label:a,value_label:e,value:[r,s],type:d})}else _=wp.hooks.applyFilters("um_member_directory_get_filter_data",_,u,i)}),_}function um_change_tag(e){var r=um_get_filters_data(e);e.find(".um-members-filter-tag").remove();var t=e.find(".um-filtered-line");if(t.length){var a=wp.template("um-members-filtered-line");t.prepend(a({filters:r})),0===e.find(".um-members-filter-remove").length?(e.find(".um-clear-filters").hide(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(e.find(".um-clear-filters").show(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"))}}function um_run_search(e){if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=um_get_data_for_directory(e,"search"),t=e.find(".um-search-line").val();if(t===r||""===t&&void 0===r)um_members_hide_preloader(e);else{e.data("general_search",t),um_set_url_from_data(e,"search",t),e.data("page",1),um_set_url_from_data(e,"page","");var a=!1;if(!(a=wp.hooks.applyFilters("um_member_directory_ignore_after_search",a,e)))if(1===e.data("must-search")&&(t=um_get_search(e),0===e.find(".um-members-filter-remove").length&&!t))return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e);e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}}jQuery(document.body).ready(function(){jQuery(".um-directory .um-search-filter select").each(function(){1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),jQuery(this).select2("destroy").select2()}),jQuery(document.body).on("mouseover",".um-directory .um-member-directory-view-type",function(){if(!jQuery(this).hasClass("um-disabled")){var e=jQuery(this).find(".um-member-directory-view-type-a:visible");e.hide(),e.next().length?e.next().show().tipsy("show"):jQuery(this).find(".um-member-directory-view-type-a:first").show().tipsy("show")}}).on("mouseout",".um-directory .um-member-directory-view-type",function(){jQuery(this).hasClass("um-disabled")||(jQuery(this).find(".um-member-directory-view-type-a").hide().tipsy("hide"),jQuery(this).find('.um-member-directory-view-type-a[data-type="'+jQuery(this).parents(".um-directory").data("view_type")+'"]').show())}),jQuery(document.body).on("click",".um-directory .um-member-directory-view-type-a",function(){var e=jQuery(this).parents(".um-directory");if(um_is_directory_busy(e))return!1;var r=jQuery(this),t=r.parents(".um-member-directory-view-type");if(!t.hasClass("um-disabled")){um_members_show_preloader(e);var a=t.find(".um-member-directory-view-type-a:visible");a.hide(),a.next().length?a.next().show().tipsy("show"):t.find(".um-member-directory-view-type-a:first").show().tipsy("show");var i=um_member_directory_last_data[um_members_get_hash(e)];if(null!==i){var m=r.data("type");um_set_url_from_data(e,"view_type",m),e.data("view_type",m),um_build_template(e,i),um_init_new_dropdown()}um_members_hide_preloader(e)}}),jQuery(document.body).on("click",".um-directory .um-do-search",function(){um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("keypress",".um-directory .um-search-line",function(e){13===e.which&&um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("click",".um-directory .um-member-directory-sorting-a .um-new-dropdown li a",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&1!==jQuery(this).data("selected")){um_members_show_preloader(e);var r=jQuery(this).data("value");e.data("sorting",r),um_set_url_from_data(e,"sort",r),um_ajax_get_members(e),jQuery(this).parents(".um-new-dropdown").find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),jQuery(this).data("selected",1).prop("data-selected",1).attr("data-selected",1),jQuery(this).parents(".um-member-directory-sorting-a").find("> a").html(jQuery(this).html())}}),jQuery(document.body).on("click",".um-directory .pagi:not(.current)",function(){if(!jQuery(this).hasClass("disabled")){var e,r=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(r))um_members_show_preloader(r),1===(e="first"===jQuery(this).data("page")?1:"prev"===jQuery(this).data("page")?1*r.data("page")-1:"next"===jQuery(this).data("page")?1*r.data("page")+1:"last"===jQuery(this).data("page")?parseInt(r.data("total_pages")):parseInt(jQuery(this).data("page")))?(r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').addClass("disabled"),r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled")):(e===parseInt(r.data("total_pages"))?r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').addClass("disabled"):r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled"),r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').removeClass("disabled")),r.find(".pagi").removeClass("current"),r.find('.pagi[data-page="'+e+'"]').addClass("current"),r.data("page",e),um_set_url_from_data(r,"page",1===e?"":e),um_ajax_get_members(r)}}),jQuery(document.body).on("change",".um-directory .um-members-pagi-dropdown",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).val();e.find(".pagi").removeClass("current"),e.find('.pagi[data-page="'+r+'"]').addClass("current"),e.data("page",r),um_set_url_from_data(e,"page",1===r?"":r),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-more").hide(),r.find(".um-member-meta-main").slideDown(),r.find(".um-member-less").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-less").hide(),r.find(".um-member-meta-main").slideUp(),r.find(".um-member-more").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-more").hide(),r.find(".um-member-meta").slideDown(function(){UM_Member_Grid(t)}),r.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(t)},100),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-less").hide(),r.find(".um-member-meta").slideUp(function(){r.find(".um-member-more").fadeIn(),UM_Member_Grid(t)}),!1}),jQuery(".um-member-directory-filters-a").click(function(){var e=jQuery(this),r=e.parents(".um-directory").find(".um-search");r.is(":visible")?r.slideUp(250,function(){e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}):r.slideDown({duration:250,start:function(){jQuery(this).css({display:"grid"}),e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}})}),jQuery(document.body).on("change",".um-directory .um-search-filter select",function(){if(""!==jQuery(this).val()){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).prop("name"),t=um_get_data_for_directory(e,"filter_"+r);t=void 0===t?[]:t.split("||"),-1===jQuery.inArray(jQuery(this).val(),t)&&(t.push(jQuery(this).val()),um_set_url_from_data(e,"filter_"+r,t=t.join("||")),e.data("page",1),um_set_url_from_data(e,"page","")),jQuery(this).find('option[value="'+jQuery(this).val()+'"]').prop("disabled",!0).hide(),1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),jQuery(this).select2("destroy").select2(),jQuery(this).val("").trigger("change"),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled")}}}),jQuery(document.body).on("blur",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){var r=jQuery(this).val(),t=jQuery(this).prop("name"),a=um_get_data_for_directory(e,"filter_"+t);void 0===a&&(a=""),r!==a&&(um_members_show_preloader(e),um_set_url_from_data(e,"filter_"+t,r),e.data("page",1),um_set_url_from_data(e,"page",""),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),jQuery(document.body).on("keypress",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(e){if(13===e.which){var r=jQuery(this).parents(".um-directory");if(um_is_directory_busy(r))return;var t=jQuery(this).val(),a=jQuery(this).prop("name"),i=um_get_data_for_directory(r,"filter_"+a);if(void 0===i&&(i=""),t===i)return;um_members_show_preloader(r),um_set_url_from_data(r,"filter_"+a,t),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}),jQuery(document.body).on("click",".um-directory .um-members-filter-remove",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&e){um_members_show_preloader(e);var r=jQuery(this).data("value"),t=jQuery(this).data("name"),a=jQuery(this).data("type");if("text"===a)um_set_url_from_data(e,"filter_"+t,""),jQuery('.um-search-filter input[name="'+t+'"]').val("");else if("select"===a){var i=um_get_data_for_directory(e,"filter_"+t);i=void 0===i?[]:i.split("||"),-1!==jQuery.inArray(r.toString(),i)&&(i=jQuery.grep(i,function(e){return e!==r.toString()})),i.length||(i=""),um_set_url_from_data(e,"filter_"+t,i);var m=jQuery('.um-search-filter select[name="'+t+'"]');m.find('option[value="'+r+'"]').prop("disabled",!1).show(),1<m.find("option:not(:disabled)").length&&m.prop("disabled",!1),m.select2("destroy").select2(),0<e.find('.um-search-filter select[data-um-parent="'+t+'"]').length&&m.trigger("change")}else if("slider"===a){um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to","");var d=jQuery(".um-search-filter #"+t+"_min").siblings(".um-slider"),s=d.slider("option");d.slider("values",[s.min,s.max]),jQuery(".um-search-filter #"+t+"_min").val(""),jQuery(".um-search-filter #"+t+"_max").val(""),um_set_range_label(d)}else"datepicker"===a?(um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to",""),jQuery(".um-search-filter #"+t+"_from").val(""),jQuery(".um-search-filter #"+t+"_to").val("")):"timepicker"===a?(um_set_url_from_data(e,"filter_"+t+"_from",""),um_set_url_from_data(e,"filter_"+t+"_to",""),jQuery(".um-search-filter #"+t+"_from").val(""),jQuery(".um-search-filter #"+t+"_to").val("")):wp.hooks.doAction("um_member_directory_filter_remove",a,e,t,r);e.data("page",1),um_set_url_from_data(e,"page",""),jQuery(this).tipsy("hide"),jQuery(this).parents(".um-members-filter-tag").remove(),0===e.find(".um-members-filter-remove").length?e.find(".um-clear-filters").hide():e.find(".um-clear-filters").show();var u=!1;if(!(u=wp.hooks.applyFilters("um_member_directory_ignore_after_search",u,e)))if(1===e.data("must-search")){var _=um_get_search(e);if(0===e.find(".um-members-filter-remove").length&&!_)return e.data("searched",0),e.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",e),void um_members_hide_preloader(e)}e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-clear-filters-a",function(){var s=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(s)){um_members_show_preloader(s),s.find(".um-members-filter-remove").each(function(){var r=jQuery(this).data("value"),e=jQuery(this).data("name"),t=jQuery(this).data("type");if("text"===t)um_set_url_from_data(s,"filter_"+e,""),jQuery('.um-search-filter input[name="'+e+'"]').val("");else if("select"===t){var a=um_get_data_for_directory(s,"filter_"+e);a=void 0===a?[]:a.split("||"),-1!==jQuery.inArray(r.toString(),a)&&(a=jQuery.grep(a,function(e){return e!==r.toString()})),a.length||(a=""),um_set_url_from_data(s,"filter_"+e,a);var i=jQuery('.um-search-filter select[name="'+e+'"]');i.find('option[value="'+r+'"]').prop("disabled",!1).show(),1<i.find("option:not(:disabled)").length&&i.prop("disabled",!1),i.select2("destroy").select2(),0<s.find('.um-search-filter select[data-um-parent="'+e+'"]').length&&i.trigger("change")}else if("slider"===t){um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to","");var m=jQuery(".um-search-filter #"+e+"_min").siblings(".um-slider"),d=m.slider("option");m.slider("values",[d.min,d.max]),jQuery(".um-search-filter #"+e+"_min").val(""),jQuery(".um-search-filter #"+e+"_max").val(""),um_set_range_label(m)}else"datepicker"===t?(um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to",""),jQuery(".um-search-filter #"+e+"_from").val(""),jQuery(".um-search-filter #"+e+"_to").val("")):"timepicker"===t?(um_set_url_from_data(s,"filter_"+e+"_from",""),um_set_url_from_data(s,"filter_"+e+"_to",""),jQuery(".um-search-filter #"+e+"_from").val(""),jQuery(".um-search-filter #"+e+"_to").val("")):wp.hooks.doAction("um_member_directory_clear_filters",t,s,e,r)}),s.data("page",1),um_set_url_from_data(s,"page",""),s.find(".um-members-filter-tag").remove(),0===s.find(".um-members-filter-remove").length?(s.find(".um-clear-filters").hide(),s.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(s.find(".um-clear-filters").show(),s.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"));var e=!1;if(!(e=wp.hooks.applyFilters("um_member_directory_ignore_after_search",e,s)))if(1===s.data("must-search"))if(!um_get_search(s))return s.data("searched",0),s.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),s.find(".um-member-directory-sorting-options").prop("disabled",!0),s.find(".um-member-directory-view-type").addClass("um-disabled"),wp.hooks.doAction("um_member_directory_clear_not_searched",s),void um_members_hide_preloader(s);s.find(".um-member-directory-sorting-options").prop("disabled",!1),s.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(s)}}),wp.hooks.doAction("um_member_directory_on_first_pages_loading"),jQuery(".um-directory").each(function(){var e=jQuery(this),r=um_members_get_hash(e);um_member_directories.push(r),e.find(".um-search").length&&(e.find(".um-search").is(":visible")||e.find(".um-search").css({display:"grid"}).slideUp(1)),e.find(".um-slider").each(function(){var e=jQuery(this),t=e.parents(".um-directory"),a=e.data("field_name"),r=um_get_data_for_directory(t,"filter_"+a+"_from"),i=um_get_data_for_directory(t,"filter_"+a+"_to");void 0===r&&(r=parseInt(e.data("min"))),void 0===i&&(i=parseInt(e.data("max")));var m=[r,i];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:m,create:function(e,r){},step:1,slide:function(e,r){um_set_range_label(jQuery(this),r)},stop:function(e,r){um_is_directory_busy(t)||(um_members_show_preloader(t),um_set_url_from_data(t,"filter_"+a+"_from",r.values[0]),um_set_url_from_data(t,"filter_"+a+"_to",r.values[1]),t.data("page",1),um_set_url_from_data(t,"page",""),um_ajax_get_members(t),um_change_tag(t),t.data("searched",1),t.find(".um-member-directory-sorting-options").prop("disabled",!1),t.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),um_set_range_label(e)}),e.find(".um-datepicker-filter").each(function(){var s=jQuery(this),u=new Date(1e3*s.data("date_min")),_=new Date(1e3*s.data("date_max")),e=s.pickadate({selectYears:!0,min:u,max:_,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){s.blur()},onClose:function(){s.blur()},onSet:function(e){if(e.select){var r=s.parents(".um-directory");if(!um_is_directory_busy(r)){um_members_show_preloader(r);var t=s.data("filter_name"),a=s.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to");void 0===i&&(i=u/1e3),void 0===m&&(m=_/1e3);var d=e.select/1e3;s.val();"from"===a?i=d:"to"===a&&(m=d),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}}}).pickadate("picker"),r=s.data("filter_name"),t=s.data("range"),a=um_get_data_for_directory(s.parents(".um-directory"),"filter_"+r+"_"+t);void 0!==a&&e.set("select",1e3*a)}),e.find(".um-timepicker-filter").each(function(){var u=jQuery(this),_=u.attr("id"),o=u.data("filter_name"),n=u.attr("data-min"),l=u.attr("data-max"),e=n.split(":"),r=l.split(":"),t=u.pickatime({format:u.data("format"),interval:parseInt(u.data("intervals")),min:[e[0],e[1]],max:[r[0],r[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){u.blur()},onClose:function(){u.blur()},onSet:function(e){if(e.select){var r=u.parents(".um-directory");if(!um_is_directory_busy(r)){um_members_show_preloader(r);var t=u.data("filter_name"),a=u.data("range"),i=um_get_data_for_directory(r,"filter_"+t+"_from"),m=um_get_data_for_directory(r,"filter_"+t+"_to");if(void 0===i&&(i=n),void 0===m&&(m=l),void 0!==e.select){var d=um_time_convert(e.select,a);"from"===a?i=d:"to"===a&&(m=d)}else"from"===a?i=n:"to"===a&&(m=l);var s=jQuery("#"+_).val();"from"===u.data("range")?jQuery("#"+o+"_to").pickatime("picker").set("min",s):jQuery("#"+o+"_from").pickatime("picker").set("max",s),um_set_url_from_data(r,"filter_"+t+"_from",i),um_set_url_from_data(r,"filter_"+t+"_to",m),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}}}).pickatime("picker"),a=u.data("filter_name"),i=u.data("range"),m=um_get_data_for_directory(u.parents(".um-directory"),"filter_"+a+"_"+i);if(void 0!==m){var d=m.split(":");t.set("select",60*d[0]+1*d[1])}}),wp.hooks.doAction("um_member_directory_on_init",e,r);var t=!1;if(!(t=wp.hooks.applyFilters("um_member_directory_ignore_after_search",t,e))&&1===e.data("must-search")){var a=um_get_search(e);if(!um_get_filters_data(e).length&&!a)return}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,e,r)||(um_members_show_preloader(e),um_ajax_get_members(e,{first_load:!0}),um_change_tag(e))}),window.addEventListener("popstate",function(e){jQuery(".um-directory").each(function(){var d=jQuery(this),e=um_members_get_hash(d);(um_member_directories.push(e),um_members_show_preloader(d),d.find(".um-members-grid, .um-members-list, .um-members-intro").remove(),d.find(".um-member-directory-search-line").length)&&(void 0===(s=um_get_data_for_directory(d,"search"))&&(s=""),d.data("general_search",s),d.find(".um-search-line").val(s));var r=um_get_data_for_directory(d,"page");if(void 0===r?r=1:r>d.data("total_pages")&&(r=d.data("total_pages")),d.data("page",r).attr("data-page",r),d.find(".um-member-directory-sorting").length){var t=um_get_data_for_directory(d,"sort");void 0===t&&(t=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find('a[data-default="1"]').data("value")),d.data("sorting",t);var a=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]');a.find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),a.find('a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),d.find(".um-member-directory-sorting-a").find("> a").html(a.find('a[data-value="'+t+'"]').html())}if(d.find(".um-member-directory-view-type").length){var i=um_get_data_for_directory(d,"view_type");void 0===i&&(i=d.find('.um-member-directory-view-type-a[data-default="1"]').data("type")),d.data("view_type",i),d.find(".um-member-directory-view-type .um-member-directory-view-type-a").hide(),d.find('.um-member-directory-view-type .um-member-directory-view-type-a[data-type="'+i+'"]').show()}d.find(".um-datepicker-filter").each(function(){var e=jQuery(this),r=e.pickadate("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);void 0!==i?r.set("select",1e3*i):r.clear()}),d.find(".um-slider").each(function(){var e=jQuery(this),r=e.data("field_name"),t=um_get_data_for_directory(d,"filter_"+r+"_from"),a=um_get_data_for_directory(d,"filter_"+r+"_to");void 0===t&&(t=e.data("min")),t=parseInt(t),void 0===a&&(a=e.data("max")),a=parseInt(a),e.slider("values",[t,a]),um_set_range_label(e)}),d.find(".um-timepicker-filter").each(function(){var e=jQuery(this),r=e.pickatime("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);if(void 0!==i){var m=i.split(":");r.set("select",60*m[0])}else r.clear()});var m=!1;if(!(m=wp.hooks.applyFilters("um_member_directory_ignore_after_search",m,d))&&1===d.data("must-search")){var s=um_get_search(d);if(!um_get_filters_data(d).length&&!s)return d.data("searched",0),void um_members_hide_preloader(d);d.data("searched",1)}wp.hooks.applyFilters("um_member_directory_prevent_default_first_loading",!1,d,e)||(um_ajax_get_members(d),um_change_tag(d))})})});
includes/admin/core/class-admin-builder.php CHANGED
@@ -1066,6 +1066,14 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
1066
 
1067
  case 'um_admin_review_registration':
1068
  //$user_id = $arg1;
 
 
 
 
 
 
 
 
1069
  um_fetch_user( $arg1 );
1070
 
1071
  UM()->user()->preview = true;
1066
 
1067
  case 'um_admin_review_registration':
1068
  //$user_id = $arg1;
1069
+
1070
+ if ( ! current_user_can( 'administrator' ) ) {
1071
+ if ( ! um_can_view_profile( $arg1 ) ) {
1072
+ $output = '';
1073
+ break;
1074
+ }
1075
+ }
1076
+
1077
  um_fetch_user( $arg1 );
1078
 
1079
  UM()->user()->preview = true;
includes/admin/core/class-admin-users.php CHANGED
@@ -26,6 +26,10 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
26
 
27
  add_filter( 'user_row_actions', array( &$this, 'user_row_actions' ), 10, 2 );
28
 
 
 
 
 
29
  add_filter( 'pre_user_query', array( &$this, 'sort_by_newest' ) );
30
 
31
  add_filter( 'pre_user_query', array( &$this, 'filter_users_by_status' ) );
@@ -38,6 +42,41 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
38
  }
39
 
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  /**
42
  * Does an action to user asap
43
  *
@@ -200,13 +239,21 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
200
  function user_row_actions( $actions, $user_object ) {
201
  $user_id = $user_object->ID;
202
 
203
-
204
- $actions['frontend_profile'] = "<a class='' href='" . um_user_profile_url( $user_id ) . "'>" . __( 'View profile', 'ultimate-member' ) . "</a>";
205
 
206
  $submitted = get_user_meta( $user_id, 'submitted', true );
207
- if ( ! empty( $submitted ) )
208
  $actions['view_info'] = '<a href="javascript:void(0);" data-modal="UM_preview_registration" data-modal-size="smaller"
209
  data-dynamic-content="um_admin_review_registration" data-arg1="' . esc_attr( $user_id ) . '" data-arg2="edit_registration">' . __( 'Info', 'ultimate-member' ) . '</a>';
 
 
 
 
 
 
 
 
 
210
 
211
  /**
212
  * UM hook
@@ -235,6 +282,24 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
235
  }
236
 
237
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  /**
239
  * Change default sorting at WP Users list table
240
  *
@@ -363,6 +428,19 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
363
  $views[ $key ] = $view;
364
  }
365
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  return $views;
367
  }
368
 
26
 
27
  add_filter( 'user_row_actions', array( &$this, 'user_row_actions' ), 10, 2 );
28
 
29
+ add_filter( 'user_has_cap', array( &$this, 'map_caps_by_role' ), 10, 4 );
30
+
31
+ add_filter( 'users_list_table_query_args', array( &$this, 'hide_by_caps' ), 1, 1 );
32
+
33
  add_filter( 'pre_user_query', array( &$this, 'sort_by_newest' ) );
34
 
35
  add_filter( 'pre_user_query', array( &$this, 'filter_users_by_status' ) );
42
  }
43
 
44
 
45
+ /**
46
+ * Restrict the edit/delete users via wp-admin screen by the UM role capabilities
47
+ *
48
+ * @param $allcaps
49
+ * @param $cap
50
+ * @param $args
51
+ * @param $user
52
+ *
53
+ * @return mixed
54
+ */
55
+ function map_caps_by_role( $allcaps, $cap, $args, $user ) {
56
+ if ( isset( $cap[0] ) && $cap[0] == 'edit_users' ) {
57
+ if ( ! user_can( $args[1], 'administrator' ) && $args[0] == 'edit_user' ) {
58
+ if ( ! UM()->roles()->um_current_user_can( 'edit', $args[2] ) ) {
59
+ $allcaps[ $cap[0] ] = false;
60
+ }
61
+ }
62
+ } elseif ( isset( $cap[0] ) && $cap[0] == 'delete_users' ) {
63
+ if ( ! user_can( $args[1], 'administrator' ) && $args[0] == 'delete_user' ) {
64
+ if ( ! UM()->roles()->um_current_user_can( 'delete', $args[2] ) ) {
65
+ $allcaps[ $cap[0] ] = false;
66
+ }
67
+ }
68
+ } elseif ( isset( $cap[0] ) && $cap[0] == 'list_users' ) {
69
+ if ( ! user_can( $args[1], 'administrator' ) && $args[0] == 'list_users' ) {
70
+ if ( ! um_user( 'can_view_all' ) ) {
71
+ $allcaps[ $cap[0] ] = false;
72
+ }
73
+ }
74
+ }
75
+
76
+ return $allcaps;
77
+ }
78
+
79
+
80
  /**
81
  * Does an action to user asap
82
  *
239
  function user_row_actions( $actions, $user_object ) {
240
  $user_id = $user_object->ID;
241
 
242
+ $actions['frontend_profile'] = '<a href="' . um_user_profile_url( $user_id ) . '">' . __( 'View profile', 'ultimate-member' ) . '</a>';
 
243
 
244
  $submitted = get_user_meta( $user_id, 'submitted', true );
245
+ if ( ! empty( $submitted ) ) {
246
  $actions['view_info'] = '<a href="javascript:void(0);" data-modal="UM_preview_registration" data-modal-size="smaller"
247
  data-dynamic-content="um_admin_review_registration" data-arg1="' . esc_attr( $user_id ) . '" data-arg2="edit_registration">' . __( 'Info', 'ultimate-member' ) . '</a>';
248
+ }
249
+
250
+ if ( ! current_user_can( 'administrator' ) ) {
251
+ if ( ! um_can_view_profile( $user_id ) ) {
252
+ unset( $actions['frontend_profile'] );
253
+ unset( $actions['view_info'] );
254
+ unset( $actions['view'] );
255
+ }
256
+ }
257
 
258
  /**
259
  * UM hook
282
  }
283
 
284
 
285
+ /**
286
+ * Change default sorting at WP Users list table
287
+ *
288
+ * @param array $args
289
+ * @return array
290
+ */
291
+ function hide_by_caps( $args ) {
292
+ if ( ! current_user_can( 'administrator' ) ) {
293
+ $can_view_roles = um_user( 'can_view_roles' );
294
+ if ( um_user( 'can_view_all' ) && ! empty( $can_view_roles ) ) {
295
+ $args['role__in'] = $can_view_roles;
296
+ }
297
+ }
298
+
299
+ return $args;
300
+ }
301
+
302
+
303
  /**
304
  * Change default sorting at WP Users list table
305
  *
428
  $views[ $key ] = $view;
429
  }
430
 
431
+ // hide filters with not accessible roles
432
+ if ( ! current_user_can( 'administrator' ) ) {
433
+ $wp_roles = wp_roles();
434
+ $can_view_roles = um_user( 'can_view_roles' );
435
+ if ( ! empty( $can_view_roles ) ) {
436
+ foreach ( $wp_roles->get_names() as $this_role => $name ) {
437
+ if ( ! in_array( $this_role, $can_view_roles ) ) {
438
+ unset( $views[ $this_role ] );
439
+ }
440
+ }
441
+ }
442
+ }
443
+
444
  return $views;
445
  }
446
 
includes/admin/core/list-tables/roles-list-table.php CHANGED
@@ -350,7 +350,7 @@ class UM_Roles_List_Table extends WP_List_Table {
350
 
351
 
352
 
353
- return sprintf('%1$s %2$s', '<strong><a class="row-title" href="admin.php?page=um_roles&tab=edit&id=' . $item['key'] . '">' . $item['name'] . '</a></strong>', $this->row_actions( $actions ) );
354
  }
355
 
356
 
350
 
351
 
352
 
353
+ return sprintf('%1$s %2$s', '<strong><a class="row-title" href="admin.php?page=um_roles&tab=edit&id=' . $item['key'] . '">' . stripslashes( $item['name'] ) . '</a></strong>', $this->row_actions( $actions ) );
354
  }
355
 
356
 
includes/admin/templates/extensions.php CHANGED
@@ -134,6 +134,18 @@ $premium['user-locations'] = array(
134
  'desc' => 'Using the Google Maps API, display users on a map on the member directory page and allow users to add their location via their profile',
135
  );
136
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  $free['jobboardwp'] = array(
138
  'url' => 'https://wordpress.org/plugins/um-jobboardwp',
139
  'name' => 'JobBoardWP',
134
  'desc' => 'Using the Google Maps API, display users on a map on the member directory page and allow users to add their location via their profile',
135
  );
136
 
137
+ $premium['user-notes'] = array(
138
+ 'url' => 'https://ultimatemember.com/extensions/user-notes/',
139
+ 'name' => 'User Notes',
140
+ 'desc' => 'Allow users to create public and private notes from their profile',
141
+ );
142
+
143
+ $premium['profile-tabs'] = array(
144
+ 'url' => 'https://ultimatemember.com/extensions/profile-tabs/',
145
+ 'name' => 'Profile Tabs',
146
+ 'desc' => 'Add custom tabs to profiles',
147
+ );
148
+
149
  $free['jobboardwp'] = array(
150
  'url' => 'https://wordpress.org/plugins/um-jobboardwp',
151
  'name' => 'JobBoardWP',
includes/admin/templates/role/general.php CHANGED
@@ -5,22 +5,22 @@
5
  <?php $role = $object['data'];
6
 
7
  UM()->admin_forms( array(
8
- 'class' => 'um-role-general um-half-column',
9
- 'prefix_id' => 'role',
10
- 'fields' => array(
11
  array(
12
- 'id' => '_um_can_edit_profile',
13
- 'type' => 'checkbox',
14
- 'label' => __( 'Can edit their profile?', 'ultimate-member' ),
15
- 'tooltip' => __( 'Can this role edit his own profile?', 'ultimate-member' ),
16
- 'value' => ! empty( $role['_um_can_edit_profile'] ) ? $role['_um_can_edit_profile'] : 0,
17
  ),
18
  array(
19
- 'id' => '_um_can_delete_profile',
20
- 'type' => 'checkbox',
21
- 'label' => __( 'Can delete their account?', 'ultimate-member' ),
22
- 'tooltip' => __( 'Allow this role to delete their account and end their membership on your site', 'ultimate-member' ),
23
- 'value' => ! empty( $role['_um_can_delete_profile'] ) ? $role['_um_can_delete_profile'] : 0,
24
  )
25
  )
26
  ) )->render_form(); ?>
5
  <?php $role = $object['data'];
6
 
7
  UM()->admin_forms( array(
8
+ 'class' => 'um-role-general um-half-column',
9
+ 'prefix_id' => 'role',
10
+ 'fields' => array(
11
  array(
12
+ 'id' => '_um_can_edit_profile',
13
+ 'type' => 'checkbox',
14
+ 'label' => __( 'Can edit their profile?', 'ultimate-member' ),
15
+ 'tooltip' => __( 'Can this role edit his own profile?', 'ultimate-member' ),
16
+ 'value' => ! empty( $role['_um_can_edit_profile'] ) ? $role['_um_can_edit_profile'] : 0,
17
  ),
18
  array(
19
+ 'id' => '_um_can_delete_profile',
20
+ 'type' => 'checkbox',
21
+ 'label' => __( 'Can delete their account?', 'ultimate-member' ),
22
+ 'tooltip' => __( 'Allow this role to delete their account and end their membership on your site', 'ultimate-member' ),
23
+ 'value' => ! empty( $role['_um_can_delete_profile'] ) ? $role['_um_can_delete_profile'] : 0,
24
  )
25
  )
26
  ) )->render_form(); ?>
includes/admin/templates/role/profile.php CHANGED
@@ -5,41 +5,41 @@
5
  <?php $role = $object['data'];
6
 
7
  UM()->admin_forms( array(
8
- 'class' => 'um-role-profile um-half-column',
9
- 'prefix_id' => 'role',
10
- 'fields' => array(
11
  array(
12
- 'id' => '_um_can_view_all',
13
- 'type' => 'checkbox',
14
- 'label' => __( 'Can view other member profiles?', 'ultimate-member' ),
15
- 'tooltip' => __( 'Can this role view all member profiles?', 'ultimate-member' ),
16
- 'value' => ! empty( $role['_um_can_view_all'] ) ? $role['_um_can_view_all'] : 0,
17
  ),
18
  array(
19
- 'id' => '_um_can_view_roles',
20
- 'type' => 'select',
21
- 'label' => __( 'Can view these user roles only', 'ultimate-member' ),
22
- 'tooltip' => __( 'Which roles that role can view, choose none to allow role to view all member roles', 'ultimate-member' ),
23
- 'options' => UM()->roles()->get_roles(),
24
- 'multi' => true,
25
- 'value' => ! empty( $role['_um_can_view_roles'] ) ? $role['_um_can_view_roles'] : array(),
26
- 'conditional' => array( '_um_can_view_all', '=', '1' )
27
  ),
28
  array(
29
- 'id' => '_um_can_make_private_profile',
30
- 'type' => 'checkbox',
31
- 'name' => '_um_can_make_private_profile',
32
- 'label' => __( 'Can make their profile private?', 'ultimate-member' ),
33
- 'tooltip' => __( 'Can this role make their profile private?', 'ultimate-member' ),
34
- 'value' => ! empty( $role['_um_can_make_private_profile'] ) ? $role['_um_can_make_private_profile'] : 0,
35
  ),
36
  array(
37
- 'id' => '_um_can_access_private_profile',
38
- 'type' => 'checkbox',
39
- 'name' => '_um_can_access_private_profile',
40
- 'label' => __( 'Can view/access private profiles?', 'ultimate-member' ),
41
- 'tooltip' => __( 'Can this role view private profiles?', 'ultimate-member' ),
42
- 'value' => ! empty( $role['_um_can_access_private_profile'] ) ? $role['_um_can_access_private_profile'] : 0,
43
  )
44
  )
45
  ) )->render_form(); ?>
5
  <?php $role = $object['data'];
6
 
7
  UM()->admin_forms( array(
8
+ 'class' => 'um-role-profile um-half-column',
9
+ 'prefix_id' => 'role',
10
+ 'fields' => array(
11
  array(
12
+ 'id' => '_um_can_view_all',
13
+ 'type' => 'checkbox',
14
+ 'label' => __( 'Can view other member profiles?', 'ultimate-member' ),
15
+ 'tooltip' => __( 'Can this role view all member profiles?', 'ultimate-member' ),
16
+ 'value' => ! empty( $role['_um_can_view_all'] ) ? $role['_um_can_view_all'] : 0,
17
  ),
18
  array(
19
+ 'id' => '_um_can_view_roles',
20
+ 'type' => 'select',
21
+ 'label' => __( 'Can view these user roles only', 'ultimate-member' ),
22
+ 'tooltip' => __( 'Which roles that role can view, choose none to allow role to view all member roles', 'ultimate-member' ),
23
+ 'options' => UM()->roles()->get_roles(),
24
+ 'multi' => true,
25
+ 'value' => ! empty( $role['_um_can_view_roles'] ) ? $role['_um_can_view_roles'] : array(),
26
+ 'conditional' => array( '_um_can_view_all', '=', '1' )
27
  ),
28
  array(
29
+ 'id' => '_um_can_make_private_profile',
30
+ 'type' => 'checkbox',
31
+ 'name' => '_um_can_make_private_profile',
32
+ 'label' => __( 'Can make their profile private?', 'ultimate-member' ),
33
+ 'tooltip' => __( 'Can this role make their profile private?', 'ultimate-member' ),
34
+ 'value' => ! empty( $role['_um_can_make_private_profile'] ) ? $role['_um_can_make_private_profile'] : 0,
35
  ),
36
  array(
37
+ 'id' => '_um_can_access_private_profile',
38
+ 'type' => 'checkbox',
39
+ 'name' => '_um_can_access_private_profile',
40
+ 'label' => __( 'Can view/access private profiles?', 'ultimate-member' ),
41
+ 'tooltip' => __( 'Can this role view private profiles?', 'ultimate-member' ),
42
+ 'value' => ! empty( $role['_um_can_access_private_profile'] ) ? $role['_um_can_access_private_profile'] : 0,
43
  )
44
  )
45
  ) )->render_form(); ?>
includes/admin/templates/role/role-edit.php CHANGED
@@ -193,7 +193,7 @@ $screen_id = $current_screen->id; ?>
193
  <label for="title" class="screen-reader-text"><?php _e( 'Title', 'ultimate-member' ) ?></label>
194
  <input type="text" name="role[name]" placeholder="<?php esc_attr_e( 'Enter Title Here', 'ultimate-member' ) ?>" id="title" value="<?php echo isset( $data['name'] ) ? $data['name'] : '' ?>" />
195
  <?php } else { ?>
196
- <span style="float: left;width:100%;"><?php echo isset( $data['name'] ) ? $data['name'] : '' ?></span>
197
  <?php } ?>
198
  </div>
199
  </div>
193
  <label for="title" class="screen-reader-text"><?php _e( 'Title', 'ultimate-member' ) ?></label>
194
  <input type="text" name="role[name]" placeholder="<?php esc_attr_e( 'Enter Title Here', 'ultimate-member' ) ?>" id="title" value="<?php echo isset( $data['name'] ) ? $data['name'] : '' ?>" />
195
  <?php } else { ?>
196
+ <span style="float: left;width:100%;"><?php echo isset( $data['name'] ) ? stripslashes( $data['name'] ) : '' ?></span>
197
  <?php } ?>
198
  </div>
199
  </div>
includes/class-dependencies.php CHANGED
@@ -37,6 +37,8 @@ if ( ! class_exists( 'um\Dependencies' ) ) {
37
  'followers' => '2.1.6',
38
  'forumwp' => '2.0.4',
39
  'friends' => '2.1.4',
 
 
40
  'groups' => '2.1.7',
41
  'instagram' => '2.0.5',
42
  'jobboardwp' => '1.0.0',
@@ -57,6 +59,7 @@ if ( ! class_exists( 'um\Dependencies' ) ) {
57
  'unsplash' => '2.0.2',
58
  'user-bookmarks' => '2.0.2',
59
  'user-locations' => '1.0.0',
 
60
  'user-photos' => '2.0.4',
61
  'user-tags' => '2.1.0',
62
  'verified-users' => '2.0.5',
@@ -65,12 +68,6 @@ if ( ! class_exists( 'um\Dependencies' ) ) {
65
  /*????*/
66
  'restrict-content' => '2.0',
67
 
68
- /*rc*/
69
- 'user-notes' => '2.0',
70
-
71
-
72
- /*beta*/
73
- 'frontend-posting' => '1.0',
74
  /*alpha*/
75
  'user-exporter' => '1.0.0',
76
 
37
  'followers' => '2.1.6',
38
  'forumwp' => '2.0.4',
39
  'friends' => '2.1.4',
40
+ 'frontend-posting' => '1.0.0',
41
+ 'google-authenticator' => '1.0.0',
42
  'groups' => '2.1.7',
43
  'instagram' => '2.0.5',
44
  'jobboardwp' => '1.0.0',
59
  'unsplash' => '2.0.2',
60
  'user-bookmarks' => '2.0.2',
61
  'user-locations' => '1.0.0',
62
+ 'user-notes' => '1.0.0',
63
  'user-photos' => '2.0.4',
64
  'user-tags' => '2.1.0',
65
  'verified-users' => '2.0.5',
68
  /*????*/
69
  'restrict-content' => '2.0',
70
 
 
 
 
 
 
 
71
  /*alpha*/
72
  'user-exporter' => '1.0.0',
73
 
includes/class-init.php CHANGED
@@ -39,6 +39,7 @@ if ( ! class_exists( 'UM' ) ) {
39
  * @method UM_ForumWP ForumWP()
40
  * @method UM_Profile_Tabs Profile_Tabs()
41
  * @method UM_JobBoardWP JobBoardWP()
 
42
  */
43
  final class UM extends UM_Functions {
44
 
39
  * @method UM_ForumWP ForumWP()
40
  * @method UM_Profile_Tabs Profile_Tabs()
41
  * @method UM_JobBoardWP JobBoardWP()
42
+ * @method UM_Google_Authenticator Google_Authenticator()
43
  */
44
  final class UM extends UM_Functions {
45
 
includes/core/class-fields.php CHANGED
@@ -4111,7 +4111,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
4111
  $res = apply_filters( "um_view_field_value_{$type}", $res, $data );
4112
 
4113
  $output .= '<div class="um-field-area">';
4114
- $output .= '<div class="um-field-value">' . $res . '</div>';
4115
  $output .= '</div>';
4116
 
4117
  $output .= '</div>';
4111
  $res = apply_filters( "um_view_field_value_{$type}", $res, $data );
4112
 
4113
  $output .= '<div class="um-field-area">';
4114
+ $output .= '<div class="um-field-value" id="' . esc_attr( $key . UM()->form()->form_suffix ) . '">' . $res . '</div>';
4115
  $output .= '</div>';
4116
 
4117
  $output .= '</div>';
includes/core/class-permalinks.php CHANGED
@@ -182,20 +182,22 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
182
  $user_id = absint( $_REQUEST['user_id'] );
183
  delete_option( "um_cache_userdata_{$user_id}" );
184
 
185
- um_fetch_user( $user_id );
186
-
187
- if ( strtolower( $_REQUEST['hash'] ) !== strtolower( um_user( 'account_secret_hash' ) ) ) {
188
  wp_die( __( 'This activation link is expired or have already been used.', 'ultimate-member' ) );
189
  }
190
 
 
191
  UM()->user()->approve();
192
- $redirect = ( um_user( 'url_email_activate' ) ) ? um_user( 'url_email_activate' ) : um_get_core_page( 'login', 'account_active' );
193
- $login = (bool) um_user( 'login_email_activate' );
 
 
194
 
195
  // log in automatically
 
196
  if ( ! is_user_logged_in() && $login ) {
197
  $user = get_userdata( $user_id );
198
- $user_id = $user->ID;
199
 
200
  // update wp user
201
  wp_set_current_user( $user_id, $user->user_login );
@@ -206,7 +208,6 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
206
  ob_end_clean();
207
  }
208
 
209
- um_reset_user();
210
  /**
211
  * UM hook
212
  *
@@ -228,6 +229,9 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
228
  */
229
  do_action( 'um_after_email_confirmation', $user_id );
230
 
 
 
 
231
  exit( wp_redirect( $redirect ) );
232
 
233
  }
@@ -238,10 +242,10 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
238
  /**
239
  * Makes an activate link for any user
240
  *
241
- * @return bool|mixed|string|void
242
  */
243
  function activate_url() {
244
- if ( !um_user('account_secret_hash') ) {
245
  return false;
246
  }
247
 
@@ -268,8 +272,8 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
268
  */
269
  $url = apply_filters( 'um_activate_url', home_url() );
270
  $url = add_query_arg( 'act', 'activate_via_email', $url );
271
- $url = add_query_arg( 'hash', um_user('account_secret_hash'), $url );
272
- $url = add_query_arg( 'user_id', um_user('ID'), $url );
273
 
274
  return $url;
275
  }
@@ -375,7 +379,7 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) {
375
  */
376
  $profile_url = apply_filters( 'um_localize_permalink_filter', $profile_url, $page_id );
377
 
378
- if ( get_option('permalink_structure') ) {
379
 
380
  $profile_url = trailingslashit( untrailingslashit( $profile_url ) );
381
  $profile_url = $profile_url . strtolower( $slug ). '/';
182
  $user_id = absint( $_REQUEST['user_id'] );
183
  delete_option( "um_cache_userdata_{$user_id}" );
184
 
185
+ $account_secret_hash = get_user_meta( $user_id, 'account_secret_hash', true );
186
+ if ( empty( $account_secret_hash ) || strtolower( $_REQUEST['hash'] ) !== strtolower( $account_secret_hash ) ) {
 
187
  wp_die( __( 'This activation link is expired or have already been used.', 'ultimate-member' ) );
188
  }
189
 
190
+ um_fetch_user( $user_id );
191
  UM()->user()->approve();
192
+ um_reset_user();
193
+
194
+ $user_role = UM()->roles()->get_priority_user_role( $user_id );
195
+ $user_role_data = UM()->roles()->role_data( $user_role );
196
 
197
  // log in automatically
198
+ $login = ! empty( $user_role_data['login_email_activate'] ); // Role setting "Login user after validating the activation link?"
199
  if ( ! is_user_logged_in() && $login ) {
200
  $user = get_userdata( $user_id );
 
201
 
202
  // update wp user
203
  wp_set_current_user( $user_id, $user->user_login );
208
  ob_end_clean();
209
  }
210
 
 
211
  /**
212
  * UM hook
213
  *
229
  */
230
  do_action( 'um_after_email_confirmation', $user_id );
231
 
232
+ $redirect = empty( $user_role_data['url_email_activate'] ) ? um_get_core_page( 'login', 'account_active' ) : trim( $user_role_data['url_email_activate'] ); // Role setting "URL redirect after e-mail activation"
233
+ $redirect = apply_filters( 'um_after_email_confirmation_redirect', $redirect, $user_id, $login );
234
+
235
  exit( wp_redirect( $redirect ) );
236
 
237
  }
242
  /**
243
  * Makes an activate link for any user
244
  *
245
+ * @return bool|string
246
  */
247
  function activate_url() {
248
+ if ( ! um_user( 'account_secret_hash' ) ) {
249
  return false;
250
  }
251
 
272
  */
273
  $url = apply_filters( 'um_activate_url', home_url() );
274
  $url = add_query_arg( 'act', 'activate_via_email', $url );
275
+ $url = add_query_arg( 'hash', um_user( 'account_secret_hash' ), $url );
276
+ $url = add_query_arg( 'user_id', um_user( 'ID' ), $url );
277
 
278
  return $url;
279
  }
379
  */
380
  $profile_url = apply_filters( 'um_localize_permalink_filter', $profile_url, $page_id );
381
 
382
+ if ( get_option( 'permalink_structure' ) ) {
383
 
384
  $profile_url = trailingslashit( untrailingslashit( $profile_url ) );
385
  $profile_url = $profile_url . strtolower( $slug ). '/';
includes/core/class-plugin-updater.php CHANGED
@@ -147,6 +147,14 @@ if ( ! class_exists( 'um\core\Plugin_Updater' ) ) {
147
  'key' => 'unsplash',
148
  'title' => 'Unsplash',
149
  ),
 
 
 
 
 
 
 
 
150
  'um-user-notes/um-user-notes.php' => array(
151
  'key' => 'user_notes',
152
  'title' => 'User Notes',
@@ -155,17 +163,9 @@ if ( ! class_exists( 'um\core\Plugin_Updater' ) ) {
155
  'key' => 'frontend_posting',
156
  'title' => 'Frontend Posting',
157
  ),
158
- 'um-filesharing/um-filesharing.php' => array(
159
- 'key' => 'filesharing',
160
- 'title' => 'File Sharing',
161
- ),
162
- 'um-user-locations/um-user-locations.php' => array(
163
- 'key' => 'user-locations',
164
- 'title' => 'User Locations',
165
- ),
166
- 'um-profile-tabs/um-profile-tabs.php' => array(
167
- 'key' => 'profile_tabs',
168
- 'title' => 'Profile tabs',
169
  ),
170
  );
171
 
147
  'key' => 'unsplash',
148
  'title' => 'Unsplash',
149
  ),
150
+ 'um-user-locations/um-user-locations.php' => array(
151
+ 'key' => 'user-locations',
152
+ 'title' => 'User Locations',
153
+ ),
154
+ 'um-profile-tabs/um-profile-tabs.php' => array(
155
+ 'key' => 'profile_tabs',
156
+ 'title' => 'Profile tabs',
157
+ ),
158
  'um-user-notes/um-user-notes.php' => array(
159
  'key' => 'user_notes',
160
  'title' => 'User Notes',
163
  'key' => 'frontend_posting',
164
  'title' => 'Frontend Posting',
165
  ),
166
+ 'um-google-authenticator/um-google-authenticator.php' => array(
167
+ 'key' => 'google_authenticator',
168
+ 'title' => 'Google Authenticator',
 
 
 
 
 
 
 
 
169
  ),
170
  );
171
 
includes/core/class-roles-capabilities.php CHANGED
@@ -597,7 +597,7 @@ if ( ! class_exists( 'um\core\Roles_Capabilities' ) ) {
597
  *
598
  * @return array
599
  */
600
- function get_roles( $add_default = false, $exclude = null ){
601
  global $wp_roles;
602
 
603
  if ( empty( $wp_roles ) ) {
@@ -616,6 +616,8 @@ if ( ! class_exists( 'um\core\Roles_Capabilities' ) ) {
616
  }
617
  }
618
 
 
 
619
  return $roles;
620
  }
621
 
597
  *
598
  * @return array
599
  */
600
+ function get_roles( $add_default = false, $exclude = null ) {
601
  global $wp_roles;
602
 
603
  if ( empty( $wp_roles ) ) {
616
  }
617
  }
618
 
619
+ $roles = array_map( 'stripslashes', $roles );
620
+
621
  return $roles;
622
  }
623
 
includes/core/class-uploader.php CHANGED
@@ -1350,7 +1350,21 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
1350
  continue;
1351
  }
1352
 
1353
- unlink( $file );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1354
  }
1355
  }
1356
  }
1350
  continue;
1351
  }
1352
 
1353
+ // Don't delete photo that belongs to the Social Activity post or Groups post
1354
+ if ( strstr( $str, 'stream_photo' ) ) {
1355
+ global $wpdb;
1356
+ $is_post_image = $wpdb->get_var( "
1357
+ SELECT COUNT(*) FROM {$wpdb->postmeta}
1358
+ WHERE `meta_key`='_photo' AND `meta_value`='{$str}';" );
1359
+ if ( $is_post_image ) {
1360
+ continue;
1361
+ }
1362
+ }
1363
+
1364
+ $can_unlink = apply_filters( 'um_can_remove_uploaded_file', true, $user_id, $str );
1365
+ if ( $can_unlink ) {
1366
+ unlink( $file );
1367
+ }
1368
  }
1369
  }
1370
  }
includes/core/um-actions-profile.php CHANGED
@@ -668,7 +668,7 @@ function um_profile_dynamic_meta_desc() {
668
  "@context" => "http://schema.org",
669
  "@type" => "Person",
670
  "name" => esc_attr( $title ),
671
- "description" => esc_attr( $description ),
672
  "image" => esc_url( $image ),
673
  "url" => esc_url( $url ),
674
  );
668
  "@context" => "http://schema.org",
669
  "@type" => "Person",
670
  "name" => esc_attr( $title ),
671
+ "description" => esc_attr( stripslashes( $description ) ),
672
  "image" => esc_url( $image ),
673
  "url" => esc_url( $url ),
674
  );
includes/core/um-actions-register.php CHANGED
@@ -175,11 +175,6 @@ function um_check_user_status( $user_id, $args ) {
175
 
176
  do_action( "track_{$status}_user_registration" );
177
 
178
- // Priority redirect
179
- if ( isset( $args['redirect_to'] ) ) {
180
- exit( wp_safe_redirect( urldecode( $args['redirect_to'] ) ) );
181
- }
182
-
183
  if ( $status == 'approved' ) {
184
 
185
  UM()->user()->auto_login( $user_id );
@@ -206,6 +201,11 @@ function um_check_user_status( $user_id, $args ) {
206
  */
207
  do_action( 'um_registration_after_auto_login', $user_id );
208
 
 
 
 
 
 
209
  if ( um_user( 'auto_approve_act' ) == 'redirect_url' && um_user( 'auto_approve_url' ) !== '' ) {
210
  exit( wp_redirect( um_user( 'auto_approve_url' ) ) );
211
  }
@@ -214,9 +214,7 @@ function um_check_user_status( $user_id, $args ) {
214
  exit( wp_redirect( um_user_profile_url() ) );
215
  }
216
 
217
- }
218
-
219
- if ( $status != 'approved' ) {
220
 
221
  if ( um_user( $status . '_action' ) == 'redirect_url' && um_user( $status . '_url' ) != '' ) {
222
  /**
175
 
176
  do_action( "track_{$status}_user_registration" );
177
 
 
 
 
 
 
178
  if ( $status == 'approved' ) {
179
 
180
  UM()->user()->auto_login( $user_id );
201
  */
202
  do_action( 'um_registration_after_auto_login', $user_id );
203
 
204
+ // Priority redirect
205
+ if ( isset( $args['redirect_to'] ) ) {
206
+ exit( wp_safe_redirect( urldecode( $args['redirect_to'] ) ) );
207
+ }
208
+
209
  if ( um_user( 'auto_approve_act' ) == 'redirect_url' && um_user( 'auto_approve_url' ) !== '' ) {
210
  exit( wp_redirect( um_user( 'auto_approve_url' ) ) );
211
  }
214
  exit( wp_redirect( um_user_profile_url() ) );
215
  }
216
 
217
+ } else {
 
 
218
 
219
  if ( um_user( $status . '_action' ) == 'redirect_url' && um_user( $status . '_url' ) != '' ) {
220
  /**
includes/core/um-actions-save-profile.php CHANGED
@@ -31,12 +31,12 @@ function um_update_profile_full_name( $user_id, $changes ) {
31
  case 'initial_name':
32
  $fname = get_user_meta( $user_id, 'first_name', true );
33
  $lname = get_user_meta( $user_id, 'last_name', true );
34
- $update_name = $fname . ' ' . ( !empty( $lname ) ? $lname[0] : '' );
35
  break;
36
  case 'initial_name_f':
37
  $fname = get_user_meta( $user_id, 'first_name', true );
38
  $lname = get_user_meta( $user_id, 'last_name', true );
39
- $update_name = ( !empty($fname) ? $fname[0] : '' ) . ' ' . $lname;
40
  break;
41
  case 'nickname':
42
  $update_name = get_user_meta( $user_id, 'nickname', true );
@@ -48,19 +48,20 @@ function um_update_profile_full_name( $user_id, $changes ) {
48
  $arr_user = array( 'ID' => $user_id, 'display_name' => $update_name );
49
  $return = wp_update_user( $arr_user );
50
 
51
- if( is_wp_error( $return ) ) {
52
  wp_die( '<pre>' . var_export( array( 'message' => $return->get_error_message(), 'dump' => $arr_user, 'changes' => $changes ), true ) . '</pre>' );
53
  }
54
 
55
  }
56
 
57
  if ( isset( $changes['first_name'] ) && isset( $changes['last_name'] ) ) {
 
 
 
 
58
 
59
- $full_name = UM()->user()->profile['display_name'];
60
- $full_name = UM()->validation()->safe_name_in_url( $full_name );
61
-
62
- update_user_meta( UM()->user()->id, 'full_name', $full_name );
63
-
64
  }
65
 
66
  // regenerate slug
31
  case 'initial_name':
32
  $fname = get_user_meta( $user_id, 'first_name', true );
33
  $lname = get_user_meta( $user_id, 'last_name', true );
34
+ $update_name = $fname . ' ' . ( ! empty( $lname ) ? $lname[0] : '' );
35
  break;
36
  case 'initial_name_f':
37
  $fname = get_user_meta( $user_id, 'first_name', true );
38
  $lname = get_user_meta( $user_id, 'last_name', true );
39
+ $update_name = ( ! empty( $fname ) ? $fname[0] : '' ) . ' ' . $lname;
40
  break;
41
  case 'nickname':
42
  $update_name = get_user_meta( $user_id, 'nickname', true );
48
  $arr_user = array( 'ID' => $user_id, 'display_name' => $update_name );
49
  $return = wp_update_user( $arr_user );
50
 
51
+ if ( is_wp_error( $return ) ) {
52
  wp_die( '<pre>' . var_export( array( 'message' => $return->get_error_message(), 'dump' => $arr_user, 'changes' => $changes ), true ) . '</pre>' );
53
  }
54
 
55
  }
56
 
57
  if ( isset( $changes['first_name'] ) && isset( $changes['last_name'] ) ) {
58
+ $user = get_userdata( $user_id );
59
+ if ( ! empty( $user ) && ! is_wp_error( $user ) ) {
60
+ $full_name = $user->display_name;
61
+ $full_name = UM()->validation()->safe_name_in_url( $full_name );
62
 
63
+ update_user_meta( UM()->user()->id, 'full_name', $full_name );
64
+ }
 
 
 
65
  }
66
 
67
  // regenerate slug
includes/core/um-filters-profile.php CHANGED
@@ -32,7 +32,7 @@ function um_dynamic_user_profile_pagetitle( $title, $sep = '' ) {
32
 
33
  $profile_title = um_convert_tags( $profile_title );
34
 
35
- $title = $profile_title;
36
 
37
  um_reset_user();
38
 
32
 
33
  $profile_title = um_convert_tags( $profile_title );
34
 
35
+ $title = stripslashes( $profile_title );
36
 
37
  um_reset_user();
38
 
includes/um-deprecated-functions.php CHANGED
@@ -576,4 +576,110 @@ function um_select_if_in_query_params( $filter, $val ) {
576
  }
577
 
578
  echo $selected ? 'selected="selected"' : '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
579
  }
576
  }
577
 
578
  echo $selected ? 'selected="selected"' : '';
579
+ }
580
+
581
+
582
+ /**
583
+ * Get submitted user information
584
+ *
585
+ * @param bool $style
586
+ *
587
+ * @return null|string
588
+ *
589
+ * @deprecated 2.1.3
590
+ */
591
+ function um_user_submitted_registration( $style = false ) {
592
+ $output = null;
593
+
594
+ $data = um_user( 'submitted' );
595
+
596
+ if ( $style ) {
597
+ $output .= '<div class="um-admin-infobox">';
598
+ }
599
+
600
+ if ( isset( $data ) && is_array( $data ) ) {
601
+
602
+ /**
603
+ * UM hook
604
+ *
605
+ * @type filter
606
+ * @title um_email_registration_data
607
+ * @description Prepare Registration data to email
608
+ * @input_vars
609
+ * [{"var":"$data","type":"array","desc":"Registration Data"}]
610
+ * @change_log
611
+ * ["Since: 2.0"]
612
+ * @usage add_filter( 'um_email_registration_data', 'function_name', 10, 1 );
613
+ * @example
614
+ * <?php
615
+ * add_filter( 'um_email_registration_data', 'my_email_registration_data', 10, 1 );
616
+ * function my_email_registration_data( $data ) {
617
+ * // your code here
618
+ * return $data;
619
+ * }
620
+ * ?>
621
+ */
622
+ $data = apply_filters( 'um_email_registration_data', $data );
623
+
624
+ $pw_fields = array();
625
+ foreach ( $data as $k => $v ) {
626
+
627
+ if ( strstr( $k, 'user_pass' ) || in_array( $k, array( 'g-recaptcha-response', 'request', '_wpnonce', '_wp_http_referer' ) ) ) {
628
+ continue;
629
+ }
630
+
631
+ if ( UM()->fields()->get_field_type( $k ) == 'password' ) {
632
+ $pw_fields[] = $k;
633
+ $pw_fields[] = 'confirm_' . $k;
634
+ continue;
635
+ }
636
+
637
+ if ( ! empty( $pw_fields ) && in_array( $k, $pw_fields ) ) {
638
+ continue;
639
+ }
640
+
641
+ if ( UM()->fields()->get_field_type( $k ) == 'image' || UM()->fields()->get_field_type( $k ) == 'file' ) {
642
+ $file = basename( $v );
643
+ $filedata = get_user_meta( um_user( 'ID' ), $k . "_metadata", true );
644
+
645
+ $baseurl = UM()->uploader()->get_upload_base_url();
646
+ if ( ! file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $file ) ) {
647
+ if ( is_multisite() ) {
648
+ //multisite fix for old customers
649
+ $baseurl = str_replace( '/sites/' . get_current_blog_id() . '/', '/', $baseurl );
650
+ }
651
+ }
652
+
653
+ if ( ! empty( $filedata['original_name'] ) ) {
654
+ $v = '<a href="' . esc_attr( $baseurl . um_user( 'ID' ) . '/' . $file ) . '">' . esc_html( $filedata['original_name'] ) . '</a>';
655
+ } else {
656
+ $v = $baseurl . um_user( 'ID' ) . '/' . $file;
657
+ }
658
+ }
659
+
660
+ if ( is_array( $v ) ) {
661
+ $v = implode( ',', $v );
662
+ }
663
+
664
+ if ( $k == 'timestamp' ) {
665
+ $k = __( 'date submitted', 'ultimate-member' );
666
+ $v = date( "d M Y H:i", $v );
667
+ }
668
+
669
+ if ( $style ) {
670
+ if ( ! $v ) {
671
+ $v = __( '(empty)', 'ultimate-member' );
672
+ }
673
+ $output .= "<p><label>$k</label><span>$v</span></p>";
674
+ } else {
675
+ $output .= "$k: $v" . "<br />";
676
+ }
677
+ }
678
+ }
679
+
680
+ if ( $style ) {
681
+ $output .= '</div>';
682
+ }
683
+
684
+ return $output;
685
  }
includes/um-short-functions.php CHANGED
@@ -310,31 +310,31 @@ function um_user_ip() {
310
  */
311
  function um_field_conditions_are_met( $data ) {
312
 
 
 
 
313
 
314
-
315
- if (!isset( $data['conditions'] )) return true;
316
-
317
- $state = ( $data['conditional_action'] == 'show' ) ? 1 : 0;
318
-
319
 
320
  $first_group = 0;
321
  $state_array = array();
322
- $count = count($state_array);
323
- foreach ($data['conditions'] as $k => $arr){
324
 
325
  $val = $arr[3];
326
  $op = $arr[2];
327
 
328
- if (strstr($arr[1], 'role_'))
329
  $arr[1] = 'role';
 
330
 
331
- $field = um_profile($arr[1]);
332
 
333
 
334
- if( ! isset( $arr[5] ) || $arr[5] != $first_group ){
335
 
336
 
337
- if ($arr[0] == 'show') {
338
 
339
  switch ($op) {
340
  case 'equals to':
@@ -389,32 +389,34 @@ function um_field_conditions_are_met( $data ) {
389
  }
390
  break;
391
  }
392
- } else if ($arr[0] == 'hide') {
393
 
394
- switch ($op) {
395
  case 'equals to':
396
 
397
  $field = maybe_unserialize( $field );
398
 
399
- if (is_array( $field ))
400
  $state = in_array( $val, $field ) ? 'hide' : 'show';
401
- else
402
  $state = ( $field == $val ) ? 'hide' : 'show';
 
403
 
404
  break;
405
  case 'not equals':
406
 
407
  $field = maybe_unserialize( $field );
408
 
409
- if (is_array( $field ))
410
- $state = !in_array( $val, $field ) ? 'hide' : 'show';
411
- else
412
  $state = ( $field != $val ) ? 'hide' : 'show';
 
413
 
414
  break;
415
  case 'empty':
416
 
417
- $state = ( !$field ) ? 'hide' : 'show';
418
 
419
  break;
420
  case 'not empty':
@@ -423,21 +425,21 @@ function um_field_conditions_are_met( $data ) {
423
 
424
  break;
425
  case 'greater than':
426
- if ($field <= $val) {
427
  $state = 'hide';
428
  } else {
429
  $state = 'show';
430
  }
431
  break;
432
  case 'less than':
433
- if ($field >= $val) {
434
  $state = 'hide';
435
  } else {
436
  $state = 'show';
437
  }
438
  break;
439
  case 'contains':
440
- if (strstr( $field, $val )) {
441
  $state = 'hide';
442
  } else {
443
  $state = 'show';
@@ -446,35 +448,35 @@ function um_field_conditions_are_met( $data ) {
446
  }
447
  }
448
  $first_group++;
449
- array_push($state_array, $state);
450
  } else {
451
 
452
- if ($arr[0] == 'show') {
453
 
454
- switch ($op) {
455
  case 'equals to':
456
-
457
  $field = maybe_unserialize( $field );
458
 
459
- if (is_array( $field ))
460
  $state = in_array( $val, $field ) ? 'show' : 'not_show';
461
- else
462
  $state = ( $field == $val ) ? 'show' : 'not_show';
 
463
 
464
  break;
465
  case 'not equals':
466
-
467
  $field = maybe_unserialize( $field );
468
 
469
- if (is_array( $field ))
470
- $state = !in_array( $val, $field ) ? 'show' : 'not_show';
471
- else
472
  $state = ( $field != $val ) ? 'show' : 'not_show';
 
473
 
474
  break;
475
  case 'empty':
476
 
477
- $state = ( !$field ) ? 'show' : 'not_show';
478
 
479
  break;
480
  case 'not empty':
@@ -483,53 +485,54 @@ function um_field_conditions_are_met( $data ) {
483
 
484
  break;
485
  case 'greater than':
486
- if ($field > $val) {
487
  $state = 'show';
488
  } else {
489
  $state = 'not_show';
490
  }
491
  break;
492
  case 'less than':
493
- if ($field < $val) {
494
  $state = 'show';
495
  } else {
496
  $state = 'not_show';
497
  }
498
  break;
499
  case 'contains':
500
- if (strstr( $field, $val )) {
501
  $state = 'show';
502
  } else {
503
  $state = 'not_show';
504
  }
505
  break;
506
  }
507
- } else if ($arr[0] == 'hide') {
508
 
509
- switch ($op) {
510
  case 'equals to':
511
-
512
  $field = maybe_unserialize( $field );
513
 
514
- if (is_array( $field ))
515
  $state = in_array( $val, $field ) ? 'hide' : 'not_hide';
516
- else
517
  $state = ( $field == $val ) ? 'hide' : 'not_hide';
 
518
 
519
  break;
520
  case 'not equals':
521
 
522
  $field = maybe_unserialize( $field );
523
 
524
- if (is_array( $field ))
525
- $state = !in_array( $val, $field ) ? 'hide' : 'not_hide';
526
- else
527
  $state = ( $field != $val ) ? 'hide' : 'not_hide';
 
528
 
529
  break;
530
  case 'empty':
531
 
532
- $state = ( !$field ) ? 'hide' : 'not_hide';
533
 
534
  break;
535
  case 'not empty':
@@ -538,21 +541,21 @@ function um_field_conditions_are_met( $data ) {
538
 
539
  break;
540
  case 'greater than':
541
- if ($field <= $val) {
542
  $state = 'hide';
543
  } else {
544
  $state = 'not_hide';
545
  }
546
  break;
547
  case 'less than':
548
- if ($field >= $val) {
549
  $state = 'hide';
550
  } else {
551
  $state = 'not_hide';
552
  }
553
  break;
554
  case 'contains':
555
- if (strstr( $field, $val )) {
556
  $state = 'hide';
557
  } else {
558
  $state = 'not_hide';
@@ -560,25 +563,25 @@ function um_field_conditions_are_met( $data ) {
560
  break;
561
  }
562
  }
563
- if( isset($state_array[$count]) ){
564
- if( $state_array[$count] == 'show' || $state_array[$count] == 'not_hide' ){
565
- if ( $state == 'show' || $state == 'not_hide' ){
566
- $state_array[$count] = 'show';
567
  } else {
568
- $state_array[$count] = 'hide';
569
  }
570
  } else {
571
- if ( $state == 'hide' || $state == 'not_show' ){
572
- $state_array[$count] = 'hide';
573
  } else {
574
- $state_array[$count] = 'hide';
575
  }
576
  }
577
  } else {
578
- if ( $state == 'show' || $state == 'not_hide' ){
579
- $state_array[$count] = 'show';
580
  } else {
581
- $state_array[$count] = 'hide';
582
  }
583
  }
584
  }
@@ -666,111 +669,6 @@ function um_get_snippet( $str, $wordCount = 10 ) {
666
  }
667
 
668
 
669
- /**
670
- * Get submitted user information
671
- *
672
- * @param bool $style
673
- *
674
- * @return null|string
675
- *
676
- * @deprecated 2.1.3
677
- */
678
- function um_user_submitted_registration( $style = false ) {
679
- $output = null;
680
-
681
- $data = um_user( 'submitted' );
682
-
683
- if ( $style ) {
684
- $output .= '<div class="um-admin-infobox">';
685
- }
686
-
687
- if ( isset( $data ) && is_array( $data ) ) {
688
-
689
- /**
690
- * UM hook
691
- *
692
- * @type filter
693
- * @title um_email_registration_data
694
- * @description Prepare Registration data to email
695
- * @input_vars
696
- * [{"var":"$data","type":"array","desc":"Registration Data"}]
697
- * @change_log
698
- * ["Since: 2.0"]
699
- * @usage add_filter( 'um_email_registration_data', 'function_name', 10, 1 );
700
- * @example
701
- * <?php
702
- * add_filter( 'um_email_registration_data', 'my_email_registration_data', 10, 1 );
703
- * function my_email_registration_data( $data ) {
704
- * // your code here
705
- * return $data;
706
- * }
707
- * ?>
708
- */
709
- $data = apply_filters( 'um_email_registration_data', $data );
710
-
711
- $pw_fields = array();
712
- foreach ( $data as $k => $v ) {
713
-
714
- if ( strstr( $k, 'user_pass' ) || in_array( $k, array( 'g-recaptcha-response', 'request', '_wpnonce', '_wp_http_referer' ) ) ) {
715
- continue;
716
- }
717
-
718
- if ( UM()->fields()->get_field_type( $k ) == 'password' ) {
719
- $pw_fields[] = $k;
720
- $pw_fields[] = 'confirm_' . $k;
721
- continue;
722
- }
723
-
724
- if ( ! empty( $pw_fields ) && in_array( $k, $pw_fields ) ) {
725
- continue;
726
- }
727
-
728
- if ( UM()->fields()->get_field_type( $k ) == 'image' || UM()->fields()->get_field_type( $k ) == 'file' ) {
729
- $file = basename( $v );
730
- $filedata = get_user_meta( um_user( 'ID' ), $k . "_metadata", true );
731
-
732
- $baseurl = UM()->uploader()->get_upload_base_url();
733
- if ( ! file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $file ) ) {
734
- if ( is_multisite() ) {
735
- //multisite fix for old customers
736
- $baseurl = str_replace( '/sites/' . get_current_blog_id() . '/', '/', $baseurl );
737
- }
738
- }
739
-
740
- if ( ! empty( $filedata['original_name'] ) ) {
741
- $v = '<a href="' . esc_attr( $baseurl . um_user( 'ID' ) . '/' . $file ) . '">' . esc_html( $filedata['original_name'] ) . '</a>';
742
- } else {
743
- $v = $baseurl . um_user( 'ID' ) . '/' . $file;
744
- }
745
- }
746
-
747
- if ( is_array( $v ) ) {
748
- $v = implode( ',', $v );
749
- }
750
-
751
- if ( $k == 'timestamp' ) {
752
- $k = __( 'date submitted', 'ultimate-member' );
753
- $v = date( "d M Y H:i", $v );
754
- }
755
-
756
- if ( $style ) {
757
- if ( ! $v ) {
758
- $v = __( '(empty)', 'ultimate-member' );
759
- }
760
- $output .= "<p><label>$k</label><span>$v</span></p>";
761
- } else {
762
- $output .= "$k: $v" . "<br />";
763
- }
764
- }
765
- }
766
-
767
- if ( $style ) {
768
- $output .= '</div>';
769
- }
770
-
771
- return $output;
772
- }
773
-
774
  /**
775
  * Format submitted data for Info preview & Email template
776
  * @param boolean $style
@@ -941,7 +839,7 @@ function um_user_submitted_registration_formatted( $style = false ) {
941
  function um_user_submited_display( $k, $title, $data = array(), $style = true ) {
942
  $output = '';
943
 
944
- if ( 'form_id' == $k && isset( $data['form_id'] ) && ! empty( $data['form_id'] ) ) {
945
  $v = sprintf( __( '%s - Form ID#: %s', 'ultimate-member' ), get_the_title( $data['form_id'] ), $data['form_id'] );
946
  } else {
947
  $v = um_user( $k );
@@ -951,6 +849,12 @@ function um_user_submited_display( $k, $title, $data = array(), $style = true )
951
  return '';
952
  }
953
 
 
 
 
 
 
 
954
  if ( ! $v ) {
955
  if ( $style ) {
956
  return "<p><label>$title: </label><span>" . __( '(empty)', 'ultimate-member' ) ."</span></p>";
@@ -959,7 +863,7 @@ function um_user_submited_display( $k, $title, $data = array(), $style = true )
959
  }
960
  }
961
 
962
- if ( UM()->fields()->get_field_type( $k ) == 'image' || UM()->fields()->get_field_type( $k ) == 'file' ) {
963
  $file = basename( $v );
964
 
965
  $filedata = get_user_meta( um_user( 'ID' ), $k . "_metadata", true );
310
  */
311
  function um_field_conditions_are_met( $data ) {
312
 
313
+ if ( ! isset( $data['conditions'] ) ) {
314
+ return true;
315
+ }
316
 
317
+ $state = ( isset( $data['conditional_action'] ) && $data['conditional_action'] == 'show' ) ? 1 : 0;
 
 
 
 
318
 
319
  $first_group = 0;
320
  $state_array = array();
321
+ $count = count( $state_array );
322
+ foreach ( $data['conditions'] as $k => $arr ) {
323
 
324
  $val = $arr[3];
325
  $op = $arr[2];
326
 
327
+ if ( strstr( $arr[1], 'role_' ) ) {
328
  $arr[1] = 'role';
329
+ }
330
 
331
+ $field = um_profile( $arr[1] );
332
 
333
 
334
+ if ( ! isset( $arr[5] ) || $arr[5] != $first_group ) {
335
 
336
 
337
+ if ( $arr[0] == 'show' ) {
338
 
339
  switch ($op) {
340
  case 'equals to':
389
  }
390
  break;
391
  }
392
+ } elseif ( $arr[0] == 'hide' ) {
393
 
394
+ switch ( $op ) {
395
  case 'equals to':
396
 
397
  $field = maybe_unserialize( $field );
398
 
399
+ if ( is_array( $field ) ) {
400
  $state = in_array( $val, $field ) ? 'hide' : 'show';
401
+ } else {
402
  $state = ( $field == $val ) ? 'hide' : 'show';
403
+ }
404
 
405
  break;
406
  case 'not equals':
407
 
408
  $field = maybe_unserialize( $field );
409
 
410
+ if ( is_array( $field ) ) {
411
+ $state = ! in_array( $val, $field ) ? 'hide' : 'show';
412
+ } else {
413
  $state = ( $field != $val ) ? 'hide' : 'show';
414
+ }
415
 
416
  break;
417
  case 'empty':
418
 
419
+ $state = ( ! $field ) ? 'hide' : 'show';
420
 
421
  break;
422
  case 'not empty':
425
 
426
  break;
427
  case 'greater than':
428
+ if ( $field <= $val ) {
429
  $state = 'hide';
430
  } else {
431
  $state = 'show';
432
  }
433
  break;
434
  case 'less than':
435
+ if ( $field >= $val ) {
436
  $state = 'hide';
437
  } else {
438
  $state = 'show';
439
  }
440
  break;
441
  case 'contains':
442
+ if ( strstr( $field, $val ) ) {
443
  $state = 'hide';
444
  } else {
445
  $state = 'show';
448
  }
449
  }
450
  $first_group++;
451
+ array_push( $state_array, $state );
452
  } else {
453
 
454
+ if ( $arr[0] == 'show' ) {
455
 
456
+ switch ( $op ) {
457
  case 'equals to':
 
458
  $field = maybe_unserialize( $field );
459
 
460
+ if ( is_array( $field ) ) {
461
  $state = in_array( $val, $field ) ? 'show' : 'not_show';
462
+ } else {
463
  $state = ( $field == $val ) ? 'show' : 'not_show';
464
+ }
465
 
466
  break;
467
  case 'not equals':
 
468
  $field = maybe_unserialize( $field );
469
 
470
+ if ( is_array( $field ) ) {
471
+ $state = ! in_array( $val, $field ) ? 'show' : 'not_show';
472
+ } else {
473
  $state = ( $field != $val ) ? 'show' : 'not_show';
474
+ }
475
 
476
  break;
477
  case 'empty':
478
 
479
+ $state = ( ! $field ) ? 'show' : 'not_show';
480
 
481
  break;
482
  case 'not empty':
485
 
486
  break;
487
  case 'greater than':
488
+ if ( $field > $val ) {
489
  $state = 'show';
490
  } else {
491
  $state = 'not_show';
492
  }
493
  break;
494
  case 'less than':
495
+ if ( $field < $val ) {
496
  $state = 'show';
497
  } else {
498
  $state = 'not_show';
499
  }
500
  break;
501
  case 'contains':
502
+ if ( strstr( $field, $val ) ) {
503
  $state = 'show';
504
  } else {
505
  $state = 'not_show';
506
  }
507
  break;
508
  }
509
+ } elseif ( $arr[0] == 'hide' ) {
510
 
511
+ switch ( $op ) {
512
  case 'equals to':
 
513
  $field = maybe_unserialize( $field );
514
 
515
+ if ( is_array( $field ) ) {
516
  $state = in_array( $val, $field ) ? 'hide' : 'not_hide';
517
+ } else {
518
  $state = ( $field == $val ) ? 'hide' : 'not_hide';
519
+ }
520
 
521
  break;
522
  case 'not equals':
523
 
524
  $field = maybe_unserialize( $field );
525
 
526
+ if ( is_array( $field ) ) {
527
+ $state = ! in_array( $val, $field ) ? 'hide' : 'not_hide';
528
+ } else {
529
  $state = ( $field != $val ) ? 'hide' : 'not_hide';
530
+ }
531
 
532
  break;
533
  case 'empty':
534
 
535
+ $state = ( ! $field ) ? 'hide' : 'not_hide';
536
 
537
  break;
538
  case 'not empty':
541
 
542
  break;
543
  case 'greater than':
544
+ if ( $field <= $val ) {
545
  $state = 'hide';
546
  } else {
547
  $state = 'not_hide';
548
  }
549
  break;
550
  case 'less than':
551
+ if ( $field >= $val ) {
552
  $state = 'hide';
553
  } else {
554
  $state = 'not_hide';
555
  }
556
  break;
557
  case 'contains':
558
+ if ( strstr( $field, $val ) ) {
559
  $state = 'hide';
560
  } else {
561
  $state = 'not_hide';
563
  break;
564
  }
565
  }
566
+ if ( isset( $state_array[ $count ] ) ) {
567
+ if ( $state_array[ $count ] == 'show' || $state_array[ $count ] == 'not_hide' ) {
568
+ if ( $state == 'show' || $state == 'not_hide' ) {
569
+ $state_array[ $count ] = 'show';
570
  } else {
571
+ $state_array[ $count ] = 'hide';
572
  }
573
  } else {
574
+ if ( $state == 'hide' || $state == 'not_show' ) {
575
+ $state_array[ $count ] = 'hide';
576
  } else {
577
+ $state_array[ $count ] = 'hide';
578
  }
579
  }
580
  } else {
581
+ if ( $state == 'show' || $state == 'not_hide' ) {
582
+ $state_array[ $count ] = 'show';
583
  } else {
584
+ $state_array[ $count ] = 'hide';
585
  }
586
  }
587
  }
669
  }
670
 
671
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
672
  /**
673
  * Format submitted data for Info preview & Email template
674
  * @param boolean $style
839
  function um_user_submited_display( $k, $title, $data = array(), $style = true ) {
840
  $output = '';
841
 
842
+ if ( 'form_id' == $k && isset( $data['form_id'] ) && ! empty( $data['form_id'] ) ) {
843
  $v = sprintf( __( '%s - Form ID#: %s', 'ultimate-member' ), get_the_title( $data['form_id'] ), $data['form_id'] );
844
  } else {
845
  $v = um_user( $k );
849
  return '';
850
  }
851
 
852
+ $fields_without_metakey = UM()->builtin()->get_fields_without_metakey();
853
+ $type = UM()->fields()->get_field_type( $k );
854
+ if ( in_array( $type, $fields_without_metakey ) ) {
855
+ return '';
856
+ }
857
+
858
  if ( ! $v ) {
859
  if ( $style ) {
860
  return "<p><label>$title: </label><span>" . __( '(empty)', 'ultimate-member' ) ."</span></p>";
863
  }
864
  }
865
 
866
+ if ( $type == 'image' || $type == 'file' ) {
867
  $file = basename( $v );
868
 
869
  $filedata = get_user_meta( um_user( 'ID' ), $k . "_metadata", true );
readme.txt CHANGED
@@ -7,7 +7,7 @@ Tags: community, member, membership, user-profile, user-registration
7
  Requires PHP: 5.6
8
  Requires at least: 5.0
9
  Tested up to: 5.5
10
- Stable tag: 2.1.7
11
  License: GNU Version 2 or Any Later Version
12
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
13
 
@@ -42,6 +42,8 @@ Read about all of the plugin's features at [Ultimate Member](https://ultimatemem
42
 
43
  Ultimate Member has a range of extensions that allow you to extend the power of the plugin. You can purchase all of these extensions at a significant discount with our [All Access Pass](https://ultimatemember.com/pricing/) or you can purchase extensions individually.
44
 
 
 
45
  * [User Locations](https://ultimatemember.com/extensions/user-locations/) - Allow to display users on a map on the member directory page and allow users to add their location via their profile
46
  * [Unsplash](https://ultimatemember.com/extensions/unsplash/) - Allow users to select a profile cover photo from [Unsplash](https://unsplash.com/) from their profile
47
  * [User Bookmarks](https://ultimatemember.com/extensions/user-bookmarks/) - Allow users to bookmark content from your website
@@ -67,7 +69,7 @@ Ultimate Member has a range of extensions that allow you to extend the power of
67
 
68
  = Free Extensions =
69
 
70
- * [JobsBoardWP](https://wordpress.org/plugins/um-jobboardwp) - This free extension integrates Ultimate Member with the job board plugin [JobBoardWP](https://wordpress.org/plugins/jobboardwp).
71
  * [ForumWP](https://ultimatemember.com/extensions/forumwp/) - This free extension integrates Ultimate Member with the forum plugin [ForumWP](https://forumwpplugin.com).
72
  * [Terms & Conditions](https://ultimatemember.com/extensions/terms-conditions/) - Add a terms and condition checkbox to your registration forms & require users to agree to your T&Cs before registering on your site.
73
  * [Google reCAPTCHA](https://ultimatemember.com/extensions/google-recaptcha/) - Stop bots on your registration & login forms with Google reCAPTCHA
@@ -154,6 +156,24 @@ The plugin works with popular caching plugins by automatically excluding Ultimat
154
  * To learn more about version 2.1 please see this [docs](https://docs.ultimatemember.com/article/1512-upgrade-2-1-0)
155
  * UM2.1+ is a significant update to the Member Directories' code base from 2.0.x. Please make sure you take a full-site backup with restore point before updating the plugin
156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  = 2.1.7: August 12, 2020 =
158
 
159
  * Enhancements:
7
  Requires PHP: 5.6
8
  Requires at least: 5.0
9
  Tested up to: 5.5
10
+ Stable tag: 2.1.8
11
  License: GNU Version 2 or Any Later Version
12
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
13
 
42
 
43
  Ultimate Member has a range of extensions that allow you to extend the power of the plugin. You can purchase all of these extensions at a significant discount with our [All Access Pass](https://ultimatemember.com/pricing/) or you can purchase extensions individually.
44
 
45
+ * [User Notes](https://ultimatemember.com/extensions/user-notes/) - Allow users to create public and private notes from their profile
46
+ * [Profile Tabs](https://ultimatemember.com/extensions/profile-tabs/) - Allow to add the custom tabs to profiles
47
  * [User Locations](https://ultimatemember.com/extensions/user-locations/) - Allow to display users on a map on the member directory page and allow users to add their location via their profile
48
  * [Unsplash](https://ultimatemember.com/extensions/unsplash/) - Allow users to select a profile cover photo from [Unsplash](https://unsplash.com/) from their profile
49
  * [User Bookmarks](https://ultimatemember.com/extensions/user-bookmarks/) - Allow users to bookmark content from your website
69
 
70
  = Free Extensions =
71
 
72
+ * [JobsBoardWP](https://ultimatemember.com/extensions/jobboardwp/) - This free extension integrates Ultimate Member with the job board plugin [JobBoardWP](https://wordpress.org/plugins/jobboardwp).
73
  * [ForumWP](https://ultimatemember.com/extensions/forumwp/) - This free extension integrates Ultimate Member with the forum plugin [ForumWP](https://forumwpplugin.com).
74
  * [Terms & Conditions](https://ultimatemember.com/extensions/terms-conditions/) - Add a terms and condition checkbox to your registration forms & require users to agree to your T&Cs before registering on your site.
75
  * [Google reCAPTCHA](https://ultimatemember.com/extensions/google-recaptcha/) - Stop bots on your registration & login forms with Google reCAPTCHA
156
  * To learn more about version 2.1 please see this [docs](https://docs.ultimatemember.com/article/1512-upgrade-2-1-0)
157
  * UM2.1+ is a significant update to the Member Directories' code base from 2.0.x. Please make sure you take a full-site backup with restore point before updating the plugin
158
 
159
+ = 2.1.8: September 2, 2020 =
160
+
161
+ * Enhancements:
162
+
163
+ - Added dependency functions for extensions: [Ultimate Member - User Notes](https://ultimatemember.com/extensions/user-notes/) & [Ultimate Member - Profile Tabs](https://ultimatemember.com/extensions/profile-tabs/)
164
+ - Added unique IDs to the form fields at the Profile's view mode
165
+ - Added restrictions for WP > Users list table based on UM Roles capabilities
166
+
167
+ * Bugfixes:
168
+
169
+ - Removed additional slashes in the UM custom roles titles
170
+ - Fixed cleaning user old uploads and integration with Social activity & Groups files
171
+ - Fixed Info window fields (hide fields without metakeys)
172
+ - Fixed PHP warning in conditional logic function
173
+ - Fixed member directory preloader when using a slider filter
174
+ - Fixed 'redirect_to' attribute and approving user on registration
175
+ - Fixed activate an account via email
176
+
177
  = 2.1.7: August 12, 2020 =
178
 
179
  * Enhancements:
ultimate-member.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Ultimate Member
4
  Plugin URI: http://ultimatemember.com/
5
  Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
6
- Version: 2.1.7
7
  Author: Ultimate Member
8
  Author URI: http://ultimatemember.com/
9
  Text Domain: ultimate-member
3
  Plugin Name: Ultimate Member
4
  Plugin URI: http://ultimatemember.com/
5
  Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
6
+ Version: 2.1.8
7
  Author: Ultimate Member
8
  Author URI: http://ultimatemember.com/
9
  Text Domain: ultimate-member