Alert: This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

LLMS_Engagements::get_engagements( string $trigger_type,  $related_post_id = '' )

Retrieve engagements based on the trigger type


Description Description

Joins rather than nested loops and sub queries ftw


Parameters Parameters

$trigger_type

(string) (Required) name of the trigger to look for


Top ↑

Return Return

(array) of objects Array( [0] => stdClass Object ( [engagement_id] => 123, // WordPress Post ID of the event post (email, certificate, achievement, etc...) [trigger_id] => 123, // this is the Post ID of the llms_engagement post [trigger_event] => 'user_registration', // triggering action [event_type] => 'certificate', // engagement event action [delay] => 0, // time in days to delay the engagement ) )


Top ↑

Source Source

File: includes/class.llms.engagements.php

	private function get_engagements( $trigger_type, $related_post_id = '' ) {

		global $wpdb;

		if ( $related_post_id ) {

			$related_select = ', relation_meta.meta_value AS related_post_id';
			$related_join = "LEFT JOIN $wpdb->postmeta AS relation_meta ON triggers.ID = relation_meta.post_id";
			$related_where = $wpdb->prepare( "AND relation_meta.meta_key = '_llms_engagement_trigger_post' AND relation_meta.meta_value = %d", $related_post_id );

		} else {

			$related_select = '';
			$related_join = '';
			$related_where = '';

		}

		$r = $wpdb->get_results( $wpdb->prepare(
			// the query
			"SELECT
				  DISTINCT triggers.ID AS trigger_id
				, triggers_meta.meta_value AS engagement_id
				, engagements_meta.meta_value AS trigger_event
				, event_meta.meta_value AS event_type
				, delay.meta_value AS delay
				$related_select

			FROM $wpdb->postmeta AS engagements_meta

			LEFT JOIN $wpdb->posts AS triggers ON triggers.ID = engagements_meta.post_id
			LEFT JOIN $wpdb->postmeta AS triggers_meta ON triggers.ID = triggers_meta.post_id
			LEFT JOIN $wpdb->posts AS engagements ON engagements.ID = triggers_meta.meta_value
			LEFT JOIN $wpdb->postmeta AS event_meta ON triggers.ID = event_meta.post_id
			LEFT JOIN $wpdb->postmeta AS delay ON triggers.ID = delay.post_id
			$related_join

			WHERE
				    triggers.post_type = 'llms_engagement'
				AND triggers.post_status = 'publish'
				AND triggers_meta.meta_key = '_llms_engagement'

				AND engagements_meta.meta_key = '_llms_trigger_type'
				AND engagements_meta.meta_value = %s
				AND engagements.post_status = 'publish'

				AND event_meta.meta_key = '_llms_engagement_type'

				AND delay.meta_key = '_llms_engagement_delay'

				$related_where
			",
			// prepare variables
			$trigger_type
		), OBJECT );

		$this->log( '$wpdb->last_query' . $wpdb->last_query );

		return $r;

	}

Top ↑

Changelog Changelog

Changelog
Version Description
2.3.0 Introduced.


Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.