Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.70.2.30.2.91.2.13
diff -u -p -r1.70.2.30.2.91.2.13 privatemsg.module
--- privatemsg.module	27 Jan 2009 16:55:18 -0000	1.70.2.30.2.91.2.13
+++ privatemsg.module	27 Jan 2009 17:40:36 -0000
@@ -718,7 +718,7 @@ function pm_preview($form, &$form_state)
   $form_state['rebuild'] = TRUE; //this forces our form to be rebuilt instead of being submitted.
 }
 
-function privatemsg_privatemsg_list_sent_alter(&$fragments, $account) {
+function privatemsg_list_sent_sql(&$fragments, $account) {
   $fragments['primary_table'] = '{pm_message} pm';
 
   $fragments['select'][]      = 'pmi.thread_id';
@@ -760,7 +760,7 @@ function privatemsg_privatemsg_list_sent
   $fragments['order_by'][]  = $order .' '. $sort;
 }
 
-function privatemsg_privatemsg_list_alter(&$fragments, $account) {
+function privatemsg_list_sql(&$fragments, $account) {
   $fragments['primary_table'] = '{pm_message} pm';
 
   $fragments['select'][]      = 'pmi.thread_id';
@@ -780,7 +780,7 @@ function privatemsg_privatemsg_list_alte
   $fragments['select'][]      = 'MIN(pm.timestamp) as thread_started';
   $fragments['select'][]      = 'MAX(pmi.is_new) as is_new';
   // pm_index needs to be the first join.
-  array_unshift($fragments['inner_join'], 'INNER JOIN {pm_index} pmi ON pm.mid = pmi.mid');
+  $fragments['inner_join'][]  = 'INNER JOIN {pm_index} pmi ON pm.mid = pmi.mid';
   $fragments['where'][]       = 'pmi.uid = %d';
   $fragments['query_args'][]  = $account->uid;
   $fragments['where'][]       = 'pmi.deleted = 0';
@@ -800,7 +800,7 @@ function privatemsg_privatemsg_list_alte
 
 }
 
-function privatemsg_privatemsg_load_alter(&$fragments, $pmid, $uid) {
+function privatemsg_load_sql(&$fragments, $pmid, $uid) {
 //  drupal_set_message('<pre>'. print_r(func_get_args(), 1) . '</pre>');
   $fragments['primary_table'] = '{pm_message} pm'; // Our primary table
 
@@ -818,7 +818,7 @@ function privatemsg_privatemsg_load_alte
   $fragments['query_args'][]  = $uid;
 }
 
-function privatemsg_privatemsg_messages_alter(&$fragments, $thread_id, $uid) {
+function privatemsg_messages_sql(&$fragments, $thread_id, $uid) {
   $fragments['primary_table'] = '{pm_index} pmi';
 
   $fragments['select'][]      = 'DISTINCT(pmi.mid) as mid';
@@ -830,7 +830,7 @@ function privatemsg_privatemsg_messages_
   $fragments['order_by'][]    = 'pmi.mid ASC';
 }
 
-function privatemsg_privatemsg_participants_alter(&$fragments, $thread_id) {
+function privatemsg_participants_sql(&$fragments, $thread_id) {
   $fragments['primary_table'] = '{pm_index} pmi';
 
   $fragments['select'][]      = 'DISTINCT(pmi.uid) as uid';
@@ -839,7 +839,7 @@ function privatemsg_privatemsg_participa
 }
 
 
-function privatemsg_privatemsg_unread_count_alter(&$fragments, $account) {
+function privatemsg_unread_count_sql(&$fragments, $account) {
   $fragments['primary_table'] = '{pm_index} pmi';
 
   $fragments['select'][]      = 'COUNT(DISTINCT thread_id) as unread_count';
Index: privatemsg_filter/privatemsg_filter.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/privatemsg/privatemsg_filter/privatemsg_filter.module,v
retrieving revision 1.1.2.2
diff -u -p -r1.1.2.2 privatemsg_filter.module
--- privatemsg_filter/privatemsg_filter.module	23 Dec 2008 16:46:13 -0000	1.1.2.2
+++ privatemsg_filter/privatemsg_filter.module	27 Jan 2009 17:40:37 -0000
@@ -392,7 +392,7 @@ function privatemsg_filter_privatemsg_li
 /**
  * Hook into the query builder to add the tagging info to the correct query
  */
-function privatemsg_filter_privatemsg_list_alter(&$fragments) {
+function privatemsg_filter_privatemsg_list_sql_alter(&$fragments) {
   // Filter the message listing by any set tags.
   if ($filter = privatemsg_filter_get_filter(user_load($fragments['query_args'][0]))) {
 
Index: privatemsgapi/privatemsgapi.inc
===================================================================
RCS file: /cvs/drupal/contributions/modules/privatemsg/privatemsgapi/privatemsgapi.inc,v
retrieving revision 1.8.2.1
diff -u -p -r1.8.2.1 privatemsgapi.inc
--- privatemsgapi/privatemsgapi.inc	26 Jan 2009 19:53:27 -0000	1.8.2.1
+++ privatemsgapi/privatemsgapi.inc	27 Jan 2009 17:40:38 -0000
@@ -94,15 +94,21 @@ function _privatemsg_assemble_query($que
   unset($args[0]);
   //we do the merge because we call call_user_func_array and not drupal_alter
   //this is necessary because otherwise we would not be able to use $args correctly (otherwise it doesnt unfold)
+  $alterargs = array(&$fragments);
+  $query_function = $query_id .'_sql';
   if (!empty($args)) {
-     $alterargs = array_merge(array($query_id, &$fragments, ), $args);
-  }
-  else {
-     $alterargs = array($query_id, &$fragments, );
+    $alterargs = array_merge($alterargs, $args);
   }
   /**
    * END: Dynamic arguments
    */
+  if (!function_exists($query_function)) {
+    drupal_set_message(t('Query function %function does not exist', array('%function' => $query_function)), 'error');
+    return FALSE;
+  }
+  call_user_func_array($query_function, $alterargs);
+
+  array_unshift($alterargs, $query_function);
   call_user_func_array('drupal_alter', $alterargs);
 
   $SELECT = $fragments['select'];
