Automator_Tokens

Class Automator_Tokens

Contents

  • Methods

  • Source Source

    File: src/core/lib/recipe-parts/tokens/class-automator-tokens.php

    class Automator_Tokens {
    	use Recipe\Tokens;
    
    	/**
    	 * @var
    	 */
    	public static $instance;
    
    
    
    	/**
    	 * @return Automator_Tokens
    	 */
    	public static function get_instance() {
    
    		if ( null === self::$instance ) {
    			self::$instance = new self();
    		}
    
    		return self::$instance;
    	}
    
    	/**
    	 * Get value of the token
    	 */
    	public function get() {
    
    	}
    
    	/**
    	 * Function to parse token {{trigger_id:trigger_code:token}}
    	 *
    	 * @param $trigger_id
    	 * @param $trigger_code
    	 * @param $token
    	 * @param $args
    	 */
    	public function parse( $trigger_id, $trigger_code, $token, $args ) {
    
    	}
    
    	/**
    	 * Store token in to the trigger meta table
    	 */
    	public function store() {
    
    	}
    
    	/**
    	 * Human readable string of the token
    	 */
    	public function human_readable() {
    
    	}
    
    	/**
    	 *
    	 */
    	protected function possible_tokens() {
    
    	}
    
    	/**
    	 *
    	 */
    	protected function relevant_tokens() {
    	}
    
    	/**
    	 * Get token data for recipe triggers
    	 *
    	 * @param null $triggers_meta
    	 * @param null $recipe_id
    	 *
    	 * @return null|array
    	 */
    	public function trigger_tokens( $triggers_meta = null, $recipe_id = null ) {
    		if ( is_null( $triggers_meta ) && is_null( $recipe_id ) ) {
    			return null;
    		}
    
    		$tokens = apply_filters( 'automator_maybe_trigger_pre_tokens', array(), $triggers_meta, $recipe_id );
    		//Only load these when on edit recipe page or is automator ajax is happening!
    		if ( ! Automator()->helpers->recipe->is_edit_page() && ! Automator()->helpers->recipe->is_rest() && ! Automator()->helpers->recipe->is_ajax() ) {
    			return $tokens;
    		}
    		if ( empty( $triggers_meta ) ) {
    			return $tokens;
    		}
    
    		//Add custom tokens regardless of integration / trigger code
    		$filters             = array();
    		$trigger_integration = '';
    		$trigger_meta        = '';
    		$trigger_value       = '';
    		foreach ( $triggers_meta as $meta_key => $meta_value ) {
    			if ( empty( $meta_value ) ) {
    				continue;
    			}
    
    			if ( 'INTEGRATION_NAME' === (string) strtoupper( $meta_key ) ) {
    				continue;
    			}
    
    			if ( 'NUMBERCOND' === (string) strtoupper( $meta_key ) ) {
    				continue;
    			}
    
    			if ( 'uap_trigger_version' === (string) $meta_key ) {
    				continue;
    			}
    
    			if ( 'sentence' === (string) $meta_key ) {
    				continue;
    			}
    
    			if ( 'sentence_human_readable' === (string) $meta_key ) {
    				continue;
    			}
    
    			if ( strpos( $meta_key, 'readable' ) ) {
    				continue;
    			}
    
    			if ( 'integration' === (string) $meta_key ) {
    				$trigger_integration = strtolower( $meta_value );
    			}
    
    			//Ignore NUMTIMES and trigger_integration/trigger_code metas
    			if ( 'NUMTIMES' !== (string) strtoupper( $meta_key ) && 'integration' !== (string) strtolower( $meta_key ) ) {
    				$trigger_meta  = strtolower( $meta_key );
    				$trigger_value = $meta_value;
    			}
    
    			//Deal with trigger_meta special cases
    			if ( 'trigger_meta' === $meta_key ) {
    				$trigger_meta  = strtolower( $meta_value );
    				$trigger_value = $meta_value;
    			}
    
    			//Deal with trigger_meta special cases
    			if ( 'code' === (string) $meta_key ) {
    				$trigger_meta  = strtolower( $meta_value );
    				$trigger_value = $meta_value;
    			}
    
    			//Add general Integration based filter, like automator_maybe_trigger_gf_tokens
    			if ( ! empty( $trigger_integration ) ) {
    
    				$filter = 'automator_maybe_trigger_' . $trigger_integration . '_tokens';
    				$filter = str_replace( '__', '_', $filter );
    
    				$filters[ $filter ] = array(
    					'integration'   => strtoupper( $trigger_integration ),
    					'meta'          => strtoupper( $trigger_meta ),
    					'triggers_meta' => $triggers_meta,
    					'recipe_id'     => $recipe_id,
    				);
    
    			}
    
    			//Add trigger code specific filter, like automator_maybe_trigger_gf_gfforms_tokens
    			if ( ! empty( $trigger_integration ) && ! empty( $triggers_meta ) ) {
    				$filter = 'automator_maybe_trigger_' . $trigger_integration . '_' . $trigger_meta . '_tokens';
    				$filter = str_replace( '__', '_', $filter );
    
    				$filters[ $filter ] = array(
    					'value'         => $trigger_value,
    					'integration'   => strtoupper( $trigger_integration ),
    					'meta'          => strtoupper( $trigger_meta ),
    					'recipe_id'     => $recipe_id,
    					'triggers_meta' => $triggers_meta,
    				);
    			}
    		}
    
    		/* Filter to add/remove custom filter */
    		/** @var  $filters */
    		$filters = apply_filters_deprecated(
    			'automator_trigger_filters',
    			array(
    				$filters,
    				$triggers_meta,
    			),
    			'3.0',
    			'automator_trigger_token_filters'
    		);
    		$filters = apply_filters( 'automator_trigger_token_filters', $filters, $triggers_meta );
    
    		if ( $filters ) {
    			foreach ( $filters as $filter => $args ) {
    				$tokens = apply_filters( $filter, $tokens, $args );
    			}
    		}
    
    		if ( isset( $triggers_meta['code'] ) ) {
    			$tokens = Automator()->get->trigger_tokens_from_trigger_code( $triggers_meta['code'] ) + $tokens;
    		}
    		// Adds the opportunity to modify final tokens list
    		// (i.e., remove middle name from GF tokens list)
    		//$tokens = $this->remove_duplicate_token_ids( $tokens );
    
    		return apply_filters( 'automator_maybe_trigger_tokens', $tokens, $recipe_id );
    	}
    }
    

    Methods Methods