From fc2e969d770f37cb65e4d5bab680959c998125db Mon Sep 17 00:00:00 2001 From: stasbilay02 Date: Tue, 10 Sep 2024 11:39:45 +0300 Subject: [PATCH] some fix --- kernel/FileUpload.php | 38 ++++++++++-------- .../menu/controllers/MenuController.php | 4 +- kernel/modules/menu/views/form.php | 2 +- .../bb/71bbe61dded4fb0ba8269540c6989974.png | Bin 18476 -> 0 bytes .../a6/c7a63f602e0ebb44dff35819ab48436a.png} | Bin 5 files changed, 24 insertions(+), 20 deletions(-) delete mode 100644 resources/upload/71/bb/71bbe61dded4fb0ba8269540c6989974.png rename resources/upload/{5c/40/5c4044ac0df8411aaf0dbdb41846dc29.png => c7/a6/c7a63f602e0ebb44dff35819ab48436a.png} (100%) diff --git a/kernel/FileUpload.php b/kernel/FileUpload.php index 1f72ec6..a33302e 100644 --- a/kernel/FileUpload.php +++ b/kernel/FileUpload.php @@ -12,10 +12,10 @@ class FileUpload public string $fileType; public array $fileNameCmps; public string $fileExtension; - public string $newFileName; - public array $allowedFileExtensions = ['jpg', 'gif', 'png']; +// public string $newFileName; + public array $allowedFileExtensions; - public function __construct(array $file) + public function __construct(array $file, array $extensions) { $this->fileTmpPath = $file['tmp_name']; $this->fileName = $file['name']; @@ -23,28 +23,32 @@ class FileUpload $this->fileType = $file['type']; $this->fileNameCmps = explode('.', $this->fileName); $this->fileExtension = strtolower(end($this->fileNameCmps)); + $this->allowedFileExtensions = $extensions; } - public function setNewFileName(): void - { - $this->newFileName = md5(time() . $this->fileName) . '.' . $this->fileExtension; - } +// public function setNewFileName(): void +// { +// $this->newFileName = md5(time() . $this->fileName) . '.' . $this->fileExtension; +// } - public function checkExtension(): void - { +// public function checkExtension(): bool +// { +// if (in_array($this->fileExtension, $this->allowedFileExtensions)) { +// return true; +// } +// return false; +// } - } - - public function upload(): void + public function upload() { - $this->newFileName = md5(time() . $this->fileName) . '.' . $this->fileExtension; + $newFileName = md5(time() . $this->fileName) . '.' . $this->fileExtension; if (in_array($this->fileExtension, $this->allowedFileExtensions)) { - mkdir('./resources/upload/' . mb_substr($this->newFileName, 0, 2) . '/' . mb_substr($this->newFileName, 2, 2) . '/', 0777, true); - $uploadFileDir = './resources/upload/' . mb_substr($this->newFileName, 0, 2) . '/' . mb_substr($this->newFileName, 2, 2) . '/'; - $dest_path = $uploadFileDir . $this->newFileName; + mkdir('./resources/upload/' . mb_substr($newFileName, 0, 2) . '/' . mb_substr($newFileName, 2, 2) . '/', 0777, true); + $uploadFileDir = './resources/upload/' . mb_substr($newFileName, 0, 2) . '/' . mb_substr($newFileName, 2, 2) . '/'; + $dest_path = $uploadFileDir . $newFileName; move_uploaded_file($this->fileTmpPath, $dest_path); } else { - echo "Ниченр не получилочь :("; + return false; } } diff --git a/kernel/modules/menu/controllers/MenuController.php b/kernel/modules/menu/controllers/MenuController.php index 8075d3d..2417014 100644 --- a/kernel/modules/menu/controllers/MenuController.php +++ b/kernel/modules/menu/controllers/MenuController.php @@ -34,7 +34,7 @@ class MenuController extends AdminController #[NoReturn] public function actionAdd(): void { if (isset($_FILES['icon_file']) && $_FILES['icon_file']['error'] === UPLOAD_ERR_OK) { - $file = new FileUpload($_FILES['icon_file']); + $file = new FileUpload($_FILES['icon_file'], ['jpg', 'jpeg', 'png']); $file->upload(); } @@ -97,7 +97,7 @@ class MenuController extends AdminController throw new Exception(message: "The menu item not found"); } if (isset($_FILES['icon_file']) && $_FILES['icon_file']['error'] === UPLOAD_ERR_OK) { - $file = new FileUpload($_FILES['icon_file']); + $file = new FileUpload($_FILES['icon_file'], ['jpg', 'jpeg', 'png']); $file->upload(); } $menuForm = new CreateMenuForm(); diff --git a/kernel/modules/menu/views/form.php b/kernel/modules/menu/views/form.php index dc35eef..222a1b3 100644 --- a/kernel/modules/menu/views/form.php +++ b/kernel/modules/menu/views/form.php @@ -6,7 +6,7 @@ use kernel\models\Menu; $form = new \itguild\forms\ActiveForm(); -$form->beginForm(isset($model) ? "/admin/settings/menu/edit/" . $model->id : "/admin/settings/menu"); +$form->beginForm(isset($model) ? "/admin/settings/menu/edit/" . $model->id : "/admin/settings/menu", 'multipart/form-data'); $form->field(class: \itguild\forms\inputs\Select::class, name: "parent_id", params: [ 'class' => "form-control", diff --git a/resources/upload/71/bb/71bbe61dded4fb0ba8269540c6989974.png b/resources/upload/71/bb/71bbe61dded4fb0ba8269540c6989974.png deleted file mode 100644 index aa15e6c125219872b1fe25c89e877ff1906b2cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18476 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 a>Hi1ntKd+3&i~;60000