Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'wip-mdl-36674-m23' of git://github.com/rajeshtaneja/moo…

…dle into MOODLE_23_STABLE
  • Loading branch information...
commit 812ea3aae2bde71868c324ea9ac1ffb75a43e985 2 parents b0da482 + e48cbfc
@danpoltawski danpoltawski authored
Showing with 50 additions and 4 deletions.
  1. +40 −0 lib/tests/weblib_test.php
  2. +10 −4 lib/weblib.php
View
40 lib/tests/weblib_test.php
@@ -179,8 +179,23 @@ function test_compare_url() {
}
function test_out_as_local_url() {
+ global $CFG;
+ // Test http url.
$url1 = new moodle_url('/lib/tests/weblib_test.php');
$this->assertEquals('/lib/tests/weblib_test.php', $url1->out_as_local_url());
+
+ // Test https url.
+ $httpswwwroot = str_replace("http://", "https://", $CFG->wwwroot);
+ $url2 = new moodle_url($httpswwwroot.'/login/profile.php');
+ $this->assertEquals('/login/profile.php', $url2->out_as_local_url());
+
+ // Test http url matching wwwroot.
+ $url3 = new moodle_url($CFG->wwwroot);
+ $this->assertEquals('', $url3->out_as_local_url());
+
+ // Test http url matching wwwroot ending with slash (/).
+ $url3 = new moodle_url($CFG->wwwroot.'/');
+ $this->assertEquals('/', $url3->out_as_local_url());
}
/**
@@ -192,6 +207,31 @@ function test_out_as_local_url_error() {
$url2->out_as_local_url();
}
+ /**
+ * You should get error with modified url
+ *
+ * @expectedException coding_exception
+ * @return void
+ */
+ public function test_modified_url_out_as_local_url_error() {
+ global $CFG;
+
+ $modifiedurl = $CFG->wwwroot.'1';
+ $url3 = new moodle_url($modifiedurl.'/login/profile.php');
+ $url3->out_as_local_url();
+ }
+
+ /**
+ * Try get local url from external https url and you should get error
+ *
+ * @expectedException coding_exception
+ * @return void
+ */
+ public function test_https_out_as_local_url_error() {
+ $url4 = new moodle_url('https://www.google.com/lib/tests/weblib_test.php');
+ $url4->out_as_local_url();
+ }
+
public function test_clean_text() {
$text = "lala <applet>xx</applet>";
$this->assertEquals($text, clean_text($text, FORMAT_PLAIN));
View
14 lib/weblib.php
@@ -747,12 +747,18 @@ public function out_as_local_url($escaped = true, array $overrideparams = null)
global $CFG;
$url = $this->out($escaped, $overrideparams);
-
- if (strpos($url, $CFG->wwwroot) !== 0) {
+ $httpswwwroot = str_replace("http://", "https://", $CFG->wwwroot);
+
+ // $url should be equal to wwwroot or httpswwwroot. If not then throw exception.
+ if (($url === $CFG->wwwroot) || (strpos($url, $CFG->wwwroot.'/') === 0)) {
+ $localurl = substr($url, strlen($CFG->wwwroot));
+ return !empty($localurl) ? $localurl : '';
+ } else if (($url === $httpswwwroot) || (strpos($url, $httpswwwroot.'/') === 0)) {
+ $localurl = substr($url, strlen($httpswwwroot));
+ return !empty($localurl) ? $localurl : '';
+ } else {
throw new coding_exception('out_as_local_url called on a non-local URL');
}
-
- return str_replace($CFG->wwwroot, '', $url);
}
/**
Please sign in to comment.
Something went wrong with that request. Please try again.