Make WordPress Core

Changeset 4372


Ignore:
Timestamp:
10/11/2006 09:18:54 AM (18 years ago)
Author:
markjaquith
Message:

Post meta caching fix by mdawaffe. fixes #3229

Location:
trunk/wp-includes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/functions.php

    r4359 r4372  
    543543        $post_meta_cache = array();
    544544        foreach ($meta_list as $metarow) {
    545             $mpid = $metarow['post_id'];
     545            $mpid = (int) $metarow['post_id'];
    546546            $mkey = $metarow['meta_key'];
    547547            $mval = $metarow['meta_value'];
  • trunk/wp-includes/post-template.php

    r4278 r4372  
    212212// this will probably change at some point...
    213213function the_meta() {
    214     global $id, $post_meta_cache;
     214    global $id;
    215215
    216216    if ( $keys = get_post_custom_keys() ) {
  • trunk/wp-includes/post.php

    r4362 r4372  
    222222    global $wpdb, $post_meta_cache;
    223223
     224    $post_id = (int) $post_id;
     225
    224226    if ( $unique ) {
    225         if ( $wpdb->get_var("SELECT meta_key FROM $wpdb->postmeta WHERE meta_key
    226 = '$key' AND post_id = '$post_id'") ) {
     227        if ( $wpdb->get_var("SELECT meta_key FROM $wpdb->postmeta WHERE meta_key = '$key' AND post_id = '$post_id'") ) {
    227228            return false;
    228229        }
     
    235236    $wpdb->query("INSERT INTO $wpdb->postmeta (post_id,meta_key,meta_value) VALUES ('$post_id','$key','$value')");
    236237
    237     $post_meta_cache['$post_id'][$key][] = $original;
     238    $post_meta_cache[$post_id][$key][] = $original;
    238239
    239240    return true;
     
    243244    global $wpdb, $post_meta_cache;
    244245
     246    $post_id = (int) $post_id;
     247
    245248    if ( empty($value) ) {
    246         $meta_id = $wpdb->get_var("SELECT meta_id FROM $wpdb->postmeta WHERE
    247 post_id = '$post_id' AND meta_key = '$key'");
    248     } else {
    249         $meta_id = $wpdb->get_var("SELECT meta_id FROM $wpdb->postmeta WHERE
    250 post_id = '$post_id' AND meta_key = '$key' AND meta_value = '$value'");
     249        $meta_id = $wpdb->get_var("SELECT meta_id FROM $wpdb->postmeta WHERE post_id = '$post_id' AND meta_key = '$key'");
     250    } else {
     251        $meta_id = $wpdb->get_var("SELECT meta_id FROM $wpdb->postmeta WHERE post_id = '$post_id' AND meta_key = '$key' AND meta_value = '$value'");
    251252    }
    252253
     
    255256
    256257    if ( empty($value) ) {
    257         $wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = '$post_id'
    258 AND meta_key = '$key'");
    259         unset($post_meta_cache['$post_id'][$key]);
    260     } else {
    261         $wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = '$post_id'
    262 AND meta_key = '$key' AND meta_value = '$value'");
    263         $cache_key = $post_meta_cache['$post_id'][$key];
     258        $wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = '$post_id' AND meta_key = '$key'");
     259        unset($post_meta_cache[$post_id][$key]);
     260    } else {
     261        $wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = '$post_id' AND meta_key = '$key' AND meta_value = '$value'");
     262        $cache_key = $post_meta_cache[$post_id][$key];
    264263        if ($cache_key) foreach ( $cache_key as $index => $data )
    265264            if ( $data == $value )
    266                 unset($post_meta_cache['$post_id'][$key][$index]);
    267     }
    268 
    269     unset($post_meta_cache['$post_id'][$key]);
     265                unset($post_meta_cache[$post_id][$key][$index]);
     266    }
     267
     268    unset($post_meta_cache[$post_id][$key]);
    270269
    271270    return true;
     
    274273function get_post_meta($post_id, $key, $single = false) {
    275274    global $wpdb, $post_meta_cache;
     275
     276    $post_id = (int) $post_id;
    276277
    277278    if ( isset($post_meta_cache[$post_id][$key]) ) {
     
    308309    global $wpdb, $post_meta_cache;
    309310
     311    $post_id = (int) $post_id;
     312
    310313    $original_value = $value;
    311314    if ( is_array($value) || is_object($value) )
     
    316319        $prev_value = $wpdb->escape(serialize($prev_value));
    317320
    318     if (! $wpdb->get_var("SELECT meta_key FROM $wpdb->postmeta WHERE meta_key
    319 = '$key' AND post_id = '$post_id'") ) {
     321    if (! $wpdb->get_var("SELECT meta_key FROM $wpdb->postmeta WHERE meta_key = '$key' AND post_id = '$post_id'") ) {
    320322        return false;
    321323    }
    322324
    323325    if ( empty($prev_value) ) {
    324         $wpdb->query("UPDATE $wpdb->postmeta SET meta_value = '$value' WHERE
    325 meta_key = '$key' AND post_id = '$post_id'");
    326         $cache_key = $post_meta_cache['$post_id'][$key];
     326        $wpdb->query("UPDATE $wpdb->postmeta SET meta_value = '$value' WHERE meta_key = '$key' AND post_id = '$post_id'");
     327        $cache_key = $post_meta_cache[$post_id][$key];
    327328        if ( !empty($cache_key) )
    328329            foreach ($cache_key as $index => $data)
    329                 $post_meta_cache['$post_id'][$key][$index] = $original_value;
    330     } else {
    331         $wpdb->query("UPDATE $wpdb->postmeta SET meta_value = '$value' WHERE
    332 meta_key = '$key' AND post_id = '$post_id' AND meta_value = '$prev_value'");
    333         $cache_key = $post_meta_cache['$post_id'][$key];
     330                $post_meta_cache[$post_id][$key][$index] = $original_value;
     331    } else {
     332        $wpdb->query("UPDATE $wpdb->postmeta SET meta_value = '$value' WHERE meta_key = '$key' AND post_id = '$post_id' AND meta_value = '$prev_value'");
     333        $cache_key = $post_meta_cache[$post_id][$key];
    334334        if ( !empty($cache_key) )
    335335            foreach ($cache_key as $index => $data)
    336336                if ( $data == $original_prev )
    337                     $post_meta_cache['$post_id'][$key][$index] = $original_value;
     337                    $post_meta_cache[$post_id][$key][$index] = $original_value;
    338338    }
    339339
     
    347347    if ( ! $post_id )
    348348        $post_id = $id;
     349
     350    $post_id = (int) $post_id;
    349351
    350352    if ( isset($post_meta_cache[$post_id]) )
     
    355357        $post_meta_cache = array();
    356358        foreach ( $meta_list as $metarow ) {
    357             $mpid = $metarow['post_id'];
     359            $mpid = (int) $metarow['post_id'];
    358360            $mkey = $metarow['meta_key'];
    359361            $mval = $metarow['meta_value'];
Note: See TracChangeset for help on using the changeset viewer.