FTP.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace Drupal\Core\FileTransfer;
  3. /**
  4. * Defines the base class for FTP implementations.
  5. */
  6. abstract class FTP extends FileTransfer {
  7. /**
  8. * {@inheritdoc}
  9. */
  10. public function __construct($jail, $username, $password, $hostname, $port) {
  11. $this->username = $username;
  12. $this->password = $password;
  13. $this->hostname = $hostname;
  14. $this->port = $port;
  15. parent::__construct($jail);
  16. }
  17. /**
  18. * {@inheritdoc}
  19. */
  20. public static function factory($jail, $settings) {
  21. $username = empty($settings['username']) ? '' : $settings['username'];
  22. $password = empty($settings['password']) ? '' : $settings['password'];
  23. $hostname = empty($settings['advanced']['hostname']) ? 'localhost' : $settings['advanced']['hostname'];
  24. $port = empty($settings['advanced']['port']) ? 21 : $settings['advanced']['port'];
  25. if (function_exists('ftp_connect')) {
  26. $class = 'Drupal\Core\FileTransfer\FTPExtension';
  27. }
  28. else {
  29. throw new FileTransferException('No FTP backend available.');
  30. }
  31. return new $class($jail, $username, $password, $hostname, $port);
  32. }
  33. /**
  34. * {@inheritdoc}
  35. */
  36. public function getSettingsForm() {
  37. $form = parent::getSettingsForm();
  38. $form['advanced']['port']['#default_value'] = 21;
  39. return $form;
  40. }
  41. }