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); } }
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; } }