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 " [...]";
Festival 8 | YEMblog
On the other hand, many people have complained about song selection, camera work, editing, and the such. Really?? I have one question to these purveyors of negativity who complain that a Phish 3D movie wasn’t worthy of cinematic greatness – “Can you still have fun?”
But it is Phish, the mightiest active jam band of all, who inspired some intriguing changes at Coachella after the band performed multiple sets at the Empire Polo Club over three consecutive days and nights last Halloween weekend.
As we first reported in October, Phish’s Festival 8 was filmed in 3D for a theatrical release and we finally have the details on just when we can catch Phish 3D. The film will run in theaters nationwide for one week starting on Friday, April 30. The movie will run just over two hours in total.
Earlier today a page appeared on Ticketmaster that seems to finally confirm some great news: a theatrical release of a new Phish concert film.
Assuming the word on the street is correct, this will be none other than Phish Festival 8 in 3D, which has been rumored since the run-up to Festival 8 and now has a rumored release date of some time in May of this year.
The goal of “Save the Date” was reveal where the long awaited next Phish Festival would be held – the first since the band disbanded back in ‘04. This was done by presenting users with an open map of the US and over time remove states not in the running with some kind of bizarre animation. First to go were New Hampshire, Idaho and West Virginia by having what seemed to be some kind of national cardiac arrest and they expired. Many more were to follow with strange eliminations such as getting blown off the map by God himself (image at top) to being flipped to death by a squid-headed Vanna White.
Although completely unaware to know the machinations behind the work application process, I felt rejected and ignored by having signed up to (hopefully) work in VIP, and instead getting sent to haul ice. My overweening sense of magical thinking had me hoping I’d be plucked from among the crop of recruits, and brought in to witness and add to the vibe.
Now that we’ve had a few weeks to look at all of the photos from Phish’s Festival 8, we’ve put together our list of the best costumes at the event. It was a difficult decision as there were dozens of amazing ideas from multiple Festival 8 basketball teams to various Angry Mobs of Joggers to Pocahontas, but we whittled down the contenders to a list of ten.
AEG claims to have the largest library of 3D music concert content, which, in addition to Matthews, includes a number of leading artists currently in negotiation with the producer. It has already been reported that AEG filmed several 3D live sets of Phish from Festival 8 in Indio, Calif., in late October. According to Rubey, the company plans to roll out “best of” edition from Lollapalooza and Austin City Limits as followups to the Matthews feature in 2010.
With no traffic, consistent blue skies, palm trees and paradise perfect weather, the scene was something out of a Brian Wilson-meets-Jimmy Buffet odyssey. And get this, day parkers could actually leave the grounds between sets and grab cold beer at a local Coachella valley convenience store or even plant our ass at a sit-down restaurant – try doing that in Limestone, Maine.