Plugin Name: Brian's Latest Comments
Plugin URI: http://meidell.dk/archives/category/wordpress/latest-comments/
Description: This shows an overview of the recently active articles and the last people to comment on them. Original idea and code fixes contributed by Michael Heilemann. If you have Dunstan's Time Since installed, this plugin uses it for the title="" attributes on the comments and posts. (For WordPress 1.5)
Author: Brian Meidell
Author URI: http://meidell.dk/
Version 1.5: Now works without LOCK TABLE and CREATE TEMPORARY TABLE priviledges.
Version 1.5.1: Can't remember what I did here
Version 1.5.2: Fixed count select statement to not include spammy comments
Version 1.5.3: Properly excludes track- and pingbacks
Version 1.5.4: Excludes posts that are not published, even if they have comments
Version 1.5.5: Fade old comments, fixed bug that wreaked havoc with Time Since
Version 1.5.6: Bugfix from Jonas Rabbe (http://www.jonas.rabbe.com/) pertaining to timesince
Version 1.5.7: Bugfix so old colors can be darker than new colors (stupid oversight), thanks to http://spiri.dk for spotting it.
Bugfix where single digit hex would cause invalid colors, thanks to http://www.wereldkeuken.be/ for the fix.
Version 1.5.8: Updated to work with WordPress 2.1 alpha by M. Heilemann.
function blc_latest_comments($num_posts = 5, $num_comments = 6, $hide_pingbacks_and_trackbacks = true, $prefix = "
", $postfix = "
", $fade_old = true, $range_in_days = 10, $new_col = "#444444", $old_col = "#cccccc")
function clamp($min, $max, $val)
$usetimesince = function_exists('time_since'); // Work nicely with Dunstan's Time Since plugin (adapted by Michael Heilemann)
// This is compensating for the lack of subqueries in mysql 3.x
// The approach used in previous versions needed the user to
// have database lock and create tmp table priviledges.
// This uses more queries and manual DISTINCT code, but it works with just select privs.
$ping = "";
$ping = "AND comment_type<>'pingback' AND comment_type<>'trackback'";
$posts = $wpdb->get_results("SELECT
FROM ($wpdb->comments LEFT JOIN $wpdb->posts ON (comment_post_ID = ID))
WHERE comment_approved = '1'
ORDER BY comment_date DESC;");
$seen = array();
$num = 0;
$max_time = $range_in_days * 24 * 60 * 60 ;
$r_new = hexdec(substr($new_col, 1, 2));
$r_old = hexdec(substr($old_col, 1, 2));
//$r_min = min($min, $max);
//$r_max = max($min, $max);
$r_range = ($r_old-$r_new);
$g_new = hexdec(substr($new_col, 3, 2));
$g_old = hexdec(substr($old_col, 3, 2));
//$g_min = min($min, $max);
//$g_max = max($min, $max);
$g_range = ($g_old-$g_new);
$b_new = hexdec(substr($new_col, 5, 2));
$b_old = hexdec(substr($old_col, 5, 2));
//$b_min = min($min, $max);
//$b_max = max($min, $max);
$b_range = ($b_old-$b_new);
// print "ranges: $r_range, $g_range, $b_range ";
// print "r: ".(0.5*$r_range+$r_new)." ";
foreach($posts as $post)
// The following 5 lines is a manual DISTINCT and LIMIT,
// since mysql 3.x doesn't allow you to control which way a DISTINCT
// select merges multiple entries.
$seen[$post->comment_post_ID] = true;
if($num++ > $num_posts)
$commenters = $wpdb->get_results("SELECT *, UNIX_TIMESTAMP(comment_date) AS unixdate FROM $wpdb->comments
WHERE comment_approved = '1'
AND comment_post_ID = '".$post->comment_post_ID."'
ORDER BY comment_date DESC
$count = $wpdb->get_var("SELECT COUNT(comment_ID) AS c FROM $wpdb->comments WHERE comment_post_ID = $post->comment_post_ID AND comment_approved = '1' ".$ping);
$i = 0;
$link = get_permalink($post->comment_post_ID);
$title = " title=\"Last comment was ".time_since($comment->unixdate)." ago\"";
$title = "";
echo $prefix."".stripslashes($post->post_title). "".$count." \n";
foreach($commenters as $commenter)
$title = " title=\"Posted ".time_since($commenter->unixdate)." ago\"";
$diff = time() - $commenter->unixdate;
$r = round($diff/$max_time*($r_range))+$r_new;
$r = clamp(min($r_new, $r_old), max($r_new, $r_old), $r);
$g = round($diff/$max_time*($g_range))+$g_new;
$g = clamp(min($g_new, $g_old), max($g_new, $g_old), $g);
$b = round($diff/$max_time*($b_range))+$b_new;
$b = clamp(min($b_new, $b_old), max($b_new, $b_old), $b);
$r_hex = str_pad(dechex($r), 2, '0', STR_PAD_LEFT);
$g_hex = str_pad(dechex($g), 2, '0', STR_PAD_LEFT);
$b_hex = str_pad(dechex($r), 2, '0', STR_PAD_LEFT);
$colstr = " style=\"color: #".$r_hex.$g_hex.$b_hex.";\"";
if($i++ > 0)
echo ", ";
if($count > $num_comments)
echo " [...]";
Portsmouth | YEMblog
After an initial run through the song, the improv that developed quickened with a pace and fury that left my jaw on the floor. While I shudder to think that I can’t make it out of my first comments without making a comparison to Phish, this jam found a space that harkens back to truly great You Enjoy Myself jams. At one point Mike even settled into a groove that some might argue was a direct nod to Phish classic. Sonic vibrations blasting the bodies in the front rows, it was hard to NOT be blown away.
While everyone was waiting for the first night of Phish’s 2-night webcast from Lake Tahoe, the Type II crew got together to recover some missing territory. It’s been a busy summer and somehow we never got the chance to discuss the last five shows of Leg 1. The sticklers for detail that we are we thought it would be unjust to not at least cover our thoughts and favorite clips from Alpharetta, Charlotte, Raleigh and Portsmouth. Over the hour leading up to Tahoe we discussed our thoughts on webcasts, fan expectations and most of all some amazing musical moments. Here’s to a great tour and we’ll be back to cover the newest shows real soon.
Yet the best part of my evening, was looking over at my mom throughout the show and watching her sway back and forth in awe. It brought me back to my first show where I experienced the same feelings as she was this very evening. Prior to this experience, I didn’t think my mom and I could get any closer, since we have had a great mother/daughter relationship. But after the show, we had formed even a closer bond. Finally, she understood. Finally, she knew why this band was so special to me.
Phish punctuated their opening leg of summer with a tour-closing show at nTelos Pavilion that displayed musical dominance from beginning to end. Everything the band touched turned to gold last night, as they greeted the intimate audience with a plethora of four-part conversations in a show whose improvisational creativity and quality song selection never stopped. Finishing tour with a stellar three-night finale, the band left everyone in Portsmouth, Virginia, with a night of top-level playing and outstanding exchanges in a show that flowed beautifully from start to finish.
Rob Landry, 33, of Clearwater, Fla., told me the show had been more than worth the trip. “Seeing their dads come out, you don’t get more special than that,” Landry said. Hearing “Harpua” was particularly great, he said. Landry has been seeing Phish shows since 1995 and over about 60 concerts, he’d never heard the band play that song. “I’ve been chasing that song for years,” he said. “It’s been incredible.”
The first set also included a cover bust out in the form of Tom Waits’ Cold Water. Guitarist Trey Anastasio handled vocals for the tune off 1999’s Mule Variations. Phish hasn’t covered Tom Waits in the past, though Trey did perform House Where Nobody Lives from the same album with David Byrne for the Tibet House benefit at Carnegie Hall in 2000.
If you had then told me that I would loved the show regardless of the glaring lack of exploration, I probably would have chuckled. But that is exactly what happened last night on the waterfront in Portsmouth, Virgina. Phish played an incredibly high-energy show from note one, but rather than a second set of flowing improvisation, the show resembled an intimate summertime recital for those at nTelos Pavilion.
Drowned gave us a peek into what 2010 Phish funk is going to sound like. Since 1998 (for the most part), Phish has left their patented funk on the back burner–after listening to the floor drop out from under us (thanks to Mike again) during Hershey’s Drowned, you could tell that Phish wants to bring back their white boy funk. Not as much funky Trey with his wah pedal style, more like Mike driven nastiness. Mike is obviously playing a much larger role in the jams this year than ever before.