1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-12 01:34:31 +02:00

Fix issue processwire/processwire-issues#1255 where rename didn't work for 1-image allowed image field, plus a related issue where rename of image could leave some variations unrenamed.

This commit is contained in:
Ryan Cramer
2021-07-16 14:34:53 -04:00
parent ec761e75bd
commit 785d66a4b5
5 changed files with 39 additions and 6 deletions

View File

@@ -205,8 +205,7 @@ class PagefileExtra extends WireData {
*
*/
public function rename() {
if(!$this->exists()) return false;
if(!$this->filenamePrevious) return false;
if(!$this->filenamePrevious || !is_readable($this->filenamePrevious)) return false;
return $this->wire('files')->rename($this->filenamePrevious, $this->filename());
}

View File

@@ -1755,6 +1755,39 @@ class Pageimage extends Pagefile {
return $extras;
}
/**
* Rename this file
*
* Remember to follow this up with a `$page->save()` for the page that the file lives on.
*
* #pw-group-manipulation
*
* @param string $basename New name to use. Must be just the file basename (no path).
* @return string|bool Returns new name (basename) on success, or boolean false if rename failed.
*
*/
public function rename($basename) {
$variations = $this->getVariations();
$oldBasename = $this->basename;
$newBasename = parent::rename($basename);
if($newBasename === false) return false;
$ext = '.' . $this->ext();
$oldName = basename($oldBasename, $ext);
$newName = basename($newBasename, $ext);
foreach($variations as $pageimage) {
/** @var Pageimage $pageimage */
if(strpos($pageimage->basename, $oldName) !== 0) continue;
$newVariationName = $newName . substr($pageimage->basename, strlen($oldName));
$pageimage->rename($newVariationName);
}
return $newBasename;
}
/**
* Replace file with another
*