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 " [...]";
Albany | YEMblog
Free, The Wedge, Prince Caspian, BDTNL, Limb By Limb, Stealing Time, Buffalo Bill, Joy, Halley’s, Wading, Black, Valentine, Devil Went Down to Georgia, Money Love and Change, Done Done It, Clint Eastwood, Windora Bug, Birdwatcher, Sand, Drifting, The Way I Feel
The show was certainly unique, interesting and loaded with quirky asides, although nothing especially earth shattering. And that’s just fine; it was a Phish show right in the middle of a Thanksgiving Phish tour, with all the comfort and ease and sense of tradition that that brings.
AC/DC Bag, Maze, Driver, My Mind’s Got a Mind of its Own, Gumbo, Bouncing Around the Room > It’s Ice, Timber (Jerry) > Limb By Limb, Cavern, My Friend, My Friend On Your Way Down, Fluffhead, Tomorrow’s Song, The Squirming Coil, I Been Around
The band was clearly out to prove it can still swing in the rarefied territory of full-band improvisation that is so melodious and rocking it sounds composed. A one-two wallop of “Seven Below” and “Ghost” filled up the first forty-five minutes of the second set with a handful of jams bringing the energy flow between band and audience into high resolution. Spontaneous waves of elated ovation synchronized with a cascading series of peaks led by guitarist Trey Anastasio, with strong assistance here from Page McConnell on keyboards. (Lighting designer Chris Kuroda, an artist at the top of his field, deserves mention as well.)
Phish have become known for performing unexpected and diverse covers in their two decade-plus career, taking on everything from entire albums — like the Rolling Stones’ Exile on Main Street at this year’s Festival 8 — to songs by artists like Talking Heads, the Velvet Underground, Ween and countless more. This past weekend, Phish added another, more contemporary group to their arsenal, performing TV on the Radio’s Dear Science single “Golden Age” for the crowd at Albany, New York’s Times Union Center on November 27th.
Following a fun first set that contained a number of rarities and well-played originals, the band started the second set by jumping into the deep end of the pool – two 20-minute-plus songs that contained more peaks than the Alps. The set started innocently enough with Seven Below. After jamming on the main theme of the tune for a few minutes, drummer Jon Fishman changed the beat he was laying down while the other members of the band went off in different directions as well, leading to a bit of spacey dissonance. I thought the Seven Below jam had just fallen apart and that the quartet were about to end the tune, but I couldn’t have been more wrong.
Best Debut: Golden Age. This ‘TV on the Radio’ cover got all phished up for it’s debut in Albany. A very danceable track w/ potential for huge jams. We all can hope that this stays in the rotation. Honorable Mention: Tomorrow’s Song
What made last night’s show so great were all the curveballs thrown at various points in the show. Whether it was dusting off Jimmy Dale Gilmore’s My Mind’s Got a Mind of Its Own, busting TV on the Radio’s Golden Age to the delight of the indie segment of the fanbase or debuting the reggae-tinged original Tomorrow’s Song; the quartet kept fans guessing all night long.
Completely Phishifying the original, the band absolutely annihilated a brand new shining piece of improv that immediately stood out as one of the best jams of tour. I’ve got to imagine Trey picked this one out of the crowd and brought it to the band to practice and practice and practice, because when they unveiled the piece, it translated brilliantly.
As soon as I heard the opening notes, I tweet’d… Fluffhead of all Fluffheads to save the show. Boy, was I right. The crowd exploded into a collective orgasm. I had to check my pants to make sure I didn’t not leave any semen streaks. I had not seen that much frenzied and kinetic energy at a show since the first night in Hampton. The crowd were patiently wading through the fluff in the first set until Phish stopped driving in cruise control like your grandmother on the freeway and let it rip like a NASCAR driver. They floored the accelerator for the rest of the show and did not let up.
That’s why I travel long distances to see the Phish.
In many ways, though, the band’s first set was just a warm-up for what was to come. The Vermont Quartet kicked things off with the popular Rift track “My Friend, My Friend” and proceeded to debut a cover of the indie rock group TV on the Radio’s “Golden Age” (the soul-funk rocker appears on the band’s 2008 release Dear Science). The song remained faithful to TV on the Radio’s arrangement at first, but quickly moved into a short, funky jam.