I posted this in another thread, but this is what i'm using on my MU install. I took the above code and modified it so it will truly pull out the last updated with the content of those posts. It will pull out the 5 recent from each blog and sort them.
I'm sure it could be re-written but it works for now
<div class="recentpostings">
<h2><?php _e('Recent Postings on DUBBlogs'); ?></h2>
<?php
//What blogs where last updated, lets grab a bunch at first.
$blogs = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs WHERE domain!='dubblogs.com' AND public = 1 AND last_updated!='0000-00-00 00:00:00' ORDER BY last_updated DESC LIMIT 25");
$tables = array();
foreach ($blogs as $blog) {
// we need _posts and _options tables for this to work
$blogOptionsTable = "wp_".$blog."_options";
$blogPostsTable = "wp_".$blog."_posts";
$blogCatTable = "wp_".$blog."_post2cat";
//add to array for later use
$table = array ($blog, $blogPostsTable, $blogOptionsTable, $blogCatTable );
$tables[] = $table; //push into tables
}
//now lets pull out 5 recent posts from each blog
$postresults = array();
foreach ($tables as $t) {
$postitems = $wpdb->get_results("SELECT ID,post_title,guid,post_content,comment_count,post_date_gmt FROM $t[1] WHERE post_status = 'publish' AND guid != '' ORDER BY id DESC LIMIT 0,5");
//push into array, had $postresults[] = $postitems;, but didn't work?
if ($postitems) {
foreach ($postitems as $postitem) {
$col = array($postitem->ID,$postitem->post_title,$postitem->guid,$postitem->post_content,$postitem->comment_count,$postitem->post_date_gmt,$t[0]);
$postresults[] = $col;
}
}
}
function cutpost($text) { // Fakes an excerpt if needed
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$text = strip_tags($text);
$excerpt_length = 55;
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, '[...]');
$text = implode(' ', $words);
}
return $text;
}
function cmp($a,$b) {
$at = strtotime($a[5]);
$bt = strtotime($b[5]);
if($at == $bt)
return(0);
if($at < $bt)
return(1);
else
return(-1);
}
usort($postresults, 'cmp');
$postresults = array_slice($postresults, 0,25); //limit number of results
foreach ($postresults as $postresult) {
$siteurl = $wpdb->get_col("SELECT option_value FROM wp_". $postresult[6] ."_options WHERE option_name='siteurl'");
$blogname = $wpdb->get_col("SELECT option_value FROM wp_". $postresult[6] ."_options WHERE option_name='blogname'");
//todo - this is an array, need to sort and pull out
//$catitems = $wpdb->get_col("SELECT category_id FROM wp_".$postresult[6]."_post2cat WHERE $postitems->ID ORDER BY category_id");
?>
<div id="post-" class="item entry">
<div class="itemhead">
<h3><a href="<?php echo $postresult[2]; ?>" rel="bookmark" title='Permanent Link to "<?php echo $postresult[1]; ?>"'><?php echo $postresult[1]; ?></a></h3>
</div>
<div class="itemtext">
<?php echo cutpost($postresult[3]);?>
</div>
<p class="details">
<small class="metadata"><a>"><?php echo $blogname[0]; ?></a> | <a>#comments" class="commentslink" title="Comment on <?php echo $postresult[1]; ?>"><?php echo $postresult[4]; ?>�<span>comments</span></a> | <span class="tagdata">todo</span> | <span class="chronodata"><?php echo time_since(abs(strtotime($postresult[5] . " GMT")), time()); gt; ?> ago</span></small>
</div>
<?php } ?>
</div>