| Code Coverage | ||||||||||
| Classes and Traits | Functions and Methods | Lines | ||||||||
| Total |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 9 | CRAP |  | 0.00% | 0 / 49 | 
| Local |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 9 | 650 |  | 0.00% | 0 / 49 | 
| connect |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1 | |||
| factory |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 2 | |||
| copyFileJailed |  | 0.00% | 0 / 1 | 6 |  | 0.00% | 0 / 4 | |||
| createDirectoryJailed |  | 0.00% | 0 / 1 | 12 |  | 0.00% | 0 / 4 | |||
| removeDirectoryJailed |  | 0.00% | 0 / 1 | 72 |  | 0.00% | 0 / 19 | |||
| removeFileJailed |  | 0.00% | 0 / 1 | 6 |  | 0.00% | 0 / 4 | |||
| isDirectory |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 2 | |||
| isFile |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 2 | |||
| chmodJailed |  | 0.00% | 0 / 1 | 42 |  | 0.00% | 0 / 11 | |||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\FileTransfer\Local. | |
| */ | |
| namespace Drupal\Core\FileTransfer; | |
| /** | |
| * Defines the local connection class for copying files as the httpd user. | |
| */ | |
| class Local extends FileTransfer implements ChmodInterface { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function connect() { | |
| // No-op | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| static function factory($jail, $settings) { | |
| return new Local($jail); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function copyFileJailed($source, $destination) { | |
| if (@!copy($source, $destination)) { | |
| throw new FileTransferException('Cannot copy %source to %destination.', NULL, array('%source' => $source, '%destination' => $destination)); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function createDirectoryJailed($directory) { | |
| if (!is_dir($directory) && @!mkdir($directory, 0777, TRUE)) { | |
| throw new FileTransferException('Cannot create directory %directory.', NULL, array('%directory' => $directory)); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function removeDirectoryJailed($directory) { | |
| if (!is_dir($directory)) { | |
| // Programmer error assertion, not something we expect users to see. | |
| throw new FileTransferException('removeDirectoryJailed() called with a path (%directory) that is not a directory.', NULL, array('%directory' => $directory)); | |
| } | |
| foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::CHILD_FIRST) as $filename => $file) { | |
| if ($file->isDir()) { | |
| if (@!drupal_rmdir($filename)) { | |
| throw new FileTransferException('Cannot remove directory %directory.', NULL, array('%directory' => $filename)); | |
| } | |
| } | |
| elseif ($file->isFile()) { | |
| if (@!drupal_unlink($filename)) { | |
| throw new FileTransferException('Cannot remove file %file.', NULL, array('%file' => $filename)); | |
| } | |
| } | |
| } | |
| if (@!drupal_rmdir($directory)) { | |
| throw new FileTransferException('Cannot remove directory %directory.', NULL, array('%directory' => $directory)); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function removeFileJailed($file) { | |
| if (@!drupal_unlink($file)) { | |
| throw new FileTransferException('Cannot remove file %file.', NULL, array('%file' => $file)); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function isDirectory($path) { | |
| return is_dir($path); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function isFile($path) { | |
| return is_file($path); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function chmodJailed($path, $mode, $recursive) { | |
| if ($recursive && is_dir($path)) { | |
| foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST) as $filename => $file) { | |
| if (@!chmod($filename, $mode)) { | |
| throw new FileTransferException('Cannot chmod %path.', NULL, array('%path' => $filename)); | |
| } | |
| } | |
| } | |
| elseif (@!chmod($path, $mode)) { | |
| throw new FileTransferException('Cannot chmod %path.', NULL, array('%path' => $path)); | |
| } | |
| } | |
| } |