I've been using the Drupal Media module on sites for quite a long time now but one thing that's always annoyed me slightly is that it just shows one giant list of media from every user. For small sites this often just a minor inconvenience but my current project (an intranet with many editor users) wasn't such a simple case. I had a look around and couldn't find a solution already out there and in the end came up with this little snippet using hook_query_alter():
It's not the most elegant solution ever, but it seems to do the trick. Unfortunately the Media module doesn't tag the query so I had to put in some bodgetastic tests to isolate the correct query. The nicer way to do it would be to use
You could easily create other conditions in here as well, such as filtering the query based on the timestamp field in the file_managed table, or you could feasibly join in other tables to do something like only displaying files uploaded from a certain field.
I should mention, this is a slight hack in the sense that it only applies to the media-7.x-1.x releases. media-7.x-2.x will use a View for the library browser so you should be able to do this kind of filtering in a much more sane way in future! However at the time of writing, the tag media-7.x-2.0-unstable6 precludes me using it on client sites…
The above code is available in a Drupal.org sandbox for anyone that just wants to download and use it (andymantell's sandbox: Media Library User Restrict). This will never be promoted to a full project however since the forthcoming media-7.x-2.x series should solve the problem more elegantly as mentioned above.