Using map_meta_cap filter can make the logic simpler.

git-svn-id: https://plugins.svn.wordpress.org/bogo/trunk@961061 b8457f37-d9ea-0310-8a92-e5e31aec5664