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-24 | YEMblog
    • End Show #trey #
    • Third Song in Encore = Tuesday #trey #philly #
    • Sand ended the set. Encore: At The Gazebo, Birdwatcher [] Thanks to @ChaseUtleyPuppy and @posterdan for the updates #fullyvetted #
    • Push>TubeTop, NightSpeaks, OohChild, Burlap >Ocelot, Shine, Dark&Down, Mr C., Ether Sunday, Acting Devil, DoneDoneIt [via @ChaseUtleyPuppy] #
    • Philly E: Push > Tube Top, Night Speaks, Ooh Child, Burlap Sack & Pumps > Ocelot, Shine, Dark & Down [via @ChaseUtleyPuppy] #phish #
    • Trey Electric Set in Philly: Push On > Tube Top Wobble, Night Speaks, Ooh Child, Burlaps Sack and Pumps [via @ChaseUtleyPuppy] #phish #
    • It's now my job to vet those using their personal feeds to tweet from solo shows? #
    • For real? RT @dcohen1976 u gave a list alright but the if they are mixing up wedge and mound they shouldn't be on the list #
    • I gave a list of those tweeting from Philly earlier today RT: @peteforgets noticeably absent from tweet feed tonight is @yemblog…. #phish #
    • Photos: Photographer Andy Hill's amazing photos from TAB in Albany http://bit.ly/fe2xBp #phish #trey #
    • Available For Purchase: Trey Anastasio Band @ Albany LIVE PHISH SBD http://bit.ly/e8CHNa #fawesome #phish #
    • Podcast: Phish archivist Kevin Shapiro and the Dead's D. Lemieux offer both band's Philly highlights http://bit.ly/dNmKBc #
    • Here's a pic of @phillyZeek @shapsio and David Lemieux prepping this afternoon's podcast 4 drexel.edu/westphal http://twitpic.com/42y6vo #
    • Be sure to follow @seekingup2 @acboston @posterdan and @slap0259 for reports from tonight's Trey Anastasio Band show in Philly #phish #
    • Today on YEMblog: Summer Tour Dates Analysis, TAB videos (including acoustic It's Ice) and much more http://www.yemblog.com #phish #
    • Video: Trey Anastasio – Meatstick (Acoustic) http://bit.ly/ikm9os Thanks to LazyLightining55! #phish #
    • Billboard's Summer Tour Dates article mentions Jones Beach jumper http://bit.ly/fIwveg #boo #
    • Video: Trey Anastasio Band – Empire State of Mind @ Terminal 5 http://youtu.be/0q1v4Yg1Rro #phish #
    • TAB hits Philadelphia tonight. We know @Slap0259 will be tweeting. Anyone else? #phish #trey #
    • Always interesting to read the more "mainstream" reports about #phish tour announcements, such as 1 from @perezhilton http://bit.ly/e45u88 #
    • Also, give a read to @dogoneblog's Terminal 5 TAB review http://bit.ly/hkjLBQ #phish #trey #
    • Enjoy Ryan Muir's stellar photos of last night's show for @metromix http://bit.ly/f6iRHN #trey #phish #
    • @RPKraemer No audio or video has surfaced thus far #
    • Or perhaps they went with the backing music from Jay-Z's original and Jen sang Alicia's Empire II lyrics? #
    • Can anyone who may be more well-versed in Jay-Z/Alicia than me confirm that TAB played Alicia's version of Empire State of Mind last night? #

    Post a Comment

    You must be logged in to post a comment.