// allow relative URL's (CRM-15598)
$url = 'http://' . $_SERVER['HTTP_HOST'] . $url;
}
- return (bool) filter_var(self::idnToAsci($url), FILTER_VALIDATE_URL);
+ // Convert URLs with Unicode to ASCII
+ if (strlen($url) != strlen(utf8_decode($url))) {
+ $url = self::idnToAsci($url);
+ }
+ return (bool) filter_var($url, FILTER_VALIDATE_URL);
}
/**
}
/**
- * Test CVV rule
+ * Test Email rule
*
* @param string $email
* @param bool $expected expected outcome of the rule validation
return $cases;
}
+ public static function urls(): array {
+ $urls = [];
+ $urls[] = ['https://mysite.org/index.php/apps/files/?dir=/Talk/Test%20Folder1/Test%20Folder%202&fileid=597195', TRUE];
+ $urls[] = ['http://täst.de', TRUE];
+ $urls[] = ['https://الاردن.jo', TRUE];
+ $urls[] = ['I didn\'t say Simon Says', FALSE];
+ return $urls;
+ }
+
+ /**
+ * Test URL rule
+ *
+ * @param string $url
+ * @param bool $expected expected outcome of the rule validation
+ *
+ * @dataProvider urls
+ */
+ public function testUrlRule(string $url, bool $expected): void {
+ $this->assertEquals($expected, CRM_Utils_Rule::url($url));
+ }
+
}