diff --git a/phpBB/config/default/container/services_files.yml b/phpBB/config/default/container/services_files.yml index 64d63776a2..6f0b10cce1 100644 --- a/phpBB/config/default/container/services_files.yml +++ b/phpBB/config/default/container/services_files.yml @@ -4,6 +4,7 @@ services: files.filespec: class: phpbb\files\filespec + scope: prototype arguments: - @filesystem - @mimetype.guesser diff --git a/phpBB/includes/functions_upload.php b/phpBB/includes/functions_upload.php index c759631c47..3170a47033 100644 --- a/phpBB/includes/functions_upload.php +++ b/phpBB/includes/functions_upload.php @@ -155,7 +155,7 @@ class fileupload */ function form_upload($form_name, \phpbb\mimetype\guesser $mimetype_guesser = null, \phpbb\plupload\plupload $plupload = null) { - global $user, $request; + global $user, $request, $phpbb_container; $upload = $request->file($form_name); unset($upload['local_mode']); @@ -169,9 +169,10 @@ class fileupload } } - $file = new \phpbb\files\filespec($this->filesystem, $mimetype_guesser, $plupload); - $file->set_upload_ary($upload); - $file->set_upload_namespace($this); + /** @var \phpbb\files\filespec $file */ + $file = $phpbb_container->get('files.filespec') + ->set_upload_ary($upload) + ->set_upload_namespace($this); if ($file->init_error()) { @@ -233,7 +234,7 @@ class fileupload */ function local_upload($source_file, $filedata = false, \phpbb\mimetype\guesser $mimetype_guesser = null) { - global $user, $request; + global $user, $request, $phpbb_container; $upload = array(); @@ -252,9 +253,10 @@ class fileupload $upload['type'] = $filedata['type']; } - $file = new \phpbb\files\filespec($this->filesystem, $mimetype_guesser); - $file->set_upload_ary($upload); - $file->set_upload_namespace($this); + /** @var \phpbb\files\filespec $file */ + $file = $phpbb_container->get('files.filespec') + ->set_upload_ary($upload) + ->set_upload_namespace($this); if ($file->init_error()) { @@ -315,7 +317,7 @@ class fileupload */ function remote_upload($upload_url, \phpbb\mimetype\guesser $mimetype_guesser = null) { - global $user, $phpbb_root_path; + global $user, $phpbb_root_path, $phpbb_container; $upload_ary = array(); $upload_ary['local_mode'] = true; @@ -492,9 +494,10 @@ class fileupload $upload_ary['tmp_name'] = $filename; - $file = new \phpbb\files\filespec($this->filesystem, $mimetype_guesser); - $file->set_upload_ary($upload_ary); - $file->set_upload_namespace($this); + /** @var \phpbb\files\filespec $file */ + $file = $phpbb_container->get('files.filespec') + ->set_upload_ary($upload_ary) + ->set_upload_namespace($this); $this->common_checks($file); return $file; diff --git a/phpBB/phpbb/files/filespec.php b/phpBB/phpbb/files/filespec.php index 8501b217f7..3f50488e7c 100644 --- a/phpBB/phpbb/files/filespec.php +++ b/phpBB/phpbb/files/filespec.php @@ -97,11 +97,15 @@ class filespec $this->file_moved = false; $this->local = (isset($upload_ary['local_mode'])) ? true : false; + + return $this; } public function set_upload_namespace($namespace) { $this->upload = $namespace; + + return $this; } /**