Ticket #2659: comment_meta_002.diff
File comment_meta_002.diff, 12.6 KB (added by , 17 years ago) |
---|
-
wp-includes/version.php
3 3 // This just holds the version number, in a separate file so we can bump it without cluttering the SVN 4 4 5 5 $wp_version = '2.1-alpha1'; 6 $wp_db_version = 367 2;6 $wp_db_version = 3673; 7 7 8 8 ?> 9 No newline at end of file -
wp-includes/functions-post.php
574 574 575 575 $wpdb->query("DELETE FROM $wpdb->posts WHERE ID = $postid"); 576 576 577 // A little extra effort here, but it saves us from having to store post_ids with comment meta 578 $comment_ids = $wpdb->get_col("SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = $postid"); 579 $comment_ids = implode(',', $comment_ids); 580 $wpdb->query("DELETE FROM $wpdb->commentmeta WHERE comment_ID IN ($comment_ids)"); 581 577 582 $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_post_ID = $postid"); 578 583 579 584 $wpdb->query("DELETE FROM $wpdb->post2cat WHERE post_id = $postid"); -
wp-includes/functions.php
428 428 return true; 429 429 } 430 430 431 function setup_meta_vars($type = 'post') { 432 global $wpdb; 433 if ( $type != 'post' && $type != 'comment' ) 434 return false; // Garbage control 435 $return = array(); 436 $return['table'] = $type . 'meta'; 437 $return['table'] = $wpdb->$return['table']; 438 $return['id_col'] = $type . '_id'; 439 $return['cache'] = $type . '_meta_cache'; 440 return $return; 441 } 442 443 function add_comment_meta($comment_id, $key, $value, $unique = false) { 444 return wp_add_meta($comment_id, $key, $value, $unique, 'comment'); 445 } 446 431 447 function add_post_meta($post_id, $key, $value, $unique = false) { 432 global $wpdb, $post_meta_cache; 448 return wp_add_meta($post_id, $key, $value, $unique, 'post'); 449 } 433 450 451 function wp_add_meta($id, $key, $value, $unique = false, $type = 'post') { 452 global $wpdb; 453 454 if ( $vars = setup_meta_vars($type) ) { 455 extract($vars); 456 global $$cache; 457 } else { 458 return false; 459 } 460 434 461 if ( $unique ) { 435 if ( $wpdb->get_var("SELECT meta_key FROM $ wpdb->postmetaWHERE meta_key436 = '$key' AND post_id = '$post_id'") ) {462 if ( $wpdb->get_var("SELECT meta_key FROM $table WHERE meta_key 463 = '$key' AND $id_col = '$id'") ) { 437 464 return false; 438 465 } 439 466 } … … 442 469 if ( is_array($value) || is_object($value) ) 443 470 $value = $wpdb->escape(serialize($value)); 444 471 445 $wpdb->query("INSERT INTO $ wpdb->postmeta (post_id,meta_key,meta_value) VALUES ('$post_id','$key','$value')");472 $wpdb->query("INSERT INTO $table ($id_col,meta_key,meta_value) VALUES ('$id','$key','$value')"); 446 473 447 $ post_meta_cache['$post_id'][$key][] = $original;474 ${$cache}['$id'][$key][] = $original; 448 475 449 476 return true; 450 477 } 451 478 479 function delete_comment_meta($comment_id, $key, $value = '') { 480 return wp_delete_meta($comment_id, $key, $value, 'comment'); 481 } 482 452 483 function delete_post_meta($post_id, $key, $value = '') { 453 global $wpdb, $post_meta_cache; 484 return wp_delete_meta($post_id, $key, $value, 'post'); 485 } 454 486 487 function wp_delete_meta($id, $key, $value = '', $type = 'post') { 488 global $wpdb; 489 490 if ( $vars = setup_meta_vars($type) ) { 491 extract($vars); 492 global $$cache; 493 } else { 494 return false; 495 } 496 455 497 if ( empty($value) ) { 456 $meta_id = $wpdb->get_var("SELECT meta_id FROM $ wpdb->postmetaWHERE457 post_id = '$post_id' AND meta_key = '$key'");498 $meta_id = $wpdb->get_var("SELECT meta_id FROM $table WHERE 499 $id_col = '$id' AND meta_key = '$key'"); 458 500 } else { 459 $meta_id = $wpdb->get_var("SELECT meta_id FROM $ wpdb->postmetaWHERE460 post_id = '$post_id' AND meta_key = '$key' AND meta_value = '$value'");501 $meta_id = $wpdb->get_var("SELECT meta_id FROM $table WHERE 502 $id_col = '$id' AND meta_key = '$key' AND meta_value = '$value'"); 461 503 } 462 504 463 505 if ( !$meta_id ) 464 506 return false; 465 507 466 508 if ( empty($value) ) { 467 $wpdb->query("DELETE FROM $ wpdb->postmeta WHERE post_id = '$post_id'509 $wpdb->query("DELETE FROM $table WHERE $id_col = '$id' 468 510 AND meta_key = '$key'"); 469 unset($ post_meta_cache['$post_id'][$key]);511 unset(${$cache}['$id'][$key]); 470 512 } else { 471 $wpdb->query("DELETE FROM $ wpdb->postmeta WHERE post_id = '$post_id'513 $wpdb->query("DELETE FROM $table WHERE $id_col = '$id' 472 514 AND meta_key = '$key' AND meta_value = '$value'"); 473 $cache_key = $ post_meta_cache['$post_id'][$key];515 $cache_key = ${$cache}['$id'][$key]; 474 516 if ($cache_key) foreach ( $cache_key as $index => $data ) 475 517 if ( $data == $value ) 476 unset($ post_meta_cache['$post_id'][$key][$index]);518 unset(${$cache}['$id'][$key][$index]); 477 519 } 478 520 479 unset($ post_meta_cache['$post_id'][$key]);521 unset(${$cache}['$id'][$key]); 480 522 481 523 return true; 482 524 } 483 525 526 function get_comment_meta($comment_id, $key, $single = false) { 527 return wp_get_meta($comment_id, $key, $single, 'comment'); 528 } 529 484 530 function get_post_meta($post_id, $key, $single = false) { 485 global $wpdb, $post_meta_cache; 531 return wp_get_meta($post_id, $key, $single, 'post'); 532 } 486 533 487 if ( isset($post_meta_cache[$post_id][$key]) ) { 534 function wp_get_meta($id, $key, $single = false, $type = 'post') { 535 global $wpdb; 536 537 if ( $vars = setup_meta_vars($type) ) { 538 extract($vars); 539 global $$cache; 540 } else { 541 return false; 542 } 543 544 if ( isset(${$cache}[$id][$key]) ) { 488 545 if ( $single ) { 489 return maybe_unserialize( $ post_meta_cache[$post_id][$key][0] );546 return maybe_unserialize( ${$cache}[$id][$key][0] ); 490 547 } else { 491 return maybe_unserialize( $ post_meta_cache[$post_id][$key] );548 return maybe_unserialize( ${$cache}[$id][$key] ); 492 549 } 493 550 } 494 551 495 $metalist = $wpdb->get_results("SELECT meta_value FROM $ wpdb->postmeta WHERE post_id = '$post_id' AND meta_key = '$key'", ARRAY_N);552 $metalist = $wpdb->get_results("SELECT meta_value FROM $table WHERE $id_col = '$id' AND meta_key = '$key'", ARRAY_N); 496 553 497 554 $values = array(); 498 555 if ( $metalist ) { … … 514 571 return maybe_unserialize($return); 515 572 } 516 573 574 function update_comment_meta($comment_id, $key, $value, $prev_value = '') { 575 return wp_update_meta($comment_id, $key, $value, $prev_value, 'comment'); 576 } 577 517 578 function update_post_meta($post_id, $key, $value, $prev_value = '') { 518 global $wpdb, $post_meta_cache; 579 return wp_update_meta($post_id, $key, $value, $prev_value, 'post'); 580 } 519 581 582 function wp_update_meta($id, $key, $value, $prev_value = '', $type = 'post') { 583 global $wpdb; 584 585 if ( $vars = setup_meta_vars($type) ) { 586 extract($vars); 587 global $$cache; 588 } else { 589 return false; 590 } 591 520 592 $original_value = $value; 521 593 if ( is_array($value) || is_object($value) ) 522 594 $value = $wpdb->escape(serialize($value)); … … 525 597 if ( is_array($prev_value) || is_object($prev_value) ) 526 598 $prev_value = $wpdb->escape(serialize($prev_value)); 527 599 528 if (! $wpdb->get_var("SELECT meta_key FROM $ wpdb->postmetaWHERE meta_key529 = '$key' AND post_id = '$post_id'") ) {600 if (! $wpdb->get_var("SELECT meta_key FROM $table WHERE meta_key 601 = '$key' AND $id_col = '$id'") ) { 530 602 return false; 531 603 } 532 604 533 605 if ( empty($prev_value) ) { 534 $wpdb->query("UPDATE $ wpdb->postmetaSET meta_value = '$value' WHERE535 meta_key = '$key' AND post_id = '$post_id'");536 $cache_key = $ post_meta_cache['$post_id'][$key];606 $wpdb->query("UPDATE $table SET meta_value = '$value' WHERE 607 meta_key = '$key' AND $id_col = '$id'"); 608 $cache_key = ${$cache}['$id'][$key]; 537 609 if ( !empty($cache_key) ) 538 610 foreach ($cache_key as $index => $data) 539 $ post_meta_cache['$post_id'][$key][$index] = $original_value;611 ${$cache}['$id'][$key][$index] = $original_value; 540 612 } else { 541 $wpdb->query("UPDATE $ wpdb->postmetaSET meta_value = '$value' WHERE542 meta_key = '$key' AND post_id = '$post_id' AND meta_value = '$prev_value'");543 $cache_key = $ post_meta_cache['$post_id'][$key];613 $wpdb->query("UPDATE $table SET meta_value = '$value' WHERE 614 meta_key = '$key' AND $id_col = '$id' AND meta_value = '$prev_value'"); 615 $cache_key = ${$cache}['$id'][$key]; 544 616 if ( !empty($cache_key) ) 545 617 foreach ($cache_key as $index => $data) 546 618 if ( $data == $original_prev ) 547 $ post_meta_cache['$post_id'][$key][$index] = $original_value;619 ${$cache}['$id'][$key][$index] = $original_value; 548 620 } 549 621 550 622 return true; -
wp-includes/comment-functions.php
3 3 // Template functions 4 4 5 5 function comments_template( $file = '/comments.php' ) { 6 global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $ user_login, $user_ID, $user_identity;6 global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $comment_meta_cache, $user_login, $user_ID, $user_identity; 7 7 8 8 if ( is_single() || is_page() || $withcomments ) : 9 9 $req = get_settings('require_name_email'); … … 34 34 $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND ( comment_approved = '1' OR ( comment_author = '$author_db' AND comment_author_email = '$email_db' AND comment_approved = '0' ) ) ORDER BY comment_date"); 35 35 } 36 36 37 // Comment Meta 38 if ( $comments ) { 39 $cid_list = array(); 40 foreach ( $comments as $c ) 41 $cid_list[] = $c->comment_ID; 42 $cid_list = implode(',', $cid_list); 43 44 // Get comment-meta info 45 if ( $meta_list = $wpdb->get_results("SELECT comment_id, meta_key, meta_value FROM $wpdb->commentmeta WHERE comment_id IN($cid_list) ORDER BY comment_id, meta_key", ARRAY_A) ) { 46 // Change from flat structure to hierarchical: 47 $comment_meta_cache = array(); 48 foreach ($meta_list as $metarow) { 49 $mpid = $metarow['comment_id']; 50 $mkey = $metarow['meta_key']; 51 $mval = $metarow['meta_value']; 52 53 // Force subkeys to be array type: 54 if ( !isset($comment_meta_cache[$mpid]) || !is_array($comment_meta_cache[$mpid]) ) 55 $comment_meta_cache[$mpid] = array(); 56 if ( !isset($comment_meta_cache[$mpid]["$mkey"]) || !is_array($comment_meta_cache[$mpid]["$mkey"]) ) 57 $comment_meta_cache[$mpid]["$mkey"] = array(); 58 59 // Add a value to the current pid/key: 60 $comment_meta_cache[$mpid][$mkey][] = $mval; 61 } 62 } 63 } 64 37 65 define('COMMENTS_TEMPLATE', true); 38 66 $include = apply_filters('comments_template', TEMPLATEPATH . $file ); 39 67 if ( file_exists( $include ) ) … … 222 250 if ( ! $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_ID='$comment_id' LIMIT 1") ) 223 251 return false; 224 252 253 $wpdb->query("DELETE FROM $wpdb->commentmeta WHERE comment_id = '$comment_id'"); 254 225 255 $post_id = $comment->comment_post_ID; 226 256 if ( $post_id && $comment->comment_approved == 1 ) 227 257 $wpdb->query( "UPDATE $wpdb->posts SET comment_count = comment_count - 1 WHERE ID = '$post_id'" ); -
wp-content/plugins/wp-db-backup.php
31 31 var $backup_errors = array(); 32 32 var $basename; 33 33 // Simple table name storage 34 var $wp_table_names = array('categories','comments',' link2cat','links','options','post2cat','postmeta','posts','users','usermeta');34 var $wp_table_names = array('categories','comments','commentmeta','link2cat','links','options','post2cat','postmeta','posts','users','usermeta'); 35 35 36 36 function gzip() { 37 37 return function_exists('gzopen'); -
wp-settings.php
77 77 $wpdb->categories = $table_prefix . 'categories'; 78 78 $wpdb->post2cat = $table_prefix . 'post2cat'; 79 79 $wpdb->comments = $table_prefix . 'comments'; 80 $wpdb->commentmeta = $table_prefix . 'commentmeta'; 80 81 $wpdb->link2cat = $table_prefix . 'link2cat'; 81 82 $wpdb->links = $table_prefix . 'links'; 82 83 $wpdb->linkcategories = $table_prefix . 'linkcategories'; -
wp-admin/upgrade-schema.php
14 14 PRIMARY KEY (cat_ID), 15 15 KEY category_nicename (category_nicename) 16 16 ); 17 CREATE TABLE $wpdb->commentmeta ( 18 meta_id bigint(20) NOT NULL auto_increment, 19 comment_id bigint(20) NOT NULL default '0', 20 meta_key varchar(255) default NULL, 21 meta_value longtext, 22 PRIMARY KEY (meta_id), 23 KEY post_id (comment_id), 24 KEY meta_key (meta_key) 25 ); 17 26 CREATE TABLE $wpdb->comments ( 18 27 comment_ID bigint(20) unsigned NOT NULL auto_increment, 19 28 comment_post_ID int(11) NOT NULL default '0',