PluginProbe
WPFunnels – Funnel Builder for WooCommerce with Checkout & One Click Upsell / 3.13.1
WPFunnels – Funnel Builder for WooCommerce with Checkout & One Click Upsell v3.13.1
3.13.1 3.13.0 3.12.13 3.12.12 3.12.11 3.12.10 3.12.9 3.12.8 3.12.7 3.12.6 3.12.5 3.12.4 3.12.3 3.12.1 3.12.2 3.12.0 3.11.1 3.11.0 3.10.9 3.10.8 3.10.7 3.10.6 2.8.16 2.8.17 2.8.18 All 259 releases
wpfunnels / includes / core / rest-api / Controllers / class-remotefunnels-controller.php

class-remotefunnels-controller.php in WPFunnels – Funnel Builder for WooCommerce with Checkout & One Click Upsell 3.13.1, at includes/core/rest-api/Controllers/class-remotefunnels-controller.php

231 lines 8.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Remote funnels controller
4 *
5 * @package WPFunnels\Rest\Controllers
6 */
7 namespace WPFunnels\Rest\Controllers;
8
9 use WP_Error;
10 use WP_REST_Request;
11 use WP_REST_Response;
12 use WP_REST_Server;
13 use WPFunnels\Wpfnl_functions;
14
15 class RemoteFunnelsController extends Wpfnl_REST_Controller {
16
17 /**
18 * Endpoint namespace.
19 *
20 * @var string
21 */
22 protected $namespace = 'wpfunnels/v1';
23
24 /**
25 * Route base.
26 *
27 * @var string
28 */
29 protected $rest_base = 'remote_funnel/';
30
31
32 public function update_items_permissions_check( $request ) {
33 if ( ! Wpfnl_functions::wpfnl_rest_check_manager_permissions( 'products' ) ) {
34 return new WP_Error( 'wpfunnels_rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'wpfnl' ), array( 'status' => rest_authorization_required_code() ) );
35 }
36 return true;
37 }
38
39 /**
40 * Makes sure the current user has access to READ the settings APIs.
41 *
42 * @param WP_REST_Request $request Full data about the request.
43 *
44 * @return WP_Error|boolean
45 * @since 3.0.0
46 */
47 public function get_items_permissions_check( $request ) {
48 if ( ! Wpfnl_functions::wpfnl_rest_check_manager_permissions( 'products' ) ) {
49 return new WP_Error( 'wpfunnels_rest_cannot_view', __( 'Sorry, you cannot list resources.', 'wpfnl' ), array( 'status' => rest_authorization_required_code() ) );
50 }
51 return true;
52 }
53
54
55
56 public function register_routes()
57 {
58 register_rest_route(
59 $this->namespace, '/' . $this->rest_base . 'get_template_properties'. '/(?P<funnel_id>\d+)' , array(
60 array(
61 'methods' => WP_REST_Server::READABLE,
62 'callback' => array( $this, 'get_template_properties' ),
63 'permission_callback' => array( $this, 'get_items_permissions_check' ),
64 ),
65 )
66 );
67
68 register_rest_route(
69 $this->namespace, '/' . $this->rest_base . 'get_step_properties'. '/(?P<step_id>\d+)' , array(
70 array(
71 'methods' => WP_REST_Server::READABLE,
72 'callback' => array( $this, 'get_step_properties' ),
73 'permission_callback' => array( $this, 'get_items_permissions_check' ),
74 ),
75 )
76 );
77 }
78
79
80 public function get_template_properties($request) {
81 $funnel_id = $request['funnel_id'];
82 $industries = $this->get_properties(WPFNL_TAXONOMY_TEMPLATES_INDUSTRIES);
83 $builders = $this->get_properties(WPFNL_TAXONOMY_TEMPLATES_BUILDER);
84
85 $template_industry = wp_get_post_terms($funnel_id, WPFNL_TAXONOMY_TEMPLATES_INDUSTRIES, [ 'fields' => 'ids' ]);
86 $template_builder = wp_get_post_terms($funnel_id, WPFNL_TAXONOMY_TEMPLATES_BUILDER, [ 'fields' => 'ids' ]);
87 $type = get_post_meta($funnel_id, '_template_type', true);
88 $template_type = get_post_meta($funnel_id, '_wpfnl_funnel_type', true);
89 $gutenbergType = get_post_meta($funnel_id, '_wpfnl_gutenberg_funnel_type', true);
90
91 $thumbnail_id = get_post_meta($funnel_id, '_thumbnail_id', true);
92 $featured_image_src = '';
93 if($thumbnail_id) {
94 $featured_image = wp_get_attachment_image_src($thumbnail_id);
95 if($featured_image) {
96 $featured_image_src = $featured_image[0];
97 }
98 } else {
99 $thumbnail_id = '';
100 }
101
102
103 if ($template_industry && !is_wp_error($template_industry)) {
104 $template_industry = $template_industry[0];
105 } else {
106 $template_industry = '';
107 }
108
109 if ($template_builder && !is_wp_error($template_builder)) {
110 $template_builder = $template_builder[0];
111 }else {
112 $template_builder = '';
113 }
114
115 $seo_title = get_post_meta($funnel_id, 'seo_title', true);
116 $seo_description = get_post_meta($funnel_id, 'seo_description', true);
117 $is_store_checkout = get_post_meta($funnel_id, '_wpfnl_funnel_type', true);
118
119 $response['success'] = true;
120 $response['industries'] = $industries;
121 $response['builders'] = $builders;
122 $response['gutenbergType'] = $gutenbergType;
123 $response['industry'] = $template_industry;
124 $response['builder'] = $template_builder;
125 $response['type'] = $type ? $type : 'free';
126 $response['template_type'] = $template_type ? $template_type : 'wc';
127 $response['featuredImage'] = $featured_image_src;
128 $response['thumbnailID'] = $thumbnail_id;
129 $response['seoTitle'] = $seo_title;
130 $response['seoDescription'] = $seo_description;
131 $response['isStoreCheckout'] = $template_type === 'store_checkout' ? 'yes' : 'no';
132 return $this->prepare_item_for_response( $response, $request );
133 }
134
135
136 /**
137 * Get properties of a single
138 * funnel
139 *
140 * @since 2.0.0
141 */
142 public function get_properties( $taxonomy ) {
143 $categories = get_terms([
144 'taxonomy' => $taxonomy,
145 'hide_empty' => false,
146 ]);
147 if (!empty($categories) && !is_wp_error($categories)) {
148 return $categories;
149 }
150 return [];
151 }
152
153
154
155 public function get_step_properties($request) {
156 $step_id = $request['step_id'];
157 $thumbnail_id = get_post_meta($step_id, '_thumbnail_id', true);
158 $desktop_view_image_id = get_post_meta($step_id, '_step_desktop_view_image_id', true);
159 $tablet_view_image_id = get_post_meta($step_id, '_step_tablet_view_image_id', true);
160 $mobile_view_image_id = get_post_meta($step_id, '_step_mobile_view_image_id', true);
161 $custom_url = get_post_meta($step_id, '_step_custom_url', true);
162 $featured_image_src = '';
163 $desktop_view_image_src = '';
164 $tablet_view_image_src = '';
165 $mobile_view_image_src = '';
166 if($thumbnail_id) {
167 $featured_image = wp_get_attachment_image_src($thumbnail_id);
168 if($featured_image) {
169 $featured_image_src = $featured_image[0];
170 }
171 } else {
172 $thumbnail_id = '';
173 }
174
175 if($desktop_view_image_id) {
176 $desktop_view_image = wp_get_attachment_image_src($desktop_view_image_id);
177 if($desktop_view_image) {
178 $desktop_view_image_src = $desktop_view_image[0];
179 }
180 } else {
181 $desktop_view_image_id = '';
182 }
183
184 if($tablet_view_image_id) {
185 $tablet_view_image = wp_get_attachment_image_src($tablet_view_image_id);
186 if($tablet_view_image) {
187 $tablet_view_image_src = $tablet_view_image[0];
188 }
189 } else {
190 $tablet_view_image_id = '';
191 }
192
193 if($mobile_view_image_id) {
194 $mobile_view_image = wp_get_attachment_image_src($mobile_view_image_id);
195 if($mobile_view_image) {
196 $mobile_view_image_src = $mobile_view_image[0];
197 }
198 } else {
199 $mobile_view_image_id = '';
200 }
201
202 $response['success'] = true;
203 $response['featuredImage'] = $featured_image_src;
204 $response['thumbnailID'] = $thumbnail_id;
205 $response['desktopViewImage'] = $desktop_view_image_src;
206 $response['desktopViewImageID'] = $desktop_view_image_id;
207 $response['tabletViewImage'] = $tablet_view_image_src;
208 $response['tabletViewImageID'] = $tablet_view_image_id;
209 $response['mobileViewImage'] = $mobile_view_image_src;
210 $response['mobileViewImageID'] = $mobile_view_image_id;
211 $response['customUrl'] = $custom_url;
212 return $this->prepare_item_for_response( $response, $request );
213 }
214
215
216 /**
217 * Prepare a single setting object for response.
218 *
219 * @param object $item Setting object.
220 * @param WP_REST_Request $request Request object.
221 *
222 * @return WP_REST_Response $response Response data.
223 * @since 1.0.0
224 */
225 public function prepare_item_for_response( $item, $request ) {
226 $data = $this->add_additional_fields_to_object( $item, $request );
227 $response = rest_ensure_response( $data );
228 return $response;
229 }
230 }
231