Index: bb-includes/class.bb-query.php
===================================================================
--- bb-includes/class.bb-query.php	(revision 3359)
+++ bb-includes/class.bb-query.php	(working copy)
@@ -201,7 +201,9 @@
 //			'page',		// Defaults to global or number in URI
 //			'per_page',	// Defaults to page_topics
 			'tag_id',	// one tag ID
-			'favorites'	// one user ID
+			'favorites',	// one user ID,
+			'offset',	// first item to query
+			'number'	// number of items to retrieve
 		);
 
 		$parse_ints = array(
@@ -718,17 +720,23 @@
 			$bits['order_by'] .= " $q[order]";
 		else
 			$bits['order_by'] .= " DESC";
-
-		if ( !$q['per_page'] )
-			$q['per_page'] = (int) bb_get_option( 'page_topics' );
-
+		
 		$bits['limit'] = '';
-		if ( $q['per_page'] > 0 ) :
-			if ( $q['page'] > 1 )
-				$bits['limit'] .= $q['per_page'] * ( $q['page'] - 1 ) . ", ";
-			$bits['limit'] .= $q['per_page'];
-		endif;
-
+		
+		if ( !empty( $q['offset'] ) && !empty( $q['number'] ) ) {
+			// When offset and number are provided, we skip per_page and limit checks
+			$bits['limit'] .= $q['offset'] . ", " . $q['number'];
+		} else {
+			if ( !$q['per_page'] )
+				$q['per_page'] = (int) bb_get_option( 'page_topics' );
+	
+			if ( $q['per_page'] > 0 ) :
+				if ( $q['page'] > 1 )
+					$bits['limit'] .= $q['per_page'] * ( $q['page'] - 1 ) . ", ";
+				$bits['limit'] .= $q['per_page'];
+			endif;
+		}
+		
 		$name = "get_{$this->type}s_";
 
 		// Unfiltered
