More flexible removing of extra media files

This commit is contained in:
Andy Miller
2017-05-15 14:48:58 -06:00
parent ac9b6e5ce5
commit cde4ac5f7b

View File

@@ -907,22 +907,23 @@ class AdminBaseController
$file = File::instance($filename); $file = File::instance($filename);
$resultRemoveMedia = false; $resultRemoveMedia = false;
$resultRemoveMediaMeta = true;
if ($file->exists()) { if ($file->exists()) {
$resultRemoveMedia = $file->delete(); $resultRemoveMedia = $file->delete();
$metaFilePath = $filename . '.meta.yaml'; $fileParts = pathinfo($filename);
$metaFilePath = str_replace('@3x', '', $metaFilePath);
$metaFilePath = str_replace('@2x', '', $metaFilePath);
if (is_file($metaFilePath)) { foreach (scandir($fileParts['dirname']) as $file) {
$metaFile = File::instance($metaFilePath); $regex_pattern = "/" . preg_quote($fileParts['filename']) . "@\d+x\." . $fileParts['extension'] . "$|" . preg_quote($fileParts['basename']) . ".meta.yaml$/";
$resultRemoveMediaMeta = $metaFile->delete(); if (preg_match($regex_pattern, $file)) {
$path = $fileParts['dirname'] . '/' . $file;
@unlink($path);
}
} }
} }
if ($resultRemoveMedia && $resultRemoveMediaMeta) { if ($resultRemoveMedia) {
if ($this->grav['uri']->extension() === 'json') { if ($this->grav['uri']->extension() === 'json') {
$this->admin->json_response = [ $this->admin->json_response = [
'status' => 'success', 'status' => 'success',