mailer()->get_emails(); return isset( $emails[ $key ] ) ? $emails[ $key ] : null; } /** * New request: customer confirmation (or withdrawal acknowledgement) and * the store notification. * * @param Request $request Request. * @return void */ public static function created( Request $request ) { $customer = self::get( $request->is_withdrawal() ? 'RTKT_Customer_Withdrawal' : 'RTKT_Customer_Request' ); if ( $customer ) { $sent = $customer->trigger( $request ); if ( $request->is_withdrawal() ) { self::log( $request, $sent, __( 'Acknowledgement of receipt emailed to the customer.', 'returnkit' ), __( 'The acknowledgement email could not be sent. Check that your site can send email, then send the customer a message from this request.', 'returnkit' ), $customer ); } else { self::log( $request, $sent, __( 'Confirmation emailed to the customer.', 'returnkit' ), __( 'The confirmation email could not be sent.', 'returnkit' ), $customer ); } } $admin = self::get( 'RTKT_Admin_Request' ); if ( $admin ) { $admin->trigger( $request ); } } /** * Status change: tell the customer (not for their own cancellation). * * @param Request $request Request. * @param string $from Old status. * @param string $to New status. * @param string $message Message. * @param array $data Extra data. * @return void */ public static function status_changed( Request $request, $from, $to, $message = '', $data = array() ) { unset( $from ); if ( ! in_array( $to, array( 'approved', 'received', 'completed', 'rejected' ), true ) ) { return; } /** * Whether to email the customer about a status change. * * @param bool $send Send. * @param Request $request Request. * @param string $to New status. */ if ( ! apply_filters( 'rtkt_email_status_change', true, $request, $to ) ) { return; } $email = self::get( 'RTKT_Customer_Update' ); if ( $email ) { $sent = $email->trigger( $request, $to, (string) $message, (array) $data ); self::log( $request, $sent, __( 'Update emailed to the customer.', 'returnkit' ), __( 'The update email could not be sent.', 'returnkit' ), $email ); } } /** * Staff message to the customer. * * @param Request $request Request. * @param string $text Message. * @return void */ public static function message( Request $request, $text ) { $email = self::get( 'RTKT_Customer_Update' ); if ( $email ) { $sent = $email->trigger( $request, 'message', (string) $text ); self::log( $request, $sent, __( 'Message emailed to the customer.', 'returnkit' ), __( 'The message could not be emailed.', 'returnkit' ), $email ); } } /** * Guest look-up link. * * @param \WC_Order $order Order. * @return void */ public static function access_link( $order ) { $email = $order instanceof \WC_Order ? self::get( 'RTKT_Customer_Link' ) : null; if ( $email ) { $email->trigger( $order ); } } /** * Log an email outcome on the request. * * @param Request $request Request. * @param bool $sent Sent. * @param string $ok Text on success. * @param string $failed Text on failure. * @param Base $email Email object. * @return void */ private static function log( Request $request, $sent, $ok, $failed, $email ) { if ( ! $email->is_enabled() ) { /* translators: %s: email title. */ Log::add( $request->id(), 'email_off', sprintf( __( '"%s" email is turned off in WooCommerce → Settings → Emails, so nothing was sent.', 'returnkit' ), $email->get_title() ), 'system' ); return; } Log::add( $request->id(), $sent ? 'email_sent' : 'email_failed', $sent ? $ok : $failed, 'system', array( 'to' => $email->get_recipient() ) ); } }