Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
CRAP | |
0.00% |
0 / 90 |
check_server_environment | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
420.00 | |
0.00% |
0 / 90 |
__construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 7 |
|||
run | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 10 |
|||
set_test_passed | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 3 |
|||
check_php_version | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
check_image_size | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
check_pcre | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
check_json | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
check_mbstring | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
check_xml | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
check_available_dbms | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
get_step_count | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 3 |
|||
get_task_lang_name | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 3 |
<?php | |
/** | |
* | |
* This file is part of the phpBB Forum Software package. | |
* | |
* @copyright (c) phpBB Limited <https://www.phpbb.com> | |
* @license GNU General Public License, version 2 (GPL-2.0) | |
* | |
* For full copyright and license information, please see | |
* the docs/CREDITS.txt file. | |
* | |
*/ | |
namespace phpbb\install\module\requirements\task; | |
/** | |
* Installer task that checks if the server meets phpBB requirements | |
*/ | |
class check_server_environment extends \phpbb\install\task_base | |
{ | |
/** | |
* @var \phpbb\install\helper\database | |
*/ | |
protected $database_helper; | |
/** | |
* @var \phpbb\install\helper\iohandler\iohandler_interface | |
*/ | |
protected $response_helper; | |
/** | |
* @var bool | |
*/ | |
protected $tests_passed; | |
/** | |
* Constructor | |
* | |
* @param \phpbb\install\helper\database $database_helper | |
* @param \phpbb\install\helper\iohandler\iohandler_interface $response | |
*/ | |
public function __construct(\phpbb\install\helper\database $database_helper, | |
\phpbb\install\helper\iohandler\iohandler_interface $response) | |
{ | |
$this->database_helper = $database_helper; | |
$this->response_helper = $response; | |
$this->tests_passed = true; | |
parent::__construct(true); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function run() | |
{ | |
// | |
// Check requirements | |
// The error messages should be set in the check_ functions | |
// | |
// Check PHP version | |
$this->check_php_version(); | |
// Check for getimagesize() | |
$this->check_image_size(); | |
// Check for PCRE support | |
$this->check_pcre(); | |
// Check for JSON support | |
$this->check_json(); | |
// Check for mbstring support | |
$this->check_mbstring(); | |
// XML extension support check | |
$this->check_xml(); | |
// Check for dbms support | |
$this->check_available_dbms(); | |
return $this->tests_passed; | |
} | |
/** | |
* Sets $this->tests_passed | |
* | |
* @param bool $is_passed | |
*/ | |
protected function set_test_passed($is_passed) | |
{ | |
// If one test failed, tests_passed should be false | |
$this->tests_passed = (!$this->tests_passed) ? false : $is_passed; | |
} | |
/** | |
* Check if the requirements for PHP version is met | |
*/ | |
protected function check_php_version() | |
{ | |
if (version_compare(PHP_VERSION, '7.2.0', '<')) | |
{ | |
$this->response_helper->add_error_message('PHP_VERSION_REQD', 'PHP_VERSION_REQD_EXPLAIN'); | |
$this->set_test_passed(false); | |
return; | |
} | |
$this->set_test_passed(true); | |
} | |
/** | |
* Checks if the installed PHP has getimagesize() available | |
*/ | |
protected function check_image_size() | |
{ | |
if (!@function_exists('getimagesize')) | |
{ | |
$this->response_helper->add_error_message('PHP_GETIMAGESIZE_SUPPORT', 'PHP_GETIMAGESIZE_SUPPORT_EXPLAIN'); | |
$this->set_test_passed(false); | |
return; | |
} | |
$this->set_test_passed(true); | |
} | |
/** | |
* Checks if the installed PHP supports PCRE | |
*/ | |
protected function check_pcre() | |
{ | |
if (@preg_match('//u', '')) | |
{ | |
$this->set_test_passed(true); | |
return; | |
} | |
$this->response_helper->add_error_message('PCRE_UTF_SUPPORT', 'PCRE_UTF_SUPPORT_EXPLAIN'); | |
$this->set_test_passed(false); | |
} | |
/** | |
* Checks whether PHP's JSON extension is available or not | |
*/ | |
protected function check_json() | |
{ | |
if (@extension_loaded('json')) | |
{ | |
$this->set_test_passed(true); | |
return; | |
} | |
$this->response_helper->add_error_message('PHP_JSON_SUPPORT', 'PHP_JSON_SUPPORT_EXPLAIN'); | |
$this->set_test_passed(false); | |
} | |
/** | |
* Checks whether PHP's mbstring extension is available or not | |
*/ | |
protected function check_mbstring() | |
{ | |
if (@extension_loaded('mbstring')) | |
{ | |
$this->set_test_passed(true); | |
return; | |
} | |
$this->response_helper->add_error_message('PHP_MBSTRING_SUPPORT', 'PHP_MBSTRING_SUPPORT_EXPLAIN'); | |
$this->set_test_passed(false); | |
} | |
/** | |
* Checks whether or not the XML PHP extension is available (Required by the text formatter) | |
*/ | |
protected function check_xml() | |
{ | |
if (class_exists('DOMDocument')) | |
{ | |
$this->set_test_passed(true); | |
return; | |
} | |
$this->response_helper->add_error_message('PHP_XML_SUPPORT', 'PHP_XML_SUPPORT_EXPLAIN'); | |
$this->set_test_passed(false); | |
} | |
/** | |
* Check if any supported DBMS is available | |
*/ | |
protected function check_available_dbms() | |
{ | |
$available_dbms = $this->database_helper->get_available_dbms(false, true); | |
if ($available_dbms['ANY_DB_SUPPORT']) | |
{ | |
$this->set_test_passed(true); | |
return; | |
} | |
$this->response_helper->add_error_message('PHP_SUPPORTED_DB', 'PHP_SUPPORTED_DB_EXPLAIN'); | |
$this->set_test_passed(false); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
static public function get_step_count() | |
{ | |
return 0; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function get_task_lang_name() | |
{ | |
return ''; | |
} | |
} |