PluginProbe
UiCore Elements – Free widgets and templates for Elementor / 1.0.8
UiCore Elements – Free widgets and templates for Elementor v1.0.8
1.3.17 1.3.16 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 All 41 releases
uicore-elements / includes / class-rest-api.php

class-rest-api.php in UiCore Elements – Free widgets and templates for Elementor 1.0.8, at includes/class-rest-api.php

99 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace UiCoreElements;
3 use \Elementor\Plugin;
4 use UiCoreElements\Helper;
5 use UiCoreElements\Utils\Contact_Form_Service;
6
7 /**
8 * REST_API Handler
9 */
10 class REST_API {
11
12 public function __construct() {
13 add_action('rest_api_init', [$this, 'register_routes']);
14 }
15
16 public function register_routes(){
17 register_rest_route('uielem/v1', '/load_more/', [
18 'methods' => 'GET',
19 'show_in_index' => true,
20 'callback' => [$this, 'settings_update'],
21 'permission_callback' => '__return_true',
22 'args' => [
23 'widget_id' => [
24 'required' => true,
25 ],
26 'widget_type' => [
27 'required' => true,
28 ],
29 'page' => [
30 'required' => false,
31 'default' => 1,
32 ],
33 'type' => [
34 'required' => false,
35 'default' => '',
36 ],
37 'term' => [
38 'required' => false,
39 'default' => '',
40 ],
41 ],
42 ]);
43 register_rest_route('uielem/v1', '/submit_actions/', [
44 'methods' => 'POST',
45 'callback' => [$this, 'process_submission'],
46 'permission_callback' => '__return_true',
47 ]);
48 }
49
50 public function check_for_permission()
51 {
52 return current_user_can('manage_options');
53 }
54
55 public function settings_update(\WP_REST_Request $request) {
56 // Identify the widget
57 $widget_id = $request->get_param('widget_id');
58 $widget_type = $request->get_param('widget_type');
59
60 // Get widget settings
61 $settings = get_transient('ui_elements_widgetdata_'.$widget_id);
62
63 $settings['__current_page'] = $request->get_param('page');
64
65 $tax = 'posts-filter_' . $request->get_param('type') . '_ids';
66 $settings[$tax] = $request->get_param('term');
67
68 // Create the element data
69 $widget = [
70 'elType' => 'widget',
71 'widgetType' => $widget_type,
72 ];
73
74 // Generate a new instance of the widget with those settings and return the markup
75 //$widget = new AdvancedPostGrid($widget, $settings); todo: discover why this method don't work
76 $widget = Plugin::instance()->elements_manager->create_element_instance($widget, $settings);
77 $widget->set_settings($settings);
78
79 $markup = $widget->render_ajax();
80
81 return [
82 'markup' => $markup,
83 'total_pages' => $widget->get_query()->max_num_pages,
84 ];
85 }
86
87 public function process_submission(\WP_REST_Request $request) {
88
89 // Get referer origin, form and widget data
90 $form_data = $request->get_params();
91 $files = $request->get_file_params();
92 $settings = Helper::get_widget_settings($form_data['page_id'], $form_data['widget_id']);
93
94 // Request the contact form service and return the response
95 $service = new Contact_Form_Service($form_data, $settings, $files);
96 $response = $service->handle();
97 return $response;
98 }
99 }