protected function FTPExtension::removeDirectoryJailed in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/FileTransfer/FTPExtension.php \Drupal\Core\FileTransfer\FTPExtension::removeDirectoryJailed()
 
Removes a directory.
Parameters
string $directory: The directory to be removed.
Overrides FileTransfer::removeDirectoryJailed
File
- core/
lib/ Drupal/ Core/ FileTransfer/ FTPExtension.php, line 45  
Class
- FTPExtension
 - Defines a file transfer class using the PHP FTP extension.
 
Namespace
Drupal\Core\FileTransferCode
protected function removeDirectoryJailed($directory) {
  $pwd = ftp_pwd($this->connection);
  if (!ftp_chdir($this->connection, $directory)) {
    throw new FileTransferException("Unable to change the current directory to @directory", 0, [
      '@directory' => $directory,
    ]);
  }
  $list = @ftp_nlist($this->connection, '.');
  if (!$list) {
    $list = [];
  }
  foreach ($list as $item) {
    if ($item == '.' || $item == '..') {
      continue;
    }
    if (@ftp_chdir($this->connection, $item)) {
      ftp_cdup($this->connection);
      $this
        ->removeDirectory(ftp_pwd($this->connection) . '/' . $item);
    }
    else {
      $this
        ->removeFile(ftp_pwd($this->connection) . '/' . $item);
    }
  }
  ftp_chdir($this->connection, $pwd);
  if (!ftp_rmdir($this->connection, $directory)) {
    throw new FileTransferException("Unable to remove the directory @directory", 0, [
      '@directory' => $directory,
    ]);
  }
}