Skip to content

Commit 41fc0b7

Browse files
committed
New folder function for media
1 parent 516ebc1 commit 41fc0b7

File tree

1 file changed

+77
-18
lines changed

1 file changed

+77
-18
lines changed

admin/controller/media/media.php

+77-18
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
use function Vvveb\__;
2626
use Vvveb\Controller\Base;
27+
use Vvveb\Sql\media_ContentSQL;
2728
use function Vvveb\fileUploadErrMessage;
2829
use function Vvveb\sanitizeFileName;
2930

@@ -60,23 +61,26 @@ function index() {
6061
$admin_path = \Vvveb\adminPath();
6162
$controllerPath = $admin_path . 'index.php?module=media/media';
6263

63-
$this->view->scanUrl = "$controllerPath&action=scan";
64-
$this->view->uploadUrl = "$controllerPath&action=upload";
65-
$this->view->deleteUrl = "$controllerPath&action=delete";
66-
$this->view->renameUrl = "$controllerPath&action=rename";
64+
$this->view->mediaUrl = $controllerPath;
65+
$this->view->scanUrl = "$controllerPath&action=scan";
66+
$this->view->uploadUrl = "$controllerPath&action=upload";
67+
$this->view->deleteUrl = "$controllerPath&action=delete";
68+
$this->view->renameUrl = "$controllerPath&action=rename";
69+
$this->view->mediaContentUrl = "$controllerPath&action=mediaContent";
6770
}
6871

6972
function upload() {
70-
$path = sanitizeFileName($this->request->post['mediaPath']);
7173
$file = $this->request->files['file'] ?? [];
72-
$fileName = sanitizeFileName($file['name']);
73-
$path = preg_replace('@^[\\\/]public[\\\/]media|^[\\\/]media|^[\\\/]public@', '', $path);
74-
$extension = strtolower(substr($fileName, strrpos($fileName, '.') + 1));
7574
$success = false;
7675
$return = '';
7776
$message = '';
7877

7978
if ($file) {
79+
$path = sanitizeFileName($this->request->post['mediaPath'] ?? '');
80+
$fileName = sanitizeFileName($file['name']);
81+
$path = preg_replace('@^[\\\/]public[\\\/]media|^[\\\/]media|^[\\\/]public@', '', $path);
82+
$extension = strtolower(substr($fileName, strrpos($fileName, '.') + 1));
83+
8084
if ($file['error'] == UPLOAD_ERR_OK) {
8185
$success = true;
8286
} else {
@@ -127,10 +131,8 @@ function upload() {
127131
function delete() {
128132
$file = sanitizeFileName($this->request->post['file']);
129133
$themeFolder = DIR_MEDIA;
130-
//echo $themeFolder . DS . $file;
131-
header('Content-type: application/json; charset=utf-8');
132134

133-
if (unlink($themeFolder . DS . $file)) {
135+
if ($file && @unlink($themeFolder . DS . $file)) {
134136
$message = ['success' => true, 'message' => __('File deleted!')];
135137
} else {
136138
$message = ['success' => false, 'message' => __('Error deleting file!')];
@@ -144,11 +146,10 @@ function rename() {
144146
$file = sanitizeFileName($this->request->post['file']);
145147
$newfile = sanitizeFileName($this->request->post['newfile']);
146148
$duplicate = $this->request->post['duplicate'] ?? false;
147-
$themeFolder = DIR_MEDIA;
149+
$dirMedia = DIR_MEDIA;
148150

149-
header('Content-type: application/json; charset=utf-8');
150-
$currentFile = $themeFolder . DS . $file;
151-
$targetFile = $themeFolder . DS . $newfile;
151+
$currentFile = $dirMedia . DS . $file;
152+
$targetFile = $dirMedia . DS . $newfile;
152153

153154
if ($duplicate) {
154155
if (copy($currentFile, $targetFile)) {
@@ -168,6 +169,64 @@ function rename() {
168169
$this->response->output($message);
169170
}
170171

172+
function newFolder() {
173+
$folder = sanitizeFileName($this->request->post['folder']);
174+
$path = sanitizeFileName($this->request->post['path']);
175+
$success = false;
176+
177+
$dirMedia = DIR_MEDIA;
178+
if (is_dir($dirMedia . $path)) {
179+
if (@mkdir($dirMedia . $path . DS . $folder)) {
180+
$message = __('Folder created!');
181+
$success = true;
182+
} else {
183+
$message = __('Error creating folder!');
184+
}
185+
} else {
186+
$message = __('Path does not exist!');
187+
}
188+
189+
$message = ['success' => $success, 'message' => $message];
190+
191+
$this->response->setType('json');
192+
$this->response->output($message);
193+
}
194+
195+
function mediaContentSave() {
196+
$file = sanitizeFileName($this->request->post['file']);
197+
$content = ($this->request->post['media_content']);
198+
199+
$mediaContent = new media_ContentSQL();
200+
$media = $mediaContent->get(['file' => $file] + $this->global);
201+
if ($media) {
202+
//var_dump(['media_id' => $media['media_id'], 'media_content' => $content]);
203+
$result = $mediaContent->edit(['media_id' => $media['media_id'], 'media_content' => $content, 'media' => []]);
204+
} else {
205+
//var_dump(['media' => ['file' => $file], 'media_content' => $content]);
206+
$result = $mediaContent->add(['media' => ['file' => $file], 'media_content' => $content]);
207+
}
208+
209+
if ($result) {
210+
$message = ['success' => true, 'message' => __('Saved!')];
211+
} else {
212+
$message = ['success' => false, 'message' => __('Error saving!')];
213+
}
214+
215+
$this->response->setType('json');
216+
$this->response->output($message);
217+
}
218+
219+
function mediaContent() {
220+
$file = sanitizeFileName($this->request->get['file']);
221+
$themeFolder = DIR_MEDIA;
222+
223+
$mediaContent = new media_ContentSQL();
224+
$result = $mediaContent->getContent(['file' => $file] + $this->global);
225+
226+
$this->response->setType('json');
227+
$this->response->output($result ?? []);
228+
}
229+
171230
function scan() {
172231
$type = $this->request->get['type'] ?? 'public';
173232
$scandir = $this->dirForType($type);
@@ -183,10 +242,10 @@ function scan() {
183242
// Is there actually such a folder/file?
184243
185244
if (file_exists($dir)) {
186-
$files = @scandir($dir);
245+
$listdir = @scandir($dir);
187246

188-
if ($files) {
189-
foreach ($files as $f) {
247+
if ($listdir) {
248+
foreach ($listdir as $f) {
190249
if (! $f || $f[0] == '.' || $f == 'node_modules' || $f == 'vendor') {
191250
continue; // Ignore hidden files
192251
}

0 commit comments

Comments
 (0)