custom_role = 'um_role'; add_filter('manage_users_columns', array(&$this, 'manage_users_columns') ); add_action('manage_users_custom_column', array(&$this, 'manage_users_custom_column'), 10, 3); add_action('restrict_manage_users', array(&$this, 'restrict_manage_users') ); add_action('admin_init', array(&$this, 'um_bulk_users_edit'), 9); add_filter('views_users', array(&$this, 'views_users') ); add_filter('pre_user_query', array(&$this, 'sort_by_newest') ); add_filter('pre_user_query', array(&$this, 'custom_users_filter') ); add_filter('user_row_actions', array(&$this, 'user_row_actions'), 10, 2); } /*** *** @Custom row actions for users page ***/ function user_row_actions($actions, $user_object) { $user_id = $user_object->ID; um_fetch_user( $user_id ); $actions['frontend_profile'] = "" . __( 'View profile','ultimatemember') . ""; if ( um_user('submitted') ) { $actions['view_info'] = '' . __('Info','ultimatemember') . ''; } $actions = apply_filters('um_admin_user_row_actions', $actions, $user_id ); return $actions; } /*** *** @sort users by newest first ***/ function sort_by_newest( $query ){ global $wpdb, $pagenow; if ( is_admin() && $pagenow == 'users.php' ) { if (!isset($_REQUEST['orderby'])) { $query->query_vars["order"] = 'desc'; $query->query_orderby = " ORDER BY user_registered ".($query->query_vars["order"] == "desc" ? "desc " : "asc ");//set sort order } } return $query; } /*** *** @custom users filter ***/ function custom_users_filter( $query ){ global $wpdb, $pagenow; if ( is_admin() && $pagenow=='users.php' && isset($_GET[ $this->custom_role ]) && $_GET[ $this->custom_role ] != '') { $role = $_GET[ $this->custom_role ]; $query->query_where = str_replace('WHERE 1=1', "WHERE 1=1 AND {$wpdb->users}.ID IN ( SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta WHERE {$wpdb->usermeta}.meta_key = 'role' AND {$wpdb->usermeta}.meta_value = '{$role}')", $query->query_where ); } if ( is_admin() && $pagenow=='users.php' && isset($_GET[ 'status' ]) && $_GET[ 'status' ] != '') { $status = urldecode($_GET[ 'status' ]); if ( $status == 'needs-verification') { $query->query_where = str_replace('WHERE 1=1', "WHERE 1=1 AND {$wpdb->users}.ID IN ( SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta WHERE {$wpdb->usermeta}.meta_key = '_um_verified' AND {$wpdb->usermeta}.meta_value = 'pending')", $query->query_where ); } else { $query->query_where = str_replace('WHERE 1=1', "WHERE 1=1 AND {$wpdb->users}.ID IN ( SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta WHERE {$wpdb->usermeta}.meta_key = 'account_status' AND {$wpdb->usermeta}.meta_value = '{$status}')", $query->query_where ); } } return $query; } /*** *** @Change the roles with UM roles ***/ function views_users( $views ) { global $ultimatemember, $query; remove_filter('pre_user_query', array(&$this, 'custom_users_filter') ); $views = array(); if ( !isset($_REQUEST[ $this->custom_role ]) && !isset($_REQUEST['status']) ) { $views['all'] = 'All ('.$ultimatemember->query->count_users().')'; } else { $views['all'] = 'All ('.$ultimatemember->query->count_users().')'; } $status = array( 'approved' => __('Approved','ultimatemember'), 'awaiting_admin_review' => __('Pending review','ultimatemember'), 'awaiting_email_confirmation' => __('Waiting e-mail confirmation','ultimatemember'), 'inactive' => __('Inactive','ultimatemember'), 'rejected' => __('Rejected','ultimatemember') ); $ultimatemember->query->count_users_by_status( 'unassigned' ); foreach( $status as $k => $v ) { if ( isset($_REQUEST['status']) && $_REQUEST['status'] == $k ) { $current = 'class="current"'; } else { $current = ''; } $views[ $k ] = ''. $v . ' ('.$ultimatemember->query->count_users_by_status( $k ).')'; } $views = apply_filters('um_admin_views_users', $views ); return $views; } /*** *** @Bulk user editing actions ***/ function um_bulk_users_edit(){ global $ultimatemember; $admin_err = 0; if (isset($_REQUEST) && !empty ($_REQUEST) ){ // bulk change role if (isset($_REQUEST['users']) && is_array($_REQUEST['users']) && isset($_REQUEST['um_changeit']) && $_REQUEST['um_changeit'] != '' && isset($_REQUEST['um_change_role']) && !empty($_REQUEST['um_change_role']) ){ if ( ! current_user_can( 'edit_users' ) ) wp_die( __( 'You do not have enough permissions to do that.','ultimatemember') ); check_admin_referer('bulk-users'); $users = $_REQUEST['users']; $new_role = current( array_filter( $_REQUEST['um_change_role'] ) ); foreach($users as $user_id){ $ultimatemember->user->set( $user_id ); // change role for non-wp admins or non-community admins only if ( !um_user('super_admin') || um_user('role') != 'admin' ) { $ultimatemember->user->set_role( $new_role ); } else { $admin_err = 1; } } if ( $admin_err == 0 ){ wp_redirect( admin_url('users.php?update=promote') ); exit; } else { wp_redirect( admin_url('users.php?update=err_admin_role') ); exit; } } else if ( isset($_REQUEST['um_changeit']) && $_REQUEST['um_changeit'] != '' ) { wp_redirect( admin_url('users.php') ); exit; } // bulk edit users if ( isset($_REQUEST['users']) && is_array($_REQUEST['users']) && isset($_REQUEST['um_bulkedit']) && $_REQUEST['um_bulkedit'] != '' && isset($_REQUEST['um_bulk_action']) && !empty($_REQUEST['um_bulk_action']) ){ if ( ! current_user_can( 'edit_users' ) ) wp_die( __( 'You do not have enough permissions to do that.','ultimatemember') ); check_admin_referer('bulk-users'); $users = $_REQUEST['users']; $bulk_action = current( array_filter( $_REQUEST['um_bulk_action']) ); foreach($users as $user_id){ $ultimatemember->user->set( $user_id ); if ( !um_user('super_admin') ) { do_action("um_admin_user_action_hook", $bulk_action); do_action("um_admin_user_action_{$bulk_action}_hook"); } else { $admin_err = 1; } } // Finished. redirect now if ( $admin_err == 0 ){ wp_redirect( admin_url('users.php?update=users_updated') ); exit; } else { wp_redirect( admin_url('users.php?update=err_users_updated') ); exit; } } else if ( isset($_REQUEST['um_bulkedit']) && $_REQUEST['um_bulkedit'] != '' ) { wp_redirect( admin_url('users.php') ); exit; } // filter by user role if ( isset($_REQUEST['um_filter_role']) && ! isset( $_REQUEST['um_filter_processed'] ) && ( ! isset( $_REQUEST['new_role'] ) || empty( $_REQUEST['new_role'] ) ) && $_REQUEST['um_filter_role'] ) { $filter_role = current( array_filter( $_REQUEST['um_filter_role'] ) ); $uri = add_query_arg('um_role',$filter_role); $uri = add_query_arg('s',$_REQUEST['s'], $uri); $uri = add_query_arg('um_filter_processed',true, $uri); exit( wp_redirect( $uri ) ); } } } /*** *** @Add UM roles to users admin ***/ function restrict_manage_users() { global $ultimatemember; ?>