Okay, I figured it out (I think)…
For those who care and for reference sake, it appears that the Multiply plugin DOES correctly set the $user_level variable for a given press (non-default blog). However, in 1.5.x WordPress doesn’t look at this variable when checking several (if not all) of the permissions (such as the user_can_create_post permission/function in functions-post.php). Instead, this function calls the get_userdata function found in pluggable-functions.php, which returns the “cached” user data level.
Therefore, I added the following lines under the get_userdata function:
if ( empty($press_cache[$mb_id]) && $userid != 0) {
$presses = mb_authorized_presses();
$cache_userdata[$userid]->user_level = $presses[$mb_id]->level;
} else {
$cache_userdata[$userid]->user_level = $press_cache[$mb_id]->level;
}
This uses the press cache if available (updates it for the given user if empty), then sets the WordPress cached user level equal to the current Multiply press user level for the current press.
After doing this, everything Multiply was intended to do seems to work fine. I currently have users set at “0” in the User Management. Then, in the Presses management, I increase their levels as desired. After logging in as them, they have NO rights on the Default Press and the exact rights needed on the other presses.
I don’t yet know if there are any negative affects from this (such as in large environments or if I have somehow messed something else up). So far though, everything is working great!!!