From 53ad47f22b8378c07959db0cf3d63629f9eeaec8 Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Fri, 18 Dec 2009 04:13:35 +0000 Subject: [PATCH] weblib MDL-20826 made convert_urls_into_links() produce xhtml compliant links --- lib/simpletest/testweblib.php | 66 +++++++++++++++++------------------ lib/weblib.php | 10 +++--- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/lib/simpletest/testweblib.php b/lib/simpletest/testweblib.php index f8775cf729..64dbd435e8 100644 --- a/lib/simpletest/testweblib.php +++ b/lib/simpletest/testweblib.php @@ -167,47 +167,47 @@ END; function test_convert_urls_into_links() { $texts = array ( - 'URL: http://moodle.org/s/i=1&j=2' => 'URL: http://moodle.org/s/i=1&j=2', - 'URL: www.moodle.org/s/i=1&j=2' => 'URL: www.moodle.org/s/i=1&j=2', - 'URL: https://moodle.org/s/i=1&j=2' => 'URL: https://moodle.org/s/i=1&j=2', - 'URL: http://moodle.org:8080/s/i=1' => 'URL: http://moodle.org:8080/s/i=1', - 'http://moodle.org - URL' => 'http://moodle.org - URL', - 'www.moodle.org - URL' => 'www.moodle.org - URL', - '(http://moodle.org) - URL' => '(http://moodle.org) - URL', - '(www.moodle.org) - URL' => '(www.moodle.org) - URL', - '[http://moodle.org] - URL' => '[http://moodle.org] - URL', - '[www.moodle.org] - URL' => '[www.moodle.org] - URL', - '[http://moodle.org/main#anchor] - URL' => '[http://moodle.org/main#anchor] - URL', - '[www.moodle.org/main#anchor] - URL' => '[www.moodle.org/main#anchor] - URL', - 'URL: http://cc.org/url_(withpar)_go/?i=2' => 'URL: http://cc.org/url_(withpar)_go/?i=2', - 'URL: www.cc.org/url_(withpar)_go/?i=2' => 'URL: www.cc.org/url_(withpar)_go/?i=2', - 'URL: http://cc.org/url_(with)_(par)_go/?i=2' => 'URL: http://cc.org/url_(with)_(par)_go/?i=2', - 'URL: www.cc.org/url_(with)_(par)_go/?i=2' => 'URL: www.cc.org/url_(with)_(par)_go/?i=2', + 'URL: http://moodle.org/s/i=1&j=2' => 'URL: http://moodle.org/s/i=1&j=2', + 'URL: www.moodle.org/s/i=1&j=2' => 'URL: www.moodle.org/s/i=1&j=2', + 'URL: https://moodle.org/s/i=1&j=2' => 'URL: https://moodle.org/s/i=1&j=2', + 'URL: http://moodle.org:8080/s/i=1' => 'URL: http://moodle.org:8080/s/i=1', + 'http://moodle.org - URL' => 'http://moodle.org - URL', + 'www.moodle.org - URL' => 'www.moodle.org - URL', + '(http://moodle.org) - URL' => '(http://moodle.org) - URL', + '(www.moodle.org) - URL' => '(www.moodle.org) - URL', + '[http://moodle.org] - URL' => '[http://moodle.org] - URL', + '[www.moodle.org] - URL' => '[www.moodle.org] - URL', + '[http://moodle.org/main#anchor] - URL' => '[http://moodle.org/main#anchor] - URL', + '[www.moodle.org/main#anchor] - URL' => '[www.moodle.org/main#anchor] - URL', + 'URL: http://cc.org/url_(withpar)_go/?i=2' => 'URL: http://cc.org/url_(withpar)_go/?i=2', + 'URL: www.cc.org/url_(withpar)_go/?i=2' => 'URL: www.cc.org/url_(withpar)_go/?i=2', + 'URL: http://cc.org/url_(with)_(par)_go/?i=2' => 'URL: http://cc.org/url_(with)_(par)_go/?i=2', + 'URL: www.cc.org/url_(with)_(par)_go/?i=2' => 'URL: www.cc.org/url_(with)_(par)_go/?i=2', 'URL: http://moodle.org' => 'URL: http://moodle.org', 'URL: www.moodle.org' => 'URL: www.moodle.org', 'URL: http://moodle.org' => 'URL: http://moodle.org', 'URL: www.moodle.org' => 'URL: www.moodle.org', - 'URL: http://moodle.org/s/i=1&j=2.' => 'URL: http://moodle.org/s/i=1&j=2.', - 'URL: www.moodle.org/s/i=1&j=2.' => 'URL: www.moodle.org/s/i=1&j=2.', - 'URL: http://moodle.org)
' => 'URL: http://moodle.org)
', - 'URL:

text www.moodle.org</p> text' => 'URL:

text www.moodle.org</p> text', - 'URL: www.moodle.org?u=1.23' => 'URL: www.moodle.org?u=1.23', - 'URL: www.moodle.org?u=test+param&' => 'URL: www.moodle.org?u=test+param&', - 'URL: www.moodle.org?param=:)' => 'URL: www.moodle.org?param=:)', + 'URL: http://moodle.org/s/i=1&j=2.' => 'URL: http://moodle.org/s/i=1&j=2.', + 'URL: www.moodle.org/s/i=1&j=2.' => 'URL: www.moodle.org/s/i=1&j=2.', + 'URL: http://moodle.org)
' => 'URL: http://moodle.org)
', + 'URL:

