- updated search users form shortcode for integrate with new member directories;

This commit is contained in:
nikitasinelnikov
2019-10-18 13:01:40 +03:00
parent 6e7eee89bf
commit 3122e79e37
13 changed files with 232 additions and 142 deletions
+15
View File
@@ -49,6 +49,8 @@ function um_set_url_from_data( directory, key, value ) {
var hash = um_members_get_hash( directory );
var data = um_get_data_for_directory( directory );
var other_directories = um_member_directories;
var new_data = {};
if ( value !== '' ) {
new_data[ key + '_' + hash ] = value;
@@ -63,6 +65,19 @@ function um_set_url_from_data( directory, key, value ) {
}
});
// added data of other directories to the url
jQuery.each( um_member_directories, function( k ) {
var dir_hash = um_member_directories[ k ];
if ( dir_hash !== hash ) {
var other_directory = jQuery( '.um-directory[data-hash="' + dir_hash + '"]' );
var dir_data = um_get_data_for_directory( other_directory );
jQuery.each( dir_data, function( data_key ) {
new_data[ data_key + '_' + dir_hash ] = dir_data[ data_key ];
});
}
});
var query_strings = [];
jQuery.each( new_data, function( data_key ) {
query_strings.push( data_key + '=' + new_data[ data_key ] );
+1 -1
View File
File diff suppressed because one or more lines are too long
+55 -2
View File
@@ -395,8 +395,61 @@ jQuery(document).ready(function() {
return false;
});
jQuery(document).on('click', '#um-search-button', function() {
jQuery(this).parents('form').submit();
jQuery( document.body ).on('click', '#um-search-button', function() {
var action = jQuery(this).parents('.um-search-form').data('members_page');
var search_keys = [];
jQuery(this).parents('.um-search-form').find('input[name="um-search-keys[]"]').each( function() {
search_keys.push( jQuery(this).val() );
});
var search = jQuery(this).parents('.um-search-form').find('.um-search-field').val();
var url;
if ( search === '' ) {
url = action;
} else {
var query = '?';
for ( var i = 0; i < search_keys.length; i++ ) {
query += search_keys[i] + '=' + search;
if ( i !== search_keys.length - 1 ) {
query += '&';
}
}
url = action + query;
}
window.location = url;
});
//make search on Enter click
jQuery( document.body ).on( 'keypress', '.um-search-field', function(e) {
if ( e.which === 13 ) {
var action = jQuery(this).parents('.um-search-form').data('members_page');
var search_keys = [];
jQuery(this).parents('.um-search-form').find('input[name="um-search-keys[]"]').each( function() {
search_keys.push( jQuery(this).val() );
});
var search = jQuery(this).val();
var url;
if ( search === '' ) {
url = action;
} else {
var query = '?';
for ( var i = 0; i < search_keys.length; i++ ) {
query += search_keys[i] + '=' + search;
if ( i !== search_keys.length - 1 ) {
query += '&';
}
}
url = action + query;
}
window.location = url;
}
});
jQuery('.um-form input[class="um-button"][type="submit"]').removeAttr('disabled');
+1 -1
View File
File diff suppressed because one or more lines are too long
+11 -50
View File
@@ -119,6 +119,17 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
}
/**
* @param $id
*
* @return bool|string
*/
function get_directory_hash( $id ) {
$hash = substr( md5( $id ), 10, 5 );
return $hash;
}
/**
* Get view Type template
* @param string $type
@@ -245,55 +256,6 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
asort( $this->default_sorting );
// <!-- <option value="description">Biography</option> to Search-->
//<!-- <option value="user_email">E-mail Address</option> to Search-->
//<!-- <option value="first_name">First Name</option> to Search-->
//<!-- <option value="last_name">Last Name</option> to Search-->
//<!-- <option value="mobile_number">Mobile Number</option> to Search-->
//<!-- <option value="nickname">Nickname</option> to Search-->
//<!-- <option value="phone_number">Phone Number</option> to Search-->
//<!-- <option value="secondary_user_email">Secondary E-mail Address</option> to Search-->
//<!-- <option value="user_login">Username</option> to Search-->
//<!-- <option value="username">Username or E-mail</option> - username to Search-->
//<!-- <option value="gm">gm</option> - google maps field to Search-->
//<!-- <option value="numberr">number</option> - number field to Search-->
//<!-- <option value="scm">scm</option> - Soundcloud field to Search-->
//<!-- <option value="test">test</option> - text box field to Search-->
//<!-- <option value="textareaa">textareaa</option> - textarea field to Search-->
//<!-- <option value="vimeov">vimeov</option> - Vimeo field to Search-->
//<!-- <option value="youtubev">youtubev</option> - Youtube field to Search-->
//<!-- URL fields to Search-->
//<!-- Password skip-->
//<!-- File, Image Upload maybe search by file,image name-->
//<!---->
//<!---->
//<!-- DatePicker, TimePicker to Filter-->
//<!-- Rating field to Filter-->
//<!-- needs to be added 'birth_date' - Age to Filter-->
//<!-- <option value="checkboxx">checkbox</option> - checkbox field to Filter-->
//<!-- <option value="drop">drop</option> - select field to Filter-->
//<!-- <option value="radi">radi</option> - radio field to Filter-->
//<!-- <option value="multidrop">multidrop</option> - multiselect field to Filter-->
//<!-- <option value="role_radio">Roles (Radio)</option> - roles merge to Filter-->
//<!-- <option value="user_registered">Registration Date</option> - to Filter-->
//<!-- <option value="gender">Gender</option> to Filter-->
//<!-- <option value="languages">Languages</option> to Filter-->
//<!-- <option value="_um_last_login">Last Login</option> to Filter-->
//<!-- <option value="country">Country</option> to Filter-->
//<!---->
//<!-- So there are next filters:-->
//<!---->
//<!-- Predefined Fields:-->
//<!-- Country, Gender, Age(Birth Date field), Last Login, User Registered-->
//<!-- Languages, Roles (merge dropdown+radio)-->
//<!---->
//<!-- Custom Fields:-->
//<!-- all TimePicker, Datepicker,-->
//<!-- Rating field(by stars), Checkbox, Radio, Select, Multi-select custom fields-->
// Filters
$this->filter_fields = array(
'country' => __( 'Country', 'ultimate-member' ),
@@ -659,7 +621,6 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
}
/**
* @param $filter
*
+48 -6
View File
@@ -1158,14 +1158,56 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
* @return string
*/
public function ultimatemember_searchform( $args = array(), $content = "" ) {
// turn off buffer
ob_start();
if ( ! UM()->options()->get( 'members_page' ) ) {
return '';
}
// load template
$this->load_template( 'searchform' );
$member_directory_ids = array();
// get the buffer
$template = ob_get_clean();
$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_all( '/\[ultimatemember[^\]]*?form_id\=[\'"]*?(\d+)[\'"]*?/i', $members_page->post_content, $matches );
if ( ! empty( $matches[1] ) && is_array( $matches[1] ) ) {
$member_directory_ids = array_map( 'absint', $matches[1] );
}
}
}
}
if ( empty( $member_directory_ids ) ) {
return '';
}
//current user priority role
$priority_user_role = false;
if ( is_user_logged_in() ) {
$priority_user_role = UM()->roles()->get_priority_user_role( get_current_user_id() );
}
$query = array();
foreach ( $member_directory_ids as $directory_id ) {
$directory_data = UM()->query()->post_data( $directory_id );
$show_search = empty( $directory_data['roles_can_search'] ) || ( ! empty( $priority_user_role ) && in_array( $priority_user_role, $directory_data['roles_can_search'] ) );
if ( empty( $directory_data['search'] ) || ! $show_search ) {
continue;
}
$hash = UM()->member_directory()->get_directory_hash( $directory_id );
$query[ 'search_' . $hash ] = ! empty( $_GET[ 'search_' . $hash ] ) ? $_GET[ 'search_' . $hash ] : '';
}
if ( empty( $query ) ) {
return '';
}
$search_value = array_values( $query );
$template = UM()->get_template( 'searchform.php', '', array( 'query' => $query, 'search_value' => $search_value[0], 'members_page' => um_get_core_page( 'members' ) ) );
return $template;
}
+58
View File
@@ -438,4 +438,62 @@ function um_members( $argument ) {
$result = UM()->members()->results[ $argument ];
}
return $result;
}
/**
* Returns the ultimate member search form
*
* @deprecated 2.1.0
*
* @return string
*/
function um_get_search_form() {
//um_deprecated_function( 'um_get_search_form', '2.1.0', 'do_shortcode( \'[ultimatemember_searchform]\' )' );
return do_shortcode( '[ultimatemember_searchform]' );
}
/**
* Display the search form.
*
* @deprecated 2.1.0
*/
function um_search_form() {
//um_deprecated_function( 'um_search_form', '2.1.0', 'echo do_shortcode( \'[ultimatemember_searchform]\' )' );
echo um_get_search_form();
}
/**
* Filters the search query.
*
* @deprecated 2.1.0
*
* @param string $search
*
* @return string
*/
function um_filter_search( $search ) {
$search = trim( strip_tags( $search ) );
$search = preg_replace( '/[^a-z \.\@\_\-]+/i', '', $search );
return $search;
}
/**
* Returns the user search query
*
* @deprecated 2.1.0
*
* @return string
*/
function um_get_search_query() {
$query = UM()->permalinks()->get_query_array();
$search = isset( $query['search'] ) ? $query['search'] : '';
return um_filter_search( $search );
}
-47
View File
@@ -2547,53 +2547,6 @@ function um_force_utf8_string( $value ) {
}
/**
* Filters the search query.
*
* @param string $search
*
* @return string
*/
function um_filter_search( $search ) {
$search = trim( strip_tags( $search ) );
$search = preg_replace( '/[^a-z \.\@\_\-]+/i', '', $search );
return $search;
}
/**
* Returns the user search query
*
* @return string
*/
function um_get_search_query() {
$query = UM()->permalinks()->get_query_array();
$search = isset( $query['search'] ) ? $query['search'] : '';
return um_filter_search( $search );
}
/**
* Returns the ultimate member search form
*
* @return string
*/
function um_get_search_form() {
return do_shortcode( '[ultimatemember_searchform]' );
}
/**
* Display the search form.
*
*/
function um_search_form() {
echo um_get_search_form();
}
/**
* Get user host
*
+1 -1
View File
@@ -50,7 +50,7 @@ class UM_Search_Widget extends \WP_Widget {
}
// display the search form
um_search_form();
echo do_shortcode( '[ultimatemember_searchform /]' );
echo $args['after_widget'];
}
+33 -29
View File
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Ultimate Member\n"
"POT-Creation-Date: 2019-10-17 18:03+0300\n"
"PO-Revision-Date: 2019-10-17 18:03+0300\n"
"POT-Creation-Date: 2019-10-18 13:00+0300\n"
"PO-Revision-Date: 2019-10-18 13:00+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: en_US\n"
@@ -253,7 +253,7 @@ msgstr ""
#: includes/admin/templates/form/register_customize.php:80
#: includes/admin/templates/form/register_gdpr.php:27
#: includes/core/class-builtin.php:1135 includes/core/class-builtin.php:1150
#: includes/core/class-member-directory.php:882
#: includes/core/class-member-directory.php:843
#: includes/core/um-filters-members.php:40
msgid "Yes"
msgstr ""
@@ -2017,7 +2017,7 @@ msgstr ""
#: includes/admin/core/class-admin-settings.php:393
#: includes/admin/core/class-admin-settings.php:410
#: includes/core/class-builtin.php:674 includes/core/class-builtin.php:677
#: includes/core/class-member-directory.php:232
#: includes/core/class-member-directory.php:243
msgid "Username"
msgstr ""
@@ -3252,7 +3252,7 @@ msgstr ""
#: includes/admin/core/list-tables/roles-list-table.php:22
#: includes/admin/core/list-tables/roles-list-table.php:89
#: includes/admin/core/list-tables/roles-list-table.php:402
#: includes/core/class-member-directory.php:302
#: includes/core/class-member-directory.php:264
msgid "Roles"
msgstr ""
@@ -4556,7 +4556,7 @@ msgid "Register"
msgstr ""
#: includes/class-config.php:135 includes/class-config.php:788
#: includes/core/class-member-directory.php:1896
#: includes/core/class-member-directory.php:1857
#: includes/core/um-actions-profile.php:1225
#: includes/core/um-actions-user.php:19
msgid "Logout"
@@ -4856,7 +4856,7 @@ msgid "Registration Date"
msgstr ""
#: includes/core/class-builtin.php:764 includes/core/class-builtin.php:767
#: includes/core/class-member-directory.php:304
#: includes/core/class-member-directory.php:266
msgid "Last Login"
msgstr ""
@@ -4881,7 +4881,7 @@ msgid "Birth Date"
msgstr ""
#: includes/core/class-builtin.php:825 includes/core/class-builtin.php:828
#: includes/core/class-member-directory.php:300
#: includes/core/class-member-directory.php:262
msgid "Gender"
msgstr ""
@@ -4894,7 +4894,7 @@ msgid "Female"
msgstr ""
#: includes/core/class-builtin.php:836 includes/core/class-builtin.php:839
#: includes/core/class-member-directory.php:299
#: includes/core/class-member-directory.php:261
msgid "Country"
msgstr ""
@@ -4952,7 +4952,7 @@ msgid "Roles (Radio)"
msgstr ""
#: includes/core/class-builtin.php:1030
#: includes/core/class-member-directory.php:301
#: includes/core/class-member-directory.php:263
msgid "Languages"
msgstr ""
@@ -7057,70 +7057,70 @@ msgstr ""
msgid "Your set password"
msgstr ""
#: includes/core/class-member-directory.php:224
#: includes/core/class-member-directory.php:235
msgid "Grid"
msgstr ""
#: includes/core/class-member-directory.php:225
#: includes/core/class-member-directory.php:236
msgid "List"
msgstr ""
#: includes/core/class-member-directory.php:230
#: includes/core/class-member-directory.php:241
msgid "New users first"
msgstr ""
#: includes/core/class-member-directory.php:231
#: includes/core/class-member-directory.php:242
msgid "Old users first"
msgstr ""
#: includes/core/class-member-directory.php:233
#: includes/core/class-member-directory.php:244
msgid "First name"
msgstr ""
#: includes/core/class-member-directory.php:234
#: includes/core/class-member-directory.php:245
msgid "Last name"
msgstr ""
#: includes/core/class-member-directory.php:235
#: includes/core/class-member-directory.php:246
msgid "Display name"
msgstr ""
#: includes/core/class-member-directory.php:236
#: includes/core/class-member-directory.php:247
msgid "Last login"
msgstr ""
#: includes/core/class-member-directory.php:242
#: includes/core/class-member-directory.php:253
msgid "Random"
msgstr ""
#: includes/core/class-member-directory.php:243
#: includes/core/class-member-directory.php:254
msgid "Other (Custom Field)"
msgstr ""
#: includes/core/class-member-directory.php:303
#: includes/core/class-member-directory.php:265
msgid "Age"
msgstr ""
#: includes/core/class-member-directory.php:305
#: includes/core/class-member-directory.php:267
msgid "User Registered"
msgstr ""
#: includes/core/class-member-directory.php:680
#: includes/core/class-member-directory.php:641
msgid " stars"
msgstr ""
#: includes/core/class-member-directory.php:688
#: includes/core/class-member-directory.php:649
msgid "<strong>Age:</strong>&nbsp;{min_range} - {max_range} years old"
msgstr ""
#: includes/core/class-member-directory.php:1841
#: includes/core/class-member-directory.php:1885
#: includes/core/class-member-directory.php:1802
#: includes/core/class-member-directory.php:1846
#: includes/core/um-actions-profile.php:1192
#: includes/core/um-actions-profile.php:1223
msgid "Edit Profile"
msgstr ""
#: includes/core/class-member-directory.php:1891
#: includes/core/class-member-directory.php:1852
#: includes/core/um-actions-profile.php:1224
msgid "My Account"
msgstr ""
@@ -7215,6 +7215,10 @@ msgstr ""
msgid "Comments"
msgstr ""
#: includes/core/class-register.php:71
msgid "Invalid Nonce."
msgstr ""
#: includes/core/class-shortcodes.php:358
msgid ""
"This content has been restricted to logged in users only. Please <a href="
@@ -7834,12 +7838,12 @@ msgstr ""
msgid "This user has not created any posts."
msgstr ""
#: templates/searchform.php:6 templates/searchform.php:7
#: templates/searchform.php:8 templates/searchform.php:9
msgctxt "label"
msgid "Search for:"
msgstr ""
#: templates/searchform.php:7
#: templates/searchform.php:9
msgctxt "placeholder"
msgid "Search &hellip;"
msgstr ""
+3
View File
@@ -156,6 +156,7 @@ The plugin works with popular caching plugins by automatically excluding Ultimat
- Added ability edit cover photo HTML (e.g. for adding some HTML attributes. See how add srcset attribute based on all generated cover sizes [here](https://docs.ultimatemember.com/article/1519-change-cover-photo-html))
* Bugfixes:
- Optimized usermeta for Account submit security
- Optimized usermeta for Account submit security
- Fixed Gmail & Yahoo UTF-8 encoding of email notification subject
- Fixed ajax_resize_image() process
@@ -165,6 +166,8 @@ The plugin works with popular caching plugins by automatically excluding Ultimat
- Fixed profile image settings
- Fixed profile privacy for not logged in users, if restriction options set for profile page as visible only for logged in and showing message instead of redirect
(it makes the same for {site_url}/user and {site_url}/user/{user_slug} )
- Fixed security issue on registration form submission when username or email have conditional logic
- Fixed RTL styles issues on user profile and account pages
= 2.0.56: August 21, 2019 =
+6 -4
View File
@@ -1,10 +1,12 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<form role="search" method="get" class="search-form um-search-form" action="<?php echo esc_url( um_get_core_page( 'members' ) ); ?>">
<input type="hidden" name="um_search" value="1">
<div class="search-form um-search-form" data-members_page="<?php echo esc_url( $members_page ); ?>">
<?php foreach ( array_keys( $query ) as $key ) { ?>
<input type="hidden" name="um-search-keys[]" value="<?php echo esc_attr( $key ) ?>" />
<?php } ?>
<div class="um-search-area">
<span class="screen-reader-text"><?php echo _x( 'Search for:', 'label' ); ?></span>
<input type="search" class="um-search-field search-field" placeholder="<?php echo esc_attr_x( 'Search &hellip;', 'placeholder' ); ?>" value="<?php echo esc_attr( um_get_search_query() ); ?>" name="search" title="<?php echo esc_attr_x( 'Search for:', 'label' ); ?>" />
<input type="search" class="um-search-field search-field" placeholder="<?php echo esc_attr_x( 'Search &hellip;', 'placeholder' ); ?>" value="<?php echo esc_attr( $search_value ); ?>" name="search" title="<?php echo esc_attr_x( 'Search for:', 'label' ); ?>" />
<a href="javascript:void(0);" id="um-search-button" class="um-search-icon um-faicon um-faicon-search"></a>
</div>
</form>
</div>
-1
View File
@@ -7,7 +7,6 @@ Version: 2.1.0
Author: Ultimate Member
Author URI: http://ultimatemember.com/
Text Domain: ultimate-member
Domain Path: /languages
*/
defined( 'ABSPATH' ) || exit;