1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-13 10:15:28 +02:00
This commit is contained in:
Ryan Cramer
2019-11-20 06:10:21 -05:00
parent e296542640
commit cf03946633

View File

@@ -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();
}
}
}
}