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") { global $wpdb; function clamp($min, $max, $val) { return max($min,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. if(!$hide_pingbacks_and_trackbacks) $ping = ""; else $ping = "AND comment_type<>'pingback' AND comment_type<>'trackback'"; $posts = $wpdb->get_results("SELECT comment_post_ID, post_title FROM ($wpdb->comments LEFT JOIN $wpdb->posts ON (comment_post_ID = ID)) WHERE comment_approved = '1' AND $wpdb->posts.post_status='publish' $ping ORDER BY comment_date DESC;"); $seen = array(); $num = 0; if($fade_old) { $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. if(array_key_exists($post->comment_post_ID, $seen)) continue; $seen[$post->comment_post_ID] = true; if($num++ > $num_posts) break; $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."' $ping ORDER BY comment_date DESC LIMIT $num_comments;"); $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); if($usetimesince) $title = " title=\"Last comment was ".time_since($comment->unixdate)." ago\""; else $title = ""; echo $prefix."".stripslashes($post->post_title). "  ".$count."
    \n"; foreach($commenters as $commenter) { if($usetimesince) $title = " title=\"Posted ".time_since($commenter->unixdate)." ago\""; if($fade_old) { $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 ", "; echo "comment_ID."\"$title>".stripslashes($commenter->comment_author).""; } if($count > $num_comments) echo " [...]"; echo "".$postfix."\n"; } } ?> 2011 October 20 | YEMblog

    Daily Archive

    October 20, 2011

    New Releases: Hampton / Winston-Salem ’97 Available For Pre-Order [Amazon.com]

    Charities: Phish Donates 25K – Again! [Mockingbird Foundation]

    For the second year in a row, Phish has donated nearly $25,000 of their proceeds from LivePhishdownloads to the Mockingbird Foundation, the all-volunteer, fan-run nonprofit that provides funding for music education for children. We are extremely grateful for the band’s generosity in continuing to donate a portion of proceeds from those downloads, and look forward to announcing the next round of grants at or around the time of this year’s New Years Eve run of shows at Madison Square Garden

    Trey Anastasio: TAB 10/12/2011 Pigtail [VQ: A, AQ: A+]

    YouTube Preview Image

    Editorials: Pop The TAB and Drink It Up [Hidden Track]

    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.

    Podcasts: Episode 34 – You Snooze, You Lose [Type II Cast]

    This week on the podcast, we are talking about Phish shows that were undersold /skipped / or something similar that ended up being above average. The panel of Scott, Drew and Adam (OPT) bring several examples of these shows throughout the years. After some choice clips that should leave you wanting more, everyone discusses if “You Snooze, You Loose” is even possible in 3.0. Be sure to let us know your thoughts on the future of this phishy phenomenon below.

    Trey Anastasio: TAB 10/13/2011 LivePhish SBD Silver Springs, MD

    Songs: TAB Song History – Dragonfly [Phish.net]

    Record Store Day: White Tape CD and Party Time Vinyl Coming [RSD]

    Songs: TAB Song History- Chapeau Mauvais [Phish.net]

    Gratuitous Mentions: The Tight End Has Taken Center Stage [ESPN.com]

    High School Warm-up Songs: Your columnist attends a lot of high school football games, and if I hear “Spirit in the Sky” or “Edge of Glory” playing during warm-ups one more time, I’m gonna hurl. Here are some tunes for high school warm-up:

    “First Tube” — Phish (Phish? It’s a perfect football warmup track!)

    Bethel: Bethel Pledges to Collect $25,000 Fine [River Reporter]

    • Very happy to see the #phish fan responsible for "The Spreadsheet" @hoydog23 is now on Twitter. Follow Kevin for spreadsheet updates #
    • Me too! w/ shit-eating grin on my face MT @jjflatt: Every time I listen to the #WentGin I'm transported back in time to that fateful night! #
    • #phish #occupymsg RT @hidden_track: Follow @MSGnyc for a "Twitter Tour" of the newly renovated Madison Square Garden #
    • VIDEO: @treyanastasio Pigtail 10/12/2011 Montclair, NJ http://t.co/WVKU1jDy [VQ: A, AQ: A+] #phish #trey #
    • At first I thought that's what it was, but no. RT @unclejuicyjoe: @YEMblog it would be cool if the drives came with 2gb of live Phish on it. #