/**
  * @group bp_docs_get_folder_in_item_term
  */
 public function test_bp_docs_get_folder_in_item_term_user_term_created()
 {
     $u = $this->factory->user->create();
     $created_term_id = bp_docs_get_folder_in_item_term($u, 'user');
     $term = get_term_by('id', $created_term_id, 'bp_docs_folder_in_user');
     $this->assertSame($created_term_id, $term->term_id);
 }
/**
 * Create a Folder.
 *
 * @since 1.9
 *
 * @param array $args {
 *     Array of parameters.
 *     @type string $name Name of the folder, for display in the interface.
 *     @type int $user_id Optional. ID of the user that the folder is limited
 *           to.
 *     @type int $group_id Optional. ID of the group that the folder is
 *           limited to.
 * }
 * @return int|bool ID of the newly created folder on success, false on failure.
 */
function bp_docs_create_folder($args)
{
    $r = wp_parse_args($args, array('folder_id' => null, 'name' => '', 'parent' => null, 'group_id' => null, 'user_id' => null));
    if (empty($r['name'])) {
        return false;
    }
    // Validate group ID
    if (!empty($r['group_id'])) {
        if (!bp_is_active('groups')) {
            return false;
        }
        $r['group_id'] = intval($r['group_id']);
        $group = groups_get_group(array('group_id' => $r['group_id']));
        if (empty($group->id)) {
            return false;
        }
    }
    // Validate post parent
    if (!empty($r['parent'])) {
        $r['parent'] = intval($r['parent']);
        $maybe_parent = get_post($r['parent']);
        if (!is_a($maybe_parent, 'WP_Post')) {
            return false;
        }
    }
    $post_args = array('post_type' => 'bp_docs_folder', 'post_title' => $r['name'], 'post_status' => 'publish', 'post_parent' => $r['parent']);
    if (!empty($r['folder_id'])) {
        $post_args['ID'] = intval($r['folder_id']);
    }
    $folder_id = wp_insert_post($post_args);
    // If a group ID was passed, associate with group
    if (!empty($r['group_id'])) {
        $group_term = bp_docs_get_folder_in_item_term($r['group_id'], 'group');
        wp_set_object_terms($folder_id, $group_term, 'bp_docs_folder_in_group');
    } else {
        if (!empty($r['user_id'])) {
            $user_term = bp_docs_get_folder_in_item_term($r['user_id'], 'user');
            wp_set_object_terms($folder_id, $user_term, 'bp_docs_folder_in_user');
        }
    }
    if (is_wp_error($folder_id)) {
        return false;
    } else {
        return intval($folder_id);
    }
}