diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ff7c5de..1022095f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.3.1 +## 03/31/2017 + +1. [](#bugfix) + * Fix for `Undefined index: file_path` error with Direct Install [#1043](https://github.com/getgrav/grav-plugin-admin/issues/1043) + # v1.3.0 ## 03/31/2017 diff --git a/classes/admincontroller.php b/classes/admincontroller.php index 3d9eeecb..967bb0ab 100644 --- a/classes/admincontroller.php +++ b/classes/admincontroller.php @@ -2167,12 +2167,33 @@ class AdminController extends AdminBaseController */ protected function taskDirectInstall() { - $file_path = $this->data['file_path']; + $file_path = isset($this->data['file_path']) ? $this->data['file_path'] : null ; if (isset($_FILES['uploaded_file'])) { + + // Check $_FILES['file']['error'] value. + switch ($_FILES['uploaded_file']['error']) { + case UPLOAD_ERR_OK: + break; + case UPLOAD_ERR_NO_FILE: + $this->admin->setMessage($this->admin->translate('PLUGIN_ADMIN.NO_FILES_SENT'), 'error'); + return false; + case UPLOAD_ERR_INI_SIZE: + case UPLOAD_ERR_FORM_SIZE: + $this->admin->setMessage($this->admin->translate('PLUGIN_ADMIN.EXCEEDED_FILESIZE_LIMIT'), 'error'); + return false; + case UPLOAD_ERR_NO_TMP_DIR: + $this->admin->setMessage($this->admin->translate('PLUGIN_ADMIN.UPLOAD_ERR_NO_TMP_DIR'), 'error'); + return false; + default: + $this->admin->setMessage($this->admin->translate('PLUGIN_ADMIN.UNKNOWN_ERRORS'), 'error'); + return false; + } + $file_path = $_FILES['uploaded_file']['tmp_name']; } + $result = Gpm::directInstall($file_path); if ($result === true) {