/**
 * Get an BP_Email object for the specified email type.
 *
 * This function pre-populates the object with the subject, content, and template from the appropriate
 * email post type item. It does not replace placeholder tokens in the content with real values.
 *
 * @since 2.5.0
 *
 * @param string $email_type Unique identifier for a particular type of email.
 * @return BP_Email|WP_Error BP_Email object, or WP_Error if there was a problem.
 */
function bp_get_email($email_type)
{
    $switched = false;
    // Switch to the root blog, where the email posts live.
    if (!bp_is_root_blog()) {
        switch_to_blog(bp_get_root_blog_id());
        $switched = true;
    }
    $args = array('no_found_rows' => true, 'numberposts' => 1, 'post_status' => 'publish', 'post_type' => bp_get_email_post_type(), 'suppress_filters' => false, 'tax_query' => array(array('field' => 'slug', 'taxonomy' => bp_get_email_tax_type(), 'terms' => $email_type)));
    /**
     * Filters arguments used to find an email post type object.
     *
     * @since 2.5.0
     *
     * @param array  $args       Arguments for get_posts() used to fetch a post object.
     * @param string $email_type Unique identifier for a particular type of email.
     */
    $args = apply_filters('bp_get_email_args', $args, $email_type);
    $post = get_posts($args);
    if (!$post) {
        if ($switched) {
            restore_current_blog();
        }
        return new WP_Error('missing_email', __FUNCTION__, array($email_type, $args));
    }
    /**
     * Filters arguments used to create the BP_Email object.
     *
     * @since 2.5.0
     *
     * @param WP_Post $post       Post object containing the contents of the email.
     * @param string  $email_type Unique identifier for a particular type of email.
     * @param array   $args       Arguments used with get_posts() to fetch a post object.
     * @param WP_Post $post       All posts retrieved by get_posts( $args ). May only contain $post.
     */
    $post = apply_filters('bp_get_email_post', $post[0], $email_type, $args, $post);
    $email = new BP_Email($email_type);
    /*
     * Set some email properties for convenience.
     */
    // Post object (sets subject, content, template).
    $email->set_post_object($post);
    /**
     * Filters the BP_Email object returned by bp_get_email().
     *
     * @since 2.5.0
     *
     * @param BP_Email $email      An object representing a single email, ready for mailing.
     * @param string   $email_type Unique identifier for a particular type of email.
     * @param array    $args       Arguments used with get_posts() to fetch a post object.
     * @param WP_Post  $post       All posts retrieved by get_posts( $args ). May only contain $post.
     */
    $retval = apply_filters('bp_get_email', $email, $email_type, $args, $post);
    if ($switched) {
        restore_current_blog();
    }
    return $retval;
}