Make WordPress Core

Changeset 4372


Ignore:
Timestamp:
10/11/2006 09:18:54 AM (20 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.