Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
86.67% covered (warning)
86.67%
13 / 15
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
UrlHelper
86.67% covered (warning)
86.67%
13 / 15
0.00% covered (danger)
0.00%
0 / 2
6.09
0.00% covered (danger)
0.00%
0 / 1
 followRedirect
85.71% covered (warning)
85.71%
6 / 7
0.00% covered (danger)
0.00%
0 / 1
3.03
 getBaseUrl
87.50% covered (warning)
87.50%
7 / 8
0.00% covered (danger)
0.00%
0 / 1
3.02
1<?php
2
3namespace MediaWiki\MassMessage;
4
5use MediaWiki\MediaWikiServices;
6use MediaWiki\Title\Title;
7
8class UrlHelper {
9
10    /**
11     * Function to follow redirects.
12     *
13     * @param Title $title
14     * @return Title|null null if the page is an interwiki redirect
15     */
16    public static function followRedirect( Title $title ) {
17        if ( !$title->isRedirect() ) {
18            return $title;
19        }
20        $wikipage = MediaWikiServices::getInstance()->getWikiPageFactory()->newFromTitle( $title );
21
22        $target = $wikipage->followRedirect();
23        if ( $target instanceof Title ) {
24            return $target;
25        }
26
27        // This must be an interwiki redirect
28        return null;
29    }
30
31    /**
32     * Returns the basic hostname and port using wfParseUrl.
33     *
34     * @param string $url
35     * @return string
36     */
37    public static function getBaseUrl( $url ) {
38        static $mapping = [];
39
40        if ( isset( $mapping[$url] ) ) {
41            return $mapping[$url];
42        }
43
44        $parse = wfParseUrl( $url );
45        $mapping[$url] = $parse['host'];
46        if ( isset( $parse['port'] ) ) {
47            $mapping[$url] .= ':' . $parse['port'];
48        }
49        return $mapping[$url];
50    }
51}