[0002781] Improved error diagnostic during files upload.
[fa-stable.git] / admin / attachments.php
index 9540327a47a2aab99751be678356a287e9e4774b..bd567bf23684dfee55970b98789a274138135d92 100644 (file)
@@ -69,7 +69,7 @@ if ($download_id != -1)
 }
 
 $js = "";
-if ($use_popup_windows)
+if ($SysPrefs->use_popup_windows)
        $js .= get_js_open_window(800, 500);
 page(_($help_context = "Attach Documents"), false, false, "", $js);
 
@@ -84,8 +84,14 @@ if ($Mode == 'ADD_ITEM' || $Mode == 'UPDATE_ITEM')
 {
        if (!transaction_exists($_POST['filterType'], $_POST['trans_no']))
                display_error(_("Selected transaction does not exists."));
-       elseif ($Mode == 'ADD_ITEM' && (!isset($_FILES['filename']) || $_FILES['filename']['size'] == 0))
+       elseif ($Mode == 'ADD_ITEM' && !isset($_FILES['filename']))
                display_error(_("Select attachment file."));
+       elseif ($Mode == 'ADD_ITEM' && ($_FILES['filename']['error'] > 0)) {
+    if ($_FILES['filename']['error'] == UPLOAD_ERR_INI_SIZE) 
+                 display_error(_("The file size is over the maximum allowed."));
+    else
+                 display_error(_("Select attachment file."));
+  }
        else {
                //$content = base64_encode(file_get_contents($_FILES['filename']['tmp_name']));
                $tmpname = $_FILES['filename']['tmp_name'];
@@ -94,7 +100,7 @@ if ($Mode == 'ADD_ITEM' || $Mode == 'UPDATE_ITEM')
                if (!file_exists($dir))
                {
                        mkdir ($dir,0777);
-                       $index_file = "<?php\nheader(\"Location: ../index.php\");\n?>";
+                       $index_file = "<?php\nheader(\"Location: ../index.php\");\n";
                        $fp = fopen($dir."/index.php", "w");
                        fwrite($fp, $index_file);
                        fclose($fp);
@@ -108,7 +114,10 @@ if ($Mode == 'ADD_ITEM' || $Mode == 'UPDATE_ITEM')
                // protect against directory traversal
                if ($Mode == 'UPDATE_ITEM')
                {
-                       $unique_name = preg_replace('/[^a-zA-Z0-9.\-_]/', '', $_POST['unique_name']);
+                   $row = get_attachment($selected_id);
+                   if ($row['filename'] == "")
+                       exit();
+                       $unique_name = $row['unique_name'];
                        if ($filename && file_exists($dir."/".$unique_name))
                                unlink($dir."/".$unique_name);
                }
@@ -255,4 +264,3 @@ end_form();
 
 end_page();
 
-?>