From cf03946633d51c491eab0a98d8bd29a8734d0c6f Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Wed, 20 Nov 2019 06:10:21 -0500 Subject: [PATCH] Fix issue processwire/processwire-issues#1033 --- wire/core/PageimageVariations.php | 34 ++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/wire/core/PageimageVariations.php b/wire/core/PageimageVariations.php index 124dc71a..fe3188a5 100644 --- a/wire/core/PageimageVariations.php +++ b/wire/core/PageimageVariations.php @@ -590,10 +590,12 @@ class PageimageVariations extends Wire implements \IteratorAggregate, \Countable $variations = $this->find($options); if(!empty($options['dryrun'])) $defaults['dryRun'] = $options['dryrun']; // case insurance $options = array_merge($defaults, $options); // placement after getVariations() intended - $deletedFiles = array(); /** @var WireFileTools $files */ $files = $this->wire('files'); + $deletedFiles = array(); + + $this->removeExtras($this->pageimage, $deletedFiles, $options); foreach($variations as $variation) { /** @var Pageimage $variation */ @@ -605,19 +607,31 @@ class PageimageVariations extends Wire implements \IteratorAggregate, \Countable $success = $files->unlink($filename, true); } if($success) $deletedFiles[] = $filename; - - foreach($variation->extras() as $extra) { - if(!$extra->exists()) continue; - if($options['dryRun']) { - $deletedFiles[] = $extra->filename(); - } else if($extra->unlink()) { - $deletedFiles[] = $extra->filename(); - } - } + $this->removeExtras($variation, $deletedFiles, $options); } if(!$options['dryRun']) $this->variations = null; return ($options['dryRun'] || $options['getFiles'] ? $deletedFiles : $this); } + + /** + * Remove extras + * + * @param Pageimage $pageimage + * @param array $deletedFiles + * @param array $options See options for remove() method + * + */ + protected function removeExtras(Pageimage $pageimage, array &$deletedFiles, array $options) { + foreach($pageimage->extras() as $extra) { + if(!$extra->exists()) { + // nothing to do + } else if(!empty($options['dryRun'])) { + $deletedFiles[] = $extra->filename(); + } else if($extra->unlink()) { + $deletedFiles[] = $extra->filename(); + } + } + } } \ No newline at end of file