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.

git-svn-id: https://develop.svn.wordpress.org/trunk@2702 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Matt Mullenweg
2005-07-09 01:27:46 +00:00
parent 5bd6027fbd
commit 810e0018f4
14 changed files with 167 additions and 106 deletions

View File

@@ -13,12 +13,13 @@ function get_others_drafts( $user_id ) {
$user = get_userdata( $user_id );
$level_key = $wpdb->prefix . 'user_level';
if ( 1 < $user->user_level ) {
$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");
if( is_array( $editable ) == false )
$editable = get_editable_user_ids( $user_id );
if( !$editable ) {
$other_drafts = '';
else {
} else {
$editable = join(',', $editable);
$other_drafts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'draft' AND post_author IN ($editable) ");
$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' ");
}
} else {
$other_drafts = false;
@@ -26,4 +27,64 @@ function get_others_drafts( $user_id ) {
return apply_filters('get_others_drafts', $other_drafts);
}
function get_editable_authors( $user_id ) {
global $wpdb;
$user = get_userdata( $user_id );
$level_key = $wpdb->prefix . 'user_level';
if ( 7 > $user->user_level ) // TODO: ROLE SYSTEM
return false;
$editable = get_editable_user_ids( $user_id );
if( !$editable )
return false;
else {
$editable = join(',', $editable);
$authors = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($editable)" );
}
return apply_filters('get_editable_authors', $authors);
}
function get_editable_user_ids( $user_id, $exclude_zeros = true ) {
global $wpdb;
$user = get_userdata( $user_id );
$level_key = $wpdb->prefix . 'user_level';
$query = "SELECT * FROM $wpdb->usermeta WHERE meta_key = '$level_key'";
if ( $exclude_zeros )
$query .= " AND meta_value != '0'";
$possible = $wpdb->get_results( $query );
if ( !$possible )
return false;
$user_ids = array();
foreach ( $possible as $mark )
if ( intval($mark->meta_value) <= $user->user_level )
$user_ids[] = $mark->user_id;
if ( empty( $user_ids ) )
return false;
return $user_ids;
}
function get_author_user_ids() {
global $wpdb;
$level_key = $wpdb->prefix . 'user_level';
$query = "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '$level_key' AND meta_value != '0'";
return $wpdb->get_col( $query );
}
function get_nonauthor_user_ids() {
global $wpdb;
$level_key = $wpdb->prefix . 'user_level';
$query = "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '$level_key' AND meta_value = '0'";
return $wpdb->get_col( $query );
}
?>