<?php
function get_posts($args) {
	global $wpdb, $tableposts, $tablepost2cat;
	parse_str($args, $r);
	
	$now = current_time('mysql');
	
	//define the base queries and conditionals
	
	$strQuery = "SELECT DISTINCT * FROM $tableposts";
	
	$strCategoryQuerySelect = ", $tablepost2cat";
	
	$strBaseQueryConditional = " WHERE post_date <= '$now' AND (post_status = 'publish')";
	$strCategoryQueryConditional = " AND ( ( `$tableposts`.`ID` = `$tablepost2cat`.`post_id` ) AND ( `$tablepost2cat`.`category_id` = '" . $r['category'] . "' ) ) ";
	$strExcludeCategoryQueryConditional = " AND ( ( `$tableposts`.`ID` = `$tablepost2cat`.`post_id` ) AND ( `$tablepost2cat`.`category_id` <> '" . $r['excludecategory'] . "' ) ) ";
	
	//update the base query with category & exclude category optional queries
	
	if ( ( isset( $r['category'] ) ) || ( isset( $r['excludecategory'] ) ) ) $strQuery = $strQuery . $strCategoryQuerySelect;

	$strQuery = $strQuery . $strBaseQueryConditional;
	
	if ( isset( $r['category'] ) ) { $strQuery = $strQuery . $strCategoryQueryConditional; }
	if ( isset( $r['excludecategory'] ) ) { $strQuery = $strQuery . $strExcludeCategoryQueryConditional; }

	//update the base query with offset, numbering, and ordering options

	if (!isset($r['numberposts'])) $r['numberposts'] = 5;
	if (!isset($r['offset'])) $r['offset'] = 0;
	// The following not implemented yet	
	if (!isset($r['orderby'])) $r['orderby'] = '';
	if (!isset($r['order'])) $r['order'] = '';
	
	$strBaseQuerySuffix = "GROUP BY $tableposts.ID ORDER BY post_date DESC LIMIT " . $r['offset'] . ',' . $r['numberposts'];

	$strQuery = $strQuery . $strBaseQuerySuffix;
	
	$posts = $wpdb->get_results( $strQuery );
	
	return $posts;
}
?>