PluginProbe
The Innovative Form Builder – IvyForms / 1.5
The Innovative Form Builder – IvyForms v1.5
1.5.1 1.5 1.4.1 1.4 trunk 0.1.2 0.2 0.2.1 0.3 0.3.1 0.4 0.5 0.6 0.6.1 0.6.1-backup 0.6.1.1 0.7 0.8 0.8.1 0.8.2 0.9 0.9.1 1.0 1.1 1.1.1 All 27 releases
ivyforms / backend / src / Routes / GoogleSheets / GoogleSheets.php

GoogleSheets.php in The Innovative Form Builder – IvyForms 1.5, at backend/src/Routes/GoogleSheets/GoogleSheets.php

178 lines 7.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IvyForms\Routes\GoogleSheets;
4
5 use IvyForms\Controllers\GoogleSheets\GoogleSheetsConnectController;
6 use IvyForms\Controllers\GoogleSheets\GoogleSheetsOAuthCallbackController;
7 use IvyForms\Controllers\GoogleSheets\GoogleSheetsCreateController;
8 use IvyForms\Controllers\GoogleSheets\GoogleSheetsDeleteController;
9 use IvyForms\Controllers\GoogleSheets\GoogleSheetsDisconnectController;
10 use IvyForms\Controllers\GoogleSheets\GoogleSheetsListColumnsController;
11 use IvyForms\Controllers\GoogleSheets\GoogleSheetsListIntegrationsController;
12 use IvyForms\Controllers\GoogleSheets\GoogleSheetsListSpreadsheetsController;
13 use IvyForms\Controllers\GoogleSheets\GoogleSheetsListWorksheetsController;
14 use IvyForms\Controllers\GoogleSheets\GoogleSheetsPickerConfigController;
15 use IvyForms\Controllers\GoogleSheets\GoogleSheetsStatusController;
16 use IvyForms\Controllers\GoogleSheets\GoogleSheetsUpdateController;
17 use IvyForms\Controllers\GoogleSheets\GoogleSheetsUpdateStatusController;
18 use IvyForms\Vendor\DI\Container;
19 use WP_REST_Server;
20
21 /**
22 * Google Sheets integration REST routes.
23 */
24 class GoogleSheets
25 {
26 public static function registerRoutes(Container $container, string $namespace): void
27 {
28 $manageOptions = static function () {
29 return current_user_can('manage_options');
30 };
31
32 register_rest_route($namespace, '/integrations/google-sheets/status', [
33 'methods' => WP_REST_Server::READABLE,
34 'callback' => $container->get(GoogleSheetsStatusController::class),
35 'permission_callback' => $manageOptions,
36 ]);
37
38 register_rest_route($namespace, '/integrations/google-sheets/connect', [
39 'methods' => WP_REST_Server::CREATABLE,
40 'callback' => $container->get(GoogleSheetsConnectController::class),
41 'permission_callback' => $manageOptions,
42 ]);
43
44 register_rest_route($namespace, '/integrations/google-sheets/authorization/token', [
45 'methods' => WP_REST_Server::READABLE,
46 'callback' => [$container->get(GoogleSheetsOAuthCallbackController::class), 'handle'],
47 'permission_callback' => static function () {
48 return true;
49 },
50 'args' => [
51 'exchange' => [
52 'required' => false,
53 'type' => 'string',
54 'sanitize_callback' => 'sanitize_text_field',
55 ],
56 'state' => [
57 'required' => false,
58 'type' => 'string',
59 'sanitize_callback' => 'sanitize_text_field',
60 ],
61 'error' => [
62 'required' => false,
63 'type' => 'string',
64 'sanitize_callback' => 'sanitize_text_field',
65 ],
66 ],
67 ]);
68
69 register_rest_route($namespace, '/integrations/google-sheets/disconnect', [
70 'methods' => WP_REST_Server::CREATABLE,
71 'callback' => $container->get(GoogleSheetsDisconnectController::class),
72 'permission_callback' => $manageOptions,
73 ]);
74
75 register_rest_route($namespace, '/integrations/google-sheets/picker-config', [
76 'methods' => WP_REST_Server::READABLE,
77 'callback' => $container->get(GoogleSheetsPickerConfigController::class),
78 'permission_callback' => $manageOptions,
79 ]);
80
81 // Legacy. Spreadsheet selection uses the Picker; this Drive query is empty under drive.file.
82 register_rest_route($namespace, '/integrations/google-sheets/spreadsheets', [
83 'methods' => WP_REST_Server::READABLE,
84 'callback' => $container->get(GoogleSheetsListSpreadsheetsController::class),
85 'permission_callback' => $manageOptions,
86 ]);
87
88 register_rest_route($namespace, '/integrations/google-sheets/worksheets', [
89 'methods' => WP_REST_Server::READABLE,
90 'callback' => $container->get(GoogleSheetsListWorksheetsController::class),
91 'permission_callback' => $manageOptions,
92 'args' => [
93 'spreadsheet_id' => [
94 'required' => true,
95 'type' => 'string',
96 'sanitize_callback' => 'sanitize_text_field',
97 ],
98 ],
99 ]);
100
101 register_rest_route($namespace, '/integrations/google-sheets/columns', [
102 'methods' => WP_REST_Server::READABLE,
103 'callback' => $container->get(GoogleSheetsListColumnsController::class),
104 'permission_callback' => $manageOptions,
105 'args' => [
106 'spreadsheet_id' => [
107 'required' => true,
108 'type' => 'string',
109 'sanitize_callback' => 'sanitize_text_field',
110 ],
111 'worksheet_name' => [
112 'required' => true,
113 'type' => 'string',
114 'sanitize_callback' => 'sanitize_text_field',
115 ],
116 ],
117 ]);
118
119 register_rest_route($namespace, '/integrations/google-sheets', [
120 'methods' => WP_REST_Server::READABLE,
121 'callback' => $container->get(GoogleSheetsListIntegrationsController::class),
122 'permission_callback' => $manageOptions,
123 'args' => [
124 'form_id' => [
125 'required' => true,
126 'type' => 'integer',
127 'sanitize_callback' => 'absint',
128 ],
129 ],
130 ]);
131
132 register_rest_route($namespace, '/integrations/google-sheets/add', [
133 'methods' => WP_REST_Server::CREATABLE,
134 'callback' => $container->get(GoogleSheetsCreateController::class),
135 'permission_callback' => $manageOptions,
136 ]);
137
138 register_rest_route($namespace, '/integrations/google-sheets/update/(?P<id>\d+)', [
139 'methods' => WP_REST_Server::CREATABLE,
140 'callback' => $container->get(GoogleSheetsUpdateController::class),
141 'permission_callback' => $manageOptions,
142 'args' => [
143 'id' => [
144 'required' => true,
145 'type' => 'integer',
146 'sanitize_callback' => 'absint',
147 ],
148 ],
149 ]);
150
151 register_rest_route($namespace, '/integrations/google-sheets/update/status/(?P<id>\d+)', [
152 'methods' => WP_REST_Server::CREATABLE,
153 'callback' => $container->get(GoogleSheetsUpdateStatusController::class),
154 'permission_callback' => $manageOptions,
155 'args' => [
156 'id' => [
157 'required' => true,
158 'type' => 'integer',
159 'sanitize_callback' => 'absint',
160 ],
161 ],
162 ]);
163
164 register_rest_route($namespace, '/integrations/google-sheets/(?P<id>\d+)', [
165 'methods' => WP_REST_Server::DELETABLE,
166 'callback' => $container->get(GoogleSheetsDeleteController::class),
167 'permission_callback' => $manageOptions,
168 'args' => [
169 'id' => [
170 'required' => true,
171 'type' => 'integer',
172 'sanitize_callback' => 'absint',
173 ],
174 ],
175 ]);
176 }
177 }
178