public function Rename::renameFile in IMCE Rename (D8/9) 8
Renames file by name.
Throws
\Drupal\Core\Entity\EntityStorageException
1 call to Rename::renameFile()
- Rename::opRename in src/
Plugin/ ImcePlugin/ Rename.php - Operation handler: rename.
File
- src/
Plugin/ ImcePlugin/ Rename.php, line 159
Class
- Rename
- Defines Imce Rename plugin.
Namespace
Drupal\imce_rename_plugin\Plugin\ImcePluginCode
public function renameFile(ImceFM $fm, string $old_name) {
$new_name = $this
->getNewName($fm);
$folder = $fm->activeFolder;
$uri = preg_match('/^public:\\/\\/$/', $folder
->getUri()) >= 1 ? $folder
->getUri() : $folder
->getUri() . '/';
// Add extension to file name.
$new_name = $new_name . '.' . pathinfo($old_name, PATHINFO_EXTENSION);
$new_uri = $uri . $new_name;
$old_uri = $uri . $old_name;
if (file_exists($new_uri)) {
$this->messenger
->addMessage($this
->t('Failed to rename file because "@old_item" already exists', [
'@old_item' => utf8_encode($old_name),
]), 'error');
return;
}
// Check access to write file and try to change chmod.
if (!is_writable($old_uri) && !chmod($old_uri, 0664)) {
$this->messenger
->addMessage($this
->t('No permissions to write file "@old_item". Please upload the file via IMCE.', [
'@old_item' => utf8_encode($old_name),
]), 'error');
return;
}
$file = Imce::getFileEntity($old_uri);
// Create entity when there is no entity for the file.
$file = empty($file) ? Imce::createFileEntity($old_uri) : $file;
$move = file_move($file, $new_uri, FileSystemInterface::EXISTS_ERROR);
$move
->setFilename($new_name);
$move
->save();
// Validate message.
if ($move) {
$this->messenger
->addMessage($this
->t('Rename successful! Renamed "@old_item" to "@new_item"', [
'@old_item' => utf8_encode($old_name),
'@new_item' => utf8_encode($new_name),
]));
$folder
->addFile($new_name)
->addToJs();
$folder
->getItem($old_name)
->removeFromJs();
}
else {
$this->messenger
->addMessage($this
->t('Failed to rename file "@old_item" to "@new_item".', [
'@old_item' => utf8_encode($old_name),
'@new_item' => utf8_encode($new_name),
]), 'error');
}
}