__('A list of calendar contributors linked to their organization websites', AEC_PLUGIN_NAME) ); parent::WP_Widget( false, __('Calendar Contributors', AEC_PLUGIN_NAME), $widget_ops ); } function widget( $args, $instance ) { extract( $args ); $contributors = $this->get_users_by_role( 'calendar_contributor' ); echo $before_widget; echo $before_title . ' (' . sizeof( $contributors ) . ')' . __('Contributors', AEC_PLUGIN_NAME) . $after_title; if ( $contributors ) { echo ''; echo $after_widget; } function get_users_by_role( $roles ) { global $wpdb; if ( ! is_array( $roles ) ) { $roles = explode( ",", $roles ); array_walk( $roles, 'trim' ); } $sql = ' SELECT ID, display_name FROM ' . $wpdb->users . ' INNER JOIN ' . $wpdb->usermeta . ' ON ' . $wpdb->users . '.ID = ' . $wpdb->usermeta . '.user_id WHERE ' . $wpdb->usermeta . '.meta_key = \'' . $wpdb->prefix . 'capabilities\' AND ( '; $i = 1; foreach ( $roles as $role ) { $sql .= ' ' . $wpdb->usermeta . '.meta_value LIKE \'%"' . $role . '"%\' '; if ( $i < count( $roles ) ) $sql .= ' OR '; $i++; } $sql .= ' ) '; $sql .= ' ORDER BY display_name '; $userIDs = $wpdb->get_col( $sql ); return $userIDs; } /** @see WP_Widget::form */ function form() { _e('No options available.', AEC_PLUGIN_NAME); } } ?>