Recipe_Post_Rest_Api::add( WP_REST_Request $request )
Add trigger or action to recipe
Contents
Parameters Parameters
- $request
-
(Required)
Return Return
(WP_REST_Response)
Source Source
File: src/core/automator-post-types/uo-recipe/class-recipe-post-rest-api.php
public function add( WP_REST_Request $request ) { $return['message'] = __( 'The data that was sent was malformed. Please reload the page and try again.', 'uncanny-automator' ); $return['success'] = false; $return['data'] = $request; $return['post'] = ''; // Make sure we have a parent post ID if ( ! $request->has_param( 'recipePostID' ) || ! is_numeric( $request->get_param( 'recipePostID' ) ) ) { $return['message'] = __( 'Recipe ID is missing.', 'uncanny-automator' ); return new WP_REST_Response( $return, 400 ); } if ( $request->has_param( 'trigger_code' ) && $request->has_param( 'item_code' ) ) { $return['message'] = __( 'Trigger code or Item code is missing.', 'uncanny-automator' ); return new WP_REST_Response( $return, 400 ); } // Make sure the parent post exists $recipe = get_post( absint( $request->get_param( 'recipePostID' ) ) ); if ( ! $recipe instanceof WP_Post ) { $return['message'] = __( 'Post ID sent is not a recipe post', 'uncanny-automator' ); return new WP_REST_Response( $return, 400 ); } $post_type = false; $sentence = ''; $action = ''; $post_action = sanitize_text_field( $request->get_param( 'action' ) ); $allowed_actions = array( 'add-new-trigger', 'add-new-action', 'add-new-closure', ); // Make sure we have the post type ( trigger OR action ) if ( ! $request->has_param( 'action' ) ) { $return['message'] = 'Action is missing as parameter.'; return new WP_REST_Response( $return, 400 ); } if ( ! in_array( (string) $post_action, $allowed_actions, true ) ) { $return['message'] = 'Action is not an allowed action.'; return new WP_REST_Response( $return, 400 ); } if ( 'add-new-trigger' === (string) $post_action ) { $post_type = 'uo-trigger'; $action = 'create_trigger'; $sentence = Automator()->get->trigger_title_from_trigger_code( sanitize_text_field( $request->get_param( 'item_code' ) ) ); } if ( 'add-new-action' === (string) $post_action ) { $post_type = 'uo-action'; $action = 'create_action'; $sentence = Automator()->get->action_title_from_action_code( sanitize_text_field( $request->get_param( 'item_code' ) ) ); } if ( 'add-new-closure' === (string) $post_action ) { $post_type = 'uo-closure'; $action = 'create_closure'; } if ( ! $post_type ) { $return['message'] = __( 'Post type is not defined.', 'uncanny-automator' ); return new WP_REST_Response( $return, 400 ); } $create_post = apply_filters( 'automator_add_recipe_child', true, $post_type, $action, $recipe ); if ( true !== $create_post ) { return $create_post; } // Create post object $post = array( 'post_title' => $sentence, 'post_content' => '', 'post_status' => 'draft', 'post_type' => $post_type, 'post_date' => $recipe->post_date, 'post_date_gmt' => $recipe->post_date_gmt, 'post_modified' => $recipe->post_modified, 'post_modified_gmt' => $recipe->post_modified_gmt, 'post_parent' => $recipe->ID, ); // Insert the post into the database $post_id = wp_insert_post( $post ); if ( is_wp_error( $post_id ) ) { $return['message'] = sprintf( '%s:%s', __( 'The action failed to create the post. The response was', 'uncanny-automator' ), $post_id ); return new WP_REST_Response( $return, 400 ); } /** Sanitize @var $item_code */ $item_code = Automator()->utilities->automator_sanitize( $request->get_param( 'item_code' ) ); if ( 'create_trigger' === $action ) { update_post_meta( $post_id, 'code', $item_code ); $trigger_integration = Automator()->get->trigger_integration_from_trigger_code( $item_code ); update_post_meta( $post_id, 'integration', $trigger_integration ); update_post_meta( $post_id, 'uap_trigger_version', Utilities::automator_get_version() ); $add_action_hook = Automator()->get->trigger_actions_from_trigger_code( $item_code ); update_post_meta( $post_id, 'add_action', $add_action_hook ); /** * @param int $post_id Trigger ID * @param string $item_code Trigger item code * @param WP_REST_Request $request * * @since 3.0 * @package Uncanny_Automator */ do_action( 'automator_trigger_created', $post_id, $item_code, $request ); } if ( 'create_action' === $action ) { update_post_meta( $post_id, 'code', $item_code ); $action_integration = Automator()->get->action_integration_from_action_code( $item_code ); update_post_meta( $post_id, 'integration', $action_integration ); update_post_meta( $post_id, 'uap_action_version', Utilities::automator_get_version() ); /** * @param int $post_id Action ID * @param string $item_code Action item code * @param WP_REST_Request $request * * @since 3.0 * @package Uncanny_Automator */ do_action( 'automator_action_created', $post_id, $item_code, $request ); } if ( 'create_closure' === $action ) { update_post_meta( $post_id, 'code', $item_code ); $closure_integration = Automator()->get->closure_integration_from_closure_code( $item_code ); update_post_meta( $post_id, 'integration', $closure_integration ); update_post_meta( $post_id, 'uap_closure_version', Utilities::automator_get_version() ); /** * @param int $post_id Closure ID * @param string $item_code Closure item code * @param WP_REST_Request $request * * @since 3.0 * @package Uncanny_Automator */ do_action( 'automator_closure_created', $post_id, $item_code, $request ); } if ( $request->has_param( 'default_meta' ) ) { if ( is_array( $request->get_param( 'default_meta' ) ) ) { $meta_values = (array) Automator()->utilities->automator_sanitize( $request->get_param( 'default_meta' ), 'mixed' ); foreach ( $meta_values as $meta_key => $meta_value ) { update_post_meta( $post_id, Automator()->utilities->automator_sanitize( $meta_key ), Automator()->utilities->automator_sanitize( $meta_value ) ); } } } $return = array(); $return['success'] = true; $return['post_ID'] = $post_id; $return['action'] = $action; $return['recipes_object'] = Automator()->get_recipes_data( true, $recipe->ID ); return new WP_REST_Response( $return, 200 ); }
Expand full source code Collapse full source code View on Github