diff --git a/phpBB/phpbb/storage/adapter/adapter_interface.php b/phpBB/phpbb/storage/adapter/adapter_interface.php index afc78a7f83..39ef789717 100644 --- a/phpBB/phpbb/storage/adapter/adapter_interface.php +++ b/phpBB/phpbb/storage/adapter/adapter_interface.php @@ -85,4 +85,11 @@ interface adapter_interface * When the file cannot be copied */ public function copy($path_orig, $path_dest); + + /** + * Get direct link. + * + * @param string $path The file + */ + public function get_link($path); } diff --git a/phpBB/phpbb/storage/adapter/local.php b/phpBB/phpbb/storage/adapter/local.php index 1ef2516f4f..7056d573bc 100644 --- a/phpBB/phpbb/storage/adapter/local.php +++ b/phpBB/phpbb/storage/adapter/local.php @@ -57,6 +57,11 @@ class local implements adapter_interface, stream_interface */ protected $root_path; + /** + * @var string path + */ + protected $path; + /** * Constructor */ @@ -73,12 +78,13 @@ class local implements adapter_interface, stream_interface */ public function configure($options) { - $this->root_path = $this->phpbb_root_path . $options['path']; - - if (substr($this->root_path, -1, 1) !== DIRECTORY_SEPARATOR) + if (substr($options['path'], -1, 1) !== DIRECTORY_SEPARATOR) { - $this->root_path = $this->root_path . DIRECTORY_SEPARATOR; + $options['path'] = $options['path'] . DIRECTORY_SEPARATOR; } + + $this->path = $options['path']; + $this->root_path = $this->phpbb_root_path . $options['path']; } /** @@ -331,4 +337,12 @@ class local implements adapter_interface, stream_interface { return $this->image_dimensions($path); } + + /** + * {@inheritdoc} + */ + public function get_link($path) + { + return generate_board_url() . $this->root_path . $path; + } } diff --git a/phpBB/phpbb/storage/storage.php b/phpBB/phpbb/storage/storage.php index bc089117d4..aa596da62e 100644 --- a/phpBB/phpbb/storage/storage.php +++ b/phpBB/phpbb/storage/storage.php @@ -216,4 +216,14 @@ class storage { return new file_info($this->adapter, $path); } + + /** + * Get direct link + * + * @param string $path The file + */ + public function get_link($path) + { + return $this->get_adapter()->get_link($path); + } }