WordPress.org

Plugin Directory

Changeset 570068


Ignore:
Timestamp:
07/10/12 13:32:39 (5 years ago)
Author:
raulillana
Message:

tagged 1.1 & uploaded 2.0 to trunk

Location:
awebsome-online-registered-users-widget
Files:
21 added
2 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • awebsome-online-registered-users-widget/trunk/awebsome-oruw.php

    r339726 r570068  
    11<?php 
    22/** 
    3  * Awebsome! Comment Author Mail Validation 
    4  * Main file, frontend related 
     3 * Awebsome! Online Registered Users Widget 
    54 *  
    65 * @package awebsome_oruw 
    7  * @author Capt. WordPress - Awebsome! <cpt.wp@awebsome.com> 
     6 * @author Raul Illana <r@awebsome.com> 
    87 */ 
    98/* 
    109    Plugin Name: Awebsome! Online Registered Users Widget 
    1110    Plugin URI: http://plugins.awebsome.com 
    12     Description: Adds a new widget for showing a list of registered users, and also their online status (online/offline). 
    13     Version: 1.1 
    14     Author: Capt. WordPress - Awebsome! <cpt.wp@awebsome.com> 
    15     Author URI: http://awebsome.com/services/wordpress 
     11    Description: Adds a new Widget in your Dashboard and your Theme to show a list of online/offline registered users by some display options. 
     12    Version: 2.0 
     13    Author: Raul Illana <r@awebsome.com> 
     14    Author URI: http://raulillana.com 
    1615    License: GPLv2 
    1716*/ 
     17add_action('widgets_init', create_function('', 'register_widget("Awebsome_ORUW");')); 
     18 
     19if( !class_exists('Awebsome_ORUW') ): 
    1820/** 
    1921 * @package awebsome_oruw 
     
    2224class Awebsome_ORUW extends WP_Widget 
    2325{ 
    24     // Member functions (must be overriden) 
    25     /** constructor */ 
    26     function Awebsome_ORUW() 
    27     { 
    28         // set widget and control widget options 
    29         $widget_ops = array('classname' => 'awebsome-oruw', 'description' => 'Adds a list of online/offline registered users.'); 
    30         $control_ops = array('id_base' => 'awebsome-oruw'); 
    31          
    32         // register the widget 
    33         $this->WP_Widget('awebsome-oruw', 'A! Online Registered Users', $widget_ops, $control_ops); 
    34     } 
    35      
    36     /** @see WP_Widget::widget */ 
    37     function widget($args, $instance) 
     26    /** 
     27     * Register widget with WordPress 
     28     * Register and enqueue widget styles 
     29     * Register dashboard widget 
     30     * Register login and logout actions 
     31     *  
     32     * @uses wp_register_style 
     33     * @uses is_active_widget 
     34     * @uses add_action 
     35     * @uses is_admin 
     36     *  
     37     * @since 2.0 
     38     */ 
     39    public function __construct() { 
     40        parent::__construct('awebsome_oruw', 'A! Online Registered Users', array('description' => __('Shows your online/offline registered users.', 'aws-oruw'))); 
     41         
     42        // frontend styles 
     43        wp_register_style('aws_oruw', plugins_url('css/frontend.css', __FILE__)); 
     44        if( is_active_widget(false, false, $this->id_base) ) add_action('wp_enqueue_scripts', array(&$this, 'enqueue_styles_scripts')); 
     45         
     46        //backend styles 
     47        wp_register_style('aws_oruw_adm', plugins_url('css/backend.css', __FILE__)); 
     48        if( is_admin() && is_active_widget(false, false, $this->id_base) ) add_action('admin_enqueue_scripts', array(&$this, 'enqueue_admin_styles_scripts')); 
     49         
     50        // backend widget 
     51        add_action('wp_dashboard_setup', array(&$this, 'add_dashboard_widget')); 
     52         
     53        // login and logout actions 
     54        add_action('wp_login',  array(&$this, 'set_user_logged_in')); 
     55        add_action('wp_logout', array(&$this, 'set_user_logged_out')); 
     56    } 
     57     
     58    /** 
     59     * Front-end display of widget 
     60     * 
     61     * @see WP_Widget::widget() 
     62     * 
     63     * @param array $args     Widget arguments. 
     64     * @param array $instance Saved values from database. 
     65     *  
     66     * @uses self::print_user_list {see @Awebsome_ORUW::print_user_list} 
     67     *  
     68     * @since 1.0 
     69     */ 
     70    public function widget($args, $instance) 
    3871    { 
    3972        extract($args); 
     
    4174         
    4275        // only showing roles 
    43         $osuadms = $instance['aws_oruw_osuadms']; // super admins 
    44         $oadms   = $instance['aws_oruw_oadms']; // admins 
    45         $oedits  = $instance['aws_oruw_oedits']; // editors 
    46         $oauths  = $instance['aws_oruw_oauths']; // authors 
    47         $oconts  = $instance['aws_oruw_oconts']; // contributors 
    48         $osubs   = $instance['aws_oruw_osubs']; // subscribers 
    49         $onlys   = array( 
    50             'Super Administrator' => $osuadms,  
    51             'Administrator' => $oadms,  
    52             'Editor' => $oedits,  
    53             'Author' => $oauths,  
    54             'Contributor' => $oconts,  
    55             'Subscriber' => $osubs 
     76        $onlys = array( 
     77            'Super Administrator' => $instance['aws_oruw_osuadms'], 
     78            'Administrator'       => $instance['aws_oruw_oadms'], 
     79            'Editor'              => $instance['aws_oruw_oedits'], 
     80            'Author'              => $instance['aws_oruw_oauths'], 
     81            'Contributor'         => $instance['aws_oruw_oconts'], 
     82            'Subscriber'          => $instance['aws_oruw_osubs'] 
    5683        ); 
    5784         
    5885        // others filters 
    59         $authlinks  = $instance['aws_oruw_authlinks']; // user links to author pages 
    60         $categorize = $instance['aws_oruw_categorize']; // categorize list with user roles 
    61         $others     = array('authlinks' => $authlinks, 'categorize' => $categorize); 
     86        $others = array( 
     87            'gravatars'  => $instance['aws_oruw_gravatars'], // show gravatars 
     88            'authlinks'  => $instance['aws_oruw_authlinks'], // user links to author pages 
     89            'categorize' => $instance['aws_oruw_categorize'] // categorize list with user roles 
     90        ); 
    6291         
    6392        // start printing the widget 
     
    6695         
    6796        // do the magic and end printing the widget 
    68         $this->print_user_list($onlys, $others); 
     97        self::print_user_list($onlys, $others); 
    6998        print $after_widget; 
    7099    } 
    71100     
    72     /** @see WP_Widget::update */ 
    73     function update($new_instance, $old_instance) 
     101    /** 
     102     * Back-end display of widget. 
     103     *  
     104     * @uses self::print_user_list_for_dashboard {see @Awebsome_ORUW::print_user_list_for_dashboard} 
     105     *  
     106     * @since 2.0 
     107     */ 
     108    public function dashboard_widget() 
     109    { 
     110        // only showing roles 
     111        $onlys = array( 
     112            'Super Administrator' => false, 
     113            'Administrator'       => false, 
     114            'Editor'              => false, 
     115            'Author'              => false, 
     116            'Contributor'         => false, 
     117            'Subscriber'          => false 
     118        ); 
     119         
     120        // others filters 
     121        $others = array( 
     122            'gravatars'  => true, // show gravatars 
     123            'authlinks'  => true, // user links to author pages 
     124            'categorize' => true // categorize list with user roles 
     125        ); 
     126         
     127        self::print_user_list_for_dashboard($onlys, $others); 
     128    } 
     129     
     130     
     131    /** 
     132     * Sanitize widget form values as they are saved 
     133     * 
     134     * @see WP_Widget::update() 
     135     * 
     136     * @param array $new_instance Values just sent to be saved. 
     137     * @param array $old_instance Previously saved values from database. 
     138     * 
     139     * @return array Updated safe values to be saved. 
     140     */ 
     141    public function update($new_instance, $old_instance) 
    74142    { 
    75143        $instance = $old_instance; 
     
    79147         
    80148        // onlys 
    81         $instance['aws_oruw_osuadms'] = $new_instance['aws_oruw_osuadms']; 
    82         $instance['aws_oruw_oadms']   = $new_instance['aws_oruw_oadms']; 
    83         $instance['aws_oruw_oedits']  = $new_instance['aws_oruw_oedits']; 
    84         $instance['aws_oruw_oauths']  = $new_instance['aws_oruw_oauths']; 
    85         $instance['aws_oruw_oconts']  = $new_instance['aws_oruw_oconts']; 
    86         $instance['aws_oruw_osubs']   = $new_instance['aws_oruw_osubs']; 
     149        $instance['aws_oruw_osuadms'] = (bool)$new_instance['aws_oruw_osuadms']; 
     150        $instance['aws_oruw_oadms']   = (bool)$new_instance['aws_oruw_oadms']; 
     151        $instance['aws_oruw_oedits']  = (bool)$new_instance['aws_oruw_oedits']; 
     152        $instance['aws_oruw_oauths']  = (bool)$new_instance['aws_oruw_oauths']; 
     153        $instance['aws_oruw_oconts']  = (bool)$new_instance['aws_oruw_oconts']; 
     154        $instance['aws_oruw_osubs']   = (bool)$new_instance['aws_oruw_osubs']; 
    87155         
    88156        // others 
    89         $instance['aws_oruw_authlinks'] = $new_instance['aws_oruw_authlinks']; 
    90         $instance['aws_oruw_categorize'] = $new_instance['aws_oruw_categorize']; 
     157        $instance['aws_oruw_gravatars']  = (bool)$new_instance['aws_oruw_gravatars']; 
     158        $instance['aws_oruw_authlinks']  = (bool)$new_instance['aws_oruw_authlinks']; 
     159        $instance['aws_oruw_categorize'] = (bool)$new_instance['aws_oruw_categorize']; 
    91160         
    92161        return $instance; 
    93162    } 
    94163     
    95     /** @see WP_Widget::form */ 
    96     function form( $instance ) 
    97     { 
    98         $checked = ' checked="checked"'; 
    99          
    100         // Checkbox value if active: "on" // if not active is empty 
    101         $gfi_title = $this->get_field_id('aws_oruw_title'); 
    102         $gfn_title = $this->get_field_name('aws_oruw_title'); 
    103         $title = esc_attr($instance['aws_oruw_title']); 
    104          
    105         // onlys 
    106         $gfi_osuadms = $this->get_field_id('aws_oruw_osuadms'); 
    107         $gfn_osuadms = $this->get_field_name('aws_oruw_osuadms'); 
    108         $osuadms = ($instance['aws_oruw_osuadms'] === 'on') ? $checked : ''; 
    109          
    110         $gfi_oadms = $this->get_field_id('aws_oruw_oadms'); 
    111         $gfn_oadms = $this->get_field_name('aws_oruw_oadms'); 
    112         $oadms = ($instance['aws_oruw_oadms'] === 'on') ? $checked : ''; 
    113          
    114         $gfi_oedits = $this->get_field_id('aws_oruw_oedits'); 
    115         $gfn_oedits = $this->get_field_name('aws_oruw_oedits'); 
    116         $oedits = ($instance['aws_oruw_oedits'] === 'on') ? $checked : ''; 
    117          
    118         $gfi_oauths = $this->get_field_id('aws_oruw_oauths'); 
    119         $gfn_oauths = $this->get_field_name('aws_oruw_oauths'); 
    120         $oauths = ($instance['aws_oruw_oauths'] === 'on') ? $checked : ''; 
    121          
    122         $gfi_oconts = $this->get_field_id('aws_oruw_oconts'); 
    123         $gfn_oconts = $this->get_field_name('aws_oruw_oconts'); 
    124         $oconts = ($instance['aws_oruw_oconts'] === 'on') ? $checked : ''; 
    125          
    126         $gfi_osubs = $this->get_field_id('aws_oruw_osubs'); 
    127         $gfn_osubs = $this->get_field_name('aws_oruw_osubs'); 
    128         $osubs = ($instance['aws_oruw_osubs'] === 'on') ? $checked : ''; 
    129          
    130         // others 
    131         $gfi_authlinks = $this->get_field_id('aws_oruw_authlinks'); 
    132         $gfi_categorize = $this->get_field_id('aws_oruw_categorize'); 
    133         $gfn_authlinks = $this->get_field_name('aws_oruw_authlinks'); 
    134         $gfn_categorize = $this->get_field_name('aws_oruw_categorize'); 
    135         $authlinks = ($instance['aws_oruw_authlinks'] === 'on') ? $checked : ''; 
    136         $categorize = ($instance['aws_oruw_categorize'] === 'on') ? $checked : ''; 
    137     ?> 
     164    /** 
     165     * Back-end widget form 
     166     * 
     167     * @see WP_Widget::form() 
     168     * 
     169     * @param array $instance Previously saved values from database. 
     170     */ 
     171    public function form($instance) 
     172    { 
     173         
     174?> 
    138175<p> 
    139     <label for="<?php print $gfi_title ?>"> 
    140         <?php _e('Title:') ?> 
    141         <input id="<?php print $gfi_title ?>" name="<?php print $gfn_title ?>" value="<?php print $title ?>" class="widefat" type="text" /> 
    142     </label> 
     176    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_title')) ?>"><?php _e('Title', 'aws-oruw') ?></label> 
     177    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_title')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_title')) ?>" value="<?php print $instance['aws_oruw_title'] ?>" class="widefat" type="text" /> 
    143178</p> 
    144179 
    145180<p class="aws-oruw aws-oruw-others"> 
    146     <input id="<?php print $gfi_authlinks ?>" name="<?php print $gfn_authlinks ?>"<?php print $authlinks ?> class="checkbox" type="checkbox" /> 
    147     <label for="<?php print $gfi_authlinks ?>"><?php _e('Link users to author pages') ?></label> 
    148     <br /> 
    149     <input id="<?php print $gfi_categorize ?>" name="<?php print $gfn_categorize ?>"<?php print $categorize ?> class="checkbox" type="checkbox" /> 
    150     <label for="<?php print $gfi_categorize ?>"><?php _e('Categorize users in role lists') ?></label> 
     181    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_gravatars')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_gravatars')) ?>"<?php checked($instance['aws_oruw_gravatars']) ?> class="checkbox" type="checkbox" /> 
     182    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_gravatars')) ?>"><?php _e('Show gravatars', 'aws-oruw') ?></label> 
     183    <br /> 
     184     
     185    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_authlinks')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_authlinks')) ?>"<?php checked($instance['aws_oruw_authlinks']) ?> class="checkbox" type="checkbox" /> 
     186    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_authlinks')) ?>"><?php _e('Link users to author pages', 'aws-oruw') ?></label> 
     187    <br /> 
     188     
     189    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_categorize')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_categorize')) ?>"<?php checked($instance['aws_oruw_categorize']) ?> class="checkbox" type="checkbox" /> 
     190    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_categorize')) ?>"><?php _e('Categorize users in role lists', 'aws-oruw') ?></label> 
    151191</p> 
    152192 
    153 <h4>Only show selected roles userlists</h4> 
     193<h4><?php _e('Only show selected roles userlists', 'aws-oruw') ?></h4> 
    154194<p class="aws-oruw aws-oruw-onlys"> 
    155     <input id="<?php print $gfi_osuadms ?>" name="<?php print $gfn_osuadms ?>"<?php print $osuadms ?> class="checkbox" type="checkbox" /> 
    156     <label for="<?php print $gfi_osuadms ?>"><?php _e('Super Administrators') ?></label> 
    157     <br /> 
    158      
    159     <input id="<?php print $gfi_oadms ?>" name="<?php print $gfn_oadms ?>"<?php print $oadms ?> class="checkbox" type="checkbox" /> 
    160     <label for="<?php print $gfi_oadms ?>"><?php _e('Administrators') ?></label> 
    161     <br /> 
    162      
    163     <input id="<?php print $gfi_oedits ?>" name="<?php print $gfn_oedits ?>"<?php print $oedits ?> class="checkbox" type="checkbox" /> 
    164     <label for="<?php print $gfi_oedits ?>"><?php _e('Editors') ?></label> 
    165     <br /> 
    166      
    167     <input id="<?php print $gfi_oauths ?>" name="<?php print $gfn_oauths ?>"<?php print $oauths ?> class="checkbox" type="checkbox" /> 
    168     <label for="<?php print $gfi_oauths ?>"><?php _e('Authors') ?></label> 
    169     <br /> 
    170      
    171     <input id="<?php print $gfi_oconts ?>" name="<?php print $gfn_oconts ?>"<?php print $oconts ?> class="checkbox" type="checkbox" /> 
    172     <label for="<?php print $gfi_oconts ?>"><?php _e('Contributors') ?></label> 
    173     <br /> 
    174      
    175     <input id="<?php print $gfi_osubs ?>" name="<?php print $gfn_osubs ?>"<?php print $osubs ?> class="checkbox" type="checkbox" /> 
    176     <label for="<?php print $gfi_osubs ?>"><?php _e('Subscribers') ?></label> 
     195    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_osuadms')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_osuadms')) ?>"<?php checked($instance['aws_oruw_osuadms']) ?> class="checkbox" type="checkbox" /> 
     196    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_osuadms')) ?>"><?php _e('Super Administrators', 'aws-oruw') ?></label> 
     197    <br /> 
     198     
     199    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_oadms')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_oadms')) ?>"<?php checked($instance['aws_oruw_oadms']) ?> class="checkbox" type="checkbox" /> 
     200    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_oadms')) ?>"><?php _e('Administrators', 'aws-oruw') ?></label> 
     201    <br /> 
     202     
     203    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_oedits')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_oedits')) ?>"<?php checked($instance['aws_oruw_oedits']) ?> class="checkbox" type="checkbox" /> 
     204    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_oedits')) ?>"><?php _e('Editors', 'aws-oruw') ?></label> 
     205    <br /> 
     206     
     207    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_oauths')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_oauths')) ?>"<?php checked($instance['aws_oruw_oauths']) ?> class="checkbox" type="checkbox" /> 
     208    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_oauths')) ?>"><?php _e('Authors', 'aws-oruw') ?></label> 
     209    <br /> 
     210     
     211    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_oconts')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_oconts')) ?>"<?php checked($instance['aws_oruw_oconts']) ?> class="checkbox" type="checkbox" /> 
     212    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_oconts')) ?>"><?php _e('Contributors', 'aws-oruw') ?></label> 
     213    <br /> 
     214     
     215    <input id="<?php print esc_attr($this->get_field_id('aws_oruw_osubs')) ?>" name="<?php print esc_attr($this->get_field_name('aws_oruw_osubs')) ?>"<?php checked($instance['aws_oruw_osubs']) ?> class="checkbox" type="checkbox" /> 
     216    <label for="<?php print esc_attr($this->get_field_id('aws_oruw_osubs')) ?>"><?php _e('Subscribers', 'aws-oruw') ?></label> 
    177217</p> 
    178     <?php 
     218<?php 
    179219        return $instance; 
    180220    } 
    181221     
    182     // Own functions 
    183     /** 
    184      * Checks if the user is logged in by $user_ID 
    185      *  
    186      * @param $user_ID 
    187      * @uses object $wpdb 
    188      * @uses $wpdb->get_var {see @WPDB::get_var} 
    189      * @return boolean 
     222    /** 
     223     * Prints a registered users lists and theyre online status 
     224     *  
     225     * @uses in_array                 {see @in_array} 
     226     * @uses self::get_users_by_roles {see @Awebsome_ORUW::get_users_by_roles} 
     227     * @uses get_user_meta            For retrieving aws-oruw-loggedin value 
     228     * @uses get_author_posts_url     To get the author url post for each user 
     229     * @uses get_avatar               For retrieving user gravatar 
    190230     *  
    191231     * @since 1.0 
    192232     */ 
    193     function check_loggedin_user_by_user_ID( $user_ID ) 
    194     { 
    195         global $wpdb; 
    196          
    197         $sql = "SELECT meta_value FROM $wpdb->usermeta WHERE user_id = $user_ID AND meta_key = 'loggedin'"; 
    198         $query = $wpdb->get_var($sql); 
    199          
    200         return $query === 'true'; 
    201     } 
    202      
    203     /** 
    204      * Prints a registered users lists and theyre online status 
    205      *  
    206      * @uses object $wpdb 
    207      * @uses in_array {see @in_array} 
    208      * @uses $this->get_users_by_roles {see @Awebsome_ORUW::get_users_by_roles} 
    209      * @uses $this->check_loggedin_user_by_user_ID {see @Awebsome_ORUW::check_loggedin_user_by_user_ID} 
    210      * @uses get_author_posts_url To get the author url post for each user 
    211      *  
    212      * @since 1.0 
    213      */ 
    214233    function print_user_list($oroles, $others) 
    215234    { 
    216         global $wpdb; 
    217         $on_class = ' class="aws-oruw-on"'; 
    218         $off_class = ' class="aws-oruw-off"'; 
     235        $roles      = array(); 
     236        $gravatars  = $others['gravatars']; 
     237        $authlinks  = $others['authlinks']; 
     238        $categorize = $others['categorize']; 
     239         
     240        // if any 'show only' role selected, construct an array with the selected roles only 
     241        if( in_array(true, $oroles, true) ) foreach( $oroles as $key => $rol ) ($rol == 1 ? $roles[] .= $key : ''); 
     242        // else construct an array with all the roles 
     243        else foreach( $oroles as $key => $rol ) $roles[] .= $key; 
     244         
     245        $roles_users = self::get_users_by_roles($roles); 
     246         
     247        if( !empty($roles_users) ) 
     248        { 
     249            if( !$categorize ) print '<ul class="aws-oruw uncat">'; 
     250             
     251            foreach( $roles_users as $rol => $users ) 
     252            { 
     253                if( $categorize && !empty($users) ) print '<h4 class="aws-oruw-role">'. $rol .'s</h4><ul class="aws-oruw">'; 
     254                 
     255                foreach( $users as $user ) 
     256                { 
     257                    $onoff         = get_user_meta($user->ID, 'aws-oruw-loggedin', true) ? 'online' : 'offline'; 
     258                    $element_class = get_user_meta($user->ID, 'aws-oruw-loggedin', true) ? 'aws-oruw-on' : 'aws-oruw-off'; 
     259                    $url           = get_author_posts_url($user->ID, $user->user_nicename); 
     260                     
     261                    if( $gravatars ) 
     262                    { 
     263                        if( $authlinks ) print '<li class="gravatar"><a href="'. $url .'" title="'. $user->display_name .'">'. get_avatar($user->ID, '48', '', $user->display_name) .'</a>'; 
     264                        else print '<li class="gravatar">'. get_avatar($user->ID, '48', '', $user->display_name); 
     265                         
     266                        if( $authlinks ) print '<p><a href="'. $url .'" title="'. $user->display_name .'">'. $user->display_name .'</a><br />is <span class="'. $onoff .'">'. $onoff .'</span></p></li>'; 
     267                        else print '<p>'. $user->display_name .'<br />is <span class="'. $onoff .'">'. $onoff .'</span></p></li>'; 
     268                    } 
     269                    else 
     270                    { 
     271                        print '<li class="'. $element_class .'">'; 
     272                         
     273                        if( $authlinks ) print '<p><a href="'. $url .'" title="'. $user->display_name .'">'. $user->display_name .'</a></p></li>'; 
     274                        else print '<p>'. $user->display_name .'</p></li>'; 
     275                    } 
     276                } 
     277                 
     278                if( $categorize ) print '</ul>'; 
     279            } 
     280             
     281            if( !$categorize ) print '</ul>'; 
     282        } 
     283    } 
     284     
     285    /** 
     286     * Prints a registered users lists and theyre online status for the dashboard widget 
     287     *  
     288     * @uses in_array                 {see @in_array} 
     289     * @uses self::get_users_by_roles {see @Awebsome_ORUW::get_users_by_roles} 
     290     * @uses get_user_meta            For retrieving aws-oruw-loggedin value 
     291     * @uses get_author_posts_url     To get the author url post for each user 
     292     * @uses get_avatar               For retrieving user gravatar 
     293     *  
     294     * @since 2.0 
     295     */ 
     296    function print_user_list_for_dashboard($oroles, $others) 
     297    { 
    219298        $roles = array(); 
    220299         
    221         // 'others' filters 
    222         $authlinks  = ($others['authlinks'] === 'on'); 
    223         $categorize = ($others['categorize'] === 'on'); 
    224          
    225         // if any 'show only' role selected 
    226         // construct an array with the selected roles only 
    227         if( in_array('on', $oroles, true) ) foreach( $oroles as $key => $rol ) $rol === 'on' ? $roles[] .= $key : ''; 
    228         // construct an array with all the roles 
     300        // if any 'show only' role selected, construct an array with the selected roles only 
     301        if( in_array(true, $oroles, true) ) foreach( $oroles as $key => $rol ) ($rol == 1 ? $roles[] .= $key : ''); 
     302        // else construct an array with all the roles 
    229303        else foreach( $oroles as $key => $rol ) $roles[] .= $key; 
    230304         
    231         // starts filtering 
    232         // if categorize option checked 
    233         if( $categorize ) 
     305        $roles_users = self::get_users_by_roles($roles); 
     306         
     307        print '<div class="wrap">'; 
     308         
     309        if( !empty($roles_users) ) 
    234310        { 
    235             // iterate roles 
    236             foreach( $roles as $rol ) 
     311            foreach( $roles_users as $rol => $users ) 
    237312            { 
    238                 print '<h4 class="aws-oruw-role">'. $rol .'s</h4>'; 
     313                if( !empty($users) ) print '<ul class="aws-oruw-wrap"><li><h4 class="aws-oruw-role">'. $rol .'s</h4><ul class="aws-oruw">'; 
    239314                 
    240                 // construct a new users list for each role 
    241                 $users = $this->get_users_by_roles($rol); 
     315                foreach( $users as $user ) 
     316                { 
     317                    $onoff         = get_user_meta($user->ID, 'aws-oruw-loggedin', true) ? 'online' : 'offline'; 
     318                    $element_class = get_user_meta($user->ID, 'aws-oruw-loggedin', true) ? 'aws-oruw-on' : 'aws-oruw-off'; 
     319                    $url           = get_author_posts_url($user->ID, $user->user_nicename); 
     320                     
     321                    print '<li class="gravatar"><a href="'. $url .'" title="'. $user->display_name .'">'. get_avatar($user->ID, '48', '', $user->display_name) .'</a>'; 
     322                    print '<p><a href="'. $url .'" title="'. $user->display_name .'">'. $user->display_name .'</a><br />is <span class="'. $onoff .'">'. $onoff .'</span></p></li>'; 
     323                } 
    242324                 
    243                 // if there are users in this role iterate and print them 
    244                 // else don't print nothing (avoiding i18n) 
    245                 if( !empty($users) ) 
    246                 { 
    247                     print '<ul class="aws-oruw">'; 
    248                     foreach( $users as $user ) 
    249                     { 
    250                         $element_class = $this->check_loggedin_user_by_user_ID($user->ID) ? $on_class : $off_class; 
    251                         $url = get_author_posts_url( $user->ID, $user->user_nicename ); 
    252                          
    253                         if( $authlinks ) 
    254                              print '<li'. $element_class .'><a href="'. $url .'" title="'. $user->display_name .'">'. $user->display_name .'</a></li>'; 
    255                         else print '<li'. $element_class .'>'. $user->display_name .'</li>'; 
    256                     } 
    257                     print '</ul>'; 
    258                 } 
     325                if( !empty($users) ) print '</ul></li></ul>'; 
    259326            } 
    260327        } 
    261         else // if categorize option not checked 
    262         { 
    263             // construct a new users list for all role 
    264             $users = $this->get_users_by_roles($roles); 
    265              
    266             // if there are users in this role iterate and print them 
    267             // else don't print nothing (avoiding i18n) 
    268             if( !empty($users) ) 
    269             { 
    270                 print '<ul class="aws-oruw">'; 
    271                 foreach( $users as $user ) 
    272                 { 
    273                     $element_class = $this->check_loggedin_user_by_user_ID($user->ID) ? $on_class : $off_class; 
    274                     $url = get_author_posts_url( $user->ID, $user->user_nicename ); 
    275                      
    276                     if( $authlinks ) 
    277                         print '<li'. $element_class .'><a href="'. $url .'" title="'. $user->display_name .'">'. $user->display_name .'</a></li>'; 
    278                     else print '<li'. $element_class .'>'. $user->display_name .'</li>'; 
    279                 } 
    280                 print '</ul>'; 
    281             } 
    282         } 
    283         // ends filtering 
     328         
     329        print '</div>'; 
    284330    } 
    285331     
     
    287333     * Returns a $users objects array if they're in the $roles param array 
    288334     *  
    289      * @uses object $wpdb 
    290335     * @param array, string $roles 
    291      * @uses is_array {see @is_array} 
    292      * @uses explode {see @explode} 
     336     *  
     337     * @uses is_array   {see @is_array} 
     338     * @uses explode    {see @explode} 
    293339     * @uses array_walk {see @array_walk} 
    294      * @uses count {see @count} 
    295      * @uses $wpdb->get_results {see @WPDB::get_results} 
    296      * @return array $users 
     340     * @uses get_users  For retrieving 
     341     *  
     342     * @return array    Roles and Users 
    297343     *  
    298344     * @since 1.0 
    299345     */ 
    300     function get_users_by_roles( $roles ) {   
    301         global $wpdb; 
    302         $i = 1; 
     346    function get_users_by_roles($roles) 
     347     
     348        $total_users = array(); 
    303349         
    304350        // if $roles is not an array, convert it 
     
    309355        } 
    310356         
    311         // start constructing the query 
    312         // we must INNER JOIN two tables: users and usermeta 
    313         $sql = 'SELECT * FROM '. $wpdb->users .' INNER JOIN '. $wpdb->usermeta .'  
    314                 ON '. $wpdb->users .'.ID = '. $wpdb->usermeta .'.user_id  
    315                 WHERE '. $wpdb->usermeta .'.meta_key = \'wp_capabilities\'  
    316                 AND ( '; 
    317          
    318357        // iterate roles 
    319358        foreach( $roles as $role ) 
    320359        { 
    321             $sql .= $wpdb->usermeta .'.meta_value LIKE \'%"' . $role . '"%\' '; 
    322             if ( $i < count($roles) ) $sql .= ' OR '; // if there are more roles, prepare query 
    323             $i++; 
     360            // get users for this role 
     361            $args_users = array('role' => $role); 
     362            $role_users = get_users($args_users); 
     363             
     364            // add them to the array 
     365            $total_users[$role] = $role_users; 
    324366        } 
    325          
    326         // end constructing the query 
    327         $sql .= ' ) ORDER BY '. $wpdb->users .'.ID ASC'; 
    328          
    329         // query the query (: thx Capt. Obvious! :) 
    330         $users = $wpdb->get_results($sql); 
    331          
    332         return $users; 
    333     } 
    334 } 
    335  
    336 /** 
    337  * Inits the widget 
    338  *  
    339  * @uses register_widget {see @register_widget} 
    340  *  
    341  * @since 1.0 
    342  */ 
    343 function aws_oruw_init() 
    344 { 
    345     register_widget('Awebsome_ORUW'); 
    346 } 
    347  
    348 /** 
    349  * Prints the frontend styles 
    350  *  
    351  * @uses dirname {see @dirname} 
    352  * @uses plugin_basename {see @plugin_basename} 
    353  * @uses WP_PLUGIN_URL {see @WP_PLUGIN_URL} 
    354  * @todo implement image sprites 
    355  *  
    356  * @since 1.0 
    357  */ 
    358 function aws_oruw_print_styles() 
    359 { 
    360     $plugin = dirname(plugin_basename(__FILE__)); 
    361     $url = WP_PLUGIN_URL .'/'. $plugin .'/img/'; 
     367             
     368        return $total_users; 
     369    } 
     370     
     371    /** 
     372     * Sets user status to logged in 
     373     *  
     374     * @param string User login 
     375     *  
     376     * @uses get_user_by      For retrieving user data 
     377     * @uses update_user_meta For updating loggedin state to ONLINE 
     378     * @uses add_user_meta    For adding loggedin state to ONLINE 
     379     *  
     380     * @since 2.0 
     381     */ 
     382    function set_user_logged_in($user) 
     383    { 
     384        $u = get_user_by('login', $user); 
     385         
     386        if( update_user_meta($u->ID, 'aws-oruw-loggedin', true) ) return $user; 
     387        elseif( add_user_meta($u->ID, 'aws-oruw-loggedin', true) ) return $user; 
     388         
     389        return $user; 
     390    } 
     391     
     392    /** 
     393     * Sets user status to logged in 
     394     *  
     395     * @param string User login 
     396     *  
     397     * @uses get_user_by      For retrieving user data 
     398     * @uses update_user_meta For updating loggedin state to OFFLINE 
     399     * @uses add_user_meta    For adding loggedin state to OFFLINE 
     400     *  
     401     * @since 2.0 
     402     */ 
     403    function set_user_logged_out() 
     404    { 
     405        global $current_user; 
     406        get_currentuserinfo(); 
     407         
     408        if( update_user_meta($current_user->ID, 'aws-oruw-loggedin', false) ) return $user; 
     409        elseif( add_user_meta($current_user->ID, 'aws-oruw-loggedin', false) ) return $user; 
     410        else return $user; 
     411    } 
     412     
     413    /** 
     414     * Frontend styles and scripts callback 
     415     *  
     416     * @uses wp_enqueue_style To include the CSS file in the theme 
     417     *  
     418     * @since 2.0 
     419     **/ 
     420    function enqueue_styles_scripts() 
     421    { 
     422        wp_enqueue_style('aws_oruw'); 
     423    } 
     424     
     425    /** 
     426     * Backend styles and scripts callback 
     427     *  
     428     * @uses wp_enqueue_style To include the CSS file in the admin 
     429     *  
     430     * @since 2.0 
     431     **/ 
     432    function enqueue_admin_styles_scripts() 
     433    { 
     434        wp_enqueue_style('aws_oruw_adm'); 
     435    } 
     436     
     437    /** 
     438     * Dashboard widget callback 
     439     *  
     440     * @uses wp_add_dashboard_widget To include the dashboard widget 
     441     *  
     442     * @since 2.0 
     443     **/ 
     444    function add_dashboard_widget() 
     445    { 
     446        wp_add_dashboard_widget('awebsome-oruw', 'A! Online Registered Users', array(&$this, 'dashboard_widget')); 
     447    } 
     448} // Awebsome_ORUW 
     449endif; 
    362450?> 
    363 <style type="text/css"> 
    364     h4.aws-oruw-role { font-weight:bold; margin-top:10px; } 
    365     ul.aws-oruw { margin-top:5px; } 
    366     ul.aws-oruw li:before { content:''; } 
    367     ul.aws-oruw li { list-style-type:none; padding-left:20px; line-height:1.6em; } 
    368     ul.aws-oruw li.aws-oruw-on { background:url(<?php print $url ?>on.png) left center no-repeat !important; } 
    369     ul.aws-oruw li.aws-oruw-off { background:url(<?php print $url ?>off.png) left center no-repeat !important; } 
    370 </style> 
    371 <?php 
    372 } 
    373  
    374 /** 
    375  * Retrieves $user_ID by username (user_login) 
    376  *  
    377  * @param $username 
    378  * @uses object $wpdb 
    379  * @uses $wpdb->get_var {see @WPDB::get_var} 
    380  * @uses $wpdb->prepare {see @WPDB::prepare} 
    381  * @return integer  
    382  *  
    383  * @since 1.0 
    384  */ 
    385 function aws_oruw_get_user_id_by_username( $username ) 
    386 { 
    387     global $wpdb; 
    388     $sql = "SELECT ID FROM $wpdb->users WHERE user_login = '$username'"; 
    389      
    390     return $wpdb->get_var($wpdb->prepare($sql)); 
    391 } 
    392  
    393  
    394 /** 
    395  * Sets user status to logged in 
    396  *  
    397  * @uses object $wpdb 
    398  * @uses aws_oruw_get_user_id_by_username {see @aws_oruw_get_user_id_by_username} 
    399  * @uses $wpdb->get_var {see @WPDB::get_var} 
    400  * @uses $wpdb->prepare {see @WPDB::prepare} 
    401  * @uses $wpdb->query {see @WPDB::query} 
    402  *  
    403  * @since 1.0 
    404  */ 
    405 function aws_oruw_set_user_logged_in( $username ) 
    406 { 
    407     global $wpdb; 
    408      
    409     $user_ID = aws_oruw_get_user_id_by_username($username); 
    410     $presql  = "SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = 'loggedin' AND user_id = $user_ID"; 
    411      
    412     // if cant retrieve a value create one 
    413     if( !$wpdb->get_var($wpdb->prepare($presql)) ) 
    414     { 
    415         $sql = "INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ($user_ID, 'loggedin', 'true')"; 
    416         $wpdb->query($wpdb->prepare($sql)); 
    417     } 
    418     else 
    419     { 
    420         $sql = "UPDATE $wpdb->usermeta SET meta_value = 'true' WHERE user_id = $user_ID AND meta_key = 'loggedin'"; 
    421         $wpdb->query($wpdb->prepare($sql)); 
    422     } 
    423 } 
    424  
    425 /** 
    426  * Sets user status to logged out 
    427  *  
    428  * @uses object $wpdb 
    429  * @uses object $current_user 
    430  * @uses get_current_user_info {see @get_current_user_info} 
    431  * @uses $wpdb->prepare {see @WPDB::prepare} 
    432  * @uses $wpdb->query {see @WPDB::query} 
    433  *  
    434  * @since 1.0 
    435  */ 
    436 function aws_oruw_set_user_logged_out() 
    437 { 
    438     global $wpdb, $current_user; 
    439     get_currentuserinfo(); 
    440      
    441     $sql = "UPDATE $wpdb->usermeta SET meta_value = 'false' WHERE meta_key = 'loggedin' AND user_id =". $current_user->ID; 
    442     $wpdb->query($sql); 
    443 } 
    444  
    445 // Add all action hooks 
    446 add_action('widgets_init',  'aws_oruw_init'); 
    447 add_action('wp_login',      'aws_oruw_set_user_logged_in'); 
    448 add_action('wp_logout',     'aws_oruw_set_user_logged_out'); 
    449 add_action('wp_head',       'aws_oruw_print_styles'); 
    450  
    451 ?> 
  • awebsome-online-registered-users-widget/trunk/readme.txt

    r339726 r570068  
    11=== Awebsome! Online Registered Users Widget === 
    2 Contributors: awebsome, raulillana 
     2Contributors: raulillana 
    33Tags: awebsome, online, registered, users, roles, categorization, widget 
    4 Requires at least: 2.6 
    5 Tested up to: 3.1 
     4Requires at least: 3.0 
     5Tested up to: 3.4.1 
    66Stable tag: trunk 
    77License: GPLv2 
    88Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=G442YSKBRKTJ2 
    99 
    10 Adds a new Widget in your admin panel to show a list of online/offline registered users by some display options. 
     10Shows your online/offline registered users by some display options. 
    1111 
    1212== Description == 
    1313 
    14 Adds a new Widget in your admin panel to show a list of online/offline registered users by some display options. 
     14Adds a new Widget in your Dashboard and your Theme to show a list of online/offline registered users by some display options. 
    1515 
    1616= Features = 
    1717 
    18 * Show only selected roles users (none and all are the same thing) 
     18* Show only selected roles users (none and all are the same thing, empty are not displayed) 
    1919* Categorize the view per roles (prints role title and a list of it's users) 
    2020* Show author links (prints the user_nicename as a link to each users author page) 
     21* Show author gravatars (new design format!) 
     22* Dashboard widget! 
    2123 
    2224== Installation == 
     
    2527 
    26281. Upload and activate! 
    27 2. Include the widget in your template and configure the options. 
    28 3. Enjoy! 
     291. Include the widget in your template and configure the options. 
     301. Enjoy! 
    2931 
    3032== Frequently Asked Questions == 
    3133 
     34= How can I get rid of the dashboard widget? = 
     35Look in the Screen Options tab in your admin bar. 
     36 
    3237= How can I get rid of the widget title? = 
    33  
    3438Just leave it blank. 
    3539 
    3640= How can I change styles? = 
    37  
    38 Just override them in your theme css file. 
     41Just override 'em in your theme css file. 
    3942 
    4043= I got lost... = 
    41  
    4244Get sure your theme supports widgets. :) 
    4345 
    4446== Screenshots == 
    4547 
    46 1. Frontend view with categorize option enabled. 
    47 2. Widget settings detail. 
     481. Show gravatars, show links, show categorization 
     492. No gravatars, no links, no categorization 
     503. Show gravatars, no links, no categorization 
     514. Show gravatars, no links, show categorization 
     525. Show gravatars, show links, no categorization 
     536. No gravatars, show links, no categorization 
     547. No gravatars, no links, show categorization 
     558. No gravatar, show links, show categorization 
     569. Dashboard widget 
    4857 
    4958== Changelog == 
     59 
     60= 2.0 = 
     61 
     62* PHP5 required 
     63* Revamped code using APIs 
     64* Fixed bugs 
     65* Deprecated all SQL messy code 
     66* Increased performance 
     67* Added gravatar support 
     68* Added new screenshots 
     69* Added dashboard widget 
    5070 
    5171= 1.1 = 
     
    6383= 1.1 = 
    6484 
    65 Improvements done. 
    66  
    67 == ToDo == 
    68  
    69 * image sprites 
     85Improvements done. Update required! 
Note: See TracChangeset for help on using the changeset viewer.