From 36d5d6d51be85fd7a6fb3c2a3b97002bcce4eaee Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Mon, 23 Mar 2015 17:28:10 +1300 Subject: [PATCH] MDL-49631 fix incorrect whitespace remplacements --- calendar/lib.php | 4 ++-- lib/moodlelib.php | 2 +- lib/tests/regex_test.php | 47 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 lib/tests/regex_test.php diff --git a/calendar/lib.php b/calendar/lib.php index ca520150237..886465a7d28 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -2944,7 +2944,7 @@ function calendar_add_icalendar_event($event, $courseid, $subscriptionid, $timez $name = $event->properties['SUMMARY'][0]->value; $name = str_replace('\n', '
', $name); $name = str_replace('\\', '', $name); - $name = preg_replace('/\s+/', ' ', $name); + $name = preg_replace('/\s+/u', ' ', $name); $eventrecord = new stdClass; $eventrecord->name = clean_param($name, PARAM_NOTAGS); @@ -2956,7 +2956,7 @@ function calendar_add_icalendar_event($event, $courseid, $subscriptionid, $timez $description = clean_param($description, PARAM_NOTAGS); $description = str_replace('\n', '
', $description); $description = str_replace('\\', '', $description); - $description = preg_replace('/\s+/', ' ', $description); + $description = preg_replace('/\s+/u', ' ', $description); } $eventrecord->description = $description; diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 19a85425564..0f9cc5f7cfa 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -1099,7 +1099,7 @@ function clean_param($param, $type) { // Remove some nasties. $param = preg_replace('~[[:cntrl:]]|[<>`]~u', '', $param); // Convert many whitespace chars into one. - $param = preg_replace('/\s+/', ' ', $param); + $param = preg_replace('/\s+/u', ' ', $param); $param = core_text::substr(trim($param), 0, TAG_MAX_LENGTH); return $param; diff --git a/lib/tests/regex_test.php b/lib/tests/regex_test.php new file mode 100644 index 00000000000..c8dd97eb631 --- /dev/null +++ b/lib/tests/regex_test.php @@ -0,0 +1,47 @@ +. + +/** + * Test PHP regex capability - this may also serve as an example for devs. + * + * @package core + * @copyright 2015 Totara Learning Solutions Ltd {@link http://www.totaralms.com/} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @author Petr Skoda + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Test PHP regex capability - this may also serve as an example for devs. + * + * @package core + * @copyright 2015 Totara Learning Solutions Ltd {@link http://www.totaralms.com/} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @author Petr Skoda + */ +class core_regex_testcase extends advanced_testcase { + public function test_whitespace_replacement_with_u() { + $unicode = "Теорія і практика використання системи управління навчанням Moo +dleКиївський національний університет будівництва і архітектури, 21-22 тра +вня 2015 р.http://2015.moodlemoot.in.ua/"; + + $whitespaced = preg_replace('/\s+/u', ' ', $unicode); + $this->assertSame(str_replace("\n", ' ', $unicode), $whitespaced); + } +} + +