Flsupport_Tokens::parse_flsupport_trigger_tokens( $value,  $pieces,  $recipe_id,  $trigger_data, int $user_id,  $replace_args )


Parameters Parameters

$value

(Required)

$pieces

(Required)

$recipe_id

(Required)

$trigger_data

(Required)

$user_id

(Required)

$replace_args

(Required)


Top ↑

Return Return

(int|mixed|string)


Source Source

File: src/integrations/fluent-support/tokens/flsupport-tokens.php

	public function parse_flsupport_trigger_tokens( $value, $pieces, $recipe_id, $trigger_data, $user_id, $replace_args ) {
		if ( $pieces ) {

			if ( ! isset( $pieces[2] ) ) {
				return $value;
			}

			if ( stristr( $pieces[2], 'FLSUPPORT-' ) ) {
				global $wpdb;

				$trigger_id     = isset( $replace_args['trigger_id'] ) ? $replace_args['trigger_id'] : 0;
				$trigger_log_id = isset( $replace_args['trigger_log_id'] ) ? $replace_args['trigger_log_id'] : 0;

				if ( 0 === (int) $trigger_id || 0 === (int) $trigger_log_id ) {
					return $value;
				}

				$trigger_code     = $pieces[1];
				$token_identifier = strtoupper( $pieces[2] );
				$identifier       = trim( str_replace( 'FLSUPPORT-', '', $token_identifier ), '-' );
				$identifier_parts = explode( '-', $identifier );
				$object_type      = $identifier_parts[0];
				$token_field      = strtolower( str_replace( $object_type . '-', '', $identifier ) );

				$ticket_id = intval( Automator()->helpers->recipe->get_form_data_from_trigger_meta( 'FLSUPPORTTICKETID', $trigger_id, $trigger_log_id, $user_id ) );

				if ( 0 === (int) $ticket_id ) {
					return $value;
				}

				$person_id = intval( Automator()->helpers->recipe->get_form_data_from_trigger_meta( 'FLSUPPORTPERSONID', $trigger_id, $trigger_log_id, $user_id ) );

				$cache_key = $trigger_id . '-' . $ticket_id;
				if ( ! isset( $this->trigger_tickets[ $cache_key ] ) ) {
					// Only query ticket object once per trigger request.
					$this->trigger_tickets[ $cache_key ] = $this->get_ticket_object( $ticket_id );
				}

				$ticket = $this->trigger_tickets[ $cache_key ];

				switch ( $object_type ) {
					case 'TICKET':
						$value = $this->get_object_field( $token_field, $ticket );
						break;
					case 'AGENT':
						$value = $this->get_object_field( $token_field, $this->get_person_object( $ticket->agent_id ) );
						break;
					case 'CUSTOMER':
						$value = $this->get_object_field( $token_field, $this->get_person_object( $ticket->customer_id ) );
						break;
					case 'CONVERSATION':
						$response_id = intval( Automator()->helpers->recipe->get_form_data_from_trigger_meta( 'FLSUPPORTRESPONSEID', $trigger_id, $trigger_log_id, $user_id ) );

						$value = $this->get_object_field( $token_field, $this->get_response_object( $response_id ) );
						break;
					default:
						$value = apply_filters( 'uap_fl_support_token_value', $value, $trigger_id, $pieces );
				}
			}
		}

		return $value;
	}