PluginProbe
CartFlows – Funnel Builder & Checkout Plugin for WooCommerce / 3.1.2
CartFlows – Funnel Builder & Checkout Plugin for WooCommerce v3.1.2
3.3.0 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.1 trunk 1.0.4 1.1.0 1.1.0.1 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 All 162 releases
cartflows / admin-core / api / product / product-data.php

product-data.php in CartFlows – Funnel Builder & Checkout Plugin for WooCommerce 3.1.2, at admin-core/api/product/product-data.php

127 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * CartFlows Flow data.
4 *
5 * @package CartFlows
6 */
7
8 namespace CartflowsAdmin\AdminCore\Api\Product;
9
10 // Exit if accessed directly.
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13 }
14
15 use CartflowsAdmin\AdminCore\Inc\AdminHelper;
16 use CartflowsAdmin\AdminCore\Api\ApiBase;
17
18 /**
19 * Class ProductData.
20 */
21 class ProductData extends ApiBase {
22
23 /**
24 * Route base.
25 *
26 * @var string
27 */
28 protected $rest_base = '/admin/product-data/';
29
30 /**
31 * Instance
32 *
33 * @access private
34 * @var object Class object.
35 * @since 1.0.0
36 */
37 private static $instance;
38
39 /**
40 * Initiator
41 *
42 * @since 1.0.0
43 * @return object initialized object of class.
44 */
45 public static function get_instance() {
46 if ( ! isset( self::$instance ) ) {
47 self::$instance = new self();
48 }
49 return self::$instance;
50 }
51
52 /**
53 * Init Hooks.
54 *
55 * @since 1.0.0
56 * @return void
57 */
58 public function register_routes() {
59
60 $namespace = $this->get_api_namespace();
61
62 register_rest_route(
63 $namespace,
64 $this->rest_base . '(?P<id>[\d-]+)',
65 array(
66 'args' => array(
67 'id' => array(
68 'description' => __( 'Step ID.', 'cartflows' ),
69 'type' => 'integer',
70 ),
71 ),
72 array(
73 'methods' => \WP_REST_Server::READABLE,
74 'callback' => array( $this, 'get_item' ),
75 'permission_callback' => array( $this, 'get_item_permissions_check' ),
76 ),
77 'schema' => array( $this, 'get_public_item_schema' ),
78 )
79 );
80 }
81
82 /**
83 * Get step data.
84 *
85 * @param WP_REST_Request $request Full details about the request.
86 * @return WP_Error|boolean
87 */
88 public function get_item( $request ) {
89
90 $product_id = $request->get_param( 'id' );
91
92 /* Prepare data */
93 $data = array(
94 'id' => $product_id,
95 );
96
97 $product = wc_get_product( $product_id );
98
99 if ( $product ) {
100
101 $data['img_url'] = get_the_post_thumbnail_url( $product_id );
102 $data['regular_price'] = \Cartflows_Helper::get_product_original_price( $product );
103 $data['is_virtual'] = $product->is_virtual();
104 }
105
106 $response = new \WP_REST_Response( $data );
107 $response->set_status( 200 );
108
109 return $response;
110 }
111
112 /**
113 * Check whether a given request has permission to read notes.
114 *
115 * @param WP_REST_Request $request Full details about the request.
116 * @return WP_Error|boolean
117 */
118 public function get_item_permissions_check( $request ) {
119
120 if ( ! current_user_can( 'cartflows_manage_flows_steps' ) ) {
121 return new \WP_Error( 'cartflows_rest_cannot_view', __( 'Sorry, you cannot list resources.', 'cartflows' ), array( 'status' => rest_authorization_required_code() ) );
122 }
123
124 return true;
125 }
126 }
127