Hooks
Class Hooks.
Source
File: src/Tickets_Plus/Emails/Hooks.php
class Hooks extends tad_DI52_ServiceProvider {
/**
* Binds and sets up implementations.
*
* @since 5.6.6
*/
public function register() {
$this->add_actions();
$this->add_filters();
}
/**
* Adds the actions required by each Tickets Emails component.
*
* @since 5.6.6
*/
protected function add_actions() {
add_action( 'tribe_template_before_include:tickets/v2/emails/template-parts/body/ticket/holder-name', [ $this, 'maybe_add_ticket_qr_code' ], 10, 3 );
// Include Attendee Registration Fields in Ticket & RSVP emails.
add_action( 'tribe_template_after_include:tickets/v2/emails/template-parts/body/ticket/security-code', [ $this, 'maybe_include_attendee_registration_fields_ticket_rsvp_emails' ], 10, 3 );
add_action( 'tribe_template_after_include:tickets/v2/emails/template-parts/header/head/styles', [ $this, 'maybe_include_attendee_registration_fields_styles' ], 10, 3 );
}
/**
* Adds the filters required by each Tickets Emails component.
*
* @since 5.6.6
*/
protected function add_filters() {
add_filter( 'tec_tickets_emails_settings_email_styling_fields', [ $this, 'filter_tickets_emails_settings' ] );
// Ticket Email.
add_filter( 'tec_tickets_emails_ticket_settings', tribe_callback( Email\Ticket::class, 'filter_tec_tickets_emails_ticket_settings' ), 10 );
// RSVP.
add_filter( 'tec_tickets_emails_rsvp_settings', tribe_callback( Email\RSVP::class, 'filter_tec_tickets_emails_rsvp_settings' ), 10 );
add_filter( 'tec_tickets_emails_email_template_context', [ $this, 'filter_email_template_context' ] );
add_filter( 'tribe_tickets_get_template_part_content', [ $this, 'filter_email_qr_template' ], 10, 6 );
}
/**
* Filters the list of fields for Tickets Emails settings, and add the footer credit setting.
*
* @since 5.6.6
*
* @param array $fields The current list of fields for Tickets Emails settings.
*
* @return array The filtered list of fields.
*/
public function filter_tickets_emails_settings( array $fields ): array {
return tribe( Settings::class )->add_footer_credit_setting( $fields );
}
/**
* Adds QR code template, if settings allow.
*
* @param string $file Template file.
* @param string $name Template name.
* @param \Tribe__Template $et_template Event Tickets template object.
* @return void
*/
public function maybe_add_ticket_qr_code( $file, $name, $et_template ) {
/** @var \Tribe__Tickets_Plus__Template $template */
$template = tribe( 'tickets-plus.template' );
$include_qr = tribe_get_option( Email\Ticket::$option_ticket_include_qr_codes, true );
if ( empty( $include_qr ) ) {
return;
}
$args = $et_template->get_local_values();
$args['include_qr'] = $include_qr;
$args['qr'] = $args['preview'] ?
esc_url( plugins_url( '/event-tickets-plus/src/resources/images/example-qr.png' ) ):
tribe( Tribe__Tickets_Plus__QR::class )->get_qr_url( $args['ticket'] );
$template->template( 'v2/emails/template-parts/body/ticket/qr-image', $args, true );
}
/**
* Filters the context array from the email tickets template.
*
* @since 5.6.6
*
* @param array $context Context array from event tickets emails template.
*
* @return array Filtered context.
*/
public function filter_email_template_context( $context ): array {
// Add footer credit option from settings.
$context['footer_credit'] = tribe_get_option( Settings::$option_footer_credit, true );
return $context;
}
/**
* Maybe include Attendee Registration Fields for RSVP and Tickets emails.
*
* @since 5.6.10
*
* @param string $file Template file.
* @param string $name Template name.
* @param \Tribe__Template $et_template Event Tickets template object.
* @return void
*/
public function maybe_include_attendee_registration_fields_ticket_rsvp_emails( $file, $name, $et_template ) {
if ( ! $et_template instanceof \Tribe__Template ) {
return;
}
$this->container->make( Email\RSVP::class )->maybe_include_ar_fields( $et_template );
$this->container->make( Email\Ticket::class )->maybe_include_ar_fields( $et_template );
}
/**
* Maybe include Attendee Registration Fields Styles.
*
* @since 5.6.10
*
* @param string $file Template file.
* @param string $name Template name.
* @param \Tribe__Template $et_template Event Tickets template object.
* @return void
*/
public function maybe_include_attendee_registration_fields_styles( $file, $name, $et_template ) {
if ( ! $et_template instanceof \Tribe__Template ) {
return;
}
$this->container->make( Email\RSVP::class )->maybe_include_ar_fields_styles( $et_template );
$this->container->make( Email\Ticket::class )->maybe_include_ar_fields_styles( $et_template );
}
/**
* Filter email QR template.
*
* @since 5.6.10
*
* @param string $html The final HTML
* @param string $template The Template file, which is a relative path from the Folder we are dealing with
* @param string $file Complete path to include the PHP File
* @param string $slug Slug for this template
* @param string $name Template name
* @param array $data The Data that will be used on this template
*
* @return string
*/
public function filter_email_qr_template( $html, $template, $file, $slug, $name, $data ): string {
if ( ! tec_tickets_emails_is_enabled() ) {
return $html;
}
if ( 'tickets-plus/email-qr' !== $slug ) {
return $html;
}
$data['include_qr'] = true;
return tribe( 'tickets-plus.template' )->template( 'v2/emails/template-parts/body/ticket/qr-image', $data, false );
}
}
Changelog
| Version | Description |
|---|---|
| 5.6.6 | Introduced. |
Methods
- filter_email_qr_template — Filter email QR template.
- filter_email_template_context — Filters the context array from the email tickets template.
- filter_tickets_emails_settings — Filters the list of fields for Tickets Emails settings, and add the footer credit setting.
- maybe_add_ticket_qr_code — Adds QR code template, if settings allow.
- maybe_include_attendee_registration_fields_styles — Maybe include Attendee Registration Fields Styles.
- maybe_include_attendee_registration_fields_ticket_rsvp_emails — Maybe include Attendee Registration Fields for RSVP and Tickets emails.
- maybe_include_ticket_rsvp_styles — Filter to include Ticket & RSVP styles.
- register — Binds and sets up implementations.