Automator_Tokens
Class Automator_Tokens
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 ); } }
Expand full source code Collapse full source code View on Github
Methods Methods
- get — Get value of the token
- get_action_tokens_renderable
- get_instance
- human_readable — Human readable string of the token
- parse — Function to parse token {{trigger_id:trigger_code:token}}
- possible_tokens
- relevant_tokens
- store — Store token in to the trigger meta table
- trigger_tokens — Get token data for recipe triggers