PluginProbe
WPIDE – File Manager & Code Editor / 3.1
WPIDE – File Manager & Code Editor v3.1
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.1, at App/Controllers/FileManager/ImageController.php

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