From 9cb6d1bf13c65c2b69fcbdf449ce1058ef03d96f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Calvo?= Date: Sat, 17 Feb 2018 19:15:54 +0100 Subject: [PATCH] [ticket/15553] Add method to get direct link PHPBB3-15553 --- .../storage/adapter/adapter_interface.php | 7 ++++++ phpBB/phpbb/storage/adapter/local.php | 22 +++++++++++++++---- phpBB/phpbb/storage/storage.php | 10 +++++++++ 3 files changed, 35 insertions(+), 4 deletions(-) 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); + } }