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 " [...]";
Trey Anastasio | YEMblog - Page 2
What’s particularly of interest from this new report is than in addition to using members of the current version of TAB, Big Red has enlisted members of the National and Mates of State to add the new sessions. Well Trey wanted to do something “totally out of left-field for him,” and from the sounds of things he’s accomplished that. No word on when we can expect to hear the fruits of this Katis/Anastasio collaboration. For more on Peter Katis, be sure to check out our Tracks of the Trade feature on the producer.
If you were at Trey’s Webster Hall shows in 2006, you heard a string quintet conducted by Don Hart back the guitarist for my favorite of the songs he wrote during the breakup – Goodbye Head. Those Webster Hall takes of the tune rank as the best in this writer’s opinion and showed the potential for a full orchestra version.
One of the most surprising names to appear on the 2008 Newport Folk Festival roster was Phish’s guitarist and primary songwriter, Trey Anastasio. Within the context of Phish, Anastasio concentrated on his electric guitar technique, drawing on rock, funk, country and jazz influences within a highly improvisational context. Following the 1995 death of one of Anastasio’s primary influences, Jerry Garcia, and the subsequent demise of the Grateful Dead, Phish experienced a huge surge in their following. Within a brief time, Phish found themselves the new torchbearers of the jamband scene, with legions of devoted fans following their every move. The increasingly complicated logistics of touring that inevitably followed would eventually take its toll, leading to a two-year hiatus between 2000 and 2002, and finally to the announcement of their breakup in 2004.
In February Phish front man Trey Anastasio will launch his first-ever orchestral tour, which kicks off on February 9 in Atlanta and also includes stops in Pittsburgh (2/14), Denver (2/28) and Los Angeles (3/10). Each performance will be conducted by Scott Dunn and is set to feature “classic Phish songs and solo Anastasio compositions,” according to a press release.
“He’s not big on talk,” said Anastasio in his introduction. “He got us through the event with one single goal — having the greatest impact. Donors underwrote costs, so 100 percent of proceeds went to flood recovery and rebuilding efforts.” And by 100 percent he meant money raised by tickets as well as merch.
To update a story we first reported in September, Phish guitarist/vocalist Trey Anastasio has just entered the studio with acclaimed producer Peter Katis (Interpol, Fanfarlo, Frightened Rabbit) to work on a new solo album. According to Katis, Trey is setting out to do “something totally out of left-field for him.” While it isn’t clear yet whether this album, which is due out next year according to Katis’s management firm, will feature all of his current TAB septet, Natalie Cressman revealed on Twitter that she will be taking part in the sessions.
I was introduced to Amanda Green a few years ago by a mutual friend who thought that we would enjoy writing together, and he was absolutely right. Everything clicked from the very first day. We wrote three or four songs over the course of a month or two, at which point Amanda explained to me that she and her friend Doug Wright had been working on a musical.
Funny how often the best things in the world of Phish and the Trey Anastasio Band, affectionately known as TAB, simply go unnoticed. In chatting this past weekend with Hidden Track Editor extraordinaire, Scott Bernstein, about HT’s 5th Anniversary and the 1st of Postcards From Page Side, we were both scratching our heads on the lack of TAB coverage from this mini-tour that just wrapped up, making this week’s column a no-brainer as to what to cover. I caught one TAB show this tour, on the eve of my 31st Birthday, with a large crew of friends at Montclair, New Jersey’s Wellmont Theatre.