Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 51 |
|
0.00% |
0 / 12 |
CRAP | |
0.00% |
0 / 1 |
check_server_environment | |
0.00% |
0 / 51 |
|
0.00% |
0 / 12 |
420 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 4 |
|
0.00% |
0 / 1 |
2 | |||
run | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
2 | |||
set_test_passed | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
6 | |||
check_php_version | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
6 | |||
check_image_size | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
6 | |||
check_pcre | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
6 | |||
check_json | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
6 | |||
check_mbstring | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
6 | |||
check_xml | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
6 | |||
check_available_dbms | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
6 | |||
get_step_count | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
get_task_lang_name | |
0.00% |
0 / 1 |
|
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 | |
14 | namespace phpbb\install\module\requirements\task; |
15 | |
16 | /** |
17 | * Installer task that checks if the server meets phpBB requirements |
18 | */ |
19 | class check_server_environment extends \phpbb\install\task_base |
20 | { |
21 | /** |
22 | * @var \phpbb\install\helper\database |
23 | */ |
24 | protected $database_helper; |
25 | |
26 | /** |
27 | * @var \phpbb\install\helper\iohandler\iohandler_interface |
28 | */ |
29 | protected $response_helper; |
30 | |
31 | /** |
32 | * @var bool |
33 | */ |
34 | protected $tests_passed; |
35 | |
36 | /** |
37 | * Constructor |
38 | * |
39 | * @param \phpbb\install\helper\database $database_helper |
40 | * @param \phpbb\install\helper\iohandler\iohandler_interface $response |
41 | */ |
42 | public function __construct(\phpbb\install\helper\database $database_helper, |
43 | \phpbb\install\helper\iohandler\iohandler_interface $response) |
44 | { |
45 | $this->database_helper = $database_helper; |
46 | $this->response_helper = $response; |
47 | $this->tests_passed = true; |
48 | |
49 | parent::__construct(true); |
50 | } |
51 | |
52 | /** |
53 | * {@inheritdoc} |
54 | */ |
55 | public function run() |
56 | { |
57 | // |
58 | // Check requirements |
59 | // The error messages should be set in the check_ functions |
60 | // |
61 | |
62 | // Check PHP version |
63 | $this->check_php_version(); |
64 | |
65 | // Check for getimagesize() |
66 | $this->check_image_size(); |
67 | |
68 | // Check for PCRE support |
69 | $this->check_pcre(); |
70 | |
71 | // Check for JSON support |
72 | $this->check_json(); |
73 | |
74 | // Check for mbstring support |
75 | $this->check_mbstring(); |
76 | |
77 | // XML extension support check |
78 | $this->check_xml(); |
79 | |
80 | // Check for dbms support |
81 | $this->check_available_dbms(); |
82 | |
83 | return $this->tests_passed; |
84 | } |
85 | |
86 | /** |
87 | * Sets $this->tests_passed |
88 | * |
89 | * @param bool $is_passed |
90 | */ |
91 | protected function set_test_passed($is_passed) |
92 | { |
93 | // If one test failed, tests_passed should be false |
94 | $this->tests_passed = (!$this->tests_passed) ? false : $is_passed; |
95 | } |
96 | |
97 | /** |
98 | * Check if the requirements for PHP version is met |
99 | */ |
100 | protected function check_php_version() |
101 | { |
102 | if (version_compare(PHP_VERSION, '7.2.0', '<')) |
103 | { |
104 | $this->response_helper->add_error_message('PHP_VERSION_REQD', 'PHP_VERSION_REQD_EXPLAIN'); |
105 | |
106 | $this->set_test_passed(false); |
107 | return; |
108 | } |
109 | |
110 | $this->set_test_passed(true); |
111 | } |
112 | |
113 | /** |
114 | * Checks if the installed PHP has getimagesize() available |
115 | */ |
116 | protected function check_image_size() |
117 | { |
118 | if (!@function_exists('getimagesize')) |
119 | { |
120 | $this->response_helper->add_error_message('PHP_GETIMAGESIZE_SUPPORT', 'PHP_GETIMAGESIZE_SUPPORT_EXPLAIN'); |
121 | |
122 | $this->set_test_passed(false); |
123 | return; |
124 | } |
125 | |
126 | $this->set_test_passed(true); |
127 | } |
128 | |
129 | /** |
130 | * Checks if the installed PHP supports PCRE |
131 | */ |
132 | protected function check_pcre() |
133 | { |
134 | if (@preg_match('//u', '')) |
135 | { |
136 | $this->set_test_passed(true); |
137 | return; |
138 | } |
139 | |
140 | $this->response_helper->add_error_message('PCRE_UTF_SUPPORT', 'PCRE_UTF_SUPPORT_EXPLAIN'); |
141 | |
142 | $this->set_test_passed(false); |
143 | } |
144 | |
145 | /** |
146 | * Checks whether PHP's JSON extension is available or not |
147 | */ |
148 | protected function check_json() |
149 | { |
150 | if (@extension_loaded('json')) |
151 | { |
152 | $this->set_test_passed(true); |
153 | return; |
154 | } |
155 | |
156 | $this->response_helper->add_error_message('PHP_JSON_SUPPORT', 'PHP_JSON_SUPPORT_EXPLAIN'); |
157 | |
158 | $this->set_test_passed(false); |
159 | } |
160 | |
161 | /** |
162 | * Checks whether PHP's mbstring extension is available or not |
163 | */ |
164 | protected function check_mbstring() |
165 | { |
166 | if (@extension_loaded('mbstring')) |
167 | { |
168 | $this->set_test_passed(true); |
169 | return; |
170 | } |
171 | |
172 | $this->response_helper->add_error_message('PHP_MBSTRING_SUPPORT', 'PHP_MBSTRING_SUPPORT_EXPLAIN'); |
173 | |
174 | $this->set_test_passed(false); |
175 | } |
176 | |
177 | /** |
178 | * Checks whether or not the XML PHP extension is available (Required by the text formatter) |
179 | */ |
180 | protected function check_xml() |
181 | { |
182 | if (class_exists('DOMDocument')) |
183 | { |
184 | $this->set_test_passed(true); |
185 | return; |
186 | } |
187 | |
188 | $this->response_helper->add_error_message('PHP_XML_SUPPORT', 'PHP_XML_SUPPORT_EXPLAIN'); |
189 | |
190 | $this->set_test_passed(false); |
191 | } |
192 | |
193 | /** |
194 | * Check if any supported DBMS is available |
195 | */ |
196 | protected function check_available_dbms() |
197 | { |
198 | $available_dbms = $this->database_helper->get_available_dbms(false, true); |
199 | |
200 | if ($available_dbms['ANY_DB_SUPPORT']) |
201 | { |
202 | $this->set_test_passed(true); |
203 | return; |
204 | } |
205 | |
206 | $this->response_helper->add_error_message('PHP_SUPPORTED_DB', 'PHP_SUPPORTED_DB_EXPLAIN'); |
207 | |
208 | $this->set_test_passed(false); |
209 | } |
210 | |
211 | /** |
212 | * {@inheritdoc} |
213 | */ |
214 | public static function get_step_count() |
215 | { |
216 | return 0; |
217 | } |
218 | |
219 | /** |
220 | * {@inheritdoc} |
221 | */ |
222 | public function get_task_lang_name() |
223 | { |
224 | return ''; |
225 | } |
226 | } |