You are here

protected function FTPExtension::removeDirectoryJailed in Zircon Profile 8.0

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 50
Contains \Drupal\Core\FileTransfer\FTPExtension.

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 to directory @directory", NULL, array(
      '@directory' => $directory,
    ));
  }
  $list = @ftp_nlist($this->connection, '.');
  if (!$list) {
    $list = array();
  }
  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 to directory @directory", NULL, array(
      '@directory' => $directory,
    ));
  }
}