From 8922bb4bc2799b8554723768065edd9df2b2af13 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Tue, 17 Jan 2023 02:38:00 +0100 Subject: [PATCH] word/edit: retain json columns to compare image source Prevent downloads of unaltered images. --- word/edit.plp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/word/edit.plp b/word/edit.plp index 2968642..dcb4d3d 100644 --- a/word/edit.plp +++ b/word/edit.plp @@ -153,6 +153,7 @@ elsif (defined $post{form}) {{ my $val = $colinfo->{-multiple} && @val ? \@val : $val[-1]; if (my $jsoncol = $colinfo->{-json}) { $row->{$jsoncol}->{$col} = $val; # hash will be encoded + ref $_ eq 'HASH' or $_ = decode_json($_) for $replace->{$jsoncol} // (); } else { $row->{$col} = $val; @@ -162,7 +163,7 @@ elsif (defined $post{form}) {{ while (my ($col, $val) = each %{$row}) { # convert json subcolumns to database string ref $val eq 'HASH' or next; - $val = { %{decode_json($_)}, %{$val} } for $replace->{$col} // (); # preserve unknown + $val = { %{$_}, %{$val} } for $replace->{$col} // (); # preserve unknown defined $val->{$_} or delete $val->{$_} for keys %{$val}; # delete emptied $row->{$col} = encode_json($val); } @@ -214,13 +215,13 @@ elsif (defined $post{form}) {{ require Shiar_Sheet::ImagePrep; my $image = Shiar_Sheet::ImagePrep->new($wordcol{source}->{-src}->($row)); my $reimage = eval { - ($imagecol->{source} // '') ne ($replace->{source} // '') or return; + ($imagecol->{source} // '') ne ($replace->{image}->{source} // '') or return; $image->download($imagecol->{source}); }; !$@ or Alert(["Source image not found", $@]); - $reimage ||= $row->{image} ~~ $replace->{image}; # different source - $reimage ||= $row->{cover} ~~ $replace->{cover}; # resize + $reimage ||= $row->{convert} ~~ $replace->{image}->{convert}; # different + $reimage ||= $row->{cover} ~~ $replace->{image}->{cover}; # resize $reimage++ if $fields{rethumb}; # force refresh if ($reimage) { eval { -- 2.30.0