After seeing a few other examples of just pulling out the recent blogs by querying the wp_blog table. I wanted a bit more that showed the actual postings for each blog user.
Not being experience whatso-ever in PHP/Perl, I tried to take crack at it anyways... Much more needs to be changed but this is a good starting point.
If someone knows what they are doing, please update the code and post it here but here is what I have started with:
<?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 = "wpdub_".$blog."_options";
$blogPostsTable = "wpdub_".$blog."_posts";
$blogCatTable = "wpdub_".$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?
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 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');
foreach ($postresults as $postresult) {
$siteurl = $wpdb->get_col("SELECT option_value FROM wpdub_". $postresult[6] ."_options WHERE option_name='siteurl'");
$blogname = $wpdb->get_col("SELECT option_value FROM wpdub_". $postresult[6] ."_options WHERE option_name='blogname'");
?>
<div id="post-" class="item entry">
<div class="itemhead">
<h3><a>" rel="bookmark" title='Permanent Link to "<?php echo $postresult[1]; ?>"'><?php echo $postresult[1]; ?></a></h3>
</div>
<div class="itemtext">
<?php echo substr($postresult[3], 0, 197);?>
</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 } ?>
What I liked to still complete:
Strip html and limit characters
use nicecategories for listing the tags used
clean up the code, faster?
You can see an example on my testing site:
http://dubblogs.com