Tribe__Tickets__Attendees::send_mail_list()
Handles the “send to email” action for the attendees list.
Source
File: src/Tribe/Attendees.php
public function send_mail_list() {
$error = new WP_Error();
if ( empty( $_GET['event_id'] ) ) {
$error->add( 'no-event-id', esc_html__( 'Invalid Event ID', 'event-tickets' ), array( 'type' => 'general' ) );
return $error;
}
$cap = 'edit_posts';
$event_id = absint( ! empty( $_GET['event_id'] ) && is_numeric( $_GET['event_id'] ) ? $_GET['event_id'] : 0 );
if ( ! current_user_can( 'edit_posts' ) && $event_id ) {
$event = get_post( $event_id );
if ( $event instanceof WP_Post && get_current_user_id() === (int) $event->post_author ) {
$cap = 'read';
}
}
if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'email-attendees-list' ) || ! $this->user_can( $cap, $_GET['event_id'] ) ) {
$error->add( 'nonce-fail', esc_html__( 'Cheatin Huh?', 'event-tickets' ), array( 'type' => 'general' ) );
return $error;
}
if ( empty( $_POST['email_to_address'] ) && ( empty( $_POST['email_to_user'] ) || 0 >= (int) $_POST['email_to_user'] ) ) {
$error->add( 'empty-fields', esc_html__( 'Empty user and email', 'event-tickets' ), array( 'type' => 'general' ) );
return $error;
}
if ( ! empty( $_POST['email_to_address'] ) ) {
$type = 'email';
} else {
$type = 'user';
}
if ( 'email' === $type && ! is_email( $_POST['email_to_address'] ) ) {
$error->add( 'invalid-email', esc_html__( 'Invalid Email', 'event-tickets' ), array( 'type' => $type ) );
return $error;
}
if ( 'user' === $type && ! is_numeric( $_POST['email_to_user'] ) ) {
$error->add( 'invalid-user', esc_html__( 'Invalid User ID', 'event-tickets' ), array( 'type' => $type ) );
return $error;
}
/**
* Now we know we have valid data
*/
if ( 'email' === $type ) {
// We already check this variable so, no harm here
$email = $_POST['email_to_address'];
} else {
$user = get_user_by( 'id', $_POST['email_to_user'] );
if ( ! is_object( $user ) ) {
$error->add( 'invalid-user', esc_html__( 'Invalid User ID', 'event-tickets' ), array( 'type' => $type ) );
return $error;
}
$email = $user->data->user_email;
}
$this->attendees_table = new Tribe__Tickets__Attendees_Table();
$items = $this->generate_filtered_list( $_GET['event_id'] );
$event = get_post( $_GET['event_id'] );
ob_start();
$attendee_tpl = Tribe__Tickets__Templates::get_template_hierarchy( 'tickets/attendees-email.php', array( 'disable_view_check' => true ) );
include $attendee_tpl;
$content = ob_get_clean();
add_filter( 'wp_mail_content_type', array( $this, 'set_contenttype' ) );
if ( ! wp_mail( $email, sprintf( esc_html__( 'Attendee List for: %s', 'event-tickets' ), $event->post_title ), $content ) ) {
$error->add( 'email-error', esc_html__( 'Error when sending the email', 'event-tickets' ), array( 'type' => 'general' ) );
return $error;
}
remove_filter( 'wp_mail_content_type', array( $this, 'set_contenttype' ) );
return esc_html__( 'Email sent successfully!', 'event-tickets' );
}
Changelog
| Version | Description |
|---|---|
| 4.6.2 | Introduced. |