From e62ddbdc19678724e8b01ed4402fed15fa6fadd4 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Thu, 10 Sep 2020 15:46:10 +0200 Subject: [PATCH] LSformElement::image: fix error on non-AJAX form when no file is submited --- .../class/class.LSformElement_image.php | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/includes/class/class.LSformElement_image.php b/src/includes/class/class.LSformElement_image.php index 0a8a0397..ee36519c 100644 --- a/src/includes/class/class.LSformElement_image.php +++ b/src/includes/class/class.LSformElement_image.php @@ -97,12 +97,11 @@ class LSformElement_image extends LSformElement { return true; } - if (isset($_FILES[$this -> name])) { + if ($this -> checkIsInPostData()) { if (isset($_FILES[$this -> name]['tmp_name']) && is_uploaded_file($_FILES[$this -> name]['tmp_name'])) { $fp = fopen($_FILES[$this -> name]['tmp_name'], "r"); - $buf = fread($fp, filesize($_FILES[$this -> name]['tmp_name'])); + $return[$this -> name][0] = fread($fp, filesize($_FILES[$this -> name]['tmp_name'])); fclose($fp); - $return[$this -> name][0] = $buf; } else { self :: log_debug('LSformElement_image('.$this->name.')->getPostData(): uploaded tmp file not found => '.varDump($_FILES[$this -> name])); @@ -123,6 +122,21 @@ class LSformElement_image extends LSformElement { return true; } + /** + * Check if file is present in POST data + * + * @return boolean True if file is in POST data, false otherwise + */ + public function checkIsInPostData() { + // Check if present in $_FILES + if (!isset($_FILES[$this -> name]) || !is_array($_FILES[$this -> name])) + return false; + // Check if a file is submited + if ($_FILES[$this -> name]['error'] == UPLOAD_ERR_NO_FILE) + return false; + return true; + } + /** * Get file upload error message *