text www.moodle.org</p> text' => 'URL:

text www.moodle.org</p> text', + 'URL: www.moodle.org?u=1.23' => 'URL: www.moodle.org?u=1.23', + 'URL: www.moodle.org?u=test+param&' => 'URL: www.moodle.org?u=test+param&', + 'URL: www.moodle.org?param=:)' => 'URL: www.moodle.org?param=:)', 'URL: http://moodle.org www.moodle.org' - => 'URL: http://moodle.org www.moodle.org', + => 'URL: http://moodle.org www.moodle.org', 'URL: http://moodle.org www.moodle.org http://moodle.org' - => 'URL: http://moodle.org www.moodle.org http://moodle.org', - 'http://subdomain.moodle.org - URL' => 'http://subdomain.moodle.org - URL', - 'http://subdomain.subdomain.moodle.org - URL' => 'http://subdomain.subdomain.moodle.org - URL', + => 'URL: http://moodle.org www.moodle.org http://moodle.org', + 'http://subdomain.moodle.org - URL' => 'http://subdomain.moodle.org - URL', + 'http://subdomain.subdomain.moodle.org - URL' => 'http://subdomain.subdomain.moodle.org - URL', 'This contains http, http:// and www but no actual links.'=>'This contains http, http:// and www but no actual links.', 'This is a story about moodle.coming to a cinema near you.'=>'This is a story about moodle.coming to a cinema near you.', - 'http://en.wikipedia.org/wiki/Slash_%28punctuation%29'=>'http://en.wikipedia.org/wiki/Slash_%28punctuation%29', - 'http://en.wikipedia.org/wiki/Slash_(punctuation)'=>'http://en.wikipedia.org/wiki/Slash_(punctuation)', - 'http://en.wikipedia.org/wiki/%28#Parentheses_.28_.29 - URL' => 'http://en.wikipedia.org/wiki/%28#Parentheses_.28_.29 - URL', - 'http://en.wikipedia.org/wiki/(#Parentheses_.28_.29 - URL' => 'http://en.wikipedia.org/wiki/(#Parentheses_.28_.29 - URL', - 'http://Iñtërnâtiônàlizætiøn.com?ô=nëø'=>'http://Iñtërnâtiônàlizætiøn.com?ô=nëø', - 'www.Iñtërnâtiônàlizætiøn.com?ô=nëø'=>'www.Iñtërnâtiônàlizætiøn.com?ô=nëø', + 'http://en.wikipedia.org/wiki/Slash_%28punctuation%29'=>'http://en.wikipedia.org/wiki/Slash_%28punctuation%29', + 'http://en.wikipedia.org/wiki/Slash_(punctuation)'=>'http://en.wikipedia.org/wiki/Slash_(punctuation)', + 'http://en.wikipedia.org/wiki/%28#Parentheses_.28_.29 - URL' => 'http://en.wikipedia.org/wiki/%28#Parentheses_.28_.29 - URL', + 'http://en.wikipedia.org/wiki/(#Parentheses_.28_.29 - URL' => 'http://en.wikipedia.org/wiki/(#Parentheses_.28_.29 - URL', + 'http://Iñtërnâtiônàlizætiøn.com?ô=nëø'=>'http://Iñtërnâtiônàlizætiøn.com?ô=nëø', + 'www.Iñtërnâtiônàlizætiøn.com?ô=nëø'=>'www.Iñtërnâtiônàlizætiøn.com?ô=nëø', 'moodle.org' => 'moodle.org',//too hard to identify without additional regexs ); foreach ($texts as $text => $correctresult) { diff --git a/lib/weblib.php b/lib/weblib.php index 1e8cbcc500..753869f400 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -1720,7 +1720,7 @@ function html_to_text($html) { * @param string $text Passed in by reference. The string to be searched for urls. */ function convert_urls_into_links(&$text) { -$filterignoretagsopen = array(']+?>'); + $filterignoretagsopen = array(']+?>'); $filterignoretagsclose = array(''); filter_save_ignore_tags($text,$filterignoretagsopen,$filterignoretagsclose,$ignoretags); @@ -1737,14 +1737,14 @@ $filterignoretagsopen = array(']+?>'); if ($unicoderegexp) { //We can use unicode modifiers $text = preg_replace('#(((http(s?))://)(((([\pLl0-9]([\pLl0-9]|-)*[\pLl0-9]|[\pLl0-9])\.)+([\pLl]([\pLl0-9]|-)*[\pLl0-9]|[\pLl]))|(([0-9]{1,3}\.){3}[0-9]{1,3}))(:[\pL0-9]*)?(/([\pLl0-9\.!$&\'\(\)*+,;=_~:@-]|%[a-fA-F0-9]{2})*)*(\?[\pLl0-9\.!$&\'\(\)*+,;=_~:@/?-]*)?(\#[\pLl0-9\.!$&\'\(\)*+,;=_~:@/?-]*)?(?\\1', $text); + '\\1', $text); $text = preg_replace('#((www\.([\pLl0-9]([\pLl0-9]|-)*[\pLl0-9]|[\pLl0-9])\.)+([\pLl]([\pLl0-9]|-)*[\pLl0-9]|[\pLl])(:[\pL0-9]*)?(/([\pLl0-9\.!$&\'\(\)*+,;=_~:@-]|%[a-fA-F0-9]{2})*)*(\?[\pLl0-9\.!$&\'\(\)*+,;=_~:@/?-]*)?(\#[\pLl0-9\.!$&\'\(\)*+,;=_~:@/?-]*)?(?\\1', $text); + '\\1', $text); } else { //We cannot use unicode modifiers $text = preg_replace('#(((http(s?))://)(((([a-z0-9]([a-z0-9]|-)*[a-z0-9]|[a-z0-9])\.)+([a-z]([a-z0-9]|-)*[a-z0-9]|[a-z]))|(([0-9]{1,3}\.){3}[0-9]{1,3}))(:[a-zA-Z0-9]*)?(/([a-z0-9\.!$&\'\(\)*+,;=_~:@-]|%[a-f0-9]{2})*)*(\?[a-z0-9\.!$&\'\(\)*+,;=_~:@/?-]*)?(\#[a-z0-9\.!$&\'\(\)*+,;=_~:@/?-]*)?(?\\1', $text); + '\\1', $text); $text = preg_replace('#((www\.([a-z0-9]([a-z0-9]|-)*[a-z0-9]|[a-z0-9])\.)+([a-z]([a-z0-9]|-)*[a-z0-9]|[a-z])(:[a-zA-Z0-9]*)?(/([a-z0-9\.!$&\'\(\)*+,;=_~:@-]|%[a-f0-9]{2})*)*(\?[a-z0-9\.!$&\'\(\)*+,;=_~:@/?-]*)?(\#[a-z0-9\.!$&\'\(\)*+,;=_~:@/?-]*)?(?\\1', $text); + '\\1', $text); } if (!empty($ignoretags)) { -- 2.39.5