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
+12 -5
View File
@@ -1225,13 +1225,19 @@ function update_category_cache() {
function update_user_cache() {
global $cache_userdata, $wpdb;
$query = apply_filters('user_cache_query', "SELECT * FROM $wpdb->users WHERE user_level > 0");
$level_key = $wpdb->prefix . 'user_level';
$user_ids = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '$level_key'");
$user_ids = join(',', $user_ids);
$query = apply_filters('user_cache_query', "SELECT * FROM $wpdb->users WHERE ID IN ($user_ids)");
if ( $users = $wpdb->get_results( $query ) ) :
foreach ($users as $user) :
$metavalues = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = '$user->ID'");
if ( is_array($metavalues) )
foreach ( $metavalues as $meta )
$user->{$meta->meta_key} = $meta->meta_value;
foreach ( $metavalues as $meta ) {
$user->{$meta->meta_key} = $meta->meta_value;
// We need to set user_level from meta, not row
if ( $wpdb->prefix . 'user_level' == $meta->meta_key )
$user->user_level = $meta->meta_value;
}
$cache_userdata[$user->ID] = $user;
$cache_userdata[$user->user_login] =& $cache_userdata[$user->ID];
@@ -1955,7 +1961,8 @@ function nocache_headers() {
function update_usermeta( $user_id, $meta_key, $meta_value ) {
global $wpdb;
$user_id = (int) $user_id;
if ( !is_numeric( $user_id ) )
return false;
$meta_key = preg_replace('|a-z0-9_|i', '', $meta_key);
$cur = $wpdb->get_row("SELECT * FROM $wpdb->usermeta WHERE user_id = '$user_id' AND meta_key = '$meta_key'");
if ( !$cur ) {