Make WordPress Core


Ignore:
Timestamp:
07/09/2005 01:27:46 AM (21 years ago)
Author:
matt
Message:

Massive user_level fix. We were still using the user_level field in wp_users in some places, where we should just use the table prefixed usermeta value.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-db.php

    r2701 r2702  
    1414    $level_key = $wpdb->prefix . 'user_level';
    1515    if ( 1 < $user->user_level ) {
    16         $editable = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '$level_key' AND meta_value <= '$user->user_level' AND user_id != $user_id");
    17         if( is_array( $editable ) == false )
     16        $editable = get_editable_user_ids( $user_id );
     17   
     18        if( !$editable ) {
    1819                $other_drafts = '';
    19         else {
     20        } else {
    2021            $editable = join(',', $editable);
    21             $other_drafts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'draft' AND post_author IN ($editable) ");
     22            $other_drafts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'draft' AND post_author IN ($editable) AND post_author != '$user_id' ");
    2223        }
    2324    } else {
     
    2728}
    2829
     30function get_editable_authors( $user_id ) {
     31    global $wpdb;
     32    $user = get_userdata( $user_id );
     33    $level_key = $wpdb->prefix . 'user_level';
     34
     35    if ( 7 > $user->user_level ) // TODO: ROLE SYSTEM
     36        return false;
     37
     38    $editable = get_editable_user_ids( $user_id );
     39
     40    if( !$editable )
     41            return false;
     42    else {
     43        $editable = join(',', $editable);
     44        $authors = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($editable)" );
     45    }
     46
     47    return apply_filters('get_editable_authors', $authors);
     48}
     49
     50function get_editable_user_ids( $user_id, $exclude_zeros = true ) {
     51    global $wpdb;
     52    $user = get_userdata( $user_id );
     53    $level_key = $wpdb->prefix . 'user_level';
     54
     55    $query = "SELECT * FROM $wpdb->usermeta WHERE meta_key = '$level_key'";
     56    if ( $exclude_zeros )
     57        $query .= " AND meta_value != '0'";
     58    $possible = $wpdb->get_results( $query );
     59
     60    if ( !$possible )
     61        return false;   
     62
     63    $user_ids = array();
     64    foreach ( $possible as $mark )
     65        if ( intval($mark->meta_value) <= $user->user_level )
     66            $user_ids[] = $mark->user_id;
     67    if ( empty( $user_ids ) )
     68        return false;
     69    return $user_ids;
     70}
     71
     72function get_author_user_ids() {
     73    global $wpdb;
     74    $level_key = $wpdb->prefix . 'user_level';
     75
     76    $query = "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '$level_key' AND meta_value != '0'";
     77
     78    return $wpdb->get_col( $query );
     79}
     80
     81function get_nonauthor_user_ids() {
     82    global $wpdb;
     83    $level_key = $wpdb->prefix . 'user_level';
     84
     85    $query = "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '$level_key' AND meta_value = '0'";
     86
     87    return $wpdb->get_col( $query );
     88}
     89
    2990?>
Note: See TracChangeset for help on using the changeset viewer.