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 " [...]";
Classic TAB | YEMblog - Page 2
Trey Anastasio and TAB, Ben Harper and Relentless7, Ray LaMontagne, The Funky Meters and The Flaming Lips are among the latest additions to the 2010 Hangout Beach, Music and Arts Festival. These artists join a lineup that already features Zac Brown Band, John Legend, The Black Crowes, Alison Krauss and Union Station Featuring Jerry Douglas, Gov’t Mule, Girl Talk, Guster, Brett Dennen and Keller Williams. As previously reported, the “first ever large-scale music festival on the beach” will take place in Gulf Shores, AL from May 14-16.
As Trey Anastasio and Classic TAB move on from the Northeast leg of their tour onto the Midwest and South, they have left a trail of happy faces in their path. The “anything can happen at anytime” M.O. that Phish lives and dies with is nowhere to be found on TAB Tour, alleviating all the pressure that comes with Phish shows for Trey Anastasio. Big Red and his bandmates are clearly having fun and the happiness is contagious.
What a delightful difference the addition of a horn section can make to a band. The Classic Trey Anastasio Band (TAB), a side project for the Phish guitarist, returned to the Oakdale Theatre in Wallingford Saturday night. When the quartet — sans the horns — last performed at the venue in October 2008, it was an uninspired, mellow affair. As a septet, the performance was rhythmic, funky and full of energy.
Just across the street from Fenway Park, where Trey and Phish kicked off a long-anticipated summer tour last year, Trey and Classic TAB got down to business at Boston’s House of Blues. Coming on a little after 8:30 PM, Trey and company kicked off with the newly-arranged Shine. The brass intro foreshadowed what would be the defining element of the night, TAB’s featured three-piece horn section. The lighting went perfectly with the lyrics, with blazing yellows and whites flooding the room as Trey and the audience echoed the chorus. A bouncy and funky Cayman Review followed, with Trey bouncing up and jumping around, pointing to various fans in the audience.
These horn players have often laid back at the beginning of groovier songs (e.g. “Sand,”and “Jibboo”), allowing the four-piece to chug away, while Trey leads the troops out with his six-string wizardry. Gradually they have oozed into these jams, first providing sonic backdrops, and then engaging Trey and Ray in more earnest improvisation.
Overall, it was clear the band had put in a lot of practice for the opener. It was also evident that they were having a good time. I’m not sure I would have enjoyed the show as much if it wasn’t for the small venue. The last time I saw TAB was in a basketball arena with the horns and it just didn’t have the same vibe. I hope he can continue to play small clubs and theaters so all fans can experience the band up close. If you have a chance to see TAB on this tour, I encourage you to check it out. You won’t be disappointed.
The second song that Trey and The Dude wrote over sushi blossomed in the encore as a gorgeous piece that virtually oozes the soul of Phish. With stunning melodies, vocal harmonies, and an overall transcendent feel, “Show of Life” will be an amazing addition to the Phish catalog, and I’d be shocked if it wound up anywhere else. In this version, Trey’s dripping solo blends with a warm canvas of horns, providing a cathartic preview of what could be a summertime anthem. With the embellishment of Phish, this song could become modern classic.