Wpwh_Tokens
Class Wpwh_Tokens
Source Source
File: src/integrations/wp-webhooks/tokens/wpwh-tokens.php
class Wpwh_Tokens { /** * Integration code * @var string */ public static $integration = 'WPWEBHOOKS'; public function __construct() { add_filter( 'automator_maybe_trigger_wpwebhooks_wpwhtrigger_tokens', [ $this, 'wpwh_possible_tokens' ], 20, 2 ); add_filter( 'automator_maybe_parse_token', [ $this, 'wpwh_token' ], 20, 6 ); } /** * Only load this integration and its triggers and actions if the related plugin is active * * @param $status * @param $plugin * * @return bool */ public function plugin_active( $status, $plugin ) { if ( self::$integration === $plugin ) { if ( class_exists( 'WP_Webhooks_Pro' ) ) { $status = true; } else { $status = false; } } return $status; } /** * @param array $tokens * @param array $args * * @return array */ function wpwh_possible_tokens( $tokens = array(), $args = array() ) { if ( 'WPWHTRIGGER' === $args['meta'] ) { $trigger_meta = $args['meta']; $triggers = WPWHPRO()->webhook->get_triggers(); if ( ! empty( $triggers ) ) { $returns_code = array(); if ( ! empty( $args['value'] ) ) { switch ( $args['value'] ) { case 'create_user': case 'login_user': case 'update_user': $possible_tokens = [ 'ID', 'user_login', 'user_pass', 'user_nicename', 'user_email', 'user_url', 'user_registered', 'user_activation_key', 'user_status', 'display_name', ]; foreach ( $possible_tokens as $_token ) { $fields[] = [ 'tokenId' => 'data|' . $_token, 'tokenName' => $_token, 'tokenType' => 'text', 'tokenIdentifier' => $trigger_meta, ]; } $tokens = array_merge( $tokens, $fields ); break; case 'deleted_user': $possible_tokens = [ 'user_id', 'reassign', ]; foreach ( $possible_tokens as $_token ) { $fields[] = [ 'tokenId' => $_token, 'tokenName' => $_token, 'tokenType' => 'text', 'tokenIdentifier' => $trigger_meta, ]; } $tokens = array_merge( $tokens, $fields ); break; case 'post_create': case 'post_update': case 'post_delete': case 'post_trash': $possible_tokens = [ 'ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_content_filtered', 'post_parent', 'guid', 'menu_order', 'post_type', 'post_mime_type', 'comment_count', 'filter', ]; foreach ( $possible_tokens as $_token ) { $fields[] = [ 'tokenId' => 'post|' . $_token, 'tokenName' => $_token, 'tokenType' => 'text', 'tokenIdentifier' => $trigger_meta, ]; } $tokens = array_merge( $tokens, $fields ); break; } } } } return $tokens; } /** * @param $value * @param $pieces * @param $recipe_id * @param $trigger_data * @param $user_id * * @return string|null */ public function wpwh_token( $value, $pieces, $recipe_id, $trigger_data, $user_id, $replace_args ) { if ( $pieces ) { if ( in_array( 'WPWHTRIGGER', $pieces ) ) { global $wpdb; $token_info = explode( '|', $pieces[2] ); $request_data = $this->get_form_data_from_trigger_meta( 'WPWHTRIGGER_request_body', $replace_args['trigger_id'], $replace_args['trigger_log_id'] ); if ( count( $token_info ) > 1 ) { $value = isset( $request_data[ $token_info[0] ][ $token_info[1] ] ) ? $request_data[ $token_info[0] ][ $token_info[1] ] : ''; } else { $value = isset( $request_data[ $token_info[0] ] ) ? $request_data[ $token_info[0] ] : ''; } } } return $value; } /** * @param $meta_key * @param $trigger_id * * @return mixed|string */ public function get_form_data_from_trigger_meta( $meta_key, $trigger_id, $trigger_log_id ) { global $wpdb; if ( empty( $meta_key ) || empty( $trigger_id ) ) { return ''; } $meta_value = $wpdb->get_var( $wpdb->prepare( "SELECT meta_value FROM {$wpdb->prefix}uap_trigger_log_meta WHERE meta_key = %s AND automator_trigger_id = %d AND automator_trigger_log_id = %d ORDER BY ID DESC LIMIT 0,1", $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
- get_form_data_from_trigger_meta
- plugin_active — Only load this integration and its triggers and actions if the related plugin is active
- wpwh_possible_tokens
- wpwh_token