LLMS_Email_Engagement
Engagement Email Class
Description Description
Generates emails and sends to user. Triggered from an engagement.
Source Source
File: includes/emails/class.llms.email.engagement.php
class LLMS_Email_Engagement extends LLMS_Email { /** * Email identifier * * @since 1.0.0 * @var string */ protected $id = 'engagement'; /** * @since 3.8.0 * @var WP_User */ public $student; /** * Initialize all variables * * @since 1.0.0 * @since 3.8.0 Unknown. * * @param array $args Associative array of engagement args. * @return void */ public function init( $args ) { $this->student = new WP_User( $args['person_id'] ); $this->email_post = get_post( $args['email_id'] ); $this->add_merge_data( array( '{user_login}' => stripslashes( $this->student->user_login ), '{first_name}' => stripslashes( $this->student->first_name ), '{last_name}' => stripslashes( $this->student->last_name ), '{email_address}' => stripslashes( $this->student->user_email ), '{site_url}' => get_permalink( llms_get_page_id( 'myaccount' ) ), '{current_date}' => date_i18n( get_option( 'date_format' ), current_time( 'timestamp' ) ), ) ); // Setup subject, headline, & body. $this->body = $this->email_post->post_content; $this->subject = get_post_meta( $this->email_post->ID, '_llms_email_subject', true ); $this->heading = get_post_meta( $this->email_post->ID, '_llms_email_heading', true ); // Setup all the recipients. foreach ( array( 'to', 'cc', 'bcc' ) as $type ) { $list = get_post_meta( $this->email_post->ID, '_llms_email_' . $type, true ); // Fall back to student email for existing emails with no definition. if ( ! $list && 'to' === $type ) { $list = '{student_email}'; } if ( ! $list ) { continue; } foreach ( $this->merge_emails( $list ) as $email ) { $this->add_recipient( $email, $type ); } } } /** * Handles email merge codes that can be used in the to, cc, and bcc fields * * @since 3.1.0 * @since 3.8.0 Unknown. * * @param string $list Unmerged, comma-separated list of emails * @return array */ private function merge_emails( $list ) { $codes = array( '{student_email}', '{admin_email}', ); $addresses = array( $this->student->ID, get_option( 'admin_email' ), ); $merged = str_replace( $codes, $addresses, $list ); $array = explode( ',', $merged ); return array_map( 'trim', $array ); } /** * Send email * * @since 5.0.0 * * @return boolean */ public function send() { add_filter( 'llms_user_info_shortcode_user_id', array( $this, 'set_shortcode_user' ) ); $ret = parent::send(); remove_filter( 'llms_user_info_shortcode_user_id', array( $this, 'set_shortcode_user' ) ); return $ret; } /** * Set the user ID used by [llms-user] to the user receiving the email. * * @since 5.0.0 * * @param int $uid WP_User ID of the current user. * @return int */ public function set_shortcode_user( $uid ) { return $this->student->ID; } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- init — Initialize all variables
- merge_emails — Handles email merge codes that can be used in the to, cc, and bcc fields
- send — Send email
- set_shortcode_user — Set the user ID used by [llms-user] to the user receiving the email.
Changelog Changelog
Version | Description |
---|---|
3.30.3 | Explicitly define class properties. |
1.0.0 | Introduced. |