LLMS_Engagement_Handler::handle_email( mixed[] $args )
Send an email engagement
Description Description
This is called via do_action() by the ‘maybe_trigger_engagement’ function in this class.
Parameters Parameters
- $args
-
(mixed[]) (Required) An array of arguments from the triggering hook.
- (int) WP_User ID.
- '1'
(int) WP_Post ID of the email. - '2'
(int|string) WP_Post ID of the related triggering post or an empty string for engagements with no related post. - '3'
(int) WP_Post ID of the engagement post.
Return Return
(bool|WP_Error[]) Returns true
on success and array of error objects when the email has failed or is prevented.
Source Source
File: includes/class-llms-engagement-handler.php
562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 | public static function handle_email( $args ) { $can_process = self::can_process( 'email' , ... $args ); if ( true !== $can_process ) { return $can_process ; } list( $person_id , $email_id , $related_id ) = $args ; $meta_key = '_email_sent' ; $msg = sprintf( __( 'Email #%1$d to user #%2$d triggered by %3$s' , 'lifterlms' ), $email_id , $person_id , $related_id ? '#' . $related_id : 'N/A' ); if ( $related_id && absint( $email_id ) === absint( llms_get_user_postmeta( $person_id , $related_id , $meta_key ) ) ) { // User has already received this email, don't send it again. llms_log( $msg . ' ' . __( 'not sent because of dupcheck.' , 'lifterlms' ), 'engagement-emails' ); return array ( new WP_Error( 'llms_engagement_email_not_sent_dupcheck' , $msg , $args ) ); } // Setup the email. $email = llms()->mailer()->get_email( 'engagement' , compact( 'person_id' , 'email_id' , 'related_id' ) ); if ( $email && $email ->send() ) { if ( $related_id ) { llms_update_user_postmeta( $person_id , $related_id , $meta_key , $email_id ); } llms_log( $msg . ' ' . __( 'sent successfully.' , 'lifterlms' ), 'engagement-emails' ); return true; } // Error sending email. llms_log( $msg . ' ' . __( 'not sent due to email sending issues.' , 'lifterlms' ), 'engagement-emails' ); return array ( new WP_Error( 'llms_engagement_email_not_sent_error' , $msg , $args ) ); } |
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
6.0.0 | Moved from LLMS_Engagements class. Removed engagement debug logging. Ensure related post, email template, and engagement all exist and are published before processing. |
4.4.3 | Fixed different emails triggered by the same related post not sent because of a wrong duplicate check. Fixed dupcheck log message and error message which reversed the email and person order. |
4.4.1 | Use postmeta helpers for dupcheck and postmeta insertion. Add a return value in favor of void . Log successes and failures to the engagement-emails log file instead of the main llms log. |
3.8.0 | Unknown. |
2.3.0 | Introduced. |