Ticket #13066: get_lastcommentmodified.diff
| File get_lastcommentmodified.diff, 3.5 KB (added by , 15 years ago) |
|---|
-
wp-includes/comment.php
402 402 * @return string Last comment modified date. 403 403 */ 404 404 function get_lastcommentmodified($timezone = 'server') { 405 global $cache_lastcommentmodified, $wpdb ;406 405 global $cache_lastcommentmodified, $wpdb, $wp, $wp_query; 406 407 407 if ( isset($cache_lastcommentmodified[$timezone]) ) 408 408 return $cache_lastcommentmodified[$timezone]; 409 409 410 //If wp_query has not been completely loaded (e.g when it's called in send_headers()), 411 //this has to parse the query, but without fetching anything from the database. 412 if( empty($wp_query->query_vars) ) { 413 $wp->build_query_string(); 414 $wp_query->parse_query($wp->query_vars); 415 } 416 417 $q = $wp_query->query_vars; 418 410 419 $add_seconds_server = date('Z'); 411 420 412 switch ( strtolower($timezone) ) {421 switch ( strtolower($timezone) ) { 413 422 case 'gmt': 414 $ lastcommentmodified = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1");423 $select = 'SELECT comment_date_gmt'; 415 424 break; 416 425 case 'blog': 417 $ lastcommentmodified = $wpdb->get_var("SELECT comment_date FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1");426 $select = 'SELECT comment_date'; 418 427 break; 419 428 case 'server': 420 $lastcommentmodified = $wpdb->get_var($wpdb->prepare("SELECT DATE_ADD(comment_date_gmt, INTERVAL %s SECOND) FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1", $add_seconds_server)); 429 default: 430 $select = $wpdb->prepare('SELECT DATE_ADD(comment_date_gmt, INTERVAL %s SECOND)', $add_seconds_server); 421 431 break; 422 432 } 423 433 434 $join = ''; 435 $needposts = false; 436 $where = "WHERE comment_approved = '1'"; 437 438 $p = ''; 439 if ( '' !== $q['p'] ) 440 $p = $q['p']; 441 442 elseif ( '' !== $q['page_id'] ) 443 $p = $q['page_id']; 444 445 elseif ( '' !== $q['attachment_id'] ) 446 $p = $q['attachment_id']; 447 448 449 $name = ''; 450 if ( '' !== $q['name'] ) 451 $name = $q['name']; 452 453 elseif ( '' !== $q['pagename'] ) 454 $name = $q['pagename']; 455 456 elseif ( '' !== $q['attachment'] ) 457 $name = $q['attachment']; 458 459 460 if ( '' != $p) 461 $where .= " AND comment_post_ID = '$p'"; 462 463 if ( '' != $name) { 464 $needposts = true; 465 $where .= " AND $wpdb->posts.post_name = '$name'"; 466 } 467 468 if ( !empty($q['author']) ) { 469 $needposts = true; 470 $where .= " AND $wpdb->posts.post_author='{$q['author']}'"; 471 } 472 473 if ( '' !== $q['author_name'] ) { 474 $needposts = true; 475 $author = get_user_by('slug', $q['author_name']); 476 if ( $author !== false ) 477 $where .= " AND $wpdb->posts.post_author='$author->ID'"; 478 } 479 480 if ( '' !== $q['cat'] || '' !== $q['category_name'] ) { 481 if ( !empty($q['cat']) ) { 482 $cat = $q['cat']; 483 } else { 484 if ( $term = get_term_by('name', $q['category_name'], 'category') !== false ) 485 $cat = $term->term_taxonomy_id; 486 } 487 488 if ( isset($cat) ) { 489 $join = "INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)"; 490 $where .= " AND $wpdb->term_relationships.term_taxonomy_id IN ($cat)"; 491 492 $needposts = true; 493 } 494 } 495 496 if($needposts == true) 497 $join = "JOIN $wpdb->posts ON ( $wpdb->comments.comment_post_ID = $wpdb->posts.ID )" . $join; 498 499 $lastcommentmodified = $wpdb->get_var("$select FROM $wpdb->comments $join $where ORDER BY comment_date_gmt DESC LIMIT 1"); 424 500 $cache_lastcommentmodified[$timezone] = $lastcommentmodified; 425 501 426 502 return $lastcommentmodified;