From dc90bb6227f487d83c71dd7fb293bb4ad55bfaff Mon Sep 17 00:00:00 2001
From: Jerome Nadaud
Date: Tue, 26 Nov 2013 15:46:21 +0100
Subject: [PATCH] // Force clearstatcache on product image upload
---
.../products/helpers/uploader/ajax.tpl | 38 +++++++++++--------
.../template/helpers/uploader/ajax.tpl | 33 +++++++++-------
classes/Uploader.php | 9 ++---
classes/helper/HelperImageUploader.php | 5 ++-
controllers/admin/AdminProductsController.php | 3 ++
5 files changed, 54 insertions(+), 34 deletions(-)
diff --git a/admin-dev/themes/default/template/controllers/products/helpers/uploader/ajax.tpl b/admin-dev/themes/default/template/controllers/products/helpers/uploader/ajax.tpl
index a80ab4b6b..886d26cc8 100644
--- a/admin-dev/themes/default/template/controllers/products/helpers/uploader/ajax.tpl
+++ b/admin-dev/themes/default/template/controllers/products/helpers/uploader/ajax.tpl
@@ -88,26 +88,34 @@
if (data.result) {
if (typeof data.result.{$name} !== 'undefined') {
for (var i=0; i'+data.result.{$name}[i].name+' : '+data.result.{$name}[i].error).parent().show();
}
+ else
+ {
+ $(data.context).appendTo($('#{$id}-success'));
+ $('#{$id}-success').parent().show();
+
+ if (data.result.{$name}[i] !== null && data.result.{$name}[i].status == 'ok')
+ {
+ var response = data.result.{$name}[i];
+ var cover = "icon-check-empty";
+
+ if (response.cover == "1")
+ cover = "icon-check-sign";
+
+ imageLine(response.id, response.path, response.position, cover, response.shops,
+ response.legend[{$default_language|intval}])
+ $("#countImage").html(parseInt($("#countImage").html()) + 1);
+ $("#img" + id).remove();
+ $("#imageTable").tableDnDUpdate();
+ }
+ }
+
}
}
$(data.context).find('button').remove();
- $(data.context).appendTo($('#{$id}-success'));
- $('#{$id}-success').parent().show();
}
},
}).on('fileuploadalways', function (e, data) {
diff --git a/admin-dev/themes/default/template/helpers/uploader/ajax.tpl b/admin-dev/themes/default/template/helpers/uploader/ajax.tpl
index edec4e359..abdaf6c6a 100644
--- a/admin-dev/themes/default/template/helpers/uploader/ajax.tpl
+++ b/admin-dev/themes/default/template/helpers/uploader/ajax.tpl
@@ -122,25 +122,32 @@
if (typeof data.result.{$name} !== 'undefined') {
for (var i=0; i'+data.result.{$name}[i].image+'
';
-
- if (typeof data.result.{$name}[i].delete_url !== 'undefined') {
- template += '';
+ template += '
'+data.result.{$name}[i].image+'
';
+
+ if (typeof data.result.{$name}[i].delete_url !== 'undefined')
+ template += '
{l s='Delete'}
';
+
+ template += '
';
+ $('#{$id}-images-thumbnails').html($('#{$id}-images-thumbnails').html()+template);
+ $('#{$id}-images-thumbnails').parent().show();
+ }
}
}
}
}
- $(data.context).find('button').remove();
- $(data.context).appendTo($('#{$id}-success'));
- $('#{$id}-success').parent().show();
+ $(data.context).find('button').remove();
}
},
}).on('fileuploadalways', function (e, data) {
diff --git a/classes/Uploader.php b/classes/Uploader.php
index c36036eea..23dff1196 100644
--- a/classes/Uploader.php
+++ b/classes/Uploader.php
@@ -168,25 +168,24 @@ class UploaderCore
file_put_contents($file_path, fopen('php://input', 'r'));
}
- $file_size = $this->_getFileSize($file_path);
+ $file_size = $this->_getFileSize($file_path, true);
if ($file_size === $file['size'])
{
$file['save_path'] = $file_path;
- //TODO do image processing
}
else
{
$file['size'] = $file_size;
unlink($file_path);
- $file['error'] = 'abort';
+ $file['error'] = Tools::displayError('Server file size is different from local file size');
}
}
-
+
return $file;
}
- protected function validate($file)
+ protected function validate(&$file)
{
$post_max_size = $this->getPostMaxSizeBytes();
diff --git a/classes/helper/HelperImageUploader.php b/classes/helper/HelperImageUploader.php
index 708d420f7..829894630 100644
--- a/classes/helper/HelperImageUploader.php
+++ b/classes/helper/HelperImageUploader.php
@@ -42,7 +42,7 @@ class HelperImageUploaderCore extends HelperUploader
return tempnam($this->getSavePath(), $this->getUniqueFileName());
}
- protected function validate($file)
+ protected function validate(&$file)
{
$post_max_size = $this->getPostMaxSizeBytes();
@@ -62,7 +62,10 @@ class HelperImageUploaderCore extends HelperUploader
}
if ($error = ImageManager::validateUpload($file, Tools::getMaxUploadSize($this->getMaxSize())))
+ {
$file['error'] = $error;
+ return false;
+ }
if ($file['size'] > $this->getMaxSize())
{
diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php
index 34ef4b96e..f5b5e522e 100644
--- a/controllers/admin/AdminProductsController.php
+++ b/controllers/admin/AdminProductsController.php
@@ -3648,6 +3648,9 @@ class AdminProductsControllerCore extends AdminController
else
$image->cover = 0;
+ if (isset($file['error']))
+ continue;
+
if (!$image->add())
$file['error'] = Tools::displayError('Error while creating additional image');
else