Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 68
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
obtain_update_ftp_data
0.00% covered (danger)
0.00%
0 / 68
0.00% covered (danger)
0.00%
0 / 5
72
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 check_requirements
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
6
 run
0.00% covered (danger)
0.00%
0 / 58
0.00% covered (danger)
0.00%
0 / 1
12
 get_step_count
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 get_task_lang_name
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2/**
3 *
4 * This file is part of the phpBB Forum Software package.
5 *
6 * @copyright (c) phpBB Limited <https://www.phpbb.com>
7 * @license GNU General Public License, version 2 (GPL-2.0)
8 *
9 * For full copyright and license information, please see
10 * the docs/CREDITS.txt file.
11 *
12 */
13
14namespace phpbb\install\module\obtain_data\task;
15
16use phpbb\install\exception\user_interaction_required_exception;
17use phpbb\install\helper\config;
18use phpbb\install\helper\iohandler\iohandler_interface;
19use phpbb\install\helper\update_helper;
20use phpbb\install\task_base;
21
22class obtain_update_ftp_data extends task_base
23{
24    /**
25     * @var config
26     */
27    protected $installer_config;
28
29    /**
30     * @var iohandler_interface
31     */
32    protected $iohandler;
33
34    /**
35     * @var update_helper
36     */
37    protected $update_helper;
38
39    /**
40     * @var string
41     */
42    protected $php_ext;
43
44    /**
45     * Constructor
46     *
47     * @param config                $installer_config
48     * @param iohandler_interface    $iohandler
49     * @param update_helper            $update_helper
50     * @param string                $php_ext
51     */
52    public function __construct(config $installer_config, iohandler_interface $iohandler, update_helper $update_helper, $php_ext)
53    {
54        $this->installer_config    = $installer_config;
55        $this->iohandler        = $iohandler;
56        $this->update_helper    = $update_helper;
57        $this->php_ext            = $php_ext;
58
59        parent::__construct(false);
60    }
61
62    /**
63     * {@inheritdoc}
64     */
65    public function check_requirements()
66    {
67        return ($this->installer_config->get('do_update_files', false) &&
68            ($this->installer_config->get('file_update_method', '') === 'ftp')
69        );
70    }
71
72    /**
73     * {@inheritdoc}
74     */
75    public function run()
76    {
77        if ($this->iohandler->get_input('submit_ftp', false))
78        {
79            $this->update_helper->include_file('includes/functions_transfer.' . $this->php_ext);
80
81            $method = 'ftp';
82            $methods = \transfer::methods();
83            if (!in_array($method, $methods, true))
84            {
85                $method = $methods[0];
86            }
87
88            $ftp_host = $this->iohandler->get_input('ftp_host', '', true);
89            $ftp_user = $this->iohandler->get_input('ftp_user', '', true);
90            $ftp_pass = html_entity_decode($this->iohandler->get_input('ftp_pass', '', true), ENT_COMPAT);
91            $ftp_path = $this->iohandler->get_input('ftp_path', '', true);
92            $ftp_port = $this->iohandler->get_input('ftp_port', 21);
93            $ftp_time = $this->iohandler->get_input('ftp_timeout', 10);
94
95            $this->installer_config->set('ftp_host', $ftp_host);
96            $this->installer_config->set('ftp_user', $ftp_user);
97            $this->installer_config->set('ftp_pass', $ftp_pass);
98            $this->installer_config->set('ftp_path', $ftp_path);
99            $this->installer_config->set('ftp_port', (int) $ftp_port);
100            $this->installer_config->set('ftp_timeout', (int) $ftp_time);
101            $this->installer_config->set('ftp_method', $method);
102        }
103        else
104        {
105            $this->iohandler->add_user_form_group('FTP_SETTINGS', array(
106                'ftp_host'    => array(
107                    'label'            => 'FTP_HOST',
108                    'description'    => 'FTP_HOST_EXPLAIN',
109                    'type'            => 'text',
110                ),
111                'ftp_user'    => array(
112                    'label'            => 'FTP_USERNAME',
113                    'description'    => 'FTP_USERNAME_EXPLAIN',
114                    'type'            => 'text',
115                ),
116                'ftp_pass'    => array(
117                    'label'            => 'FTP_PASSWORD',
118                    'description'    => 'FTP_PASSWORD_EXPLAIN',
119                    'type'            => 'password',
120                ),
121                'ftp_path'    => array(
122                    'label'            => 'FTP_ROOT_PATH',
123                    'description'    => 'FTP_ROOT_PATH_EXPLAIN',
124                    'type'            => 'text',
125                ),
126                'ftp_port'    => array(
127                    'label'            => 'FTP_PORT',
128                    'description'    => 'FTP_PORT_EXPLAIN',
129                    'type'            => 'text',
130                    'default'        => 21,
131                ),
132                'ftp_timeout'    => array(
133                    'label'            => 'FTP_TIMEOUT',
134                    'description'    => 'FTP_TIMEOUT_EXPLAIN',
135                    'type'            => 'text',
136                    'default'        => 10,
137                ),
138                'submit_ftp'    => array(
139                    'label'    => 'SUBMIT',
140                    'type'    => 'submit',
141                ),
142            ));
143
144            throw new user_interaction_required_exception();
145        }
146    }
147
148    /**
149     * {@inheritdoc}
150     */
151    public static function get_step_count()
152    {
153        return 0;
154    }
155
156    /**
157     * {@inheritdoc}
158     */
159    public function get_task_lang_name()
160    {
161        return '';
162    }
163}