aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/config/default/container/services_files.yml1
-rw-r--r--phpBB/phpbb/files/types/remote.php66
-rw-r--r--tests/functional/fileupload_remote_test.php2
3 files changed, 43 insertions, 26 deletions
diff --git a/phpBB/config/default/container/services_files.yml b/phpBB/config/default/container/services_files.yml
index 4c353ccfa9..e193dad4ea 100644
--- a/phpBB/config/default/container/services_files.yml
+++ b/phpBB/config/default/container/services_files.yml
@@ -51,3 +51,4 @@ services:
- @files.factory
- @language
- @request
+ - %core.root_path%
diff --git a/phpBB/phpbb/files/types/remote.php b/phpBB/phpbb/files/types/remote.php
index f2db6c798c..65cff8ccc7 100644
--- a/phpBB/phpbb/files/types/remote.php
+++ b/phpBB/phpbb/files/types/remote.php
@@ -32,17 +32,21 @@ class remote extends base
/** @var \phpbb\files\upload */
protected $upload;
+ /** @var string phpBB root path */
+ protected $phpbb_root_path;
+
/**
* Construct a form upload type
*
* @param factory $factory
* @param request_interface $request
*/
- public function __construct(factory $factory, language $language, request_interface $request)
+ public function __construct(factory $factory, language $language, request_interface $request, $phpbb_root_path)
{
$this->factory = $factory;
$this->language = $language;
$this->request = $request;
+ $this->phpbb_root_path = $phpbb_root_path;
}
/**
@@ -93,30 +97,7 @@ class remote extends base
$filename = $url['path'];
$filesize = 0;
- $remote_max_filesize = $this->upload->max_filesize;
- if (!$remote_max_filesize)
- {
- $max_filesize = @ini_get('upload_max_filesize');
-
- if (!empty($max_filesize))
- {
- $unit = strtolower(substr($max_filesize, -1, 1));
- $remote_max_filesize = (int) $max_filesize;
-
- switch ($unit)
- {
- case 'g':
- $remote_max_filesize *= 1024;
- // no break
- case 'm':
- $remote_max_filesize *= 1024;
- // no break
- case 'k':
- $remote_max_filesize *= 1024;
- // no break
- }
- }
- }
+ $remote_max_filesize = $this->get_max_file_size();
$errno = 0;
$errstr = '';
@@ -238,4 +219,39 @@ class remote extends base
return $file;
}
+
+ /**
+ * Get maximum file size for remote uploads
+ *
+ * @return int Maximum file size
+ */
+ protected function get_max_file_size()
+ {
+ $max_file_size = $this->upload->max_filesize;
+ if (!$max_file_size)
+ {
+ $max_file_size = @ini_get('upload_max_filesize');
+
+ if (!empty($max_filesize))
+ {
+ $unit = strtolower(substr($max_file_size, -1, 1));
+ $max_file_size = (int) $max_filesize;
+
+ switch ($unit)
+ {
+ case 'g':
+ $max_file_size *= 1024;
+ // no break
+ case 'm':
+ $max_file_size *= 1024;
+ // no break
+ case 'k':
+ $max_file_size *= 1024;
+ // no break
+ }
+ }
+ }
+
+ return $max_file_size;
+ }
}
diff --git a/tests/functional/fileupload_remote_test.php b/tests/functional/fileupload_remote_test.php
index 1bb63719c6..a754d8c91d 100644
--- a/tests/functional/fileupload_remote_test.php
+++ b/tests/functional/fileupload_remote_test.php
@@ -56,7 +56,7 @@ class phpbb_functional_fileupload_remote_test extends phpbb_functional_test_case
$container->set('files.filespec', new \phpbb\files\filespec($this->filesystem, $this->language, $this->phpbb_root_path));
$this->factory = new \phpbb\files\factory($container);
$container->set('files.factory', $this->factory);
- $container->set('files.types.remote', new \phpbb\files\types\remote($this->factory, $this->language, $this->request));
+ $container->set('files.types.remote', new \phpbb\files\types\remote($this->factory, $this->language, $this->request, $phpbb_root_path));
$this->phpbb_root_path = $phpbb_root_path;
}