diff options
-rw-r--r-- | phpBB/config/default/container/services_files.yml | 1 | ||||
-rw-r--r-- | phpBB/phpbb/files/upload.php | 23 | ||||
-rw-r--r-- | tests/functional/fileupload_remote_test.php | 12 | ||||
-rw-r--r-- | tests/upload/fileupload_test.php | 24 |
4 files changed, 35 insertions, 25 deletions
diff --git a/phpBB/config/default/container/services_files.yml b/phpBB/config/default/container/services_files.yml index aabb5583d1..f780441b65 100644 --- a/phpBB/config/default/container/services_files.yml +++ b/phpBB/config/default/container/services_files.yml @@ -23,3 +23,4 @@ services: - @filesystem - @files.factory - @language + - @request diff --git a/phpBB/phpbb/files/upload.php b/phpBB/phpbb/files/upload.php index e37f90e820..e62c29883a 100644 --- a/phpBB/phpbb/files/upload.php +++ b/phpBB/phpbb/files/upload.php @@ -13,7 +13,10 @@ namespace phpbb\files; +use \phpbb\filesystem\filesystem_interface; use \phpbb\language\language; +use \phpbb\plupload\plupload; +use \phpbb\request\request_interface; /** * File upload class @@ -57,18 +60,23 @@ class upload /** @var \phpbb\language\language Language class */ protected $language; + /** @var \phpbb\request\request_interface Request class */ + protected $request; + /** * Init file upload class. * * @param \phpbb\filesystem\filesystem_interface $filesystem * @param \phpbb\files\factory $factory Files factory * @param \phpbb\language\language $language Language class + * @param \phpbb\request\request_interface $request Request class */ - public function __construct(\phpbb\filesystem\filesystem_interface $filesystem, factory $factory, language $language) + public function __construct(filesystem_interface $filesystem, factory $factory, language $language, request_interface $request) { $this->filesystem = $filesystem; $this->factory = $factory; $this->language = $language; + $this->request = $request; } /** @@ -178,11 +186,9 @@ class upload * @return filespec $file Object "filespec" is returned, all further operations can be done with this object * @access public */ - function form_upload($form_name, \phpbb\plupload\plupload $plupload = null) + function form_upload($form_name, plupload $plupload = null) { - global $request; - - $upload = $request->file($form_name); + $upload = $this->request->file($form_name); unset($upload['local_mode']); if ($plupload) @@ -264,8 +270,6 @@ class upload */ function local_upload($source_file, $filedata = false) { - global $request; - $upload = array(); $upload['local_mode'] = true; @@ -331,7 +335,7 @@ class upload } $this->common_checks($file); - $request->overwrite('local', $upload, \phpbb\request\request_interface::FILES); + $this->request->overwrite('local', $upload, request_interface::FILES); return $file; } @@ -657,8 +661,7 @@ class upload */ function is_valid($form_name) { - global $request; - $upload = $request->file($form_name); + $upload = $this->request->file($form_name); return (!empty($upload) && $upload['name'] !== 'none'); } diff --git a/tests/functional/fileupload_remote_test.php b/tests/functional/fileupload_remote_test.php index ae4de26df4..4754153cbf 100644 --- a/tests/functional/fileupload_remote_test.php +++ b/tests/functional/fileupload_remote_test.php @@ -25,6 +25,9 @@ class phpbb_functional_fileupload_remote_test extends phpbb_functional_test_case /** @var \phpbb\language\language */ protected $language; + /** @var \phpbb\request\request_interface */ + protected $request; + public function setUp() { parent::setUp(); @@ -44,6 +47,7 @@ class phpbb_functional_fileupload_remote_test extends phpbb_functional_test_case $this->filesystem = new \phpbb\filesystem\filesystem(); $this->language = new \phpbb\language\language(new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx)); + $this->request = $this->getMock('\phpbb\request\request'); $container = new phpbb_mock_container_builder(); $container->set('files.filespec', new \phpbb\files\filespec($this->filesystem, $this->language)); @@ -61,7 +65,7 @@ class phpbb_functional_fileupload_remote_test extends phpbb_functional_test_case public function test_invalid_extension() { /** @var \phpbb\files\upload $upload */ - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_error_prefix('') ->set_allowed_extensions(array('jpg')) ->set_max_filesize(100); @@ -72,7 +76,7 @@ class phpbb_functional_fileupload_remote_test extends phpbb_functional_test_case public function test_empty_file() { /** @var \phpbb\files\upload $upload */ - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_error_prefix('') ->set_allowed_extensions(array('jpg')) ->set_max_filesize(100); @@ -83,7 +87,7 @@ class phpbb_functional_fileupload_remote_test extends phpbb_functional_test_case public function test_successful_upload() { /** @var \phpbb\files\upload $upload */ - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_error_prefix('') ->set_allowed_extensions(array('gif')) ->set_max_filesize(1000); @@ -95,7 +99,7 @@ class phpbb_functional_fileupload_remote_test extends phpbb_functional_test_case public function test_too_large() { /** @var \phpbb\files\upload $upload */ - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_error_prefix('') ->set_allowed_extensions(array('gif')) ->set_max_filesize(100); diff --git a/tests/upload/fileupload_test.php b/tests/upload/fileupload_test.php index 56e29a3ac2..deb4404585 100644 --- a/tests/upload/fileupload_test.php +++ b/tests/upload/fileupload_test.php @@ -30,11 +30,13 @@ class phpbb_fileupload_test extends phpbb_test_case /** @var \phpbb\language\language */ protected $language; + /** @var \phpbb\request\request_interface */ + protected $request; + protected function setUp() { // Global $config required by unique_id - // Global $request required by form_upload, local_upload and is_valid - global $config, $request, $phpbb_root_path, $phpEx; + global $config, $phpbb_root_path, $phpEx; if (!is_array($config)) { @@ -44,7 +46,7 @@ class phpbb_fileupload_test extends phpbb_test_case $config['rand_seed'] = ''; $config['rand_seed_last_update'] = time() + 600; - $request = new phpbb_mock_request(); + $this->request = $this->getMock('\phpbb\request\request'); $this->filesystem = new \phpbb\filesystem\filesystem(); $this->language = new \phpbb\language\language(new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx)); @@ -83,7 +85,7 @@ class phpbb_fileupload_test extends phpbb_test_case public function test_common_checks_invalid_extension() { - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_allowed_extensions(array('png')) ->set_max_filesize(100); $file = $this->gen_valid_filespec(); @@ -93,7 +95,7 @@ class phpbb_fileupload_test extends phpbb_test_case public function test_common_checks_invalid_filename() { - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_allowed_extensions(array('jpg')) ->set_max_filesize(100); $file = $this->gen_valid_filespec(); @@ -104,7 +106,7 @@ class phpbb_fileupload_test extends phpbb_test_case public function test_common_checks_too_large() { - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_allowed_extensions(array('jpg')) ->set_max_filesize(100); $file = $this->gen_valid_filespec(); @@ -115,7 +117,7 @@ class phpbb_fileupload_test extends phpbb_test_case public function test_common_checks_valid_file() { - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_allowed_extensions(array('jpg')) ->set_max_filesize(1000); $file = $this->gen_valid_filespec(); @@ -125,7 +127,7 @@ class phpbb_fileupload_test extends phpbb_test_case public function test_local_upload() { - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_allowed_extensions(array('jpg')) ->set_max_filesize(1000); @@ -137,7 +139,7 @@ class phpbb_fileupload_test extends phpbb_test_case public function test_move_existent_file() { - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_allowed_extensions(array('jpg')) ->set_max_filesize(1000); @@ -151,7 +153,7 @@ class phpbb_fileupload_test extends phpbb_test_case public function test_move_existent_file_overwrite() { - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_allowed_extensions(array('jpg')) ->set_max_filesize(1000); @@ -166,7 +168,7 @@ class phpbb_fileupload_test extends phpbb_test_case public function test_valid_dimensions() { - $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language); + $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request); $upload->set_allowed_extensions(false) ->set_max_filesize(false) ->set_allowed_dimensions(1, 1, 100, 100); |