PluginProbe
WPIDE – File Manager & Code Editor / 3.2
WPIDE – File Manager & Code Editor v3.2
3.5.8 3.5.7 2.0.14 2.0.15 2.0.16 2.0.2 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1 2.2 2.3 2.3.1 2.3.2 2.4.0 2.5 2.6 3.0 3.1 3.2 3.3 3.4 All 54 releases
wpide / App / Controllers / DbManager / DatabaseController.php

DatabaseController.php in WPIDE – File Manager & Code Editor 3.2, at App/Controllers/DbManager/DatabaseController.php

305 lines 7.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPIDE\App\Controllers\DbManager;
4
5 use WPIDE\App\App;
6 use WPIDE\App\Config\Config;
7 use WPIDE\App\Controllers\FileManager\DownloadController;
8 use WPIDE\App\Kernel\Request;
9 use WPIDE\App\Kernel\Response;
10 use WPIDE\App\Kernel\StreamedResponse;
11 use WPIDE\App\Services\Auth\AuthInterface;
12 use WPIDE\App\Services\Database\Database;
13 use WPIDE\App\Services\Storage\LocalFileSystem;
14 use const WPIDE\Constants\TMP_DIR;
15
16 /**
17 *
18 */
19 class DatabaseController
20 {
21
22 /**
23 * @var AuthInterface
24 */
25 protected $auth;
26
27 /**
28 * @var Config
29 */
30 protected $config;
31
32 /**
33 * @var Database
34 */
35 protected $db;
36
37 /**
38 * @param Config $config
39 * @param AuthInterface $auth
40 * @param Database $db
41 */
42 public function __construct(Config $config, AuthInterface $auth, Database $db)
43 {
44 $this->config = $config;
45 $this->auth = $auth;
46 $this->db = $db;
47
48 }
49
50 /**
51 * @param Response $response
52 * @return void
53 */
54 public function getTables(Response $response)
55 {
56 return $response->json($this->db->getTables());
57 }
58
59 /**
60 * @throws \DI\DependencyException
61 * @throws \DI\NotFoundException
62 */
63 public function getTableStructureRows(Request $request, Response $response)
64 {
65
66 $table = $request->input('table');
67
68 if(empty($table)) {
69 return $response->json(__('Missing table name!', 'wpide'), 422);
70 }
71
72 $content = $this->db->getTableStructureRows($table);
73
74 return $response->json($content);
75 }
76
77 /**
78 * @throws \DI\DependencyException
79 * @throws \DI\NotFoundException
80 */
81 public function getTableRows(Request $request, Response $response)
82 {
83
84 $table = $request->input('table');
85 $page = $request->input('page', 1);
86 $per_page = $request->input('per_page', 20);
87 $search_value = $request->input('search_value');
88 $search_field = $request->input('search_field');
89
90 if(empty($table)) {
91 return $response->json(__('Missing table name!', 'wpide'), 422);
92 }
93
94 $content = $this->db->getTableRows($table, [
95 'page' => $page,
96 'per_page' => $per_page,
97 'search_value' => $search_value,
98 'search_field' => $search_field
99 ]);
100
101 return $response->json($content);
102 }
103
104 /**
105 * @param Request $request
106 * @param Response $response
107 * @return void
108 */
109 public function saveTableRow(Request $request, Response $response)
110 {
111 $table = $request->input('table');
112 $id = $request->input('id');
113 $row = (array) $request->input('row');
114 $is_new = (bool) $request->input('is_new');
115 $is_structure = (bool) $request->input('is_structure');
116
117 if(empty($table)) {
118 return $response->json(__('Missing table name!', 'wpide'), 422);
119 }
120
121 if(isset($row["is_new_row"])) {
122 unset($row["is_new_row"]);
123 }
124 if(isset($row[""])) {
125 unset($row[""]);
126 }
127
128 try {
129 $id = $this->db->saveTableRow($table, $id, $row, $is_new, $is_structure);
130 }catch (\Throwable $error) {
131 return $response->json($error->getMessage(), 500);
132 }
133
134 return $response->json([
135 'success' => $id !== false,
136 'id' => $id
137 ]);
138 }
139
140 /**
141 * @param Request $request
142 * @param Response $response
143 * @return void
144 */
145 public function deleteTableRows(Request $request, Response $response)
146 {
147 $table = $request->input('table');
148 $ids = $request->input('ids');
149 $is_structure = (bool) $request->input('is_structure');
150
151 if(empty($table)) {
152 return $response->json(__('Missing table name!', 'wpide'), 422);
153 }
154
155 if(empty($ids)) {
156 return $response->json(__('Missing primary key value(s)!', 'wpide'), 422);
157 }
158
159 try {
160 $success = $this->db->deleteTableRows($table, $ids, $is_structure);
161 }catch (\Throwable $error) {
162 return $response->json($error->getMessage(), 500);
163 }
164
165 return $response->json([
166 'success' => $success
167 ]);
168 }
169
170 /**
171 * @param Request $request
172 * @param Response $response
173 * @return void
174 */
175 public function createTable(Request $request, Response $response)
176 {
177 $table = $request->input('table');
178 $table = str_replace(" ", "_", sanitize_text_field($table));
179
180 if(empty($table)) {
181 return $response->json(__('Missing table name!', 'wpide'), 422);
182 }
183
184 try {
185 $success = $this->db->createTable($table);
186 }catch (\Throwable $error) {
187 return $response->json($error->getMessage(), 500);
188 }
189
190 return $response->json([
191 'success' => $success,
192 'table' => $table
193 ]);
194 }
195
196 /**
197 * @param Request $request
198 * @param Response $response
199 * @return void
200 */
201 public function dropTable(Request $request, Response $response)
202 {
203 $table = $request->input('table');
204
205 if(empty($table)) {
206 return $response->json(__('Missing table name!', 'wpide'), 422);
207 }
208
209 try {
210 $success = $this->db->dropTable($table);
211 }catch (\Throwable $error) {
212 return $response->json($error->getMessage(), 500);
213 }
214
215 return $response->json([
216 'success' => $success
217 ]);
218 }
219
220 /**
221 * @param Request $request
222 * @param Response $response
223 * @return void
224 */
225 public function emptyTable(Request $request, Response $response)
226 {
227 $table = $request->input('table');
228
229 if(empty($table)) {
230 return $response->json(__('Missing table name!', 'wpide'), 422);
231 }
232
233 try {
234 $success = $this->db->emptyTable($table);
235 }catch (\Throwable $error) {
236 return $response->json($error->getMessage(), 500);
237 }
238
239 return $response->json([
240 'success' => $success
241 ]);
242 }
243
244 /**
245 * @param Request $request
246 * @param Response $response
247 * @param StreamedResponse $streamedResponse
248 * @return void
249 */
250 public function exportTable(Request $request, Response $response, StreamedResponse $streamedResponse)
251 {
252 $table = $request->input('table');
253
254 if(empty($table)) {
255 return $response->json(__('Missing table name!', 'wpide'), 422);
256 }
257
258 try {
259
260 $filename = $this->db->exportTable($table);
261 $storage = LocalFileSystem::load(TMP_DIR);
262
263 $file = $storage->readStream($filename);
264
265 $response = App::instance()->call([DownloadController::class, 'downloadFile'], [$file, $request, $streamedResponse]);
266
267 $storage->deleteFile($filename);
268
269 return $response;
270
271 }catch (\Throwable $error) {
272 return $response->json($error->getMessage(), 500);
273 }
274
275 }
276
277 /**
278 * @param Request $request
279 * @param Response $response
280 * @param StreamedResponse $streamedResponse
281 * @return void
282 */
283 public function exportDatabase(Request $request, Response $response, StreamedResponse $streamedResponse)
284 {
285
286 try {
287
288 $filename = $this->db->exportDatabase();
289 $storage = LocalFileSystem::load(TMP_DIR);
290
291 $file = $storage->readStream($filename);
292
293 $response = App::instance()->call([DownloadController::class, 'downloadFile'], [$file, $request, $streamedResponse]);
294
295 $storage->deleteFile($filename);
296
297 return $response;
298
299 }catch (\Throwable $error) {
300 return $response->json($error->getMessage(), 500);
301 }
302
303 }
304 }
305