From 59b79016797e7a144f8fd90c03ca62f293669e4a Mon Sep 17 00:00:00 2001 From: jonfalcon Date: Sat, 12 Dec 2015 14:32:20 -0800 Subject: [PATCH 1/2] Add search field hook --- core/um-members.php | 121 +++++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 59 deletions(-) diff --git a/core/um-members.php b/core/um-members.php index 84ba5b61..557bd2c2 100644 --- a/core/um-members.php +++ b/core/um-members.php @@ -5,18 +5,18 @@ class UM_Members { function __construct() { add_filter('user_search_columns', array(&$this, 'user_search_columns'), 99 ); - + add_action('template_redirect', array(&$this, 'access_members'), 555); - + $this->core_search_fields = array( 'user_login', 'username', 'display_name', 'user_email', ); - + } - + /*** *** @user_search_columns ***/ @@ -28,23 +28,23 @@ class UM_Members { } return $search_columns; } - + /*** *** @Members page allowed? ***/ function access_members() { - + if ( um_get_option('members_page') == 0 && um_is_core_page('members') ) { um_redirect_home(); } - + } - + /*** *** @tag conversion for member directory ***/ function convert_tags( $string, $array ) { - + $search = array( '{total_users}', ); @@ -56,7 +56,7 @@ class UM_Members { $string = str_replace($search, $replace, $string); return $string; } - + /*** *** @show filter ***/ @@ -64,103 +64,106 @@ class UM_Members { global $ultimatemember; $fields = $ultimatemember->builtin->all_user_fields; - + if ( isset( $fields[$filter] ) ) { $attrs = $fields[$filter]; } else { $attrs = apply_filters("um_custom_search_field_{$filter}", array() ); } - + + // additional filter for search field attributes + $attrs = apply_filters("um_search_field_{$filter}", $attrs); + if ( $ultimatemember->builtin->is_dropdown_field( $filter, $attrs ) ) { $type = 'select'; } else { $type = 'text'; } - + switch( $type ) { - + case 'select': ?> - + - + - + mobile->isMobile() && isset( $profiles_per_page_mobile ) ) $profiles_per_page = $profiles_per_page_mobile; - + $array['users'] = array_unique( $users->results ); - + $array['total_users'] = (isset( $max_users ) && $max_users && $max_users <= $users->total_users ) ? $max_users : $users->total_users; $array['page'] = isset($_REQUEST['members_page']) ? $_REQUEST['members_page'] : 1; - + $array['total_pages'] = ceil( $array['total_users'] / $profiles_per_page ); - + $array['header'] = $this->convert_tags( $header, $array ); $array['header_single'] = $this->convert_tags( $header_single, $array ); - + $array['users_per_page'] = array_slice($array['users'], ( ( $profiles_per_page * $array['page'] ) - $profiles_per_page ), $profiles_per_page ); - + for( $i = $array['page']; $i <= $array['page'] + 2; $i++ ) { if ( $i <= $array['total_pages'] ) { $pages_to_show[] = $i; } } - + if ( isset( $pages_to_show ) && count( $pages_to_show ) < 5 ) { $pages_needed = 5 - count( $pages_to_show ); @@ -170,12 +173,12 @@ class UM_Members { } } } - + if ( isset( $pages_to_add ) ) { - + asort( $pages_to_add ); $pages_to_show = array_merge( (array)$pages_to_add, $pages_to_show ); - + if ( count( $pages_to_show ) < 5 ) { if ( max($pages_to_show) - $array['page'] >= 2 ) { $pages_to_show[] = max($pages_to_show) + 1; @@ -189,13 +192,13 @@ class UM_Members { } } } - + asort( $pages_to_show ); - + $array['pages_to_show'] = $pages_to_show; - + } else { - + if ( isset( $pages_to_show ) && count( $pages_to_show ) < 5 ) { if ( max($pages_to_show) - $array['page'] >= 2 ) { $pages_to_show[] = max($pages_to_show) + 1; @@ -209,34 +212,34 @@ class UM_Members { } } } - + if ( isset( $pages_to_show ) && is_array( $pages_to_show ) ) { - + asort( $pages_to_show ); - + $array['pages_to_show'] = $pages_to_show; - + } - + } - + if ( isset( $array['pages_to_show'] ) ) { - + if ( $array['total_pages'] < count( $array['pages_to_show'] ) ) { foreach( $array['pages_to_show'] as $k => $v ) { if ( $v > $array['total_pages'] ) unset( $array['pages_to_show'][$k] ); } } - + foreach( $array['pages_to_show'] as $k => $v ) { if ( (int)$v <= 0 ) { unset( $array['pages_to_show'][$k] ); } } - + } return apply_filters('um_prepare_user_results_array', $array ); } -} \ No newline at end of file +} From 483d059fbc50c7675f2d65724b867c4d40eebcac Mon Sep 17 00:00:00 2001 From: jonfalcon Date: Sat, 12 Dec 2015 14:53:19 -0800 Subject: [PATCH 2/2] Fix users not deleted --- admin/core/um-admin-notices.php | 141 +++++++++++++++++--------------- 1 file changed, 73 insertions(+), 68 deletions(-) diff --git a/admin/core/um-admin-notices.php b/admin/core/um-admin-notices.php index ebf80174..ea3067b8 100644 --- a/admin/core/um-admin-notices.php +++ b/admin/core/um-admin-notices.php @@ -3,152 +3,152 @@ class UM_Admin_Notices { function __construct() { - + add_action('admin_init', array(&$this, 'create_languages_folder') ); add_action('admin_notices', array(&$this, 'main_notices'), 1); - + add_action('admin_notices', array(&$this, 'localize_note'), 2); - + add_action('admin_notices', array(&$this, 'show_update_messages'), 10); - + } - + /*** *** @to store plugin languages ***/ function create_languages_folder() { - + global $ultimatemember; - + $path = $ultimatemember->files->upload_basedir; $path = str_replace('/uploads/ultimatemember','',$path); $path = $path . '/languages/plugins/'; $path = str_replace('//','/',$path); - + if ( !file_exists( $path ) ) { $old = umask(0); @mkdir( $path, 0777, true); umask($old); } - + } - + /*** *** @show main notices ***/ function main_notices(){ global $ultimatemember; $hide_register_notice = get_option('um_can_register_notice'); - + if ( !get_option('um_passwords_secured') ) { echo '

'; - + echo sprintf(__( 'Secure your database by removing hardcoded user passwords now. Click here to secure your database.', 'ultimatemember' ), add_query_arg('um_adm_action', 'um_passwords_secured') ); - + echo '

'; } - + if ( !get_option('users_can_register') && !$hide_register_notice ) { - + echo '

'; - + echo sprintf(__( 'Registration is disabled. Please go to the general settings page in the WordPress admin and select anyone can register. Hide this notice', 'ultimatemember' ), admin_url('options-general.php'), add_query_arg('um_adm_action', 'um_can_register_notice') ); - + echo '

'; - + } - + $hide_exif_notice = get_option('um_hide_exif_notice'); - + if ( !extension_loaded('exif') && !$hide_exif_notice ) { - + echo '

'; - + echo sprintf(__( 'Exif is not enabled on your server. Mobile photo uploads will not be rotated correctly until you enable the exif extension. Hide this notice', 'ultimatemember' ), add_query_arg('um_adm_action', 'um_hide_exif_notice') ); - + echo '

'; - + } - + // Regarding page setup $pages = $ultimatemember->permalinks->core; if ( $pages && is_array( $pages ) ) { - + $err = false; - + foreach( $pages as $slug => $page_id ) { - + $page = get_post( $page_id ); if ( !isset( $page->ID ) && in_array( $slug, array( 'user','account','members','register','login','logout','password-reset' ) ) ) { $err = true; } - + } - + if ( $err ) { echo '

' . __('One or more of your Ultimate Member pages are not correctly setup. Please visit Ultimate Member > Settings to re-assign your missing pages.','ultimatemember') . '

'; } - + if ( isset( $pages['user'] ) ) { $test = get_post( $pages['user'] ); if ( isset( $test->post_parent ) && $test->post_parent > 0 ) { echo '

' . __('Ultimate Member Setup Error: User page can not be a child page.','ultimatemember') . '

'; } } - + if ( isset( $pages['account'] ) ) { $test = get_post( $pages['account'] ); if ( isset( $test->post_parent ) && $test->post_parent > 0 ) { echo '

' . __('Ultimate Member Setup Error: Account page can not be a child page.','ultimatemember') . '

'; } } - + } - + do_action('um_admin_after_main_notices'); - + } - - + + /*** *** @localization notice ***/ function localize_note() { global $ultimatemember; - + $locale = get_option('WPLANG'); if ( !$locale ) return; if ( strstr( $locale, 'en_' ) ) return; // really, english! if ( file_exists( WP_LANG_DIR . '/plugins/ultimatemember-' . $locale . '.mo' ) ) return; - + if ( isset( $ultimatemember->available_languages[$locale] ) ) { - + $download_uri = add_query_arg('um_adm_action', 'um_language_downloader'); - + echo '

'; - + echo sprintf(__('Your site language is %1$s. Good news! Ultimate Member is already available in %2$s language. Download the translation files and start using the plugin in your language now.','ultimatemember'), $locale, $ultimatemember->available_languages[$locale], $download_uri ); - + echo '

'; - + } else { - + $hide_locale_notice = get_option('um_hide_locale_notice'); if ( !$hide_locale_notice ) { - + echo '

'; - + echo sprintf(__('Ultimate Member has not yet been translated to your langeuage: %1$s. If you have translated the plugin you need put these files ultimatemember-%1$s.po and ultimatemember-%1$s.mo in /wp-content/languages/plugins/ for the plugin to be translated in your language. Hide this notice','ultimatemember'), $locale, add_query_arg('um_adm_action', 'um_hide_locale_notice') ); - + echo '

'; - + } - + } - + } - + /*** *** @updating users ***/ @@ -158,56 +158,61 @@ class UM_Admin_Notices { $update = $_REQUEST['update']; switch($update) { - + case 'confirm_delete': $wp_http_referer = isset( $_REQUEST['_wp_http_referer'] ) ? $_REQUEST['_wp_http_referer']: ''; $confirm_uri = sanitize_text_field( urldecode( $wp_http_referer ) ); + $confirm_uri = $confirm_uri ?: admin_url('users.php?' . http_build_query(array( + 'um_adm_action' => 'delete_users', + 'user' => array_map('intval', (array) $_REQUEST['user']), + 'confirm' => 1 + ))); $users = ''; - + if( isset( $_REQUEST['user'] ) ){ foreach( $_REQUEST['user'] as $user_id ) { $user = get_userdata( $user_id ); $users .= '#' . $user_id . ': ' . $user->user_login . '
'; } } - + $ignore = admin_url('users.php'); - + $messages[0]['err_content'] = sprintf(__('Are you sure you want to delete the selected user(s)? The following users will be deleted:

%s

This cannot be undone!','ultimatemember'), $users); $messages[0]['err_content'] .= '

' . __('Remove','ultimatemember') . '  ' . __('Undo','ultimatemember') . '

'; - + break; - + case 'language_updated': $messages[0]['content'] = __('Your translation files have been updated successfully.','ultimatemember'); break; - + case 'purged_temp': $messages[0]['content'] = __('Your temp uploads directory is now clean.','ultimatemember'); break; - + case 'cleared_cache': $messages[0]['content'] = __('Your user cache is now removed.','ultimatemember'); break; - + case 'form_duplicated': $messages[0]['content'] = __('The form has been duplicated successfully.','ultimatemember'); break; - + case 'user_updated': $messages[0]['content'] = __('User has been updated.','ultimatemember'); break; - + case 'users_updated': $messages[0]['content'] = __('Users have been updated.','ultimatemember'); break; - + case 'err_users_updated': $messages[0]['err_content'] = __('Super administrators cannot be modified.','ultimatemember'); $messages[1]['content'] = __('Other users have been updated.','ultimatemember'); - + } - + if ( !empty( $messages ) ) { foreach( $messages as $message ) { if ( isset($message['err_content'])) { @@ -217,7 +222,7 @@ class UM_Admin_Notices { } } } - + } -} \ No newline at end of file +}