diff options
Diffstat (limited to 'www/wiki/extensions/Maps/src/DataAccess/MediaWikiFileUrlFinder.php')
-rw-r--r-- | www/wiki/extensions/Maps/src/DataAccess/MediaWikiFileUrlFinder.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/www/wiki/extensions/Maps/src/DataAccess/MediaWikiFileUrlFinder.php b/www/wiki/extensions/Maps/src/DataAccess/MediaWikiFileUrlFinder.php new file mode 100644 index 00000000..aabb5f38 --- /dev/null +++ b/www/wiki/extensions/Maps/src/DataAccess/MediaWikiFileUrlFinder.php @@ -0,0 +1,31 @@ +<?php + +declare( strict_types = 1 ); + +namespace Maps\DataAccess; + +use ImagePage; +use Maps\FileUrlFinder; +use Title; + +/** + * @licence GNU GPL v2+ + * @author Jeroen De Dauw < jeroendedauw@gmail.com > + */ +class MediaWikiFileUrlFinder implements FileUrlFinder { + + public function getUrlForFileName( string $fileName ): string { + $colonPosition = strpos( $fileName, ':' ); + + $titleWithoutPrefix = $colonPosition === false ? $fileName : substr( $fileName, $colonPosition + 1 ); + + $title = Title::newFromText( trim( $titleWithoutPrefix ), NS_FILE ); + + if ( $title !== null && $title->exists() ) { + return ( new ImagePage( $title ) )->getDisplayedFile()->getURL(); + } + + return trim( $fileName ); + } + +} |