PluginProbe
The Innovative Form Builder – IvyForms / 1.4
The Innovative Form Builder – IvyForms v1.4
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.4, at backend/src/Routes/GoogleSheets/GoogleSheets.php

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