diff --git a/lib/tests/weblib_test.php b/lib/tests/weblib_test.php index a43dfc6ca7e95..8705dccca931d 100644 --- a/lib/tests/weblib_test.php +++ b/lib/tests/weblib_test.php @@ -320,6 +320,36 @@ public function test_https_out_as_local_url_error() { $url4->out_as_local_url(); } + public function test_moodle_url_get_scheme() { + // Should return the scheme only. + $url = new moodle_url('http://www.example.org:447/my/file/is/here.txt?really=1'); + $this->assertSame('http', $url->get_scheme()); + + // Should work for secure URLs. + $url = new moodle_url('https://www.example.org:447/my/file/is/here.txt?really=1'); + $this->assertSame('https', $url->get_scheme()); + + // Should return an empty string if no scheme is specified. + $url = new moodle_url('www.example.org:447/my/file/is/here.txt?really=1'); + $this->assertSame('', $url->get_scheme()); + } + + public function test_moodle_url_get_host() { + // Should return the host part only. + $url = new moodle_url('http://www.example.org:447/my/file/is/here.txt?really=1'); + $this->assertSame('www.example.org', $url->get_host()); + } + + public function test_moodle_url_get_port() { + // Should return the port if one provided. + $url = new moodle_url('http://www.example.org:447/my/file/is/here.txt?really=1'); + $this->assertSame(447, $url->get_port()); + + // Should return an empty string if port not specified. + $url = new moodle_url('http://www.example.org/some/path/here.php'); + $this->assertSame('', $url->get_port()); + } + public function test_clean_text() { $text = "lala xx"; $this->assertSame($text, clean_text($text, FORMAT_PLAIN)); diff --git a/lib/weblib.php b/lib/weblib.php index fdde141ad5fb2..95dc03acc6e83 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -822,6 +822,39 @@ public function get_param($name) { return null; } } + + /** + * Returns the 'scheme' portion of a URL. For example, if the URL is + * http://www.example.org:447/my/file/is/here.txt?really=1 then this will + * return 'http' (without the colon). + * + * @return string Scheme of the URL. + */ + public function get_scheme() { + return $this->scheme; + } + + /** + * Returns the 'host' portion of a URL. For example, if the URL is + * http://www.example.org:447/my/file/is/here.txt?really=1 then this will + * return 'www.example.org'. + * + * @return string Host of the URL. + */ + public function get_host() { + return $this->host; + } + + /** + * Returns the 'port' portion of a URL. For example, if the URL is + * http://www.example.org:447/my/file/is/here.txt?really=1 then this will + * return '447'. + * + * @return string Port of the URL. + */ + public function get_port() { + return $this->port; + } } /**