public function Rename::renameFolder in IMCE Rename (D8/9) 8
Renames folder by name.
1 call to Rename::renameFolder()
- Rename::opRename in src/
Plugin/ ImcePlugin/ Rename.php - Operation handler: rename.
File
- src/
Plugin/ ImcePlugin/ Rename.php, line 210
Class
- Rename
- Defines Imce Rename plugin.
Namespace
Drupal\imce_rename_plugin\Plugin\ImcePluginCode
public function renameFolder(ImceFM $fm, string $old_name) {
$new_name = $this
->getNewName($fm);
$folder = $fm->activeFolder;
$uri = preg_match('/^public:\\/\\/$/', $folder
->getUri()) >= 1 ? $folder
->getUri() : $folder
->getUri() . '/';
$new_uri = $uri . $new_name;
$old_uri = $uri . $old_name;
if (file_exists($new_uri)) {
$this->messenger
->addMessage($this
->t('Failed to rename folder because "@old_item" already exists', [
'@old_item' => utf8_encode($old_name),
]), 'error');
return;
}
if (rename($old_uri, $new_uri)) {
$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
->addSubfolder($new_name)
->addToJs();
$folder
->getItem($old_name)
->removeFromJs();
// Update file uri's in table file_managed.
$sql_old_uri = $old_uri . "/";
$sql_new_uri = $new_uri . "/";
$query = $this->database
->select('file_managed', 'fm');
$query
->fields('fm');
$query
->condition('uri', $sql_old_uri . '%', 'LIKE');
$file_managed = $query
->execute()
->fetchAll();
if (!empty($file_managed)) {
$this->database
->update('file_managed', [])
->condition('uri', $sql_old_uri . '%', 'LIKE')
->expression('uri', "REPLACE(uri, " . "'" . $sql_old_uri . "', '" . $sql_new_uri . "')")
->execute();
$this->messenger
->addMessage($this
->t('Updated path for @items files.', [
'@items' => count($file_managed),
]));
}
}
else {
$this->messenger
->addMessage($this
->t('Sorry, but something wrong when rename a folder'), 'error');
}
}