namespace = 'kb-lottieanimation/v1'; $this->rest_base = 'animations'; } /** * Registers the routes for the objects of the controller. * * @see register_rest_route() */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::CREATABLE, 'callback' => array( $this, 'create_animation' ), 'permission_callback' => array( $this, 'create_animation_permission_check' ), ), ) ); } /** * Checks if a given request has access to search content. * * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has search access, WP_Error object otherwise. */ public function create_animation_permission_check( $request ) { return current_user_can( 'publish_posts' ); } /** * Create a lottie animation post from object * * @param WP_REST_Request $request Full details about the request. * @return Array */ public function create_animation( $request ) { $jsonParams = $request->get_json_params(); if ( empty( $jsonParams['lottieFile'] ) || ! is_array( $jsonParams['lottieFile'] ) || json_encode( $jsonParams['lottieFile'] ) === false ) { return new WP_Error( 'invalid_json', __( 'Lottie animation contains invalid JSON', 'kadence-blocks' ), array( 'status' => 200 ) ); } if ( ! empty( trim( $jsonParams['title'] ) ) ) { $title = trim( $jsonParams['title'] ); } else { return array( 'error' => true, 'message' => __( 'Please enter an animation title', 'kadence-blocks' ) ); } // Replace new line characters with space. array_walk_recursive($jsonParams['lottieFile'], function(&$value, $key) { $value = str_replace(array("\n", "\r"), ' ', $value); }); // Create post object $my_post = array( 'post_title' => $title, 'post_content' => json_encode( $jsonParams['lottieFile'], JSON_NUMERIC_CHECK ), 'post_type' => 'kadence_lottie', 'post_status' => 'publish', 'post_mime_type' => 'application/json', ); $insert = wp_insert_post( $my_post, true ); if ( is_wp_error( $insert ) ) { return array( 'error' => true, 'message' => $insert->get_error_message()); } return array( 'value' => $insert, 'label' => $title ); } }