WordPress.org

Plugin Directory

Changeset 607333


Ignore:
Timestamp:
10/03/12 08:12:57 (19 months ago)
Author:
picklewagon
Message:

Add a couple of different features with this change:

  • add user counts by status to dashboard
  • store the users by status in a transient
Location:
new-user-approve/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • new-user-approve/trunk/new-user-approve.php

    r607327 r607333  
    6262        add_action( 'new_user_approve_approve_user', array( $this, 'approve_user' ) ); 
    6363        add_action( 'new_user_approve_deny_user', array( $this, 'deny_user' ) ); 
    64         //add_action('rightnow_end', array( $this, 'dashboard_stats')); // still too slow 
     64        add_action( 'rightnow_end', array( $this, 'dashboard_stats' ) ); 
     65        add_action( 'user_register', array( $this, 'delete_new_user_approve_transient' ), 11 ); 
     66        add_action( 'new_user_approve_approve_user', array( $this, 'delete_new_user_approve_transient' ), 11 ); 
     67        add_action( 'new_user_approve_deny_user', array( $this, 'delete_new_user_approve_transient' ), 11 ); 
    6568 
    6669        // Filters 
     
    124127 
    125128    public function dashboard_stats() { 
    126         // Query the users table 
    127         $wp_user_search = new WP_User_Search( $_GET['usersearch'], $_GET['userspage'] ); 
    128         $user_status = array(); 
    129  
    130         // Make the user objects 
    131         foreach ( $wp_user_search->get_results() as $userid ) { 
    132             $user = new WP_User( $userid ); 
    133             $status = get_usermeta( $userid, 'pw_user_status' ); 
    134             if ( $status == '' ) { // user was created in admin 
    135                 update_user_meta( $userid, 'pw_user_status', 'approved' ); 
    136                 $status = get_usermeta( $userid, 'pw_user_status' ); 
    137             } 
    138             if ( $user_status[$status] == null ) { 
    139                 $user_status[$status] = 0; 
    140             } 
    141             $user_status[$status] += 1; 
    142         } 
     129        $user_status = $this->get_user_statuses(); 
    143130?> 
    144131            <div> 
    145132                <p><span style="font-weight:bold;"><a href="users.php?page=<?php print $this->_admin_page ?>"><?php _e( 'Users', $this->plugin_id ); ?></a></span>: 
    146                 <?php foreach ( $user_status as $status => $count ) print "$count $status&nbsp;&nbsp;"; ?> 
     133                <?php foreach ( $user_status as $status => $users ) print count( $users ) . " $status&nbsp;&nbsp;&nbsp;"; ?> 
    147134                </p> 
    148135            </div> 
     
    193180        $deny = ( 'approved' == $status || 'pending' == $status ); 
    194181         
    195         if ( $status != 'approved' ) { 
    196             // Query the users table 
    197             $query = array( 
    198                 'meta_key' => 'pw_user_status', 
    199                 'meta_value' => $status, 
    200             ); 
    201             $wp_user_search = new WP_User_Query( $query ); 
    202         } else { 
    203             $users = get_users( 'blog_id=1' ); 
    204             $approved_users = array(); 
    205             foreach( $users as $user ) { 
    206                 $the_status = get_user_meta( $user->ID, 'pw_user_status', true ); 
    207  
    208                 if ( $the_status == 'approved' || empty( $the_status ) ) { 
    209                     $approved_users[] = $user->ID; 
    210                 } 
    211             } 
    212  
    213             // get all approved users and any user without a status 
    214             $query = array( 'include' => $approved_users ); 
    215             $wp_user_search = new WP_User_Query( $query ); 
    216         } 
    217  
    218         if ( isset( $wp_user_search ) && $wp_user_search->total_users > 0 ) { 
    219             $users = $wp_user_search->get_results(); 
    220             $users = apply_filters( 'new_user_approve_user_status', $users, $status ); 
     182        $user_status = $this->get_user_statuses(); 
     183        $users = $user_status[$status]; 
     184 
     185        if ( count( $users ) > 0 ) { 
    221186        ?> 
    222187<table class="widefat"> 
     
    544509    } 
    545510 
     511    /** 
     512     * Get a status of all the users and save them using a transient 
     513     */ 
     514    public function get_user_statuses() { 
     515        $valid_stati = array( 'pending', 'approved', 'denied' ); 
     516        $user_status = get_transient( 'new_user_approve_user_statuses' ); 
     517         
     518        if ( false === $user_status ) { 
     519            $user_status = array(); 
     520             
     521            foreach ( $valid_stati as $status ) { 
     522                // Query the users table 
     523                if ( $status != 'approved' ) { 
     524                    // Query the users table 
     525                    $query = array( 
     526                        'meta_key' => 'pw_user_status', 
     527                        'meta_value' => $status, 
     528                    ); 
     529                    $wp_user_search = new WP_User_Query( $query ); 
     530                } else { 
     531                    $users = get_users( 'blog_id=1' ); 
     532                    $approved_users = array(); 
     533                    foreach( $users as $user ) { 
     534                        $the_status = get_user_meta( $user->ID, 'pw_user_status', true ); 
     535                         
     536                        if ( $the_status == 'approved' || empty( $the_status ) ) { 
     537                            $approved_users[] = $user->ID; 
     538                        } 
     539                    } 
     540                     
     541                    // get all approved users and any user without a status 
     542                    $query = array( 'include' => $approved_users ); 
     543                    $wp_user_search = new WP_User_Query( $query ); 
     544                } 
     545                 
     546                $user_status[$status] = $wp_user_search->get_results(); 
     547                 
     548                set_transient( 'new_user_approve_user_statuses', $user_status ); 
     549            } 
     550        } 
     551         
     552        foreach ( $valid_stati as $status ) { 
     553            $user_status[$status] = apply_filters( 'new_user_approve_user_status', $user_status[$status], $status ); 
     554        } 
     555         
     556        return $user_status; 
     557    } 
     558     
     559    public function delete_new_user_approve_transient() { 
     560        delete_transient( 'new_user_approve_user_statuses' ); 
     561    } 
     562     
    546563} // End Class 
    547564} // End if class exists statement 
  • new-user-approve/trunk/readme.txt

    r607324 r607333  
    7070* add a filter to bypass password reset 
    7171* add more translations 
     72* add user counts by status to dashboard 
     73* store the users by status in a transient 
    7274 
    7375= 1.3.4 = 
Note: See TracChangeset for help on using the changeset viewer.