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"; } } ?> @YEMblog Twitter Updates for 2011-02-19 | YEMblog
    • Also @dumbfatguy and head to @ohkeepahblog for setlist tweets #trey #
    • For updates from tonight's Trey Anastasio Band show in Portland, follow @ericwyman @deuce2_420 @lucyfitzgerald and @DividedSky1976 #phish #
    • And thanks for all of the retweets and love from some tweeps and writers I respect the hell out of! #
    • Major love and props to @DaveOatHT for all of his help, guidance and excellent questions during Trey Week #followotrane #
    • Hidden Track Interview – Trey Anastasio, Part Two http://bit.ly/ee6CZV #phish #trey #
    • I saw moe. at the Orpheum in Boston that night instead #facepalm #
    • Taper Scott Bernstein finally has put his Jennifer Hartswick Band w/ Trey '03 tape into circulation http://bit.ly/fZ5zgj [via @GuyForgetOPT] #
    • Here's process pics of tonight's TAB poster via @NateDuval http://twitpic.com/413wet http://twitpic.com/413x1w #
    • Hidden Track's Trey Interview, Part 2 coming around 1:30PM. Find out why Trey's jealous of Fish, why he loves Ray P. and much more #phish #
    • AMEN RT: @originalwyllys it certainly is amazing we didn't lose anyone of them in the dark years. here's to a happy and healthy The Phish #
    • @ericwyman Jeff Sipe is no joke. I love to hate on 70 Volt with everyone else, but there's plenty of enjoyable music to be found in '05-'06 #
    • Fully agreed RT: @neddyo I think more to do w/ fact that we've loved & lost, so are determined to savor every moment;tech now lets us do so #
    • For updates from tonight's Trey Anastasio Band show in Portland, follow @ericwyman @deuce2_420 @lucyfitzgerald and @DividedSky1976 #phish #
    • Well said @alliedise #
    • Thanks to every writer, Tweeter and fan who has contributed making this a great time to be a #phish fan. Oh, and the band is pretty good too #
    • Then, there's aggregation portals including PhishTwit.com, YEMblog.com and OhKeePahBlog.com keeping tabs on the action [ctd.] #
    • You have @Phish.net unveiling amazing new content every day with members of the team like @bizarchive & @cdirksen on Twitter [ctd.] #
    • Twibe members like @ericwyman @phanart @phortin @originalwyllys and @jiggslikesphish stoking the #phish talk fires on Twitter [ctd.] #
    • You have sites like Phish Thoughts, Dog Gone Blog & Online Phish Tour presenting thought-provoking essays on the band nearly every day[ctd.] #
    • #soapboxtime Is it just me or are we going through a "Golden Age" of Phish discussion on the web? [ctd.] #
    • Okay, so I'm apologizing in advance for this, instead of doing a Follow Friday, I'm going to reel off six tweets in rapid succession #

    1 Comment so far      Post a Comment

    1. 7/28/98 Phish Bonner Springs sickest Moma Dance EVER! Especially on tape.. Talk about an ON Fire Show. Emotional Rescue opener. Holy Mother!! Whole show..I think it tops Vegas ’98. Get your tapes out!


    Post a Comment

    You must be logged in to post a comment.