Bugzilla – Attachment 58888 Details for
Bug 17181
Patron card creator replaces existing image when uploading image with same name
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 17181: Check for duplicate image names when uploading image to patron card creator
Bug-17181-Check-for-duplicate-image-names-when-upl.patch (text/plain), 6.97 KB, created by
Aleisha Amohia
on 2017-01-12 23:30:37 UTC
(
hide
)
Description:
Bug 17181: Check for duplicate image names when uploading image to patron card creator
Filename:
MIME Type:
Creator:
Aleisha Amohia
Created:
2017-01-12 23:30:37 UTC
Size:
6.97 KB
patch
obsolete
>From 25679cb4a2d5f4f8e5749679fcac699ce1c91c7e Mon Sep 17 00:00:00 2001 >From: Aleisha Amohia <aleishaamohia@hotmail.com> >Date: Wed, 11 Jan 2017 00:40:31 +0000 >Subject: [PATCH] Bug 17181: Check for duplicate image names when uploading > image to patron card creator > >This patch adds a check for duplicates before uploading the image. > >To test: >1) Go to Tools -> Patron card creator -> Manage images >2) If you haven't already, upload an image >3) Try to upload another image with the same image name >4) Notice the first image is replaced with the second image, with no >warning. >5) Apply patch and refresh page >6) Try to upload an image with the same image name again >7) Notice you are now warned about a duplicate image name. >8) Check that uploading an image with a unique name still works. > >Sponsored-by: Catalyst IT >Signed-off-by: Claire Gravely <claire_gravely@hotmail.com> >--- > .../prog/en/includes/patroncards-errors.inc | 3 +- > patroncards/image-manage.pl | 72 ++++++++++++++-------- > 2 files changed, 49 insertions(+), 26 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patroncards-errors.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patroncards-errors.inc >index 4d55f48..485c825 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/patroncards-errors.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patroncards-errors.inc >@@ -29,6 +29,8 @@ > Image exceeds 500KB. Please resize and import again. > [% ELSIF ( error == 303 ) %] > The database image quota currently only allows a maximum of [% image_limit %] images to be stored at any one time. Please delete one or more images to free up quota space. >+ [% ELSIF ( error == 304 ) %] >+ An image with the name '[% IMAGE_NAME %]' already exists. > [% ELSIF ( error == 401 ) %] > An error has occurred and the item(s) was not added to batch [% batch_id %]. Please have your system administrator check the error log for details. > [% ELSIF ( error == 402 ) %] >@@ -39,7 +41,6 @@ > An error has occurred and batch [% batch_id %] was not deleted. Please have your system administrator check the error log for details. > [% ELSIF ( error == 405 ) %] > An error has occurred and batch [% batch_id %] not fully de-duplicated. >- [% ELSE %] > [% END %] > </p> > </div> >diff --git a/patroncards/image-manage.pl b/patroncards/image-manage.pl >index 78f0463..eb5639c 100755 >--- a/patroncards/image-manage.pl >+++ b/patroncards/image-manage.pl >@@ -14,6 +14,7 @@ use C4::Output; > use C4::Debug; > use C4::Creators; > use C4::Patroncards; >+use Data::Dumper; > > my $cgi = CGI->new; > >@@ -47,9 +48,17 @@ my $image_limit = C4::Context->preference('ImageLimit') || ''; > my $errstr = ''; # NOTE: For error codes see error-messages.inc > > if ($op eq 'upload') { >- if (!$upload_file) { >- warn sprintf('An error occurred while attempting to upload file %s.', $source_file); >- $errstr = 301; >+ # Checking for duplicate image name >+ my $duplicate; >+ my $dbh = C4::Context->dbh; >+ my $query = "SELECT COUNT(*) FROM creator_images WHERE image_name=?"; >+ my $sth = $dbh->prepare($query); >+ $sth->execute($image_name); >+ my $count = $sth->fetchrow_arrayref; >+ if ( $count->[0] > 0 ) { >+ $duplicate = 1; >+ warn sprintf('Image name already exists.'); >+ $errstr = 304; > $template->param( > IMPORT_SUCCESSFUL => 0, > SOURCE_FILE => $source_file, >@@ -58,12 +67,10 @@ if ($op eq 'upload') { > error => $errstr, > ); > } >- else { >- my $image = Graphics::Magick->new; >- eval{$image->Read($cgi->tmpFileName($file_name));}; >- if ($@) { >- warn sprintf('An error occurred while creating the image object: %s',$@); >- $errstr = 202; >+ unless ($duplicate) { >+ if (!$upload_file) { >+ warn sprintf('An error occurred while attempting to upload file %s.', $source_file); >+ $errstr = 301; > $template->param( > IMPORT_SUCCESSFUL => 0, > SOURCE_FILE => $source_file, >@@ -73,31 +80,46 @@ if ($op eq 'upload') { > ); > } > else { >- my $errstr = ''; >- my $size = $image->Get('filesize'); >- $errstr = 302 if $size > 500000; >- $image->Set(magick => 'png'); # convert all images to png as this is a lossless format which is important for resizing operations later on >- my $err = put_image($image_name, $image->ImageToBlob()) || '0'; >- $errstr = 101 if $err == 1; >- $errstr = 303 if $err == 202; >- if ($errstr) { >+ my $image = Graphics::Magick->new; >+ eval{$image->Read($cgi->tmpFileName($file_name));}; >+ if ($@) { >+ warn sprintf('An error occurred while creating the image object: %s',$@); >+ $errstr = 202; > $template->param( > IMPORT_SUCCESSFUL => 0, > SOURCE_FILE => $source_file, > IMAGE_NAME => $image_name, > TABLE => $table, > error => $errstr, >- image_limit => $image_limit, > ); > } > else { >- $table = html_table($display_columns->{'image'}, get_image(undef, "image_id, image_name")); # refresh table data after successfully performing save operation >- $template->param( >- IMPORT_SUCCESSFUL => 1, >- SOURCE_FILE => $source_file, >- IMAGE_NAME => $image_name, >- TABLE => $table, >- ); >+ my $errstr = ''; >+ my $size = $image->Get('filesize'); >+ $errstr = 302 if $size > 500000; >+ $image->Set(magick => 'png'); # convert all images to png as this is a lossless format which is important for resizing operations later on >+ my $err = put_image($image_name, $image->ImageToBlob()) || '0'; >+ $errstr = 101 if $err == 1; >+ $errstr = 303 if $err == 202; >+ if ($errstr) { >+ $template->param( >+ IMPORT_SUCCESSFUL => 0, >+ SOURCE_FILE => $source_file, >+ IMAGE_NAME => $image_name, >+ TABLE => $table, >+ error => $errstr, >+ image_limit => $image_limit, >+ ); >+ } >+ else { >+ $table = html_table($display_columns->{'image'}, get_image(undef, "image_id, image_name")); # refresh table data after successfully performing save operation >+ $template->param( >+ IMPORT_SUCCESSFUL => 1, >+ SOURCE_FILE => $source_file, >+ IMAGE_NAME => $image_name, >+ TABLE => $table, >+ ); >+ } > } > } > } >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 17181
:
58789
|
58808
|
58888
|
58917
|
58921
|
58922