Tokens
Trait Tokens
Source Source
File: src/core/lib/recipe-parts/trait-tokens.php
trait Tokens { /** * @var mixed|void */ public static $user_tokens; // /** // * @var // */ // protected static $token_parser; /** * Tokens constructor. */ public function __construct() { self::$user_tokens = apply_filters( 'automator_user_tokens', array( 'user_id', 'user_username', 'user_firstname', 'user_lastname', 'user_email', 'user_displayname', ) ); } // /** // * @return mixed // */ // public static function get_token_parser() { // return self::$token_parser; // } // // /** // * @param mixed $token_parser // */ // public static function set_token_parser( $token_parser ): void { // self::$token_parser = $token_parser; // } /** * @param string $trigger_code * @param string $token_id * * @return mixed|null */ public static function get_parser_object_from_trigger( string $trigger_code, string $token_id = '' ) { if ( empty( $trigger_code ) || empty( $token_id ) ) { return null; } $tokens = Automator()->get->value_from_trigger_meta( $trigger_code, 'tokens' ); if ( empty( $tokens ) ) { return null; } foreach ( $tokens as $token ) { if ( strtoupper( $token_id ) === strtoupper( $token['tokenId'] ) ) { return isset( $token['parserObject'] ) ? $token['parserObject'] : null; } } return null; } /** * Get value of the token */ public static function get() { } /** * Build token sentence, {{trigger_code:token}} * * @param string $trigger_code * @param string $token_id * @param string $type * @param string $prefix * * @return array */ public static function build( array $args ) { $trigger_code = isset( $args['trigger_code'] ) ? esc_attr( $args['trigger_code'] ) : null; if ( null === $trigger_code || empty( $trigger_code ) ) { return array(); } $token_id = isset( $args['token_id'] ) ? esc_attr( $args['token_id'] ) : null; $type = isset( $args['type'] ) ? esc_attr( $args['type'] ) : null; $prefix = isset( $args['prefix'] ) ? esc_attr( $args['prefix'] ) : ''; // $parsing_func = self::get_token_parser(); // $parse_from = isset( $args['parse_from'] ) ? $args['parse_from'] : null; return array( 'tokenId' => strtoupper( $token_id ), 'tokenName' => self::generate_token_name( $token_id, $prefix ), 'tokenType' => $type, 'tokenIdentifier' => $trigger_code, // 'tokenParser' => $parsing_func, // 'parserObject' => $parse_from, ); } /** * @param string $token_id * @param string $prefix * * @return string */ public static function generate_token_name( string $token_id, string $prefix = '' ) { if ( empty( $prefix ) ) { return ucfirst( str_replace( array( '_', '-' ), ' ', $token_id ) ); } return sprintf( '%s: %s', $prefix, ucfirst( str_replace( array( '_', '-', ), ' ', $token_id ) ) ); } /** * @param $token * * @return string */ public static function reverse_token_id( $token ) { return 'get_' . strtolower( $token ); } /** * 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() { } /** * @param $meta * @param $token * * @return bool */ public static function is_valid( $meta, $token ) { /** * @var mixed $value * @var array $pieces * @var int $recip_id * @var array $trigger_data * @var int $user_id * @var array $replace_args */ extract( $token ); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract if ( ! $pieces ) { // Token array is empty. return false; } if ( ! array_key_exists( 2, $pieces ) || empty( $pieces[2] ) ) { // Token is missing. return false; } if ( $meta !== $pieces[2] ) { // Token doesn't match trigger meta. return false; } if ( ! array_key_exists( 0, $trigger_data ) || empty( $trigger_data[0] ) ) { // Trigger data is empty. return false; } if ( empty( $trigger_data[0]['meta'] ) ) { // Trigger meta is empty. return false; } return true; } /** * @param $meta * @param $token * * @return bool */ public static function is_valid_user_token( $token ) { /** * @var mixed $value * @var array $pieces * @var int $recip_id * @var array $trigger_data * @var int $user_id * @var array $replace_args */ extract( $token ); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract if ( ! $pieces ) { // Token array is empty. return false; } $replaceable = str_replace( array( '{{', '}}', '', $pieces ) ); if ( ! in_array( $replaceable, self::$user_tokens, false ) ) { // Token is missing. return false; } return true; } /** * @param $meta * @param $token * @param false $readable * * @return mixed|void */ public static function parse_from_trigger_meta( $meta, $token, $readable = false ) { /** * @var mixed $value * @var array $pieces * @var int $recip_id * @var array $trigger_data * @var int $user_id * @var array $replace_args */ extract( $token ); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract if ( ! self::is_valid( $meta, $token ) ) { return apply_filters( 'automator_parse_from_trigger_meta', $value, $meta, $token, $readable ); } $value = $trigger_data[0]['meta']; if ( true === $readable && isset( $trigger_meta[ $meta . '_readable' ] ) && ! empty( $trigger_meta[ $meta . '_readable' ] ) ) { $value = $trigger_meta[ $meta . '_readable' ]; } return apply_filters( 'automator_parse_from_trigger_meta', $value, $meta, $token, $readable ); } /** * @param $meta * @param $token * * @return mixed|void */ public static function parse_user_tokens( $meta, $token ) { /** * @var mixed $value * @var array $pieces * @var int $recip_id * @var array $trigger_data * @var int $user_id * @var array $replace_args */ extract( $token ); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract if ( ! self::is_valid( $meta, $token ) ) { return apply_filters( 'automator_parse_user_tokens', $value, $meta, $token ); } } /** * @param $tokens * * @return array|mixed */ public static function remove_duplicate_token_ids( $tokens ) { $new_tokens = array(); if ( empty( $tokens ) ) { return $tokens; } foreach ( $tokens as $token ) { if ( ! array_key_exists( $token['tokenId'], $new_tokens ) ) { $new_tokens[ $token['tokenId'] ] = $token; } } return array_values( $new_tokens ); } }
Expand full source code Collapse full source code View on Github
Methods Methods
- __construct — Tokens constructor.
- build — Build token sentence, {{trigger_code:token}}
- generate_token_name
- get — Get value of the token
- get_parser_object_from_trigger
- human_readable — Human readable string of the token
- is_valid
- is_valid_user_token
- parse — Function to parse token {{trigger_id:trigger_code:token}}
- parse_from_trigger_meta
- parse_user_tokens
- possible_tokens
- relevant_tokens
- remove_duplicate_token_ids
- reverse_token_id
- store — Store token in to the trigger meta table