3 namespace Drupal\Core\FileTransfer;
6 * Defines the base class for FTP implementations.
8 abstract class FTP extends FileTransfer {
13 public function __construct($jail, $username, $password, $hostname, $port) {
14 $this->username = $username;
15 $this->password = $password;
16 $this->hostname = $hostname;
18 parent::__construct($jail);
24 public static function factory($jail, $settings) {
25 $username = empty($settings['username']) ? '' : $settings['username'];
26 $password = empty($settings['password']) ? '' : $settings['password'];
27 $hostname = empty($settings['advanced']['hostname']) ? 'localhost' : $settings['advanced']['hostname'];
28 $port = empty($settings['advanced']['port']) ? 21 : $settings['advanced']['port'];
30 if (function_exists('ftp_connect')) {
31 $class = 'Drupal\Core\FileTransfer\FTPExtension';
34 throw new FileTransferException('No FTP backend available.');
37 return new $class($jail, $username, $password, $hostname, $port);
43 public function getSettingsForm() {
44 $form = parent::getSettingsForm();
45 $form['advanced']['port']['#default_value'] = 21;