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 / FileManager / ImageController.php

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

162 lines 3.6 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\FileManager;
4
5 use WPIDE\App\App;
6 use WPIDE\App\Config\Config;
7 use WPIDE\App\Helpers\ImageStateData;
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\Storage\Filesystem;
13
14 /**
15 *
16 */
17 class ImageController
18 {
19 /**
20 * @var AuthInterface
21 */
22 protected $auth;
23
24 /**
25 * @var Mixed
26 */
27 protected $user;
28
29 /**
30 * @var Config
31 */
32 protected $config;
33
34 /**
35 * @var Filesystem
36 */
37 protected $storage;
38
39 /**
40 * @param Config $config
41 * @param AuthInterface $auth
42 * @param Filesystem $storage
43 */
44 public function __construct(Config $config, AuthInterface $auth, Filesystem $storage)
45 {
46 $this->config = $config;
47 $this->auth = $auth;
48
49 $this->user = $this->auth->user() ?: $this->auth->getGuest();
50
51 $this->storage = $storage;
52 $this->storage->setPathPrefix($this->user->getHomeDir());
53 }
54
55 /**
56 * @param Request $request
57 * @param Response $response
58 * @return void
59 */
60 public function stateExists(Request $request, Response $response)
61 {
62
63 $id = $request->input('id');
64
65 $exists = ImageStateData::stateFileExists($id);
66
67 return $response->json([
68 'exists' => $exists
69 ]);
70
71 }
72
73 /**
74 * @param Request $request
75 * @param Response $response
76 * @return void
77 */
78 public function getState(Request $request, Response $response)
79 {
80
81 $id = $request->input('id');
82
83 $state = null;
84
85 try {
86 $file = ImageStateData::getState($id);
87 $state = $file['contents'];
88 } catch (\Exception $e) {}
89
90 $response->json([
91 'state' => json_decode($state)
92 ]);
93
94 }
95
96 /**
97 * @param Request $request
98 * @param Response $response
99 * @param StreamedResponse $streamedResponse
100 * @return void
101 */
102 public function download(Request $request, Response $response, StreamedResponse $streamedResponse)
103 {
104
105 $id = $request->input('id');
106 $originalPath = $request->input('path');
107 $ext = $request->input('ext');
108 $stateImageName = $id.'.'.$ext;
109
110 // if not, get state image file
111
112 try {
113 $file = ImageStateData::getImage($stateImageName);
114 } catch (\Exception $e) {}
115
116 // if not found, get original file
117 if(empty($file)) {
118 try {
119 // if not, get original image
120 $file = $this->storage->readStream((string) base64_decode($originalPath));
121 } catch (\Exception $e) {}
122 }
123
124 if(empty($file)) {
125 return $response->redirect('/');
126 }
127
128 return App::instance()->call([DownloadController::class, 'downloadFile'], [$file, $request, $streamedResponse]);
129
130 }
131
132 /**
133 * @param Request $request
134 * @param Response $response
135 * @return void
136 */
137 public function revert(Request $request, Response $response)
138 {
139
140 $item = $request->input('item');
141 $stateImageName = $item->id.'.'.$item->ext;
142
143 try {
144
145 $file = ImageStateData::getImage($stateImageName);
146 $this->storage->storeStream($item->dir, $item->name, $file['stream'], true);
147 ImageStateData::deleteState($item->id);
148
149 } catch (\Exception $e) {
150
151 return $response->json([
152 'success' => false
153 ]);
154 }
155
156 $response->json([
157 'success' => true
158 ]);
159 }
160
161 }
162