- member directory default filters;

This commit is contained in:
nikitasinelnikov
2019-10-01 11:53:34 +03:00
parent 4f559f4c3a
commit 1df55d0ecf
9 changed files with 783 additions and 25 deletions
@@ -27,6 +27,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Ajax_Hooks' ) ) {
add_action( 'wp_ajax_um_dynamic_modal_content', array( UM()->builder(), 'dynamic_modal_content' ) );
add_action( 'wp_ajax_um_populate_dropdown_options', array( UM()->builder(), 'populate_dropdown_options' ) );
add_action( 'wp_ajax_um_rated', array( UM()->admin_menu(), 'ultimatemember_rated' ) );
add_action( 'wp_ajax_um_member_directory_default_filter_settings', array( UM()->member_directory(), 'default_filter_settings' ) );
}
}
+2 -1
View File
@@ -219,7 +219,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
* Load Forms
*/
function load_forms() {
wp_register_style( 'um_admin_forms', $this->css_url . 'um-admin-forms.css', array( 'wp-color-picker' ), ultimatemember_version );
wp_register_style( 'um_ui', $this->front_css_baseurl . 'jquery-ui.css', array(), ultimatemember_version );
wp_register_style( 'um_admin_forms', $this->css_url . 'um-admin-forms.css', array( 'wp-color-picker', 'um_ui' ), ultimatemember_version );
wp_enqueue_style( 'um_admin_forms' );
wp_register_script( 'um_admin_forms', $this->js_url . 'um-admin-forms.js', array( 'jquery' ), ultimatemember_version, true );
+80
View File
@@ -1218,6 +1218,86 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
}
function render_md_default_filters( $field_data ) {
if ( empty( $field_data['id'] ) ) {
return false;
}
global $post;
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$class = ! empty( $field_data['class'] ) ? $field_data['class'] : '';
$class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field';
$class_attr = ' class="um-forms-field ' . $class . '" ';
$data = array(
'field_id' => $field_data['id'],
'id_attr' => $id,
'member_directory' => $post->ID
);
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" ';
}
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name = "{$name}[]";
$name_attr = ' name="' . $name . '" ';
$values = $this->get_field_value( $field_data );
$filters = array_keys( $values );
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '<option value="' . $key . '">' . $option . '</option>';
}
$html = "<input type=\"hidden\" name=\"um-gmt-offset\" /><select class=\"um-hidden-md-default-filters\" $data_attr>$options</select>";
$html .= "<ul class=\"um-md-default-filters-list\" $data_attr>";
if ( ! empty( $filters ) && is_array( $filters ) ) {
foreach ( $filters as $k => $value ) {
if ( ! in_array( $value, array_keys( $field_data['options'] ) ) ) {
continue ;
}
$id_attr = ' id="' . esc_attr( $id . '-' . $k ) . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '<option value="' . $key . '" ' . selected( $key == $value, true, false ) . '>' . $option . '</option>';
}
$html .= "<li class=\"um-md-default-filters-option-line\"><span class=\"um-field-wrapper\">
<select $id_attr $name_attr $class_attr $data_attr>$options</select></span>
<span class=\"um-field-control\"><a href=\"javascript:void(0);\" class=\"um-select-delete\">" . __( 'Remove', 'ultimate-member' ) . "</a></span><span class=\"um-field-wrapper2 um\">" . UM()->member_directory()->show_filter( $value, array( 'form_id' => $post->ID ), $values[ $value ] ) . "</span></li>";
}
} elseif ( ! empty( $field_data['show_default_number'] ) && is_numeric( $field_data['show_default_number'] ) && $field_data['show_default_number'] > 0 ) {
$i = 0;
while ( $i < $field_data['show_default_number'] ) {
$id_attr = ' id="' . $id . '-' . $i . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '<option value="' . $key . '">' . $option . '</option>';
}
$html .= "<li class=\"um-md-default-filters-option-line\"><span class=\"um-field-wrapper\">
<select $id_attr $name_attr $class_attr $data_attr>$options</select></span>
<span class=\"um-field-control\"><a href=\"javascript:void(0);\" class=\"um-select-delete\">" . __( 'Remove', 'ultimate-member' ) . "</a></span></li>";
$i++;
}
}
$html .= "</ul><a href=\"javascript:void(0);\" class=\"button button-primary um-md-default-filters-add-option\" data-name=\"$name\">{$field_data['add_text']}</a>";
return $html;
}
/**
* Get field value
*
@@ -1052,6 +1052,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
delete_post_meta( $post_id, '_um_roles_can_filter' );
delete_post_meta( $post_id, '_um_show_these_users' );
delete_post_meta( $post_id, '_um_search_filters' );
delete_post_meta( $post_id, '_um_search_filters_gmt' );
//save metadata
foreach ( $_POST['um_metadata'] as $k => $v ) {
@@ -1088,6 +1091,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
}
}
update_post_meta( $post_id, '_um_search_filters_gmt', intval( $_POST['um-gmt-offset'] ) );
}
@@ -48,7 +48,7 @@ if ( ! empty( $postmeta ) ) {
}
}
// update member directories settings
$forms_query = new WP_Query;
$member_directories = $forms_query->query( array(
'post_type' => 'um_directory',
@@ -93,6 +93,46 @@ if ( ! empty( $member_directories ) && ! is_wp_error( $member_directories ) ) {
}
}
$default_filters = get_post_meta( $id, '_um_search_filters', true );
$default_filters_new = array();
if ( ! empty( $default_filters ) ) {
$default_filters_queries = explode( '&', $default_filters );
foreach ( $default_filters_queries as $filter_query_part ) {
$filter_query_parts = explode( '=', $filter_query_part );
$filter_key = $filter_query_parts[0];
$filter_value = $filter_query_parts[1];
$default_filters_new[ $filter_key ] = $filter_value;
}
}
update_post_meta( $id, '_um_search_filters', $default_filters_new );
update_post_meta( $id, '_um_search_filters_old', $default_filters );
update_post_meta( $id, '_um_search_old', $search_enabled );
}
}
// for user tags settings
if ( UM()->options()->get( 'members_page' ) ) {
$member_directory_id = false;
$page_id = UM()->config()->permalinks['members'];
if ( ! empty( $page_id ) ) {
$members_page = get_post( $page_id );
if ( ! empty( $members_page ) && ! is_wp_error( $members_page ) ) {
if ( ! empty( $members_page->post_content ) ) {
preg_match( '/\[ultimatemember[^\]]*?form_id\=[\'"]*?(\d+)[\'"]*?/i', $members_page->post_content, $matches );
if ( ! empty( $matches[1] ) && is_numeric( $matches[1] ) ) {
$member_directory_id = $matches[1];
}
}
}
}
if ( $member_directory_id ) {
UM()->options()->update( 'user_tags_base_directory' , $member_directory_id );
}
}