protected function set_up_levels()
 {
     // Everyone can see 'anyone' docs
     $this->levels[] = bp_docs_get_access_term_anyone();
     // Logged-in users
     // Note that we're not verifying that the user actually exists
     // For now this kind of check is up to whoever's instantiating
     if ($this->user_id != 0) {
         $this->levels[] = bp_docs_get_access_term_loggedin();
         if (bp_is_active('groups')) {
             $this->set_up_user_groups();
             if (isset($this->user_groups['groups'])) {
                 foreach ($this->user_groups['groups'] as $member_group) {
                     $this->levels[] = bp_docs_get_access_term_group_member($member_group);
                 }
             }
             // admins-mods
             if (isset($this->user_groups['admin_mod_of'])) {
                 foreach ($this->user_groups['admin_mod_of'] as $adminmod_group) {
                     $this->levels[] = bp_docs_get_access_term_group_adminmod($adminmod_group);
                 }
             }
         }
         // no-one
         // creator
         // @todo What's the difference?
         $this->levels[] = bp_docs_get_access_term_user($this->user_id);
     }
 }
Example #2
0
function bp_docs_update_doc_access($doc_id, $access_setting = 'anyone')
{
    $doc = get_post($doc_id);
    if (!$doc || is_wp_error($doc)) {
        return false;
    }
    // Convert the access setting to a WP taxonomy term
    switch ($access_setting) {
        case 'anyone':
        case 'loggedin':
            $access_term = 'bp_docs_access_' . $access_setting;
            break;
        case 'group-members':
        case 'admins-mods':
            $associated_group = bp_docs_get_associated_group_id($doc_id);
            $access_term = 'group-members' == $access_setting ? bp_docs_get_access_term_group_member($associated_group) : bp_docs_get_access_term_group_adminmod($associated_group);
            break;
        case 'creator':
        case 'no-one':
            // @todo Don't know how these are different
            $access_term = bp_docs_get_access_term_user($doc->post_author);
            break;
    }
    if (isset($access_term)) {
        $retval = wp_set_post_terms($doc_id, $access_term, bp_docs_get_access_tax_name());
    }
    if (empty($retval) || is_wp_error($retval)) {
        return false;
    } else {
        return true;
    }
}