").append(e.siblings(".um-hidden-multi-selects").clone()).html()+'
'+wp.i18n.__("Remove","ultimate-member")+"",e.append(i),e.find("li:last .um-hidden-multi-selects").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-selects").attr("id",e.data("id_attr")+"-"+t))}),jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_exclude_fields][]"]').on("click",function(){jQuery('.um-multi-selects-list[data-field_id="_um_search_include_fields"] li.um-multi-selects-option-line').remove()}),jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_include_fields][]"]').on("click",function(){jQuery('.um-multi-selects-list[data-field_id="_um_search_exclude_fields"] li.um-multi-selects-option-line').remove()});var t,e=-(new Date).getTimezoneOffset()/60,i=(jQuery('input[name="um-gmt-offset"]').val(e),jQuery(".um-admin-metabox").find(".um-slider").each(function(){var e=jQuery(this),a=parseInt(e.data("min")),t=parseInt(e.data("max")),a=[a=void 0!==jQuery("#"+e.data("field_name")+"_min").val()?jQuery("#"+e.data("field_name")+"_min").val():a,t=void 0!==jQuery("#"+e.data("field_name")+"_max").val()?jQuery("#"+e.data("field_name")+"_max").val():t];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),jQuery(".um-admin-metabox").find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max")),a=e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}}).pickadate("picker");e.data("value")&&a.set("select",1e3*e.data("value"))}),jQuery(".um-admin-metabox").find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})}),!1);function s(e,a){var t,i="",s=e.siblings(".um-slider-range").data("placeholder-s"),l=e.siblings(".um-slider-range").data("placeholder-p"),a=a?(i=(a.values[0]===a.values[1]?s.replace("{value}",a.values[0]):l.replace("{min_range}",a.values[0]).replace("{max_range}",a.values[1])).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=a.values[0],a.values[1]):(i=(e.slider("values",0)===e.slider("values",1)?s.replace("{value}",e.slider("values",0)):l.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1))).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=e.slider("values",0),e.slider("values",1));e.siblings(".um-slider-range").html(i),e.siblings(".um_range_min").val(t),e.siblings(".um_range_max").val(a)}function a(){jQuery(".um-forms-line").removeClass("um-forms-line-conditioned").each(function(){void 0===jQuery(this).data("conditional")||jQuery(this).hasClass("um-forms-line-conditioned")||(!function i(e){e.addClass("um-forms-line-conditioned");var a=e.data("conditional");var t=a[1];var s=a[2];var l=e.data("prefix");var n=!0;{var u,r;"="===t||"!="===t?-1===a[0].indexOf("||")&&void 0!==(r=jQuery("#"+l+"_"+a[0])).parents(".um-forms-line").data("conditional")&&(n=i(r.parents(".um-forms-line"))):"~"===t?(m=a[0].split("|"),u=[],jQuery.each(m,function(e){u.push(jQuery("#"+l+"_"+m[e]))}),void 0!==u[0].parents(".um-forms-line").data("conditional")&&(n=i(u[0].parents(".um-forms-line")))):"><"===t&&void 0!==(r=jQuery("#"+l+"_"+a[0]+"_"+a[2])).parents(".um-forms-line").data("conditional")&&(n=i(r.parents(".um-forms-line")))}var d=!1;{var m,o,c,p,f,_,h,g;if("="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?e.is(":checked"):!e.is(":checked"):Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s):"select"===t&&(d=Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s),d&&n&&(o=!0)}),o):("input"==(h=r.prop("tagName").toLowerCase())?(g=r.attr("type"),d="checkbox"==g?"1"==s?r.is(":checked"):!r.is(":checked"):Array.isArray(s)?-1!==s.indexOf(r.val()):r.val()==s):"select"==h&&(d=Array.isArray(s)?-1!==s.indexOf(r.val()):r.val()==s),d&&n);if("!="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?!e.is(":checked"):e.is(":checked"):e.val()!=s):"select"===t&&(d=e.val()!=s),d&&n&&(o=!0)}),o):("input"==(h=r.prop("tagName").toLowerCase())?(g=r.attr("type"),d="checkbox"==g?"1"==s?!r.is(":checked"):r.is(":checked"):r.val()!=s):"select"==h&&(d=r.val()!=s),d&&n);if("~"===t)return p=[],"sortable_items"===e.data("field_type")?(c=e.find(".um-sortable-items-value").data("field_id"),jQuery.each(u,function(e){var e=u[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.siblings(".um-sortable-items-field").find("li").addClass("um-hidden-item"),jQuery.each(p,function(e){f.siblings(".um-sortable-items-field").find('li[data-tab-id="'+p[e]+'"]').removeClass("um-hidden-item")}),_=[],f.siblings(".um-sortable-items-field").find("li").each(function(){jQuery(this).hasClass("um-hidden-item")||_.push(jQuery(this).data("tab-id"))}),f.val(_.join(",")),f.siblings(".um-sortable-items-field").sortable("refresh"),d=!0):f.val(null)):(c=e.find(e.data("field_type")).data("field_id"),jQuery.each(u,function(e){var e=u[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.find("option").hide(),jQuery.each(p,function(e){f.find('option[value="'+p[e]+'"]').show()}),-1===p.indexOf(f.val())&&(f.val(p[0]),f.find("option").attr("selected",!1).prop("selected",!1),f.find('option[value="'+p[0]+'"]').attr("selected",!0).prop("selected",!0)),d=!0):(f.val(null),f.find("option").attr("selected",!1).prop("selected",!1))),d&&n;if("><"===t)return h=r.prop("tagName").toLowerCase(),(d="input"==h&&"checkbox"==(g=r.attr("type"))?r.is(":checked"):d)&&n}return!1}(jQuery(this))?jQuery(this).hide():(jQuery(this).show(),um_admin_init_users_select()))})}function y(e,a,t){return t.indexOf(e)===a}jQuery(document.body).on("change",".um-md-default-filters-option-line .um-field-wrapper select",function(){var t,e,a;i||(e=(t=jQuery(this)).val(),a=t.data("member_directory"),i=!0,wp.ajax.send("um_member_directory_default_filter_settings",{data:{key:e,directory_id:a,nonce:um_admin_scripts.nonce},success:function(e){var a=t.parents(".um-md-default-filters-option-line").find(".um-field-wrapper2");a.html(e.field_html),i=!1,a.find(".um-slider").each(function(){var e=jQuery(this),a=[parseInt(e.data("min")),parseInt(e.data("max"))];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),a.find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max"));e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}})}),a.find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})})},error:function(e){return!1}}))}),jQuery(".um-md-default-filters-add-option").on("click",function(){var e,a,t;i||((e=jQuery(this).siblings("ul.um-md-default-filters-list")).data("field_id"),(a=0)
").append(e.siblings(".um-hidden-md-default-filters").clone()).html(),e.append(''+t+''+wp.i18n.__("Remove","ultimate-member")+''),e.find("li:last .um-hidden-md-default-filters").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-md-default-filters").attr("id",e.data("id_attr")+"-"+a),e.find("li:last .um-field-wrapper select").trigger("change"))}),jQuery(document.body).on("click",".um-text-delete",function(){jQuery(this).parents("li.um-multi-text-option-line").remove()}),jQuery(".um-multi-text-add-option").on("click",function(){var e=jQuery(this).siblings("ul.um-multi-text-list"),a=0,t=(0").append(e.siblings(".um-hidden-multi-text").clone()).html()),i=e.data("item_class");e.append(''+t+''+wp.i18n.__("Remove","ultimate-member")+""),e.find("li:last .um-hidden-multi-text").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-text").attr("id",e.data("id_attr")+"-"+a)}),jQuery(".um-media-upload").each(function(){var e=jQuery(this).find(".um-forms-field"),a=e.data("default");""!=e.val()&&e.val()!=a?(e.siblings(".um-set-image").hide(),e.siblings(".um-clear-image").show(),e.siblings(".icon_preview").show()):(e.val()==a&&e.siblings(".icon_preview").show(),e.siblings(".um-set-image").show(),e.siblings(".um-clear-image").hide())}),"undefined"!=typeof wp&&wp.media&&wp.media.editor&&(jQuery(".um-set-image").on("click",function(e){var a=jQuery(this);e.preventDefault(),t&&t.remove(),(t=wp.media({title:a.data("upload_frame"),button:{text:wp.i18n.__("Select","ultimate-member")},multiple:!1})).on("select",function(){var e=t.state().get("selection").first().toJSON();a.siblings(".icon_preview").attr("src",e.url).show(),a.siblings(".um-forms-field").val(e.url),a.siblings(".um-media-upload-data-id").val(e.id),a.siblings(".um-media-upload-data-width").val(e.width),a.siblings(".um-media-upload-data-height").val(e.height),a.siblings(".um-media-upload-data-thumbnail").val(e.thumbnail),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(e.url),a.siblings(".um-clear-image").show(),a.hide(),jQuery(document).trigger("um_media_upload_select",[a,e])}),t.open()}),jQuery(".icon_preview").on("click",function(e){jQuery(this).siblings(".um-set-image").trigger("click")}),jQuery(".um-clear-image").on("click",function(e){var a=jQuery(this);let t=a.siblings(".um-forms-field").data("default");void 0===t&&(t=""),a.siblings(".um-set-image").show(),a.hide(),a.siblings(".icon_preview").attr("src",t),""===t&&a.siblings(".icon_preview").hide(),a.siblings(".um-media-upload-data-id").val(""),a.siblings(".um-media-upload-data-width").val(""),a.siblings(".um-media-upload-data-height").val(""),a.siblings(".um-media-upload-data-thumbnail").val(""),a.siblings(".um-forms-field").val(t),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(t),jQuery(document).trigger("um_media_upload_clear",a)})),jQuery(document.body).on("change",".um-forms-field",function(){(0datepicker_filters_range( $field );
+ $min = strtotime( gmdate( 'Y/m/d', $range[0] ) );
+ }
+ if ( ! empty( $value[1] ) ) {
+ $max = $value[1];
+ } else {
+ $max = strtotime( gmdate( 'Y/m/d' ) );
+ }
+
+ $from_date = (int) $min + ( $offset * HOUR_IN_SECONDS ); // client time zone offset
+ $to_date = (int) $max + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1; // time 23:59
// $join_alias is pre-escaped.
$this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata {$join_alias} ON {$join_alias}.user_id = u.ID";
@@ -511,8 +520,20 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
$value
);
- $from_date = gmdate( 'Y-m-d H:i:s', (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ) ); // client time zone offset
- $to_date = gmdate( 'Y-m-d H:i:s', (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1 ); // time 23:59
+ if ( ! empty( $value[0] ) ) {
+ $min = $value[0];
+ } else {
+ $range = $this->datepicker_filters_range( 'last_login' );
+ $min = strtotime( gmdate( 'Y/m/d', $range[0] ) );
+ }
+ if ( ! empty( $value[1] ) ) {
+ $max = $value[1];
+ } else {
+ $max = strtotime( gmdate( 'Y/m/d' ) );
+ }
+
+ $from_date = gmdate( 'Y-m-d H:i:s', (int) $min + ( $offset * HOUR_IN_SECONDS ) ); // client time zone offset
+ $to_date = gmdate( 'Y-m-d H:i:s', (int) $max + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1 ); // time 23:59
// $join_alias is pre-escaped.
$this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata {$join_alias} ON {$join_alias}.user_id = u.ID";
diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php
index 5be87b0d..0438baba 100644
--- a/includes/core/class-member-directory.php
+++ b/includes/core/class-member-directory.php
@@ -237,8 +237,8 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
* can be disabled by "Enable Members Directory" option
*
*/
- function access_members() {
- if ( UM()->options()->get( 'members_page' ) == 0 && um_is_core_page( 'members' ) ) {
+ public function access_members() {
+ if ( um_is_predefined_page( 'members' ) && ! UM()->options()->get( 'members_page' ) ) {
um_redirect_home();
}
}
@@ -252,98 +252,108 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
* @return array
*/
public function before_save_data( $value, $key, $post_id ) {
-
$post = get_post( $post_id );
- if ( 'um_directory' === $post->post_type ) {
+ if ( 'um_directory' !== $post->post_type ) {
+ return $value;
+ }
- if ( ! empty( $value ) && in_array( $key, array( '_um_view_types', '_um_roles', '_um_roles_can_search', '_um_roles_can_filter' ), true ) ) {
- $value = array_keys( $value );
- } elseif ( '_um_search_filters' === $key ) {
- $temp_value = array();
+ if ( ! empty( $value ) && in_array( $key, array( '_um_view_types', '_um_roles', '_um_roles_can_search', '_um_roles_can_filter' ), true ) ) {
+ $value = array_keys( $value );
+ } elseif ( '_um_search_filters' === $key ) {
+ $temp_value = array();
- if ( ! empty( $value ) ) {
- foreach ( $value as $k ) {
- $filter_type = $this->filter_types[ $k ];
- if ( ! empty( $filter_type ) ) {
- if ( 'slider' === $filter_type ) {
- if ( ! empty( $_POST[ $k ] ) ) {
- if ( count( $_POST[ $k ] ) > 1 ) {
- $temp_value[ $k ] = array_map( 'intval', $_POST[ $k ] );
- } else {
- $temp_value[ $k ] = (int) $_POST[ $k ];
- }
- }
- } elseif ( 'timepicker' === $filter_type || 'datepicker' === $filter_type ) {
- if ( ! empty( $_POST[ $k . '_from' ] ) && ! empty( $_POST[ $k . '_to' ] ) ) {
- $temp_value[ $k ] = array(
- sanitize_text_field( $_POST[ $k . '_from' ] ),
- sanitize_text_field( $_POST[ $k . '_to' ] ),
- );
- }
- } elseif ( 'select' === $filter_type ) {
- if ( ! empty( $_POST[ $k ] ) ) {
- if ( is_array( $_POST[ $k ] ) ) {
- $temp_value[ $k ] = array_map( 'trim', $_POST[ $k ] );
- } else {
- $temp_value[ $k ] = array( trim( $_POST[ $k ] ) );
- }
-
- $temp_value[ $k ] = array_map( 'sanitize_text_field', $temp_value[ $k ] );
- }
- } else {
- if ( ! empty( $_POST[ $k ] ) ) {
- $temp_value[ $k ] = trim( sanitize_text_field( $_POST[ $k ] ) );
+ // phpcs:disable WordPress.Security.NonceVerification -- already verified here
+ if ( ! empty( $value ) ) {
+ foreach ( $value as $k ) {
+ $filter_type = $this->filter_types[ $k ];
+ if ( ! empty( $filter_type ) ) {
+ if ( 'slider' === $filter_type ) {
+ if ( ! empty( $_POST[ $k ] ) ) {
+ if ( count( $_POST[ $k ] ) > 1 ) {
+ $temp_value[ $k ] = array_map( 'intval', $_POST[ $k ] );
+ } else {
+ $temp_value[ $k ] = (int) $_POST[ $k ];
}
}
- }
- }
- }
-
- $value = $temp_value;
- } elseif ( '_um_sorting_fields' === $key ) {
- if ( ! empty( $value['other_data'] ) ) {
- $other_data = $value['other_data'];
- unset( $value['other_data'] );
-
- foreach ( $value as $k => &$row ) {
- if ( ! empty( $other_data[ $k ]['meta_key'] ) ) {
- $metakey = sanitize_text_field( $other_data[ $k ]['meta_key'] );
- if ( ! empty( $metakey ) ) {
- if ( ! empty( $other_data[ $k ]['label'] ) ) {
- $metalabel = wp_strip_all_tags( $other_data[ $k ]['label'] );
- }
- if ( ! empty( $other_data[ $k ]['data_type'] ) ) {
- $data_type = sanitize_text_field( $other_data[ $k ]['data_type'] );
- }
- if ( ! empty( $other_data[ $k ]['order'] ) ) {
- $order = sanitize_text_field( $other_data[ $k ]['order'] );
- }
- $row = array(
- $metakey => $metakey,
- 'label' => ! empty( $metalabel ) ? $metalabel : $metakey,
- 'type' => ! empty( $data_type ) ? $data_type : '',
- 'order' => ! empty( $order ) ? $order : '',
+ } elseif ( 'datepicker' === $filter_type ) {
+ if ( ! empty( $_POST[ $k . '_from' ] ) ) {
+ $temp_value[ $k ][0] = sanitize_text_field( $_POST[ $k . '_from' ] );
+ }
+ if ( ! empty( $_POST[ $k . '_to' ] ) ) {
+ $temp_value[ $k ][1] = sanitize_text_field( $_POST[ $k . '_to' ] );
+ }
+ } elseif ( 'timepicker' === $filter_type ) {
+ if ( ! empty( $_POST[ $k . '_from' ] ) && ! empty( $_POST[ $k . '_to' ] ) ) {
+ $temp_value[ $k ] = array(
+ sanitize_text_field( $_POST[ $k . '_from' ] ),
+ sanitize_text_field( $_POST[ $k . '_to' ] ),
);
}
+ } elseif ( 'select' === $filter_type ) {
+ if ( ! empty( $_POST[ $k ] ) ) {
+ if ( is_array( $_POST[ $k ] ) ) {
+ $temp_value[ $k ] = array_map( 'trim', $_POST[ $k ] );
+ } else {
+ $temp_value[ $k ] = array( trim( $_POST[ $k ] ) );
+ }
+
+ $temp_value[ $k ] = array_map( 'sanitize_text_field', $temp_value[ $k ] );
+ }
+ } else {
+ if ( ! empty( $_POST[ $k ] ) ) {
+ $temp_value[ $k ] = trim( sanitize_text_field( $_POST[ $k ] ) );
+ }
}
}
}
- } elseif ( '_um_sortby_custom' === $key ) {
- $value = sanitize_text_field( $value );
- } elseif ( '_um_sortby_custom_label' === $key ) {
- $value = wp_strip_all_tags( $value );
- } elseif ( '_um_sortby_custom_type' === $key ) {
- $value = sanitize_text_field( $value );
- } elseif ( '_um_sortby_custom_order' === $key ) {
- $value = sanitize_text_field( $value );
}
+
+ $value = $temp_value;
+
+ // phpcs:enable WordPress.Security.NonceVerification -- already verified here
+ } elseif ( '_um_sorting_fields' === $key ) {
+ if ( ! empty( $value['other_data'] ) ) {
+ $other_data = $value['other_data'];
+ unset( $value['other_data'] );
+
+ foreach ( $value as $k => &$row ) {
+ if ( ! empty( $other_data[ $k ]['meta_key'] ) ) {
+ $metakey = sanitize_text_field( $other_data[ $k ]['meta_key'] );
+ if ( ! empty( $metakey ) ) {
+ if ( ! empty( $other_data[ $k ]['label'] ) ) {
+ $metalabel = wp_strip_all_tags( $other_data[ $k ]['label'] );
+ }
+ if ( ! empty( $other_data[ $k ]['data_type'] ) ) {
+ $data_type = sanitize_text_field( $other_data[ $k ]['data_type'] );
+ }
+ if ( ! empty( $other_data[ $k ]['order'] ) ) {
+ $order = sanitize_text_field( $other_data[ $k ]['order'] );
+ }
+ $row = array(
+ $metakey => $metakey,
+ 'label' => ! empty( $metalabel ) ? $metalabel : $metakey,
+ 'type' => ! empty( $data_type ) ? $data_type : '',
+ 'order' => ! empty( $order ) ? $order : '',
+ );
+ }
+ }
+ }
+ unset( $row );
+ }
+ } elseif ( '_um_sortby_custom' === $key ) {
+ $value = sanitize_text_field( $value );
+ } elseif ( '_um_sortby_custom_label' === $key ) {
+ $value = wp_strip_all_tags( $value );
+ } elseif ( '_um_sortby_custom_type' === $key ) {
+ $value = sanitize_text_field( $value );
+ } elseif ( '_um_sortby_custom_order' === $key ) {
+ $value = sanitize_text_field( $value );
}
return $value;
}
-
/**
*
*/
@@ -553,7 +563,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
*
* @return string $filter
*/
- function show_filter( $filter, $directory_data, $default_value = false, $admin = false ) {
+ public function show_filter( $filter, $directory_data, $default_value = false, $admin = false ) {
if ( empty( $this->filter_types[ $filter ] ) ) {
return '';
@@ -639,28 +649,29 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
ob_start();
switch ( $this->filter_types[ $filter ] ) {
- default: {
-
+ default:
do_action( "um_member_directory_filter_type_{$this->filter_types[ $filter ]}", $filter, $directory_data, $unique_hash, $attrs, $default_value );
-
break;
- }
- case 'text': {
+
+ case 'text':
$label = '';
if ( isset( $attrs['label'] ) ) {
$label = $attrs['label'];
- } elseif ( ! isset( $attrs['label'] ) && isset( $attrs['title'] ) ) {
+ } elseif ( isset( $attrs['title'] ) ) {
$label = $attrs['title'];
}
- $filter_from_url = ! empty( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ? sanitize_text_field( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) : $default_value; ?>
-
+ $label = stripslashes( $label );
+
+ $filter_from_url = ! empty( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ? sanitize_text_field( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) : $default_value;
+ ?>
+
datepicker_filters_range( $filter );
$label = ! empty( $attrs['label'] ) ? $attrs['label'] : $attrs['title'];
+ $label = stripslashes( $label );
+
+ $default_value_min = '';
+ $default_value_max = '';
+ if ( ! empty( $default_value[0] ) ) {
+ $default_value_min = $default_value[0];
+ }
+ if ( ! empty( $default_value[1] ) ) {
+ $default_value_max = $default_value[1];
+ }
if ( $range ) {
- $min = $range[0];
- $max = $range[1];
+ list( $min, $max ) = $range;
?>
-
-
+
+ placeholder=""
+ data-filter-label=""
+ data-date_min="" data-date_max=""
+ data-filter_name="" data-range="from" data-value="" />
+
+ placeholder=""
+ data-filter-label=""
+ data-date_min="" data-date_max=""
+ data-filter_name="" data-range="to" data-value="" />
timepicker_filters_range( $filter );
$label = ! empty( $attrs['label'] ) ? $attrs['label'] : $attrs['title'];
+ $label = stripslashes( $label );
switch ( $attrs['format'] ) {
case 'g:i a':
@@ -895,25 +917,26 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
break;
}
- if ( $range ) { ?>
-
-
-
-
-
+
+ placeholder=""
+ data-filter-label=""
+ data-min="" data-max=""
+ data-format="" data-intervals=""
+ data-filter_name="" data-range="from" />
+
+ placeholder=""
+ data-filter-label=""
+ data-min="" data-max=""
+ data-format="" data-intervals=""
+ data-filter_name="" data-range="to" />
+ filter_types[ $field ];
/**
@@ -2239,19 +2261,15 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
switch ( $filter_type ) {
default:
-
$field_query = apply_filters( "um_query_args_{$field}_{$filter_type}__filter", false, $field, $value, $filter_type );
-
break;
case 'text':
-
$field_query = array(
- 'key' => $field,
- 'value' => $value,
- 'compare' => apply_filters( 'um_members_directory_filter_text', '=', $field ),
+ 'key' => $field,
+ 'value' => $value,
+ 'compare' => apply_filters( 'um_members_directory_filter_text', '=', $field ),
);
-
break;
case 'select':
@@ -2298,34 +2316,44 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
break;
case 'slider':
-
$field_query = array(
'key' => $field,
'value' => $value,
'compare' => 'BETWEEN',
'inclusive' => true,
);
-
break;
- case 'datepicker':
+ case 'datepicker':
$offset = 0;
if ( is_numeric( $gmt_offset ) ) {
$offset = $gmt_offset;
}
- $from_date = (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ); // client time zone offset
- $to_date = (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1; // time 23:59
+ if ( ! empty( $value[0] ) ) {
+ $min = $value[0];
+ } else {
+ $range = $this->datepicker_filters_range( $field );
+ $min = strtotime( gmdate( 'Y/m/d', $range[0] ) );
+ }
+ if ( ! empty( $value[1] ) ) {
+ $max = $value[1];
+ } else {
+ $max = strtotime( gmdate( 'Y/m/d' ) );
+ }
+
+ $from_date = (int) $min + ( $offset * HOUR_IN_SECONDS ); // client time zone offset
+ $to_date = (int) $max + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1; // time 23:59
+
$field_query = array(
'key' => $field,
- 'value' => array( $from_date, $to_date ),
+ 'value' => array( $from_date, $to_date ),
'compare' => 'BETWEEN',
'inclusive' => true,
);
break;
case 'timepicker':
-
if ( $value[0] == $value[1] ) {
$field_query = array(
'key' => $field,
@@ -2340,10 +2368,8 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
'inclusive' => true,
);
}
-
break;
}
-
}
if ( ! empty( $field_query ) && $field_query !== true ) {
@@ -2366,12 +2392,12 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
$this->query_args['role__in'] = array_merge( $default_role, $um_role );
} else {
$this->query_args['role__in'] = $value;
- };
+ }
break;
case 'birth_date':
$from_date = date( 'Y/m/d', mktime( 0,0,0, date( 'm', time() ), date( 'd', time() ), date( 'Y', time() - min( $value ) * YEAR_IN_SECONDS ) ) );
- $to_date = date( 'Y/m/d', mktime( 0,0,0, date( 'm', time() ), date( 'd', time() ) + 1, date( 'Y', time() - ( max( $value ) + 1 ) * YEAR_IN_SECONDS ) ) );
+ $to_date = date( 'Y/m/d', mktime( 0,0,0, date( 'm', time() ), date( 'd', time() ) + 1, date( 'Y', time() - ( max( $value ) + 1 ) * YEAR_IN_SECONDS ) ) );
$meta_query = array(
array(
@@ -2380,7 +2406,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
'compare' => 'BETWEEN',
'type' => 'DATE',
'inclusive' => true,
- )
+ ),
);
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $meta_query ) );
@@ -2393,7 +2419,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
}
$from_date = date( 'Y-m-d H:i:s', strtotime( date( 'Y-m-d H:i:s', min( $value ) ) . "+$offset hours" ) );
- $to_date = date( 'Y-m-d H:i:s', strtotime( date( 'Y-m-d H:i:s', max( $value ) ) . "+$offset hours" ) );
+ $to_date = date( 'Y-m-d H:i:s', strtotime( date( 'Y-m-d H:i:s', max( $value ) ) . "+$offset hours" ) );
$date_query = array(
array(
@@ -2424,8 +2450,20 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
$value
);
- $from_date = gmdate( 'Y-m-d H:i:s', (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ) ); // client time zone offset
- $to_date = gmdate( 'Y-m-d H:i:s', (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1 ); // time 23:59
+ if ( ! empty( $value[0] ) ) {
+ $min = $value[0];
+ } else {
+ $range = $this->datepicker_filters_range( 'last_login' );
+ $min = strtotime( gmdate( 'Y/m/d', $range[0] ) );
+ }
+ if ( ! empty( $value[1] ) ) {
+ $max = $value[1];
+ } else {
+ $max = strtotime( gmdate( 'Y/m/d' ) );
+ }
+
+ $from_date = gmdate( 'Y-m-d H:i:s', (int) $min + ( $offset * HOUR_IN_SECONDS ) ); // client time zone offset
+ $to_date = gmdate( 'Y-m-d H:i:s', (int) $max + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1 ); // time 23:59
$meta_query = array(
'relation' => 'AND',