コード例 #1
0
 /**
  * @param Folder $folder
  * @param string $name
  * @return Folder
  * @throws FileManagerException
  */
 public function renameFolder(Folder $folder, $name)
 {
     $old_folder_path = $folder->fullPath();
     $new_folder = app(Folder::class)->setPath($folder->getPath())->setName($name);
     $new_folder_path = $new_folder->fullPath();
     if (!FileSystem::exists($old_folder_path)) {
         throw new FileManagerException($this, 'err_folder_not_found');
     }
     // if old name is the same as new one, just return existing folder info
     if ($old_folder_path === $new_folder_path) {
         return $folder;
     }
     if (FileSystem::exists($new_folder_path)) {
         $new = $this->uniqueName->folder($new_folder);
     }
     if (rename($old_folder_path, $new_folder->fullPath())) {
         return $new_folder->updateDetails()->details();
     }
     throw new FileManagerException($this, 'err_folder_cant_rename');
 }