Changeset 11943
- Timestamp:
- 09/17/2009 08:17:33 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/includes/schema.php
r11883 r11943 54 54 PRIMARY KEY (object_id,term_taxonomy_id), 55 55 KEY term_taxonomy_id (term_taxonomy_id) 56 ) $charset_collate; 57 CREATE TABLE $wpdb->commentmeta ( 58 meta_id bigint(20) unsigned NOT NULL auto_increment, 59 comment_id bigint(20) unsigned NOT NULL default '0', 60 meta_key varchar(255) default NULL, 61 meta_value longtext, 62 PRIMARY KEY (meta_id), 63 KEY post_id (comment_id), 64 KEY meta_key (meta_key) 56 65 ) $charset_collate; 57 66 CREATE TABLE $wpdb->comments ( -
trunk/wp-includes/comment.php
r11930 r11943 362 362 } 363 363 364 // 365 // Comment meta functions 366 // 367 368 /** 369 * Add meta data field to a comment. 370 * 371 * Post meta data is called "Custom Fields" on the Administration Panels. 372 * 373 * @since 2.9 374 * @uses add_metadata 375 * @link http://codex.wordpress.org/Function_Reference/add_comment_meta 376 * 377 * @param int $comment_id Post ID. 378 * @param string $key Metadata name. 379 * @param mixed $value Metadata value. 380 * @param bool $unique Optional, default is false. Whether the same key should not be added. 381 * @return bool False for failure. True for success. 382 */ 383 function add_comment_meta($comment_id, $meta_key, $meta_value, $unique = false) { 384 return add_metadata('comment', $comment_id, $meta_key, $meta_value, $unique); 385 } 386 387 /** 388 * Remove metadata matching criteria from a comment. 389 * 390 * You can match based on the key, or key and value. Removing based on key and 391 * value, will keep from removing duplicate metadata with the same key. It also 392 * allows removing all metadata matching key, if needed. 393 * 394 * @since 2.9 395 * @uses delete_metadata 396 * @link http://codex.wordpress.org/Function_Reference/delete_comment_meta 397 * 398 * @param int $comment_id comment ID 399 * @param string $meta_key Metadata name. 400 * @param mixed $meta_value Optional. Metadata value. 401 * @return bool False for failure. True for success. 402 */ 403 function delete_comment_meta($comment_id, $meta_key, $meta_value = '') { 404 return delete_metadata('comment', $comment_id, $meta_key, $meta_value); 405 } 406 407 /** 408 * Retrieve comment meta field for a comment. 409 * 410 * @since 2.9 411 * @uses get_metadata 412 * @link http://codex.wordpress.org/Function_Reference/get_comment_meta 413 * 414 * @param int $comment_id Post ID. 415 * @param string $key The meta key to retrieve. 416 * @param bool $single Whether to return a single value. 417 * @return mixed Will be an array if $single is false. Will be value of meta data field if $single 418 * is true. 419 */ 420 function get_comment_meta($comment_id, $key, $single = false) { 421 return get_metadata('comment', $comment_id, $key, $single); 422 } 423 424 /** 425 * Update comment meta field based on comment ID. 426 * 427 * Use the $prev_value parameter to differentiate between meta fields with the 428 * same key and comment ID. 429 * 430 * If the meta field for the comment does not exist, it will be added. 431 * 432 * @since 2.9 433 * @uses update_metadata 434 * @link http://codex.wordpress.org/Function_Reference/update_comment_meta 435 * 436 * @param int $comment_id Post ID. 437 * @param string $key Metadata key. 438 * @param mixed $value Metadata value. 439 * @param mixed $prev_value Optional. Previous value to check before removing. 440 * @return bool False on failure, true if success. 441 */ 442 function update_comment_meta($comment_id, $meta_key, $meta_value, $prev_value = '') { 443 return update_metadata('comment', $comment_id, $meta_key, $meta_value, $prev_value); 444 } 445 364 446 /** 365 447 * Sanitizes the cookies sent to the user already. -
trunk/wp-includes/post.php
r11930 r11943 512 512 */ 513 513 function add_post_meta($post_id, $meta_key, $meta_value, $unique = false) { 514 if ( !$meta_key )515 return false;516 517 global $wpdb;518 519 514 // make sure meta is added to the post, not a revision 520 515 if ( $the_post = wp_is_post_revision($post_id) ) 521 516 $post_id = $the_post; 522 517 523 // expected_slashed ($meta_key) 524 $meta_key = stripslashes($meta_key); 525 526 if ( $unique && $wpdb->get_var( $wpdb->prepare( "SELECT meta_key FROM $wpdb->postmeta WHERE meta_key = %s AND post_id = %d", $meta_key, $post_id ) ) ) 527 return false; 528 529 $meta_value = maybe_serialize( stripslashes_deep($meta_value) ); 530 531 $wpdb->insert( $wpdb->postmeta, compact( 'post_id', 'meta_key', 'meta_value' ) ); 532 533 wp_cache_delete($post_id, 'post_meta'); 534 535 do_action( 'added_post_meta', $wpdb->insert_id, $post_id, $meta_key, $meta_value ); 536 537 return true; 518 return add_metadata('post', $post_id, $meta_key, $meta_value, $unique); 538 519 } 539 520 … … 555 536 */ 556 537 function delete_post_meta($post_id, $meta_key, $meta_value = '') { 557 global $wpdb;558 559 538 // make sure meta is added to the post, not a revision 560 539 if ( $the_post = wp_is_post_revision($post_id) ) 561 540 $post_id = $the_post; 562 541 563 // expected_slashed ($meta_key, $meta_value) 564 $meta_key = stripslashes( $meta_key ); 565 $meta_value = maybe_serialize( stripslashes_deep($meta_value) ); 566 567 if ( !$meta_key ) 568 return false; 569 570 if ( empty( $meta_value ) ) 571 $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $meta_key ) ); 572 else 573 $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s AND meta_value = %s", $post_id, $meta_key, $meta_value ) ); 574 575 if ( !$meta_id ) 576 return false; 577 578 do_action( 'delete_post_meta', $meta_id, $post_id, $meta_key, $meta_value ); 579 580 if ( empty( $meta_value ) ) 581 $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $meta_key ) ); 582 else 583 $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s AND meta_value = %s", $post_id, $meta_key, $meta_value ) ); 584 585 wp_cache_delete($post_id, 'post_meta'); 586 587 do_action( 'deleted_post_meta', $meta_id, $post_id, $meta_key, $meta_value ); 588 589 return true; 542 return delete_metadata('post', $post_id, $meta_key, $meta_value); 590 543 } 591 544 … … 604 557 */ 605 558 function get_post_meta($post_id, $key, $single = false) { 606 if ( !$key ) 607 return ''; 608 609 $post_id = (int) $post_id; 610 611 $meta_cache = wp_cache_get($post_id, 'post_meta'); 612 613 if ( !$meta_cache ) { 614 update_postmeta_cache($post_id); 615 $meta_cache = wp_cache_get($post_id, 'post_meta'); 616 } 617 618 if ( isset($meta_cache[$key]) ) { 619 if ( $single ) { 620 return maybe_unserialize( $meta_cache[$key][0] ); 621 } else { 622 return array_map('maybe_unserialize', $meta_cache[$key]); 623 } 624 } 625 626 return ''; 559 return get_metadata('post', $post_id, $key, $single); 627 560 } 628 561 … … 646 579 */ 647 580 function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '') { 648 global $wpdb;649 650 581 // make sure meta is added to the post, not a revision 651 582 if ( $the_post = wp_is_post_revision($post_id) ) 652 583 $post_id = $the_post; 653 584 654 // expected_slashed ($meta_key) 655 $meta_key = stripslashes($meta_key); 656 657 if ( !$meta_key ) 658 return false; 659 660 $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = %s AND post_id = %d", $meta_key, $post_id ) ); 661 if ( ! $meta_id ) 662 return add_post_meta($post_id, $meta_key, $meta_value); 663 664 $meta_value = maybe_serialize( stripslashes_deep($meta_value) ); 665 666 $data = compact( 'meta_value' ); 667 $where = compact( 'meta_key', 'post_id' ); 668 669 if ( !empty( $prev_value ) ) { 670 $prev_value = maybe_serialize($prev_value); 671 $where['meta_value'] = $prev_value; 672 } 673 674 do_action( 'update_post_meta', $meta_id, $post_id, $meta_key, $meta_value ); 675 676 $wpdb->update( $wpdb->postmeta, $data, $where ); 677 wp_cache_delete($post_id, 'post_meta'); 678 679 do_action( 'updated_post_meta', $meta_id, $post_id, $meta_key, $meta_value ); 680 681 return true; 585 return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value); 682 586 } 683 587 … … 3305 3209 */ 3306 3210 function update_postmeta_cache($post_ids) { 3307 global $wpdb; 3308 3309 if ( empty( $post_ids ) ) 3310 return false; 3311 3312 if ( !is_array($post_ids) ) { 3313 $post_ids = preg_replace('|[^0-9,]|', '', $post_ids); 3314 $post_ids = explode(',', $post_ids); 3315 } 3316 3317 $post_ids = array_map('intval', $post_ids); 3318 3319 $ids = array(); 3320 foreach ( (array) $post_ids as $id ) { 3321 if ( false === wp_cache_get($id, 'post_meta') ) 3322 $ids[] = $id; 3323 } 3324 3325 if ( empty( $ids ) ) 3326 return false; 3327 3328 // Get post-meta info 3329 $id_list = join(',', $ids); 3330 $cache = array(); 3331 if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id IN ($id_list)", ARRAY_A) ) { 3332 foreach ( (array) $meta_list as $metarow) { 3333 $mpid = (int) $metarow['post_id']; 3334 $mkey = $metarow['meta_key']; 3335 $mval = $metarow['meta_value']; 3336 3337 // Force subkeys to be array type: 3338 if ( !isset($cache[$mpid]) || !is_array($cache[$mpid]) ) 3339 $cache[$mpid] = array(); 3340 if ( !isset($cache[$mpid][$mkey]) || !is_array($cache[$mpid][$mkey]) ) 3341 $cache[$mpid][$mkey] = array(); 3342 3343 // Add a value to the current pid/key: 3344 $cache[$mpid][$mkey][] = $mval; 3345 } 3346 } 3347 3348 foreach ( (array) $ids as $id ) { 3349 if ( ! isset($cache[$id]) ) 3350 $cache[$id] = array(); 3351 } 3352 3353 foreach ( (array) array_keys($cache) as $post) 3354 wp_cache_set($post, $cache[$post], 'post_meta'); 3355 3356 return $cache; 3211 return update_meta_cache('post', $post_ids); 3357 3212 } 3358 3213 -
trunk/wp-includes/version.php
r11883 r11943 16 16 * @global int $wp_db_version 17 17 */ 18 $wp_db_version = 11 557;18 $wp_db_version = 11943; 19 19 20 20 /** -
trunk/wp-includes/wp-db.php
r11930 r11943 210 210 211 211 /** 212 * WordPress Comment Metadata table 213 * 214 * @since 2.9 215 * @access public 216 * @var string 217 */ 218 var $commentmeta; 219 220 /** 212 221 * WordPress User Metadata table 213 222 * … … 253 262 */ 254 263 var $tables = array('users', 'usermeta', 'posts', 'categories', 'post2cat', 'comments', 'links', 'link2cat', 'options', 255 'postmeta', 'terms', 'term_taxonomy', 'term_relationships' );264 'postmeta', 'terms', 'term_taxonomy', 'term_relationships', 'commentmeta'); 256 265 257 266 /** -
trunk/wp-settings.php
r11820 r11943 333 333 require (ABSPATH . WPINC . '/theme.php'); 334 334 require (ABSPATH . WPINC . '/user.php'); 335 require (ABSPATH . WPINC . '/meta.php'); 335 336 require (ABSPATH . WPINC . '/general-template.php'); 336 337 require (ABSPATH . WPINC . '/link-template.php');
Note: See TracChangeset
for help on using the changeset viewer.