From 74cde599e134d104bf998b80780eca322e90514f Mon Sep 17 00:00:00 2001
From: ultimatemember
Date: Sat, 10 Jan 2015 00:59:09 +0200
Subject: [PATCH] Member directory settings and filters
---
admin/core/um-admin-metabox.php | 1 +
admin/templates/directory/general.php | 1 -
admin/templates/directory/pagination.php | 8 ++++
admin/templates/directory/profile.php | 2 +-
admin/templates/directory/profile_card.php | 16 --------
admin/templates/directory/search.php | 43 ++++++++--------------
admin/templates/form/profile_settings.php | 4 +-
assets/css/um-members.css | 4 +-
assets/css/um-responsive.css | 26 +++++++++++++
assets/dynamic_css/dynamic_directory.php | 35 ------------------
core/um-actions-members.php | 6 ++-
core/um-builtin.php | 10 ++++-
core/um-fields.php | 11 ++++++
core/um-filters-members.php | 11 ++++--
core/um-members.php | 4 +-
15 files changed, 88 insertions(+), 94 deletions(-)
diff --git a/admin/core/um-admin-metabox.php b/admin/core/um-admin-metabox.php
index c4c2390c..26f1de05 100644
--- a/admin/core/um-admin-metabox.php
+++ b/admin/core/um-admin-metabox.php
@@ -277,6 +277,7 @@ class UM_Admin_Metabox {
delete_post_meta( $post_id, '_um_tagline_fields' );
delete_post_meta( $post_id, '_um_reveal_fields' );
delete_post_meta( $post_id, '_um_search_fields' );
+ delete_post_meta( $post_id, '_um_roles_can_search' );
foreach( $_POST as $k => $v ) {
if (strstr($k, '_um_')){
update_post_meta( $post_id, $k, $v);
diff --git a/admin/templates/directory/general.php b/admin/templates/directory/general.php
index 4106a8fa..48cbb2dd 100644
--- a/admin/templates/directory/general.php
+++ b/admin/templates/directory/general.php
@@ -42,7 +42,6 @@
+
+
+
+
+
+
+
+
+
@@ -25,7 +38,7 @@
@@ -46,7 +59,7 @@
@@ -59,32 +72,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/admin/templates/form/profile_settings.php b/admin/templates/form/profile_settings.php
index 7dc2c492..feb32709 100644
--- a/admin/templates/form/profile_settings.php
+++ b/admin/templates/form/profile_settings.php
@@ -14,7 +14,7 @@
@@ -35,7 +35,7 @@
diff --git a/assets/css/um-members.css b/assets/css/um-members.css
index 20a503c5..846e4047 100644
--- a/assets/css/um-members.css
+++ b/assets/css/um-members.css
@@ -53,8 +53,8 @@
}
.um-search.um-search-1 {
- padding-left: 34%;
- padding-right: 34%;
+ padding-left: 32%;
+ padding-right: 32%;
width: 100%;
box-sizing: border-box;
}
diff --git a/assets/css/um-responsive.css b/assets/css/um-responsive.css
index 7eac857a..b363201d 100644
--- a/assets/css/um-responsive.css
+++ b/assets/css/um-responsive.css
@@ -454,6 +454,32 @@ div.uimob800 .um-cover-overlay
padding: 0;
}
+div.uimob800 .um-search {
+ padding: 20px 0 !important;
+ width: 100% !important;
+ box-sizing: border-box;
+}
+
+div.uimob800 .um-search .um-search-filter {
+ width: 48% !important;
+ float: left !important;
+ padding: 0 0 15px 0 !important;
+}
+
+div.uimob800 .um-search .um-search-filter-2 {
+ margin-left: 4%;
+}
+
+div.uimob800 .um-search .um-search-submit .um-button {
+ display: block !important;
+ width: 48% !important;
+ margin: 0 0 15px 0 !important;
+ box-sizing: border-box;
+ float: left;
+}
+
+div.uimob800 .um-search .um-search-submit .um-button.um-alt {float: right}
+
div.uimob800 .um-member {width: 48%}
div.uimob800 .um-gutter-sizer {width: 4%}
diff --git a/assets/dynamic_css/dynamic_directory.php b/assets/dynamic_css/dynamic_directory.php
index 223989f7..baeecfd6 100644
--- a/assets/dynamic_css/dynamic_directory.php
+++ b/assets/dynamic_css/dynamic_directory.php
@@ -33,40 +33,5 @@ print ".um-$form_id .um-member-photo img {
}
-if ($css_stats_bg) {
-
-print ".um-$form_id .um-member-stats {
- background: $css_stats_bg!important;
-}";
-
-}
-
-if ($css_stats_bordercolor) {
-
-print ".um-$form_id .um-member-stats {
- border-color: $css_stats_bordercolor!important;
-}";
-print ".um-$form_id .um-member-stat {
- border-color: $css_stats_bordercolor!important;
-}";
-
-}
-
-if ($css_stats_num_color) {
-
-print ".um-$form_id .um-member-stat, .um-$form_id .um-member-stat a {
- color: $css_stats_num_color!important;
-}";
-
-}
-
-if ($css_stats_lbl_color) {
-
-print ".um-$form_id .um-member-statname {
- color: $css_stats_lbl_color!important;
-}";
-
-}
-
?>
\ No newline at end of file
diff --git a/core/um-actions-members.php b/core/um-actions-members.php
index b607692b..fd47bcdc 100644
--- a/core/um-actions-members.php
+++ b/core/um-actions-members.php
@@ -20,7 +20,11 @@
$search_filters = apply_filters('um_frontend_member_search_filters',$search_filters);
if ( $args['search'] == 1 && is_array( $search_filters ) ) { // search on
-
+
+ if ( isset( $args['roles_can_search'] ) && !empty( $args['roles_can_search'] ) && !in_array( um_user('role'), $args['roles_can_search'] ) ){
+ return;
+ }
+
$count = count( $search_filters );
?>
diff --git a/core/um-builtin.php b/core/um-builtin.php
index ba232dc0..ecae406a 100644
--- a/core/um-builtin.php
+++ b/core/um-builtin.php
@@ -874,13 +874,19 @@ class UM_Builtin {
/***
*** @predefined + custom fields ( Global, not form wide )
***/
- function all_user_fields( $exclude_types = array() ) {
+ function all_user_fields( $exclude_types = null ) {
global $ultimatemember;
+ $this->fields_dropdown = array('image','file','password','textarea','rating','block','shortcode','spacing','divider','group');
+
$custom = $this->custom_fields;
$predefined = $this->predefined_fields;
+ if ( $exclude_types ) {
+ $exclude_types = explode(',', $exclude_types);
+ }
+
$all = array( '' => '' );
if ( is_array( $custom ) ){
@@ -896,7 +902,7 @@ class UM_Builtin {
if ( isset( $arr['account_only'] ) || isset( $arr['private_use'] ) ) {
unset( $all[$k] );
}
- if ( isset( $arr['type'] ) && in_array( $arr['type'], array('image','file','password') ) ) {
+ if ( isset( $arr['type'] ) && in_array( $arr['type'], $this->fields_dropdown ) ) {
unset( $all[$k] );
}
}
diff --git a/core/um-fields.php b/core/um-fields.php
index ff2e8bbf..2001dd3d 100644
--- a/core/um-fields.php
+++ b/core/um-fields.php
@@ -473,6 +473,17 @@ class UM_Fields {
return '';
}
+ /***
+ *** @Get Field Type
+ ***/
+ function get_field_type( $key ) {
+ global $ultimatemember;
+ $fields = $ultimatemember->builtin->all_user_fields;
+ if ( isset( $fields[$key]['type'] ) )
+ return $fields[$key]['type'];
+ return '';
+ }
+
/***
*** @Get form fields
***/
diff --git a/core/um-filters-members.php b/core/um-filters-members.php
index 1c5b5c30..1280ac55 100644
--- a/core/um-filters-members.php
+++ b/core/um-filters-members.php
@@ -21,7 +21,7 @@
'value' => 'approved',
'compare' => '='
);
-
+
return $query_args;
}
@@ -38,12 +38,17 @@
foreach( $query as $field => $value ) {
+ $operator = '=';
+ if ( in_array( $ultimatemember->fields->get_field_type( $field ), array('checkbox','multiselect') ) ) {
+ $operator = 'LIKE';
+ }
+
if ( $value && $field != 'um_search' ) {
$query_args['meta_query'][] = array(
'key' => $field,
'value' => $value,
- 'compare' => '='
+ 'compare' => $operator,
);
}
@@ -85,8 +90,6 @@
// add roles to appear in directory
if ( !empty( $roles ) ) {
- $roles = unserialize( $roles );
-
$query_args['meta_query'][] = array(
'key' => 'role',
'value' => $roles,
diff --git a/core/um-members.php b/core/um-members.php
index dd978e98..a64cb868 100644
--- a/core/um-members.php
+++ b/core/um-members.php
@@ -118,8 +118,8 @@ class UM_Members {
$array['users'] = $users->results;
- $array['total_users'] = $users->total_users;
-
+ $array['total_users'] = (isset( $max_users ) && $max_users && $max_users <= $users->total_users ) ? $max_users : $users->total_users;
+
$array['page'] = get_query_var('members_page') ? get_query_var('members_page') : 1;
$array['total_pages'] = ceil( $array['total_users'] / $profiles_per_page );