Mec_Event_Tokens
Source Source
File: src/integrations/modern-events-calendar/tokens/mec-event-tokens.php
class Mec_Event_Tokens { /** * Our integration. * * @var $integration string The integration. */ public static $integration = 'MEC'; /** * The token that we will use. * * @var string The token Identifier. */ private $token = 'MECTOKENS_'; /** * Our class constructor. Hooks `parse_tokens` method to `automator_maybe_parse_token` filter. * * @return void */ public function __construct() { add_filter( 'automator_maybe_parse_token', array( $this, 'parse_tokens' ), 36, 6 ); } /** * Process the tokens. * * @param mixed $value The value accepted from `automator_maybe_parse_token`. * @param mixed $pieces The pieces accepted from `automator_maybe_parse_token`. * @param mixed $recipe_id The recipe id accepted from `automator_maybe_parse_token`. * @param mixed $trigger_data The trigger data accepted from `automator_maybe_parse_token`. * @param mixed $user_id The user id accepted from `automator_maybe_parse_token`. * @param mixed $replace_args The arguments accepted from `automator_maybe_parse_token`. * * @return mixed The token value to display. */ public function parse_tokens( $value, $pieces, $recipe_id, $trigger_data, $user_id, $replace_args ) { $to_match = array( $this->token . 'EVENT_DATE', $this->token . 'EVENT_TIME', $this->token . 'EVENT_LOCATION', $this->token . 'EVENT_ORGANIZER', $this->token . 'EVENT_COST', ); if ( $pieces ) { if ( array_intersect( $to_match, $pieces ) ) { $value = $this->replace_values( $value, $pieces, $recipe_id, $trigger_data, $user_id, $replace_args ); } } return $value; } /** * Replaces the token values. * * @return mixed The value. */ public function replace_values( $value, $pieces, $recipe_id, $trigger_data, $user_id, $replace_args ) { $trigger_meta = $pieces[1]; $parse = $pieces[2]; $recipe_log_id = isset( $replace_args['recipe_log_id'] ) ? (int) $replace_args['recipe_log_id'] : Automator()->maybe_create_recipe_log_entry( $recipe_id, $user_id )['recipe_log_id']; if ( ! $trigger_data || ! $recipe_log_id ) { return $value; } foreach ( $trigger_data as $trigger ) { if ( ! isset( $trigger['meta'] ) ) { continue; } if ( ! key_exists( $trigger_meta, $trigger['meta'] ) && ( ! isset( $trigger['meta']['code'] ) && $trigger_meta !== $trigger['meta']['code'] ) ) { continue; } $trigger_id = $trigger['ID']; $trigger_log_id = $replace_args['trigger_log_id']; $event_id = $this->get_event_id_from_trigger_log_meta( $user_id, 'MEC_EVENT_ID', $replace_args['trigger_id'], $replace_args['trigger_log_id'] ); if ( empty( $event_id ) ) { return; } $the_event = new MEC_EVENT_HELPERS(); $the_event->setup( $event_id ); $value = ''; switch ( $parse ) { case $this->token . 'EVENT_DATE': $value = $the_event->get_event_date(); break; case $this->token . 'EVENT_TIME': $value = $the_event->get_event_time(); break; case $this->token . 'EVENT_LOCATION': $value = $the_event->get_event_location(); break; case $this->token . 'EVENT_ORGANIZER': $value = $the_event->get_event_organizer(); break; case $this->token . 'EVENT_COST': $value = $the_event->get_event_cost(); break; } } return $value; } /** * Get the event id from the trigger log table. * * @param mixed $user_id The user id. * @param mixed $meta_key The meta key. * @param mixed $trigger_id The trigger id. * @param mixed $trigger_log_id The trigger log id. * * @return mixed The event ID | Empty String when not found. */ public function get_event_id_from_trigger_log_meta( $user_id, $meta_key, $trigger_id, $trigger_log_id ) { global $wpdb; if ( empty( $meta_key ) || empty( $trigger_id ) || empty( $trigger_log_id ) ) { return ''; } $meta_value = $wpdb->get_var( $wpdb->prepare( "SELECT meta_value FROM {$wpdb->prefix}uap_trigger_log_meta WHERE user_id = %d AND meta_key = %s AND automator_trigger_id = %d AND automator_trigger_log_id = %d ORDER BY ID DESC LIMIT 0,1", $user_id, $meta_key, $trigger_id, $trigger_log_id ) ); if ( ! empty( $meta_value ) ) { return maybe_unserialize( $meta_value ); } return ''; } }
Expand full source code Collapse full source code View on Github
Methods Methods
- __construct — Our class constructor. Hooks `parse_tokens` method to `automator_maybe_parse_token` filter.
- get_event_id_from_trigger_log_meta — Get the event id from the trigger log table.
- parse_tokens — Process the tokens.
- replace_values — Replaces the token values.