How can I filter a view to show recent items but only one item per user?
A dull ax approach would be to create a View that returns 100 of the latest messages, and then using a views_pre_render() hook, go through and grab the messages uniquely per user, eg, something like this:

function YOURMODULE_views_pre_render(&amp;$view) {

  if ($view-&gt;name=='THIS_VIEW') {

    $new_result=array();
    $unique_users=array();

    foreach ($view-&gt;result as $row) {
      if (!in_array($row-&gt;USER_FIELD_IN_VIEW, $unique_users)) {
        $new_result[]=$row
        $unique_users[]=$row-&gt;USER_FIELD_IN_VIEW;
        if (count($new_result)==10) {
          break;
        }
      }
    }

    $view-&gt;result=$new_result;

  }

  // any other pre_render()ings go here

}


where USER_FIELD_IN_VIEW is the field in your View corresponding to the uid of the owner of the message.  A print_r() of $row or $view-&gt;result should give you that information.  The other kicker is picking a small enough number of messages to give you those 10 users. I just pulled out 100 out as 10 users and 10 messages per "hyperactive" user to make sure you got at least 10 users without getting too many that you just throw away at the end.

EDIT/ADDITION: there were some variable name typos in my code that I've corrected :)