You are here

protected function FTPExtension::removeDirectoryJailed in Drupal 9

Same name and namespace in other branches
  1. 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\FileTransfer

Code

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,
    ]);
  }
}